/**
 * Validator
 *
 * Phase 1: TypeScript "Good Parts" validation
 *
 * Enforces a statically analyzable subset of TypeScript by removing:
 * - Dynamic features (eval, with, arguments)
 * - Implicit coercion (==, !=, type mixing)
 * - var declarations
 * - for-in loops
 * - Prototypal manipulation
 * - Standalone this usage
 * - Truthy/falsy checks
 * - Delete operator
 * - Any type
 * - And more...
 *
 * See: https://github.com/fcapolini/goodscript/blob/main/docs/GOOD-PARTS.md
 */
import ts from 'typescript';
import type { Diagnostic } from '../types.js';
export declare class Validator {
    private diagnostics;
    private sourceFile;
    validate(sourceFile: ts.SourceFile): Diagnostic[];
    private visitNode;
    /**
     * GS101: No with statement
     */
    private checkWithStatement;
    /**
     * GS102: No eval or Function constructor
     */
    private checkEvalAndFunction;
    /**
     * GS103: No arguments object
     */
    private checkArguments;
    /**
     * GS104: No for-in loops
     */
    private checkForInLoop;
    /**
     * GS105: No var keyword
     */
    private checkVarKeyword;
    /**
     * GS106/GS107: Strict equality only
     */
    private checkEqualityOperators;
    /**
     * GS108: No 'this' in function declarations/expressions
     */
    private checkThisUsage;
    /**
     * GS109: No any type
     */
    private checkAnyType;
    /**
     * GS110: No implicit truthy/falsy checks
     */
    private checkTruthyFalsy;
    private isExplicitBoolean;
    /**
     * GS111: No delete operator
     */
    private checkDeleteOperator;
    /**
     * GS112: No comma operator
     */
    private checkCommaOperator;
    /**
     * GS113: No switch fall-through
     */
    private checkSwitchFallthrough;
    private isTerminatingStatement;
    /**
     * GS115: No void operator
     */
    private checkVoidOperator;
    /**
     * GS116: No primitive wrapper constructors with 'new'
     */
    private checkPrimitiveConstructors;
    /**
     * GS126: No prototype manipulation
     */
    private checkPrototypeAccess;
    /**
     * GS127: No dynamic import with non-literal paths
     */
    private checkDynamicImport;
    private addError;
}
//# sourceMappingURL=validator.d.ts.map