import type { Model, Schema } from 'mongoose';
import { Document } from 'mongoose';
import type { ComposeOutputTypeDefinition, EnumTypeComposer, ObjectTypeComposer, SchemaComposer } from 'graphql-compose';
import type { GraphQLScalarType } from 'graphql-compose/lib/graphql';
type MongooseFieldT = {
    path?: string;
    instance: string;
    caster?: any;
    embeddedSchemaType?: any;
    options?: {
        description?: string;
        alias?: string;
    };
    originalRequiredValue?: string | (() => any);
    isRequired?: boolean;
    defaultValue?: any;
    enumValues?: string[] | number[];
    schema?: Schema;
    _index?: {
        [optionName: string]: any;
    };
};
type MongooseFieldMapT = {
    [fieldName: string]: MongooseFieldT;
};
type ComposeScalarType = string | GraphQLScalarType;
export type MongoosePseudoModelT = {
    schema: Schema<any>;
};
export declare enum ComplexTypes {
    ARRAY = "ARRAY",
    EMBEDDED = "EMBEDDED",
    DOCUMENT_ARRAY = "DOCUMENT_ARRAY",
    ENUM = "ENUM",
    REFERENCE = "REFERENCE",
    SCALAR = "SCALAR",
    MIXED = "MIXED",
    DECIMAL = "DECIMAL"
}
export declare function dotPathsToEmbedded(fields: MongooseFieldMapT): MongooseFieldMapT;
export declare function getFieldsFromModel(model: Model<any> | MongoosePseudoModelT): MongooseFieldMapT;
export declare function convertModelToGraphQL<TDoc extends Document, TContext>(model: Model<TDoc> | MongoosePseudoModelT, typeName: string, schemaComposer: SchemaComposer<TContext>): ObjectTypeComposer<TDoc, TContext>;
export declare function convertSchemaToGraphQL(schema: Schema<any>, typeName: string, schemaComposer: SchemaComposer<any>): ObjectTypeComposer<any, any>;
export declare function convertFieldToGraphQL(field: MongooseFieldT, prefix: string | undefined, schemaComposer: SchemaComposer<any>): ComposeOutputTypeDefinition<any>;
export declare function deriveComplexType(field: MongooseFieldT): ComplexTypes;
export declare function scalarToGraphQL(field: MongooseFieldT): ComposeScalarType;
export declare function arrayToGraphQL(field: MongooseFieldT, prefix: string | undefined, schemaComposer: SchemaComposer<any>): ComposeOutputTypeDefinition<any>;
export declare function embeddedToGraphQL(field: MongooseFieldT, prefix: string | undefined, schemaComposer: SchemaComposer<any>): ObjectTypeComposer<any, any>;
export declare function enumToGraphQL(field: MongooseFieldT, prefix: string | undefined, schemaComposer: SchemaComposer<any>): EnumTypeComposer<any>;
export declare function documentArrayToGraphQL(field: MongooseFieldT, prefix: string | undefined, schemaComposer: SchemaComposer<any>): [ObjectTypeComposer<any, any>];
export declare function referenceToGraphQL(field: MongooseFieldT): ComposeScalarType;
export {};
//# sourceMappingURL=fieldsConverter.d.ts.map