import { GraphQLSchema } from 'graphql';
import { ISettings, Session } from '../../types';
import { ApolloLink } from 'apollo-link';
export interface TracingSchemaTuple {
    schema: GraphQLSchema;
    tracingSupported: boolean;
}
export declare type LinkGetter = (session: Session) => ApolloLink;
export declare class SchemaFetcher {
    cache: Map<string, TracingSchemaTuple>;
    settings: ISettings;
    linkGetter: LinkGetter;
    constructor(settings: ISettings, linkGetter: LinkGetter);
    fetch(session: Session): Promise<TracingSchemaTuple | {
        schema: GraphQLSchema;
        tracingSupported: boolean;
    } | null>;
    refetch(session: Session): Promise<{
        schema: GraphQLSchema;
        tracingSupported: boolean;
    } | null>;
    hash(session: Session): any;
    private fetchSchema(session);
}
