import type { GraphQLFieldResolver, GraphQLResolveInfo } from "graphql";
import type { Driver } from "neo4j-driver";
import { Executor } from "../../../classes/Executor";
import type { Neo4jDatabaseInfo } from "../../../classes/Neo4jDatabaseInfo";
import type { Neo4jGraphQLAuthorization } from "../../../classes/authorization/Neo4jGraphQLAuthorization";
import type { Neo4jGraphQLSchemaModel } from "../../../schema-model/Neo4jGraphQLSchemaModel";
import type { AuthorizationContext, ContextFeatures, FulltextContext, VectorContext } from "../../../types";
import type { Neo4jGraphQLContext } from "../../../types/neo4j-graphql-context";
export type WrapResolverArguments = {
    driver?: Driver;
    jwtPayloadFieldsMap?: Map<string, string>;
    schemaModel: Neo4jGraphQLSchemaModel;
    dbInfo?: Neo4jDatabaseInfo;
    features: ContextFeatures;
    authorization?: Neo4jGraphQLAuthorization;
};
/**
 * The type describing the context generated by {@link wrapQueryAndMutation}.
 */
export interface Neo4jGraphQLComposedContext extends Neo4jGraphQLContext {
    schemaModel: Neo4jGraphQLSchemaModel;
    features: ContextFeatures;
    executor: Executor;
    authorization: AuthorizationContext;
    neo4jDatabaseInfo?: Neo4jDatabaseInfo;
    fulltext?: FulltextContext;
    vector?: VectorContext;
}
export declare const wrapQueryAndMutation: ({ driver, jwtPayloadFieldsMap, schemaModel, dbInfo, authorization, features }: WrapResolverArguments) => (next: GraphQLFieldResolver<any, Neo4jGraphQLComposedContext>) => (root: any, args: any, context: Neo4jGraphQLContext, info: GraphQLResolveInfo) => Promise<unknown>;
//# sourceMappingURL=wrap-query-and-mutation.d.ts.map