/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/types" />
/// <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 { ICollateralItem } from '../interfaces/collaterals.interface';
import { IBBCSheetDoc } from './BBCSheet.model';
import { IBBCDateDoc } from './BBCDate.model';
export declare const INVENTORY_FIELDS: string[];
export interface IInventoryItem extends ICollateralItem {
    skuDate: Date;
    category: string;
    sku: string;
    qty: number;
    value: number;
    expiryDate: Date;
    location: string;
    unitCost: number;
    skuDescription1: string;
    skuDescription2: string;
    skuDescription3: string;
    detail1: string;
    detail2: string;
    detail3: string;
}
export interface IInventoryItemDoc extends Document, IInventoryItem {
}
export type ЕInventoryItemDoc = mongoose.HydratedDocument<IInventoryItem>;
export interface IInventoryItemLean extends IInventoryItem {
    _id: mongoose.Types.ObjectId;
    createdAt: Date;
    updatedAt: Date;
}
export interface IInventoryItemPlain extends Omit<IInventoryItem, 'bbcSheetId'> {
    _id: string;
    bbcSheetId: string;
    createdAt: Date;
    updatedAt: Date;
}
export type TIInventoryItemModel = mongoose.Model<IInventoryItem>;
export interface IInventoryItemDocWithCalculation extends IInventoryItemDoc {
    bbcSheet: IBBCSheetDoc;
    bbc: IBBCDateDoc;
    expireDays: number;
    skuDays: number;
    sheetName: string;
    inventoryName: string;
    advanceRate: number;
    availability: number;
}
export interface IInventoryItemAvailabilityWithGroups extends IInventoryItemDocWithCalculation {
    groups: string[];
}
interface IMatchedGroup {
    groups: string[];
    items: IInventoryItemAvailabilityWithGroups[];
}
export interface IMatchedGroups {
    [groupName: string]: IMatchedGroup;
}
export declare const InventoryItemSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    timestamps: true;
}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    bbcSheetId: mongoose.Types.ObjectId;
    order: number;
    sku: string;
    skuDate: Date;
    category: string;
    qty: number;
    value: number;
    __v?: number;
    expiryDate?: Date;
    location?: string;
    unitCost?: number;
    skuDescription1?: string;
    skuDescription2?: string;
    skuDescription3?: string;
    detail1?: string;
    detail2?: string;
    detail3?: string;
    lotNumber?: string;
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    bbcSheetId: mongoose.Types.ObjectId;
    order: number;
    sku: string;
    skuDate: Date;
    category: string;
    qty: number;
    value: number;
    __v?: number;
    expiryDate?: Date;
    location?: string;
    unitCost?: number;
    skuDescription1?: string;
    skuDescription2?: string;
    skuDescription3?: string;
    detail1?: string;
    detail2?: string;
    detail3?: string;
    lotNumber?: string;
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    bbcSheetId: mongoose.Types.ObjectId;
    order: number;
    sku: string;
    skuDate: Date;
    category: string;
    qty: number;
    value: number;
    __v?: number;
    expiryDate?: Date;
    location?: string;
    unitCost?: number;
    skuDescription1?: string;
    skuDescription2?: string;
    skuDescription3?: string;
    detail1?: string;
    detail2?: string;
    detail3?: string;
    lotNumber?: string;
}> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const InventoryItemModel: mongoose.Model<IInventoryItemDoc>;
export {};
