/**
 * Equality-literal and instanceof narrowing resolvers.
 *
 * Handles equality comparisons against literals (null, undefined, booleans,
 * strings, numbers), instanceof checks, and equality literal target resolution.
 */
import * as ts from "typescript";
import type { ProgramContext } from "../program-context.js";
import { type IrType } from "../types.js";
import { type TypeNarrowing } from "./narrowing-resolvers-typeof.js";
export type EqualityLiteralTarget = {
    readonly kind: "exact";
    readonly type: IrType;
} | {
    readonly kind: "nullish";
};
export declare const tryResolveEqualityLiteralTarget: (expr: ts.Expression) => EqualityLiteralTarget | undefined;
export declare const candidateMatchesEqualityLiteral: (candidate: IrType, literal: EqualityLiteralTarget) => boolean;
export declare const narrowTypeByEqualityLiteral: (currentType: IrType | undefined, literal: EqualityLiteralTarget, wantEqual: boolean, ctx: ProgramContext) => IrType | undefined;
export declare const tryResolveEqualityLiteralNarrowing: (expr: ts.Expression, ctx: ProgramContext, whenTruthy: boolean) => TypeNarrowing | undefined;
export declare const resolveInstanceofTargetType: (expr: ts.Expression, ctx: ProgramContext) => IrType | undefined;
//# sourceMappingURL=narrowing-resolvers-equality.d.ts.map