/**
 * Override detection for class members
 *
 * ALICE'S SPEC: Uses TypeSystem exclusively for declaration queries.
 */
import * as ts from "typescript";
import type { ProgramContext } from "../../../../program-context.js";
import type { IrParameter } from "../../../../types.js";
export type OverrideInfo = {
    readonly isOverride: boolean;
    readonly isShadow: boolean;
    /**
     * Required C# accessibility for an override against a CLR base member.
     *
     * CLR `protected internal` members must be overridden as `protected` in
     * generated source when the override is emitted from a different assembly.
     * TypeScript cannot express these CLR distinctions directly, so we
     * normalize them from bindings metadata here.
     */
    readonly requiredAccessibility?: "public" | "protected" | "internal" | "protected internal" | "private";
};
/**
 * Check if a method/property should be marked as override based on base class metadata.
 * DETERMINISTIC: Uses Binding API for symbol resolution.
 */
export declare const detectOverride: (memberName: string, memberKind: "method" | "property", superClass: ts.ExpressionWithTypeArguments | undefined, ctx: ProgramContext, parameters?: readonly IrParameter[]) => OverrideInfo;
//# sourceMappingURL=override-detection.d.ts.map