/// <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 Joi from 'joi';
import mongoose, { Model } from 'mongoose';
import { ISelectedMonth } from '../helpers/date.helper';
import { BasicDTO } from '../helpers/db-data.helper';
import { EFinancialSpreadingType } from './FinancialSpreadingSheet.model';
export declare class FinancialSpreadingDTO extends BasicDTO {
    borrowerId: string;
    year: number;
    month: number;
    sheetId: string;
    amount: number;
}
export interface IFinancialSpreadingView {
    _id: string;
    borrowerId: string;
    year: number;
    month: number;
    sheetId: string;
    amount: number;
    minus_1?: number;
    minus_2?: number;
    minus_3?: number;
}
export interface IFinancialSpreadingUpload {
    _id: string;
    sheetId: string;
    sheetType: string;
    amount: number;
    title: string;
    isNew: boolean;
}
export interface IFinancialSpreadingViewWithDeepData extends IFinancialSpreadingView {
    [minus: string]: string | number | boolean;
}
export interface IFinancialSpreadingParams {
    borrowerId: string;
    selectedMonth: ISelectedMonth;
    financialSpreadingType: EFinancialSpreadingType;
}
export interface IFinancialSpreading {
    borrowerId: mongoose.Types.ObjectId;
    year: number;
    month: number;
    sheetId: mongoose.Types.ObjectId;
    amount: number;
}
export interface IFinancialSpreadingDoc extends IFinancialSpreading, Document {
    _id: mongoose.Types.ObjectId;
    createdAt: Date;
    updatedAt: Date;
}
export interface IFinancialSpreadingLean extends IFinancialSpreading {
    _id: mongoose.Types.ObjectId;
    createdAt: Date;
    updatedAt: Date;
}
export interface IFinancialSpreadingPlain extends Omit<IFinancialSpreading, 'borrowerId' | 'sheetId'> {
    _id: string;
    borrowerId: string;
    sheetId: string;
    createdAt: Date;
    updatedAt: Date;
}
export declare const financialSpreadingViewValidationSchema: Joi.ObjectSchema<IFinancialSpreadingView>;
export declare const financialSpreadingParamsValidationSchema: Joi.ObjectSchema<IFinancialSpreadingParams>;
export type IFinancialSpreadingModel = Model<IFinancialSpreading, object, object>;
export declare const FinancialSpreadingSchema: mongoose.Schema<IFinancialSpreading, IFinancialSpreadingModel, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IFinancialSpreading, mongoose.Document<unknown, {}, mongoose.FlatRecord<IFinancialSpreading>> & mongoose.FlatRecord<IFinancialSpreading> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const FinancialSpreading: IFinancialSpreadingModel;
