/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/aggregate" />
/// <reference types="mongoose/types/callback" />
/// <reference types="mongoose/types/collection" />
/// <reference types="mongoose/types/connection" />
/// <reference types="mongoose/types/cursor" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/error" />
/// <reference types="mongoose/types/expressions" />
/// <reference types="mongoose/types/helpers" />
/// <reference types="mongoose/types/middlewares" />
/// <reference types="mongoose/types/indexes" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/mongooseoptions" />
/// <reference types="mongoose/types/pipelinestage" />
/// <reference types="mongoose/types/populate" />
/// <reference types="mongoose/types/query" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/schematypes" />
/// <reference types="mongoose/types/session" />
/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/utility" />
/// <reference types="mongoose/types/validation" />
/// <reference types="mongoose/types/virtuals" />
/// <reference types="mongoose/types/inferschematype" />
import { ILoanProductDoc } from '../models/LoanProducts.model';
import { ELedgerReportType } from './loan-statement.db';
import mongoose from 'mongoose';
import { ILoanTransactionDoc } from '../models/LoanTransaction.model';
export declare enum EChargeType {
    INTEREST_FEE = "INTEREST",
    ADMIN_FEE = "ADMIN FEE",
    UNUSED_LINE_FEE = "UNUSED LINE FEE",
    ANNUAL_LINE_FEE = "ANNUAL LINE FEE",
    WIRE_FEE = "WIRE FEE",
    RECOVERABLE = "RECOVERABLE",
    OTHER = "OTHER",
    DISBURSEMENT = "DISBURSEMENT",
    PRINCIPAL = "PRINCIPAL",
    COLLECTION = "COLLECTION",
    ADJUSTMENT = "ADJUSTMENT",
    EXPECTED_PRINCIPAL = "EXPECTED PRINCIPAL ACCRUED",
    EXPECTED_PRINCIPAL_PAID = "EXPECTED PRINCIPAL PAID"
}
export interface ILedgerReportRow {
    borrowerCode: string;
    date: string;
    type: string;
    chargeCode: string;
    PLCode: string;
    productCode: string;
    productName: string;
    amount: number;
    statementAmount: number;
    title: string;
    balance: number;
    floatedBalance: number;
    info: string;
    paymentDate: string;
}
export interface ILedgerDataRow {
    typeOrder: number;
    order: number;
    date: Date;
    type: EChargeType;
    amount: number;
    statementAmount: number;
    title: string;
    chargeCode: string;
    PLCode: string;
    productCode: string;
    productName: string;
    balance: number;
    floatedBalance: number;
    createdAt: Date;
    info: string;
    paymentDate: Date;
    isBrokerFee?: boolean;
}
export type LedgerTransactions = {
    transactions: ILoanTransactionDoc[];
    product: ILoanProductDoc;
    productId: mongoose.Types.ObjectId;
};
export type ReportLedgerParams = {
    productIds: string[];
    startDate: Date;
    endDate: Date;
    reportType: ELedgerReportType;
};
export type ReportLedgerOptions = {
    showFloatedBalance: boolean;
    showBalances: boolean;
};
export declare const getLedger: (params: ReportLedgerParams, options?: ReportLedgerOptions) => Promise<{
    [productId: string]: ILedgerReportRow[];
}>;
