import { MergeFinancialTransactionsOutputModelInterface } from '../../../interfaces/output-models/merge-financial-transactions-output-model.interface';
import { FinancialTransactionItemInterface } from '../../../interfaces/array-item-models/financial-transaction-item.interface';
import { MergeFinancialTransactionsInputModelInterface } from '../../../interfaces/input-models/merge-financial-transactions-input-model.interface';
/**
 * @MergeFinancialTransactionsInputModelInterface input
 * - invoices: array of invoices
 * - creditNotes: optional array of credit notes
 * - receipts: optional array of receipts
 * > - invoices, creditNotes and receipts will be merged into a single array and returned in transactions
 * > - creditNotes & receipts which do not have a matching invoice will be ignored
 * > - creditNotes & receipts falling on the same day, with their sum total == 0, will be added to excluded;
 * > - transactions with balance < 0 (sum of inv, crn & rct) will be added to excluded;
 * @MergeFinancialTransactionsOutputModelInterface output
 * - transactions: array of merged invoices, credit notes & receipts
 * - excluded: array of credit notes and receipts that sum to 0 on a specific day
 * - executeDuration: the length of time it took for this call to complete
 */
export declare function mergeFinancialTransactions<T extends FinancialTransactionItemInterface, U extends T = T>(input: MergeFinancialTransactionsInputModelInterface<T, U>): Promise<MergeFinancialTransactionsOutputModelInterface<T>>;
