import { GraphQLRequestContext, GraphQLResponse, ValueOrPromise } from 'apollo-server-types';
import { ApolloError } from 'apollo-server-errors';
import { fetch, Request, Response } from 'apollo-server-env';
import { GraphQLDataSource, GraphQLDataSourceProcessOptions } from './types';
export declare class RemoteGraphQLDataSource<TContext extends Record<string, any> = Record<string, any>> implements GraphQLDataSource<TContext> {
    fetcher: typeof fetch;
    constructor(config?: Partial<RemoteGraphQLDataSource<TContext>> & object & ThisType<RemoteGraphQLDataSource<TContext>>);
    url: string;
    apq: boolean;
    honorSubgraphCacheControlHeader: boolean;
    process(options: GraphQLDataSourceProcessOptions<TContext>): Promise<GraphQLResponse>;
    private sendRequest;
    willSendRequest?(options: GraphQLDataSourceProcessOptions<TContext>): ValueOrPromise<void>;
    private respond;
    didReceiveResponse?(requestContext: Required<Pick<GraphQLRequestContext<TContext>, 'request' | 'response' | 'context'>>): ValueOrPromise<GraphQLResponse>;
    didEncounterError(error: Error, _fetchRequest: Request, _fetchResponse?: Response, _context?: TContext): void;
    parseBody(fetchResponse: Response, _fetchRequest?: Request, _context?: TContext): Promise<object | string>;
    errorFromResponse(response: Response): Promise<ApolloError>;
}
//# sourceMappingURL=RemoteGraphQLDataSource.d.ts.map