import { DocumentNode, ExecutionArgs, ExecutionResult, FormattedExecutionResult, GraphQLArgs, GraphQLError, GraphQLFormattedError, GraphQLSchema, SubscriptionArgs } from "graphql";
import { BenzeneGraphQLArgs, CompiledResult, ContextFn, Maybe, Options, ValueOrPromise } from "./types";
export default class Benzene<TContext = any, TExtra = any> {
    private lru;
    schema: GraphQLSchema;
    private validateFn;
    private validationRules?;
    formatErrorFn: (error: GraphQLError) => GraphQLFormattedError;
    contextFn?: ContextFn<TContext, TExtra>;
    private compileQuery;
    constructor(options: Options<TContext, TExtra>);
    compile(query: string | DocumentNode, operationName?: Maybe<string>): CompiledResult | ExecutionResult;
    formatExecutionResult(result: ExecutionResult): FormattedExecutionResult;
    graphql({ source, contextValue, variableValues, operationName, rootValue, }: Partial<GraphQLArgs> & {
        source: string;
    }): Promise<FormattedExecutionResult>;
    execute(args: BenzeneGraphQLArgs<ExecutionArgs>): ValueOrPromise<ExecutionResult>;
    subscribe(args: BenzeneGraphQLArgs<SubscriptionArgs>): Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult>;
}
