import { SchemaDefinition, Schema, Document, Model, Types } from "mongoose"; export type MongooseModule = typeof import("mongoose"); export type MongooseModel> = Model; export type MongooseSchema = Schema; type Omit = Pick>; export type MongooseDocument = Omit & { _id: Types.ObjectId; }; export type UnionToIntersection = (T extends unknown ? (p: T) => unknown : never) extends ((p: infer U) => unknown) ? U : never; export type UnboxPromise> = T extends Promise ? U : never; export type ModelItemType> = T extends Model ? U : never; export type SchemaItemType = T extends { _interface: infer U; } ? U : never; export type ReplaceModelReturnType Promise, TNewReturnType extends UnboxPromise>> = (...a: Parameters) => Promise; export type ItemTypeFromTypeSchemaFunction Promise> = ModelItemType>>; export type ModelTypeFromTypeSchemaFunction = Model; export type MongooseProperty = T extends { type: (Schema & { _interface: infer P; })[]; } ? P[] : T extends { type: ((...a: unknown[]) => infer P)[]; } ? P[] : T extends ((...a: unknown[]) => infer P)[] ? P[] : T extends (Schema & { _interface: infer P; })[] ? P[] : T extends { type: (...a: unknown[]) => infer P; } ? P : T extends { type: Schema & { _interface: infer P; }; } ? P : T extends (...a: unknown[]) => infer P ? P : T extends Schema & { _interface: infer P; } ? P : T extends { type: MongooseModule["Types"]["ObjectId"]; } ? Types.ObjectId : T extends MongooseModule["Types"]["ObjectId"] ? Types.ObjectId : T extends Record ? { [P in keyof T]: MongooseProperty; } : never; export type MongooseInterface = Record & { [P in keyof T]: MongooseProperty; }; export type TypedSchema = Schema & { _interface: MongooseInterface; }; export type TypedDocument> = Document & (T extends { _interface: infer U; } ? U : never); export type ModelFromSchemaDefinition = ModelFromSchema; }>; export type ModelFromSchema = Model>; export type DocumentFromSchemaDefinition = DocumentTypeFromSchema; }>; export type DocumentTypeFromSchema = T extends Schema & { _interface: infer TI; } ? TI & MongooseDocument & { schema: T; } : never; export type DocumentTypeFromModel> = T extends Model ? U : never; export type FieldsOfDocument = T extends Document & infer F ? F & { id?: unknown; _id: unknown; } : never; export declare function retrieveCurrentUnixTime(): number; export declare function currentDate(): Date; type Or = T & { $or?: Or[]; }; type NonFunctionKeys = { [P in keyof T]: T[P] extends (...a: never[]) => unknown ? never : P; }[keyof T]; interface Comparison { $eq?: T; $gt?: T; $gte?: T; $in?: T[]; $lt?: T; $lte?: T; $ne?: T; $nin?: T[]; } type PropConditions = T extends boolean ? Comparison : T extends number ? Comparison & { $mod?: [number, number]; } : T extends string ? Comparison & (Record | { $regex: string; $options: string; }) & (Record | { $text: { $search: string; $language?: string; $caseSensitive?: boolean; $diacriticSensitive?: boolean; }; }) : never; type Conditions = { [P in NonFunctionKeys]?: T[P] | PropConditions; }; export declare function conditions(_items: import("mongoose").Model, c: Or>): Or>; export declare function convertToObjectId(id: string): Types.ObjectId; export declare function disconnectMongoose(): Promise; export declare function closeAllMongooseConnections(): Promise; export declare function sleep(ms: number): Promise; export {}; //# sourceMappingURL=helpers.d.ts.map