/// <reference types="mongoose/types/document" />
/// <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" />
/// <reference types="mongoose/types/inferschematype" />
import { ELedgerReportType } from '../db/loan-statement.db';
import { InvestorSummaryService } from './reports/investor-summary.service';
import { AvailabilityService } from './availability.service';
import { BorrowerService } from './borrowers.service';
import { CollateralAdjustmentsService } from './collateral-adjustments.service';
import { CollateralsService } from './collaterals.service';
import { EquipmentService } from './equipment.service';
import { LoanChargesService } from './loan-charges.service';
import { LoanTransactionsService } from './loan-transactions.service';
import { SignsService } from './signs.service';
import { UploadsService } from './uploads.service';
export interface IBankReportData {
    borrowerId?: string;
    borrowerName: string;
    productCode: string;
    productType: string;
    commitment: number;
    startDate: Date;
    maturityDate: Date;
    inventoryGrossValue: number;
    inventoryAdvanceRate: number;
    inventoryReserves: number;
    inventoryNet: number;
    ARGross: number;
    ARAdvanceRate: number;
    ARReserves: number;
    ARNet: number;
    otherReserves: number;
    collateralAdjustments: number;
    totalCollateral: number;
    loanBalanceRevolver: number;
    netRevolverAvailability: number;
    equipmentCollateral: number;
    intellectualProperty: number;
    realEstate: number;
    bootCollateral: number;
    termLoanReserves: number;
    loanTermBalance: number;
    netTermAvailability: number;
    participantBalance: number;
    NAISC: string;
}
interface IReportDataItem {
    name: string;
    grossValue: number;
    advanceRate: number;
    netValue: number;
}
interface ISummaryReportDataGroup {
    NAISCCode: string;
    isExternalAppraisal: boolean;
    isCompliant: boolean;
    productCode: string;
    items: IReportDataItem[];
}
interface ISummaryReportData {
    borrowerName: string;
    bbcDate: Date;
    revolverDataGroup: ISummaryReportDataGroup;
    termDataGroup: ISummaryReportDataGroup;
}
export declare class ReportsService {
    private readonly availabilityService;
    private readonly borrowerService;
    private readonly collateralAdjustmentsService;
    private readonly collateralsService;
    private readonly equipmentService;
    private readonly loanChargesService;
    private readonly loanTransactionsService;
    private readonly signsService;
    private readonly uploadsService;
    private readonly investorSummaryService;
    margin: number;
    constructor(availabilityService: AvailabilityService, borrowerService: BorrowerService, collateralAdjustmentsService: CollateralAdjustmentsService, collateralsService: CollateralsService, equipmentService: EquipmentService, loanChargesService: LoanChargesService, loanTransactionsService: LoanTransactionsService, signsService: SignsService, uploadsService: UploadsService, investorSummaryService: InvestorSummaryService);
    getCollateralAdjustmentsForLastSignedBBC(borrowerId: string, date: Date): Promise<number>;
    private getProductBalances;
    getBorrowerAndProducts(borrowerId: string, date: Date, useSignedBBC?: boolean, requireBBC?: boolean): Promise<{
        borrower: import("mongoose").Document<unknown, {}, import("../models/Borrower.model").IBorrowerDoc> & import("../models/Borrower.model").IBorrowerDoc & Required<{
            _id: import("mongoose").Types.ObjectId;
        }>;
        latestBBC: import("../models/BBCDate.model").IBBCDateDoc;
        summaries: import("./availability.service").IAvailabilityFullSummary;
        products: import("../models/LoanProducts.model").ILoanProductView[];
    }>;
    generatePortfolioSummary(borrowerIds: string[], date: Date): Promise<{
        [borrowerId: string]: ISummaryReportData;
    }>;
    getPortfolioSummaryExcel(borrowerIds: string[], date: Date): Promise<any>;
    generateBankPortfolioSummary(borrowerIds: string[], date: Date, { useSignedBBC, useStoredBalance, }?: {
        useSignedBBC: boolean;
        useStoredBalance: boolean;
    }): Promise<IBankReportData[]>;
    getBalancesCollateralReportExcel(borrowerIds: string[], date: Date): Promise<any>;
    getLedger(productIds: string[], startDate: Date, endDate: Date, reportType: ELedgerReportType, showFloatedBalance?: boolean): Promise<{
        [productId: string]: import("../db/reports.db").ILedgerReportRow[];
    }>;
    getInvestorSummaryReport(selectedBorrowerIds: string[], start: Date, end: Date): Promise<{
        report: any[][];
    }[]>;
}
export {};
