import DataLoader from 'dataloader';
import { AdminContextProvider } from '../../admin-context/providers/admin-context.provider.js';
import { TenantAwareDBClient } from '../../app-providers/tenant-db-client.js';
import { TransactionsProvider } from '../../transactions/providers/transactions.provider.js';
import type { IGetTransactionsByChargeIdsResult } from '../../transactions/types.js';
import type { IDeleteBusinessTripExpenseParams, IInsertBusinessTripExpenseParams, IUpdateBusinessTripExpenseParams } from '../types.js';
import { BusinessTripAccommodationsExpensesProvider } from './business-trips-expenses-accommodations.provider.js';
import { BusinessTripCarRentalExpensesProvider } from './business-trips-expenses-car-rental.provider.js';
import { BusinessTripFlightsExpensesProvider } from './business-trips-expenses-flights.provider.js';
import { BusinessTripOtherExpensesProvider } from './business-trips-expenses-other.provider.js';
import { BusinessTripTravelAndSubsistenceExpensesProvider } from './business-trips-expenses-travel-and-subsistence.provider.js';
import { BusinessTripsProvider } from './business-trips.provider.js';
export declare class BusinessTripExpensesProvider {
    private db;
    private adminContextProvider;
    private businessTripsProvider;
    private flightExpensesProvider;
    private accommodationsExpensesProvider;
    private travelAndSubsistenceExpensesProvider;
    private otherExpensesProvider;
    private carRentalExpensesProvider;
    private transactionsProvider;
    constructor(db: TenantAwareDBClient, adminContextProvider: AdminContextProvider, businessTripsProvider: BusinessTripsProvider, flightExpensesProvider: BusinessTripFlightsExpensesProvider, accommodationsExpensesProvider: BusinessTripAccommodationsExpensesProvider, travelAndSubsistenceExpensesProvider: BusinessTripTravelAndSubsistenceExpensesProvider, otherExpensesProvider: BusinessTripOtherExpensesProvider, carRentalExpensesProvider: BusinessTripCarRentalExpensesProvider, transactionsProvider: TransactionsProvider);
    private batchBusinessTripsExpensesByBusinessTripIds;
    getBusinessTripsExpensesByBusinessTripIdLoader: DataLoader<string, import("../types.js").IGetBusinessTripsExpensesByBusinessTripIdsResult[], string>;
    private batchBusinessTripsExpenseMatchesByIds;
    getBusinessTripsExpensesByIdLoader: DataLoader<string, import("../types.js").IGetBusinessTripsExpensesByIdsResult | undefined, string>;
    updateBusinessTripExpense(params: IUpdateBusinessTripExpenseParams): Promise<import("../types.js").IUpdateBusinessTripExpenseResult[]>;
    insertBusinessTripExpense(params: IInsertBusinessTripExpenseParams): Promise<import("../types.js").IInsertBusinessTripExpenseResult[]>;
    getBusinessTripExtendedExpensesByChargeId(chargeId: string): Promise<{
        nonExtendedExpenses: import("../types.js").IGetBusinessTripsExpensesByBusinessTripIdsResult[];
        flightExpenses: import("../types.js").IGetBusinessTripsFlightsExpensesByBusinessTripIdsResult[];
        accommodationsExpenses: import("../types.js").IGetBusinessTripsAccommodationsExpensesByBusinessTripIdsResult[];
        travelAndSubsistenceExpenses: import("../types.js").IGetBusinessTripsTravelAndSubsistenceExpensesByBusinessTripIdsResult[];
        otherExpenses: import("../types.js").IGetBusinessTripsOtherExpensesByBusinessTripIdsResult[];
        carRentalExpenses: import("../types.js").IGetBusinessTripsCarRentalExpensesByBusinessTripIdsResult[];
    }>;
    getBusinessTripExtendedExpensesByBusinessTripId(businessTripId: string): Promise<{
        nonExtendedExpenses: import("../types.js").IGetBusinessTripsExpensesByBusinessTripIdsResult[];
        flightExpenses: import("../types.js").IGetBusinessTripsFlightsExpensesByBusinessTripIdsResult[];
        accommodationsExpenses: import("../types.js").IGetBusinessTripsAccommodationsExpensesByBusinessTripIdsResult[];
        travelAndSubsistenceExpenses: import("../types.js").IGetBusinessTripsTravelAndSubsistenceExpensesByBusinessTripIdsResult[];
        otherExpenses: import("../types.js").IGetBusinessTripsOtherExpensesByBusinessTripIdsResult[];
        carRentalExpenses: import("../types.js").IGetBusinessTripsCarRentalExpensesByBusinessTripIdsResult[];
    }>;
    getTransactionsByBusinessTripId(businessTripId: string): Promise<IGetTransactionsByChargeIdsResult[]>;
    deleteBusinessTripExpense(params: IDeleteBusinessTripExpenseParams): Promise<import("../types.js").IDeleteBusinessTripExpenseResult[]>;
    private invalidateExpenseExtensionsById;
    private invalidateExpenseExtensionsByBusinessTripId;
    invalidateById(expenseId: string): Promise<void>;
    invalidateByBusinessTripId(businessTripId: string): Promise<void>;
    clearCache(): void;
}
