/// <reference types="mongoose/types/models" />
/// <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 mongoose from 'mongoose';
import { IBorrowerSettingsDocPopulated } from '../models/BorrowerSettings.model';
import { IBorrowerDoc } from '../models/Borrower.model';
import { IBorrowerDataDocWithName } from '../models/BorrowerData.model';
import { CollateralsService } from './collaterals.service';
import { LoanStatementStatusService } from './loan-statement-status.service';
import { LoanTransactionsService } from './loan-transactions.service';
import { SignsService } from './signs.service';
import { IUser, IUserAccess } from '../interfaces/auth-user.interface';
export declare const borrowerDataModels: {
    [modelName: string]: mongoose.Model<any>;
};
export declare class BorrowerService {
    private readonly getCollateralsService;
    private readonly getLoanStatementStatusService;
    private readonly getLoanTransactionsService;
    private readonly getSignsService;
    constructor(getCollateralsService: () => CollateralsService, getLoanStatementStatusService: () => LoanStatementStatusService, getLoanTransactionsService: () => LoanTransactionsService, getSignsService: () => SignsService);
    isBorrowerAllowed(userAccess: IUserAccess, requestedBorrowerId: string): boolean;
    checkBorrower(user: IUser, requestedBorrowerId: string): boolean;
    getBorrowerById(borrowerId: string): Promise<mongoose.FlattenMaps<IBorrowerDoc> & Required<{
        _id: mongoose.Types.ObjectId;
    }>>;
    isNameCodeAllowed(borrower: IBorrowerDoc): Promise<{
        message: string;
    }>;
    private getDefaultSettings;
    private addOptionNames;
    getBorrowerOption(borrowerId: string, optionName: string): Promise<IBorrowerDataDocWithName>;
    getBorrowerSettings(borrowerId: string): Promise<IBorrowerSettingsDocPopulated>;
    getBorrowerByCode(code: string): Promise<IBorrowerDoc>;
    getExtraInfo(borrowerId: string): Promise<{
        extraInfo: {
            REVOLVER: {
                balance: number;
                lastActivityDate: any;
            };
            TERM: {
                balance: number;
                lastActivityDate: any;
            };
            accruedStatement: {
                balance: number;
                lastActivityDate: any;
            };
            effectiveLoanBalance: {
                balance: number;
                lastActivityDate: any;
            };
        };
        lastBBCDate: Date;
        lastBBCId: string;
        lastSignedBBCDate: Date;
        lastSignedBBCId: string;
    }>;
    updateBorrowerData(borrowerSettings: IBorrowerSettingsDocPopulated): Promise<{
        [x: string]: mongoose.Types.ObjectId[];
    }>;
    updateBorrowerSettings(borrowerId: string, borrowerSettings: IBorrowerSettingsDocPopulated): Promise<void>;
    getBorrowerCodesMap(): Promise<Map<string, string>>;
    getBorrowerStatementDetails(borrowers: IBorrowerDoc[]): Promise<{
        [x: string]: {
            SELECTED_PERIOD?: boolean;
            ENTIRE_LOAN?: boolean;
            LAST_MONTH?: boolean;
            CURRENT_MONTH?: boolean;
            TERM_LOAN?: boolean;
        };
    }>;
}
