import * as Lint from "tslint";
import * as ts from "typescript";
export declare class Rule extends Lint.Rules.TypedRule {
    static metadata: Lint.IRuleMetadata;
    static FAILURE_STRING: string;
    applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[];
}
export declare class Walker extends Lint.ProgramAwareRuleWalker {
    private _associationsByIdentifier;
    private _declarationsByIdentifier;
    private _deletes;
    private _ignored;
    private _scopes;
    private _withoutDeclarations;
    private _usageByIdentifier;
    private _validate;
    constructor(sourceFile: ts.SourceFile, rawOptions: Lint.IOptions, program: ts.Program);
    protected visitClassDeclaration(node: ts.ClassDeclaration): void;
    protected visitEnumDeclaration(node: ts.EnumDeclaration): void;
    protected visitFunctionDeclaration(node: ts.FunctionDeclaration): void;
    protected visitIdentifier(node: ts.Identifier): void;
    protected visitImportDeclaration(node: ts.ImportDeclaration): void;
    protected visitImportEqualsDeclaration(node: ts.ImportEqualsDeclaration): void;
    protected visitInterfaceDeclaration(node: ts.InterfaceDeclaration): void;
    protected visitJsxSelfClosingElement(node: ts.JsxSelfClosingElement): void;
    protected visitJsxElement(node: ts.JsxElement): void;
    protected visitNamedImports(node: ts.NamedImports): void;
    protected visitNamespaceImport(node: ts.NamespaceImport): void;
    protected visitNode(node: ts.Node): void;
    protected visitObjectLiteralExpression(node: ts.ObjectLiteralExpression): void;
    protected visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration): void;
    protected visitVariableStatement(node: ts.VariableStatement): void;
    private associate;
    private declared;
    private getFix;
    private getScopedIdentifier;
    private onSourceFileEnd;
    private seen;
    private seenJsx;
    private setScopedIdentifier;
    private used;
}
