import { GraphQLResolveInfo, ExecutionResult, GraphQLSchema } from 'graphql';
import { FragmentReplacements } from 'graphql-binding';
export declare class Handler<T extends object> implements ProxyHandler<T> {
    private schema;
    private fragmentReplacements;
    private operation;
    private before;
    constructor(schema: GraphQLSchema, fragmentReplacements: FragmentReplacements, operation: 'query' | 'mutation', before: () => void);
    get(target: T, rootFieldName: string): (args?: {
        [key: string]: any;
    } | undefined, info?: string | GraphQLResolveInfo | undefined) => Promise<ExecutionResult>;
}
export declare class SubscriptionHandler<T extends object> implements ProxyHandler<T> {
    private schema;
    private fragmentReplacements;
    private before;
    constructor(schema: GraphQLSchema, fragmentReplacements: FragmentReplacements, before: () => void);
    get(target: T, rootFieldName: string): (args?: {
        [key: string]: any;
    } | undefined, infoOrQuery?: string | GraphQLResolveInfo | undefined) => Promise<AsyncIterator<any>>;
}
