import type { Response } from 'express';
import { PaymentSettlementService } from './payment-settlement.service';
import { RecordPaymentDto, SettlementQueryDto, VoidPaymentDto, EditSettlementAmountDto, AppendNoteDto, MasterListQueryDto, PlaceHoldDto, SettlementAnalyticsQueryDto, SettlementByServiceQueryDto, CollectPaymentDto, CollectForMdDto, CustomerOutstandingQueryDto, CustomerBalanceQueryDto, SourceOutstandingQueryDto, SupplierOutstandingQueryDto, PaySupplierDto, CustomerSearchQueryDto, PaymentHistoryQueryDto, UpdatePaymentHistoryDto } from './dto';
import { BookingCashCollectionService } from '../service-payment-collection/booking-cash-collection.service';
export declare class PaymentSettlementController {
    private readonly service;
    private readonly cashCollections;
    constructor(service: PaymentSettlementService, cashCollections: BookingCashCollectionService);
    stats(from?: string, to?: string, destinationId?: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        pending_collections: number;
        pending_refunds: number;
        settled_collections: number;
        settled_refunds: number;
        window: {
            from: string;
            to: string;
        };
    }>>;
    exportExcel(query: SettlementQueryDto, res: Response): Promise<void>;
    aggregateBySupplier(query: SettlementAnalyticsQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        supplier_id: string;
        supplier_name: string;
        bookings_count: number;
        total_owed: number;
        total_paid: number;
        outstanding: number;
        oldest_unsettled_booking: {
            booking_number: string;
            created_at: string;
        } | null;
    }[]>>;
    aggregateByAgent(query: SettlementAnalyticsQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        sales_agent_id: string;
        agent_name: string;
        bookings_count: number;
        total_billed: number;
        total_collected: number;
        total_supplier_owed: number;
        total_supplier_paid: number;
        realised_margin: number;
    }[]>>;
    aggregateBySource(query: SettlementAnalyticsQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        source_id: string;
        source_name: string;
        bookings_count: number;
        total_billed: number;
        total_collected: number;
        total_supplier_owed: number;
        total_supplier_paid: number;
        realised_margin: number;
    }[]>>;
    aggregateByService(query: SettlementByServiceQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        source_item_type: string;
        service_id: string;
        service_name: string;
        bookings_sold: number;
        total_selling: number;
        total_cost: number;
        outstanding: number;
        margin: number;
        margin_pct: number | null;
    }[]>>;
    findMasters(query: MasterListQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities/booking-settlement-master.entity").BookingSettlementMasterEntity[]>>;
    findMasterById(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        master: import("../../entities/booking-settlement-master.entity").BookingSettlementMasterEntity;
        children: import("../../entities/payment-settlement.entity").PaymentSettlementEntity[];
    }>>;
    placeOnHold(id: string, dto: PlaceHoldDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities/booking-settlement-master.entity").BookingSettlementMasterEntity>>;
    releaseHold(id: string): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities/booking-settlement-master.entity").BookingSettlementMasterEntity>>;
    customerOutstanding(q: CustomerOutstandingQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("./payment-settlement.service").CollectOutstandingBookingRow[]>>;
    customerBalance(q: CustomerBalanceQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        mobile: string;
        currency_id: string | null;
        expected: number;
        received: number;
        balance: number;
        credit: number;
    }>>;
    customerSearch(q: CustomerSearchQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        guest_name: string;
        guest_mobile: string;
        guest_email: string | null;
    }[]>>;
    sourceOutstanding(q: SourceOutstandingQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("./payment-settlement.service").CollectOutstandingBookingRow[]>>;
    sourceBalance(q: SourceOutstandingQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        source_id: string;
        currency_id: string | null;
        expected: number;
        received: number;
        balance: number;
        credit: number;
    }>>;
    supplierOutstanding(q: SupplierOutstandingQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        settlement_id: string;
        booking_id: string;
        booking_number: string | null;
        guest_name: string | null;
        service_type: string | null;
        source_item_type: string | null;
        service_date: string | null;
        due_date: string;
        amount: number;
        amount_settled: number;
        outstanding: number;
        currency_id: string;
        currency_code: string;
        destination_name: string | null;
    }[]>>;
    supplierBalance(q: SupplierOutstandingQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        supplier_id: string;
        currency_id: string | null;
        expected: number;
        received: number;
        balance: number;
        credit: number;
    }>>;
    paySupplier(dto: PaySupplierDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        payout: import("../../entities/supplier-payout.entity").SupplierPayoutEntity;
        payments: import("../../entities/settlement-payment.entity").SettlementPaymentEntity[];
    }>>;
    findPayout(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        payout: import("../../entities/supplier-payout.entity").SupplierPayoutEntity & {
            debit_bank_name?: string | null;
            debit_account_name?: string | null;
            credit_bank_name?: string | null;
            credit_account_name?: string | null;
        };
        payments: Array<import("../../entities/settlement-payment.entity").SettlementPaymentEntity & {
            booking_number: string | null;
            source_item_type: string | null;
            travel_date: string | null;
            guest_name: string | null;
        }>;
    }>>;
    collect(dto: CollectPaymentDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        collection: import("../../entities/payment-collection.entity").PaymentCollectionEntity;
        payments: import("../../entities/settlement-payment.entity").SettlementPaymentEntity[];
    }>>;
    collectForMd(dto: CollectForMdDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../service-payment-collection/booking-cash-collection.service").BookingCashCollectionView>>;
    bookingTransports(bookingId: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        date: string | null;
        label: string;
    }[]>>;
    paymentHistory(query: PaymentHistoryQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("./payment-settlement.service").PaymentHistoryListRow[]>>;
    paymentHistoryDetail(id: string, kind?: string): Promise<import("../../common/responses/api-response").ApiResponse<import("./payment-settlement.service").PaymentHistoryDetail>>;
    updatePaymentHistory(id: string, dto: UpdatePaymentHistoryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("./payment-settlement.service").PaymentHistoryDetail>>;
    findCollection(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        collection: import("../../entities/payment-collection.entity").PaymentCollectionEntity & {
            source_name?: string | null;
            debit_bank_name?: string | null;
            debit_account_name?: string | null;
            credit_bank_name?: string | null;
            credit_account_name?: string | null;
        };
        payments: Array<import("../../entities/settlement-payment.entity").SettlementPaymentEntity & {
            booking_number: string | null;
            source_item_type: string | null;
            service_name: string | null;
            travel_date: string | null;
            guest_name: string | null;
        }>;
    }>>;
    findAll(query: SettlementQueryDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities/payment-settlement.entity").PaymentSettlementEntity[]>>;
    findById(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        settlement: import("../../entities/payment-settlement.entity").PaymentSettlementEntity;
        payments: import("../../entities/settlement-payment.entity").SettlementPaymentEntity[];
    }>>;
    voidPayment(_id: string, paymentId: string, dto: VoidPaymentDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        settlement: import("../../entities/payment-settlement.entity").PaymentSettlementEntity;
        payment: import("../../entities/settlement-payment.entity").SettlementPaymentEntity;
    }>>;
    editAmount(id: string, dto: EditSettlementAmountDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities/payment-settlement.entity").PaymentSettlementEntity>>;
    appendNote(id: string, dto: AppendNoteDto): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities/payment-settlement.entity").PaymentSettlementEntity>>;
    recordPayment(id: string, dto: RecordPaymentDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        settlement: import("../../entities/payment-settlement.entity").PaymentSettlementEntity;
        payment: import("../../entities/settlement-payment.entity").SettlementPaymentEntity;
    }>>;
}
