/**
 * Char Validation — Type resolution and char type detection helpers.
 *
 * Contains CharValidationContext, type alias resolution, char type detection,
 * module-level validation orchestration, and the main runCharValidationPass entry point.
 */
import { Diagnostic, SourceLocation } from "../../types/diagnostic.js";
import { IrModule, IrType, IrTypeAliasDeclaration, IrExpression } from "../types.js";
export type CharValidationResult = {
    readonly ok: boolean;
    readonly modules: readonly IrModule[];
    readonly diagnostics: readonly Diagnostic[];
};
export type CharValidationContext = {
    readonly filePath: string;
    readonly diagnostics: Diagnostic[];
    readonly typeAliases: ReadonlyMap<string, IrTypeAliasDeclaration>;
};
export declare const moduleLocation: (ctx: CharValidationContext) => SourceLocation;
export declare const stripNullish: (type: IrType | undefined) => IrType | undefined;
export declare const resolveTypeAliases: (type: IrType | undefined, ctx: CharValidationContext, seen?: ReadonlySet<string>) => IrType | undefined;
export declare const isCharType: (type: IrType | undefined, ctx: CharValidationContext) => boolean;
export declare const isCharTypedExpression: (expr: IrExpression, ctx: CharValidationContext) => boolean;
export declare const isStringCharAccessExpression: (expr: IrExpression) => boolean;
export declare const addCharDiagnostic: (ctx: CharValidationContext, message: string, location: SourceLocation, hint?: string) => void;
export declare const getPropertyExpectedType: (expectedType: IrType | undefined, propertyName: string, ctx: CharValidationContext) => IrType | undefined;
export declare const runCharValidationPass: (modules: readonly IrModule[]) => CharValidationResult;
//# sourceMappingURL=char-validation-types.d.ts.map