/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/document" />
/// <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, Model } from 'mongoose';
export type TQueryParams = {
    borrowerId?: mongoose.Types.ObjectId;
    bbcDateId?: mongoose.Types.ObjectId;
    startDate?: Date;
    endDate?: Date;
    extraParams?: {
        [key: string]: any;
    };
};
export declare enum EQueriesGroups {
    INVENTORY = "INVENTORY",
    RECEIVABLE = "RECEIVABLE",
    OTHER = "OTHER",
    CASH = "CASH",
    SALES = "SALES"
}
export declare enum EChartsInventory {
    BENFORD = "BENFORD",
    EXPOSURES = "EXPOSURES",
    EXPOSURES_CATEGORIES = "EXPOSURES_CATEGORIES",
    AGING_PLOT = "AGING_PLOT",
    AVERAGE_SKU_VALUES = "AVERAGE_SKU_VALUES",
    UNIT_COST_DIFFERENCE = "UNIT_COST_DIFFERENCE",
    INCONSISTENT_DATA = "INCONSISTENT_DATA",
    INVENTORY_TURN = "INVENTORY_TURN",
    INVOICE_DIFFERENCE = "INVOICE_DIFFERENCE",
    MOVEMENT = "MOVEMENT",
    EXTENSION = "EXTENSION"
}
export declare enum EChartsReceivable {
    BENFORD = "BENFORD",
    EXPOSURES = "EXPOSURES",
    EXPOSURES_CUSTOMERS = "EXPOSURES_CUSTOMERS",
    DUPLICATES = "DUPLICATES",
    AVERAGE_INVOICE = "AVERAGE_INVOICE",
    INVOICE_VALUE_PLOT = "INVOICE_VALUE_PLOT",
    AGING_PLOT = "AGING_PLOT",
    INVOICE_DIFFERENCE = "INVOICE_DIFFERENCE",
    PARTIALLY_PAID_RESTATED = "PARTIALLY_PAID_RESTATED",
    AR_TURN = "AR_TURN",
    GROUP_CUSTOMERS = "GROUP_CUSTOMERS"
}
export declare enum EChartsMisc {
    CONTRAS = "CONTRAS"
}
export declare enum EChartsCash {
    TRANSACTIONS = "TRANSACTIONS",
    DELUTION = "DELUTION"
}
export declare enum EChartsSales {
    FOR_PERIOD = "FOR_PERIOD"
}
export declare enum EFilterParams {
    NONE = "NONE",
    BBC = "BBC",
    PERIOD = "PERIOD",
    CUSTOM = "CUSTOM"
}
interface IQueryDetail {
    scheduled: boolean;
    queryAPI: string;
    queryFunction: ((params: TQueryParams) => unknown) | null;
    filterParams?: EFilterParams;
    sheetTitle?: string;
}
type TQueryGroups = {
    [EQueriesGroups.INVENTORY]: {
        [key in EChartsInventory]: IQueryDetail;
    };
    [EQueriesGroups.RECEIVABLE]: {
        [key in EChartsReceivable]: IQueryDetail;
    };
    [EQueriesGroups.OTHER]: {
        [key in EChartsMisc]: IQueryDetail;
    };
    [EQueriesGroups.CASH]: {
        [key in EChartsCash]: IQueryDetail;
    };
    [EQueriesGroups.SALES]: {
        [key in EChartsSales]: IQueryDetail;
    };
};
export declare const QUERY_GROUPS: TQueryGroups;
export interface IQueryResult {
    query: string;
    filter: Object;
    userId?: string;
    result: Object;
}
export interface IQueryResultDoc extends IQueryResult, Document {
}
type TQueryResultModel = Model<IQueryResult, {}, {}>;
export declare const QueryResultSchema: mongoose.Schema<IQueryResult, TQueryResultModel, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IQueryResult, mongoose.Document<unknown, {}, mongoose.FlatRecord<IQueryResult>> & mongoose.FlatRecord<IQueryResult> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const QueryResult: TQueryResultModel;
export {};
