import { GraphQLFieldResolver, GraphQLField, GraphQLTypeResolver, GraphQLScalarType } from 'graphql';
import { PackOptions } from './pack/types';
declare type ManagedContext = {
    [key: string]: any;
    pack?: PackOptions;
};
export declare type ObjectField = GraphQLField<any, any>;
export declare type FieldResolver<Source = any, Context = any, Args = any, Result = any> = GraphQLFieldResolver<Source, Context, Args, Result>;
export declare type TypeResolver<Source = any, Context = any> = GraphQLTypeResolver<Source, Context>;
export declare type ResolverParent<Resolver extends FieldResolver = FieldResolver> = Parameters<Resolver>[0];
export declare type ResolverArgs<Resolver extends FieldResolver = FieldResolver> = Parameters<Resolver>[1];
export declare type ResolverContext = ManagedContext;
export declare type ResolverInfo<Resolver extends FieldResolver = FieldResolver> = Parameters<Resolver>[3];
export declare type BasicScalarDefinition = {
    serialize?: GraphQLScalarType['serialize'];
    parseValue?: GraphQLScalarType['parseValue'];
    parseLiteral?: GraphQLScalarType['parseLiteral'];
};
export declare type ScalarMap = {
    [typename: string]: GraphQLScalarType | BasicScalarDefinition;
};
export declare type ResolverMap<TFieldResolver = FieldResolver, TTypeResolver = TypeResolver> = {
    [typeName: string]: {
        [fieldName: string]: TFieldResolver;
    } & {
        __resolveType?: TTypeResolver;
    };
};
export declare type ResolverMapMiddleware = (map: ResolverMap, packOptions: PackOptions) => ResolverMap | Promise<ResolverMap>;
export {};
