/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/models" />
/// <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 { IBorrowerDataDocWithName } from './BorrowerData.model';
import { IBorrowerDataContactDoc } from './BorrowerDataContact.model';
import { IBorrowerDataGuaranteeDoc } from './BorrowerDataGuarantee.model';
import { IBorrowerDataLocationDoc } from './BorrowerDataLocation.model';
import { IBorrowerDataBankDoc } from './BorrowerDataBank.model';
import { IBorrowerDataInsuranceDoc } from './BorrowerDataInsurance.model';
import { IBorrowerDataReceivableDoc } from './BorrowerDataReceivable.model';
import { IBorrowerDataInventoryDoc } from './BorrowerDataInventory.model';
import { IBorrowerDataTermDoc } from './BorrowerDataTerm.model';
import { IBorrowerDataBootCollateralDoc } from './BorrowerDataBootCollateral.model';
export interface IBorrowerSettings {
    borrower: mongoose.Types.ObjectId;
    queries: {
        [group: string]: {
            [queryName: string]: {
                isCalculateOnUpload: boolean;
                params: object;
                extraParams?: object;
            };
        };
    };
    dataTypes: {
        [group: string]: string[];
    };
    dataAvailability: {
        [key in 'receivables' | 'inventories']: boolean;
    };
    data: {
        [key in 'options' | 'receivables' | 'inventories' | 'contacts' | 'guarantees' | 'locations' | 'banks' | 'insurance' | 'terms' | 'bootCollaterals']: mongoose.Types.ObjectId[];
    };
}
export interface IBorrowerSettingsDoc extends IBorrowerSettings, Document {
}
export interface IBorrowerSettingsDocPopulated extends Omit<IBorrowerSettings, 'data'> {
    data: {
        options: IBorrowerDataDocWithName[];
        receivables: IBorrowerDataReceivableDoc[];
        inventories: IBorrowerDataInventoryDoc[];
        terms: IBorrowerDataTermDoc[];
        bootCollaterals: IBorrowerDataBootCollateralDoc[];
        contacts: IBorrowerDataContactDoc[];
        guarantees: IBorrowerDataGuaranteeDoc[];
        locations: IBorrowerDataLocationDoc[];
        banks: IBorrowerDataBankDoc[];
        insurance: IBorrowerDataInsuranceDoc[];
    };
}
export declare const dataAvailabilitySchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    _id: false;
    timestamps: false;
    versionKey: false;
}, {
    inventories: boolean;
    receivables: boolean;
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    inventories: boolean;
    receivables: boolean;
}>> & mongoose.FlatRecord<{
    inventories: boolean;
    receivables: boolean;
}> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const dataSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    _id: false;
    timestamps: false;
    versionKey: false;
}, {
    banks: mongoose.Types.ObjectId[];
    inventories: mongoose.Types.ObjectId[];
    receivables: mongoose.Types.ObjectId[];
    options: mongoose.Types.ObjectId[];
    insurance: mongoose.Types.ObjectId[];
    terms: mongoose.Types.ObjectId[];
    bootCollaterals: mongoose.Types.ObjectId[];
    contacts: mongoose.Types.ObjectId[];
    guarantees: mongoose.Types.ObjectId[];
    locations: mongoose.Types.ObjectId[];
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    banks: mongoose.Types.ObjectId[];
    inventories: mongoose.Types.ObjectId[];
    receivables: mongoose.Types.ObjectId[];
    options: mongoose.Types.ObjectId[];
    insurance: mongoose.Types.ObjectId[];
    terms: mongoose.Types.ObjectId[];
    bootCollaterals: mongoose.Types.ObjectId[];
    contacts: mongoose.Types.ObjectId[];
    guarantees: mongoose.Types.ObjectId[];
    locations: mongoose.Types.ObjectId[];
}>> & mongoose.FlatRecord<{
    banks: mongoose.Types.ObjectId[];
    inventories: mongoose.Types.ObjectId[];
    receivables: mongoose.Types.ObjectId[];
    options: mongoose.Types.ObjectId[];
    insurance: mongoose.Types.ObjectId[];
    terms: mongoose.Types.ObjectId[];
    bootCollaterals: mongoose.Types.ObjectId[];
    contacts: mongoose.Types.ObjectId[];
    guarantees: mongoose.Types.ObjectId[];
    locations: mongoose.Types.ObjectId[];
}> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const BorrowerSettingsSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    timestamps: true;
}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    borrower: mongoose.Types.ObjectId;
    __v?: number;
    data?: {
        banks: mongoose.Types.ObjectId[];
        inventories: mongoose.Types.ObjectId[];
        receivables: mongoose.Types.ObjectId[];
        options: mongoose.Types.ObjectId[];
        insurance: mongoose.Types.ObjectId[];
        terms: mongoose.Types.ObjectId[];
        bootCollaterals: mongoose.Types.ObjectId[];
        contacts: mongoose.Types.ObjectId[];
        guarantees: mongoose.Types.ObjectId[];
        locations: mongoose.Types.ObjectId[];
    };
    dataAvailability?: {
        inventories: boolean;
        receivables: boolean;
    };
    queries?: any;
    dataTypes?: any;
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    borrower: mongoose.Types.ObjectId;
    __v?: number;
    data?: {
        banks: mongoose.Types.ObjectId[];
        inventories: mongoose.Types.ObjectId[];
        receivables: mongoose.Types.ObjectId[];
        options: mongoose.Types.ObjectId[];
        insurance: mongoose.Types.ObjectId[];
        terms: mongoose.Types.ObjectId[];
        bootCollaterals: mongoose.Types.ObjectId[];
        contacts: mongoose.Types.ObjectId[];
        guarantees: mongoose.Types.ObjectId[];
        locations: mongoose.Types.ObjectId[];
    };
    dataAvailability?: {
        inventories: boolean;
        receivables: boolean;
    };
    queries?: any;
    dataTypes?: any;
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    borrower: mongoose.Types.ObjectId;
    __v?: number;
    data?: {
        banks: mongoose.Types.ObjectId[];
        inventories: mongoose.Types.ObjectId[];
        receivables: mongoose.Types.ObjectId[];
        options: mongoose.Types.ObjectId[];
        insurance: mongoose.Types.ObjectId[];
        terms: mongoose.Types.ObjectId[];
        bootCollaterals: mongoose.Types.ObjectId[];
        contacts: mongoose.Types.ObjectId[];
        guarantees: mongoose.Types.ObjectId[];
        locations: mongoose.Types.ObjectId[];
    };
    dataAvailability?: {
        inventories: boolean;
        receivables: boolean;
    };
    queries?: any;
    dataTypes?: any;
}> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const BorrowerSettingsModel: mongoose.Model<IBorrowerSettingsDoc>;
