/// <reference types="mongoose/types/schematypes" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/utility" />
/// <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, { Document } from 'mongoose';
import Joi from 'joi';
export declare const CRMCalculationInputsValidationSchema: Joi.ObjectSchema<ICRMCalculationInputs>;
export interface ICRMCalculationInputs {
    primeRate: number;
    leverageCost: number;
    equityCost: number;
    yearsRevolver: number;
    yearsTerm: number;
    commitmentRevolver: number;
    commitmentTerm: number;
    utilizationRevolver: number;
    utilizationTerm: number;
    marginRevolver: number;
    marginTerm: number;
    adminFeeRevolver: number;
    adminFeeTerm: number;
    closingPointsRevolver: number;
    closingPointsTerm: number;
    annualLineFeeRevolver: number;
    annualLineFeeTerm: number;
    unusedLineFee: number;
    referralPointsRevolver: number;
    referralPointsTerm: number;
    referralPercentRevolver: number;
    referralPercentTerm: number;
    leveragePercentRevolver: number;
    leveragePercentTerm: number;
}
export interface ICRMCalculationResultsData {
    revolver: number;
    term: number;
    blended: number;
}
export declare const CRMYieldCalculationResultsKeys: readonly ["margin", "outstanding", "interest", "adminFee", "closing", "annual", "unusedLineFee", "grossYield", "referralFeePoints", "referralFeePercent", "opYield", "costOfCapital", "netYield", "leveragedReturn", "leveragedMOIC", "impliedIRR"];
export type TCRMResultKey = typeof CRMYieldCalculationResultsKeys[number];
export type TCRMCalculationResults = {
    [K in TCRMResultKey]: ICRMCalculationResultsData;
};
export interface ICRMCalculation {
    prospectId: mongoose.Schema.Types.ObjectId;
    inputs: ICRMCalculationInputs;
    results: TCRMCalculationResults;
}
export interface ICRMCalculationDoc extends ICRMCalculation, Document {
}
export declare const CRMCalculationInputsSchema: mongoose.Schema<ICRMCalculationInputs, mongoose.Model<ICRMCalculationInputs, any, any, any, mongoose.Document<unknown, any, ICRMCalculationInputs> & ICRMCalculationInputs & {
    _id: mongoose.Types.ObjectId;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, ICRMCalculationInputs, mongoose.Document<unknown, {}, mongoose.FlatRecord<ICRMCalculationInputs>> & mongoose.FlatRecord<ICRMCalculationInputs> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const CRMCalculationResultsDataSchema: mongoose.Schema<ICRMCalculationResultsData, mongoose.Model<ICRMCalculationResultsData, any, any, any, mongoose.Document<unknown, any, ICRMCalculationResultsData> & ICRMCalculationResultsData & {
    _id: mongoose.Types.ObjectId;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, ICRMCalculationResultsData, mongoose.Document<unknown, {}, mongoose.FlatRecord<ICRMCalculationResultsData>> & mongoose.FlatRecord<ICRMCalculationResultsData> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const CRMCalculationResultsSchema: mongoose.Schema<TCRMCalculationResults, mongoose.Model<TCRMCalculationResults, any, any, any, mongoose.Document<unknown, any, TCRMCalculationResults> & TCRMCalculationResults & {
    _id: mongoose.Types.ObjectId;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, TCRMCalculationResults, mongoose.Document<unknown, {}, mongoose.FlatRecord<TCRMCalculationResults>> & mongoose.FlatRecord<TCRMCalculationResults> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const CRMCalculationSchema: mongoose.Schema<ICRMCalculation, mongoose.Model<ICRMCalculation, any, any, any, mongoose.Document<unknown, any, ICRMCalculation> & ICRMCalculation & {
    _id: mongoose.Types.ObjectId;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, ICRMCalculation, mongoose.Document<unknown, {}, mongoose.FlatRecord<ICRMCalculation>> & mongoose.FlatRecord<ICRMCalculation> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const CRMCalculationModel: mongoose.Model<ICRMCalculation, {}, {}, {}, mongoose.Document<unknown, {}, ICRMCalculation> & ICRMCalculation & {
    _id: mongoose.Types.ObjectId;
}, any>;
