import { RuleTester } from 'eslint';
import type { ASTKindToNode } from 'graphql';
import type { GraphQLESTreeNode } from './estree-converter';
import type { GraphQLESLintRule, ParserOptions } from './types';
export declare type GraphQLESLintRuleListener<WithTypeInfo extends boolean = false> = {
    [K in keyof ASTKindToNode]?: (node: GraphQLESTreeNode<ASTKindToNode[K], WithTypeInfo>) => void;
} & Record<string, any>;
export declare type GraphQLValidTestCase<Options> = Omit<RuleTester.ValidTestCase, 'options' | 'parserOptions'> & {
    options?: Options;
    parserOptions?: ParserOptions;
};
export declare type GraphQLInvalidTestCase<T> = GraphQLValidTestCase<T> & {
    errors: number | (RuleTester.TestCaseError | string)[];
    output?: string | null;
};
export declare class GraphQLRuleTester extends RuleTester {
    config: {
        parser: string;
        parserOptions: Omit<ParserOptions, 'filePath'>;
    };
    constructor(parserOptions?: Omit<ParserOptions, 'filePath'>);
    fromMockFile(path: string): string;
    runGraphQLTests<Options, WithTypeInfo extends boolean = false>(ruleId: string, rule: GraphQLESLintRule<Options, WithTypeInfo>, tests: {
        valid: (string | GraphQLValidTestCase<Options>)[];
        invalid: GraphQLInvalidTestCase<Options>[];
    }): void;
}
