import { ILoanProductDoc, ILoanProductView } from '../models/LoanProducts.model';
import { LoanChargesService } from './loan-charges.service';
import { BorrowersDB } from './borrowers.db';
import { ILoanTransactionDoc } from '../models/LoanTransaction.model';
export declare class LoanProductsService {
    private readonly loanChargesService;
    private readonly borrowersDB;
    constructor(loanChargesService: LoanChargesService, borrowersDB: BorrowersDB);
    getLinkedLoanProducts(codes: string[]): Promise<{
        [code: string]: string;
    }>;
    getProductsWithBalances(products: ILoanProductView[], showFloatedBalance: boolean): Promise<ILoanProductView[]>;
    getProductPaymentOrder(productId: string): Promise<string[]>;
    savePaymentOrder(productId: string, paymentOrder: string[]): Promise<void>;
    getAllLoanProducts(borrowerIds?: string[]): Promise<ILoanProductDoc[]>;
    getLoanProductBalance(productId: string, forDate?: Date): Promise<{
        balance: number;
        floatedBalance: number;
    }>;
    calculateBalanceFromTransactions(simpleTransaction: ILoanTransactionDoc | null, normalTransaction: ILoanTransactionDoc | null, collectionsTransaction: ILoanTransactionDoc | null, productId: string, forDate: Date): Promise<{
        balance: number;
        floatedBalance: number;
    }>;
    getLoanProductBalances(productIds: string[], forDate: Date): Promise<Record<string, {
        balance: number;
        floatedBalance: number;
    }>>;
}
