import { Injector } from 'graphql-modules';
import type { BusinessTripSummaryCategories, BusinessTripSummaryRow } from '../../../__generated__/types.js';
import { Currency } from '../../../shared/enums.js';
import type { IGetAllTaxVariablesResult, IGetBusinessTripsCarRentalExpensesByBusinessTripIdsResult, IGetBusinessTripsExpensesByBusinessTripIdsResult, IGetBusinessTripsFlightsExpensesByBusinessTripIdsResult, IGetBusinessTripsTravelAndSubsistenceExpensesByBusinessTripIdsResult } from '../types.js';
export declare class BusinessTripError extends Error {
    constructor(message: string);
}
export type SummaryCategoryData = Partial<Record<Currency, {
    total: number;
    taxable: number;
    maxTaxable: number;
}>>;
export type SummaryData = Record<BusinessTripSummaryCategories, SummaryCategoryData>;
export type AttendeeInfo = {
    name: string;
    arrival: Date | null;
    departure: Date | null;
    daysCount: number;
    nightsCount: number;
};
export declare function convertSummaryCategoryDataToRow(category: BusinessTripSummaryCategories, data: SummaryCategoryData): BusinessTripSummaryRow;
export declare function calculateTotalReportSummaryCategory(data: Partial<SummaryData>): Partial<Record<Currency, {
    total: number;
    taxable: number;
    maxTaxable: number;
}>>;
export declare function getExpenseCoreData(tripExpense: Pick<IGetBusinessTripsExpensesByBusinessTripIdsResult, 'payed_by_employee' | 'amount' | 'date' | 'currency' | 'value_date' | 'id'>): {
    amount: number;
    currency: Currency;
    date: Date;
};
export declare function getExpenseAmountsData(injector: Injector, businessTripExpense: IGetBusinessTripsExpensesByBusinessTripIdsResult): Promise<{
    localAmount: number;
    foreignAmount: number;
}>;
export declare function flightExpenseDataCollector(injector: Injector, businessTripExpense: IGetBusinessTripsFlightsExpensesByBusinessTripIdsResult, partialSummaryData: Partial<SummaryData>): Promise<void>;
export declare function employeeAccommodationDataByTrip(): Promise<void>;
export declare function otherExpensesDataCollector(injector: Injector, otherExpenses: IGetBusinessTripsExpensesByBusinessTripIdsResult[], partialSummaryData: Partial<SummaryData>): Promise<string | void>;
type ReportMetaData = {
    destinationCode: string | null;
    unAccommodatedDays: number;
    attendees: Map<string, AttendeeInfo>;
};
export declare function travelAndSubsistenceExpensesDataCollector(injector: Injector, businessTripExpenses: IGetBusinessTripsTravelAndSubsistenceExpensesByBusinessTripIdsResult[], partialSummaryData: Partial<SummaryData>, taxVariables: IGetAllTaxVariablesResult, { destinationCode, unAccommodatedDays, attendees }: ReportMetaData): Promise<void>;
export declare function carRentalExpensesDataCollector(injector: Injector, businessTripExpenses: IGetBusinessTripsCarRentalExpensesByBusinessTripIdsResult[], partialSummaryData: Partial<SummaryData>, taxVariables: IGetAllTaxVariablesResult, destinationCode: string | null): Promise<void>;
export declare function isIncreasedLimitDestination(destinationCode: string | null): boolean;
export declare function onlyUnique(value: string, index: number, array: string[]): boolean;
export declare function getAttendeeTravelAndSubsistenceMaxTax(totalBusinessDays: number, unAccommodatedDays: number, destinationCode: string | null, taxVariables: IGetAllTaxVariablesResult): number;
export * from './business-trip-report-accommodation.helper.js';
