/**
 * Functions to create resolve functions.
 */
import { ParameterObject } from './types/oas3';
import { Operation } from './types/operation';
import { ResolveFunction, SubscriptionContext } from './types/graphql';
import { PreprocessingData } from './types/preprocessing_data';
import { GraphQLFieldResolver } from 'graphql';
import { ConnectOptions, RequestOptions } from './types/options';
import { Logger, MeshPubSub } from '@graphql-mesh/types';
declare type GetResolverParams<TSource, TContext, TArgs> = {
    operation: Operation;
    argsFromLink?: Record<string, string>;
    payloadName?: string;
    responseName?: string;
    data: PreprocessingData<TSource, TContext, TArgs>;
    baseUrl?: string;
    requestOptions?: RequestOptions<TSource, TContext, TArgs>;
    fetch?: (input: RequestInfo, init?: RequestInit, ctx?: TContext) => Promise<Response>;
    qs?: Record<string, string>;
    logger: Logger;
};
declare type GetSubscribeParams<TSource, TContext, TArgs> = {
    operation: Operation;
    argsFromLink?: {
        [key: string]: string;
    };
    payloadName?: string;
    data: PreprocessingData<TSource, TContext, TArgs>;
    baseUrl?: string;
    connectOptions?: ConnectOptions;
    pubsub: MeshPubSub;
    logger: Logger;
};
export declare function getSubscribe<TSource, TContext, TArgs>({ operation, payloadName, data, baseUrl, connectOptions, pubsub, logger, }: GetSubscribeParams<TSource, TContext, TArgs>): GraphQLFieldResolver<TSource, SubscriptionContext, TArgs>;
export declare function getPublishResolver<TSource, TContext, TArgs>({ operation, responseName, data, logger, }: GetResolverParams<TSource, TContext, TArgs>): GraphQLFieldResolver<TSource, TContext, TArgs>;
export declare type ResolverMiddleware<TSource, TContext, TArgs> = (getResolverParams: () => GetResolverParams<TSource, TContext, TArgs>, factory: ResolverFactory) => ResolveFunction;
declare type ResolverFactory = typeof getResolver;
/**
 * Creates and returns a resolver function that performs API requests for the
 * given GraphQL query
 */
export declare function getResolver<TSource, TContext, TArgs>(getResolverParams: () => GetResolverParams<TSource, TContext, TArgs>, logger: Logger): ResolveFunction;
/**
 * Extracts data from the GraphQL arguments of a particular field
 *
 * Replaces the path parameter in the given path with values in the given args.
 * Furthermore adds the query parameters for a request.
 */
export declare function extractRequestDataFromArgs<TSource, TContext, TArgs>(path: string, parameters: ParameterObject[], args: TArgs, // NOTE: argument keys are sanitized!
data: PreprocessingData<TSource, TContext, TArgs>, logger: Logger): {
    path: string;
    qs: {
        [key: string]: string;
    };
    headers: {
        [key: string]: string;
    };
};
export {};
