/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/utility" />
/// <reference types="mongoose/types/document" />
/// <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, { Model } from 'mongoose';
import Joi from 'joi';
import { BasicDTO } from '../helpers/db-data.helper';
export declare enum EFinancialSpreadingType {
    PROFIT_LOSS = "PROFIT_LOSS",
    BALANCE_SHEET = "BALANCE_SHEET"
}
export declare enum EFinanceSpreadingPLTotal {
    SALES = "SALES",
    COST_OF_SALES = "COST_OF_SALES",
    GROSS_PROFIT = "GROSS_PROFIT",
    GROSS_MARGIN = "GROSS_MARGIN",
    OPERATING_EXPENSES = "OPERATING_EXPENSES",
    INCOME_FROM_OPERATIONS = "INCOME_FROM_OPERATIONS",
    OPERATING_MARGIN = "OPERATING_MARGIN",
    NON_OPERATING_EXPENSES = "NON_OPERATING_EXPENSES",
    NON_OPERATING_INCOME = "NON_OPERATING_INCOME",
    FINANCING_COSTS = "FINANCING_COSTS",
    DEPRECIATION_AMORTIZATION = "DEPRECIATION_AMORTIZATION",
    PRE_TAX_INCOME = "PRE_TAX_INCOME",
    TAX = "TAX",
    NET_INCOME = "NET_INCOME"
}
export declare const financeSpreadingPLList: {
    [type in EFinanceSpreadingPLTotal]?: boolean;
};
export declare enum EFinanceSpreadingBSTotal {
    CASH_EQUIVALENTS = "CASH_EQUIVALENTS",
    TRADE_RECEIVABLES = "TRADE_RECEIVABLES",
    INVENTORY = "INVENTORY",
    OTHER_CURRENT_ASSETS = "OTHER_CURRENT_ASSETS",
    TOTAL_CURRENT_ASSET = "TOTAL_CURRENT_ASSET",
    FIXED_ASSETS = "FIXED_ASSETS",
    OTHER_NON_CURRENT_ASSETS = "OTHER_NON_CURRENT_ASSETS",
    TOTAL_NON_CURRENT_ASSETS = "TOTAL_NON_CURRENT_ASSETS",
    TOTAL_ASSETS = "TOTAL_ASSETS",
    ACCOUNTS_PAYABLE = "ACCOUNTS_PAYABLE",
    OTHER_CURRENT_LIABILITIES = "OTHER_CURRENT_LIABILITIES",
    TOTAL_CURRENT_LIABILITIES = "TOTAL_CURRENT_LIABILITIES",
    COMPANY_DEBT = "COMPANY_DEBT",
    OTHER_DEBT = "OTHER_DEBT",
    OTHER_LONG_TERM_LIABILITIES = "OTHER_LONG_TERM_LIABILITIES",
    LONG_TERM_LIABILITIES = "LONG_TERM_LIABILITIES",
    TOTAL_LIABILITIES = "TOTAL_LIABILITIES",
    RETAINED_EARNINGS = "RETAINED_EARNINGS",
    EQUITY_RESERVES = "EQUITY_RESERVES",
    CHECK = "CHECK"
}
export declare const financeSpreadingBSList: {
    [type in EFinanceSpreadingBSTotal]?: boolean;
};
export declare const financialSpreadingTotalDictionary: Record<EFinanceSpreadingPLTotal | EFinanceSpreadingBSTotal, string>;
export declare const financeSpreadingLists: {
    PROFIT_LOSS: {
        SALES?: boolean;
        COST_OF_SALES?: boolean;
        GROSS_PROFIT?: boolean;
        GROSS_MARGIN?: boolean;
        OPERATING_EXPENSES?: boolean;
        INCOME_FROM_OPERATIONS?: boolean;
        OPERATING_MARGIN?: boolean;
        NON_OPERATING_EXPENSES?: boolean;
        NON_OPERATING_INCOME?: boolean;
        FINANCING_COSTS?: boolean;
        DEPRECIATION_AMORTIZATION?: boolean;
        PRE_TAX_INCOME?: boolean;
        TAX?: boolean;
        NET_INCOME?: boolean;
    };
    BALANCE_SHEET: {
        CASH_EQUIVALENTS?: boolean;
        TRADE_RECEIVABLES?: boolean;
        INVENTORY?: boolean;
        OTHER_CURRENT_ASSETS?: boolean;
        TOTAL_CURRENT_ASSET?: boolean;
        FIXED_ASSETS?: boolean;
        OTHER_NON_CURRENT_ASSETS?: boolean;
        TOTAL_NON_CURRENT_ASSETS?: boolean;
        TOTAL_ASSETS?: boolean;
        ACCOUNTS_PAYABLE?: boolean;
        OTHER_CURRENT_LIABILITIES?: boolean;
        TOTAL_CURRENT_LIABILITIES?: boolean;
        COMPANY_DEBT?: boolean;
        OTHER_DEBT?: boolean;
        OTHER_LONG_TERM_LIABILITIES?: boolean;
        LONG_TERM_LIABILITIES?: boolean;
        TOTAL_LIABILITIES?: boolean;
        RETAINED_EARNINGS?: boolean;
        EQUITY_RESERVES?: boolean;
        CHECK?: boolean;
    };
};
export interface IFinancialSpreadingSheetView {
    _id: string;
    name: string;
    borrowerId: string;
    financialSpreadingType: string;
    rowType: string;
    order: number;
    suborder: number;
    isTotal: boolean;
    isCalculated: boolean;
    isFixedCost?: boolean;
}
export declare class FinancialSpreadingSheetDTO extends BasicDTO {
    borrowerId: string;
    financialSpreadingType: EFinancialSpreadingType;
    rowType: EFinanceSpreadingPLTotal | EFinanceSpreadingBSTotal;
    name: string;
    order: number;
    suborder: number;
    isTotal: boolean;
    isCalculated: boolean;
    isFixedCost?: boolean;
}
export declare const financialSpreadingSheetViewValidationSchema: Joi.ObjectSchema<IFinancialSpreadingSheetView>;
export interface IFinancialSpreadingSheet {
    borrowerId: mongoose.Types.ObjectId;
    financialSpreadingType: EFinancialSpreadingType;
    rowType: EFinanceSpreadingPLTotal | EFinanceSpreadingBSTotal;
    name: string;
    order: number;
    suborder: number;
    isTotal: boolean;
    isCalculated: boolean;
    isFixedCost?: boolean;
}
export interface IFinancialSpreadingSheetDoc extends IFinancialSpreadingSheet, Document {
    _id: mongoose.Types.ObjectId;
    createdAt: Date;
    updatedAt: Date;
}
export interface IFinancialSpreadingSheetLean extends IFinancialSpreadingSheet {
    _id: mongoose.Types.ObjectId;
    createdAt: Date;
    updatedAt: Date;
}
export interface IFinancialSpreadingSheetPlain extends Omit<IFinancialSpreadingSheet, 'borrowerId'> {
    _id: string;
    borrowerId: string;
    createdAt: Date;
    updatedAt: Date;
}
export type TFinancialSpreadingSheetModel = Model<IFinancialSpreadingSheet, {}, {}>;
export declare const FinancialSpreadingSheetSchema: mongoose.Schema<IFinancialSpreadingSheet, TFinancialSpreadingSheetModel, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IFinancialSpreadingSheet, mongoose.Document<unknown, {}, mongoose.FlatRecord<IFinancialSpreadingSheet>> & mongoose.FlatRecord<IFinancialSpreadingSheet> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const FinancialSpreadingSheet: TFinancialSpreadingSheetModel;
