///
import { Types } from 'mongoose';
import { Convert, EnumOrString, Extract, GetType, TypeOptions, GetSubDocument, ArrElement } from './types';
export declare const Type: {
number: >(options?: O | undefined) => GetType;
boolean: >(options?: O_1 | undefined) => GetType;
date: >(options?: O_2 | undefined) => GetType;
mixed: >(options?: O_3 | undefined) => GetType;
objectId: >(options?: O_4 | undefined) => GetType;
string: , string | number> & Partial & Record<"select", boolean>> & {
enum?: readonly string[] | undefined;
}>(options?: O_5 | undefined) => GetType>;
decimal128: >(options?: O_6 | undefined) => GetType;
buffer: >(options?: O_7 | undefined) => GetType;
object: >(options?: O_8 | undefined) => {
of(schema: T): GetType]: Convert[P]; }>;
};
array: >(options?: O_9 | undefined) => {
of(schema: T_1): GetType ? ArrElement[] : ArrElement extends Record<"definition", any> ? (ArrElement extends {
options: infer U;
} ? U : never) extends Record<"_id", false> ? import("./types/_shared").SubDocumentArrayNoId> & import("./types/_shared").SubDocumentNoId> : import("./types/_shared").SubDocumentArray> & import("./types/_shared").SubDocument> : ArrElement[]>;
};
schema: >(options?: O_10 | undefined) => {
of>(schema: T_2): GetType & GetSubDocument>;
};
ref: (schema: T_3) => {
to>(name: string, refSchema: TSchema): T_3 | (T_3 extends Record<"notRequired", any> ? Record<"notRequired", TSchema["definition"]> : TSchema["definition"]);
};
};