/** * Structural guard detectors: predicate guards and instanceof guards. */ import { IrExpression } from "@tsonic/frontend"; import { EmitterContext } from "../../../types.js"; import type { GuardInfo, InstanceofGuardInfo } from "./guard-types.js"; /** * Try to extract guard info from a predicate call expression. * Returns GuardInfo if: * - call.narrowing is typePredicate * - predicate arg is identifier * - arg.inferredType resolves to unionType * - targetType exists in union */ export declare const tryResolvePredicateGuard: (call: Extract, context: EmitterContext) => GuardInfo | undefined; /** * Try to extract guard info from an `instanceof` binary expression. * Returns guard info if: * - condition is `binary` with operator `instanceof` * - lhs is identifier * * Note: rhs is emitted as a type name (C# pattern). */ export declare const tryResolveInstanceofGuard: (condition: IrExpression, context: EmitterContext) => InstanceofGuardInfo | undefined; //# sourceMappingURL=guard-detectors-structural.d.ts.map