import type { WorkflowGraphModel } from "../workflow-graph-model.js";
import type { InsertionContext } from "./insertion-context.js";
/**
 * A task kind that is disabled in the current context, with a reason.
 *
 * Rendered as a dimmed, non-selectable item in the picker with a
 * tooltip explaining why it cannot be inserted here.
 */
export interface DisabledKindEntry {
    readonly kind: string;
    readonly reason: string;
}
/**
 * Returns the set of task kinds that should be hidden from the picker entirely.
 * These are sentinel/internal kinds that are never user-insertable.
 */
export declare function getHiddenKinds(): ReadonlySet<string>;
/**
 * Determines which task kinds should be disabled (shown but not selectable)
 * in the picker for the given insertion context.
 *
 * Each disabled entry includes a human-readable reason that is shown as a
 * tooltip. This helps users understand structural constraints without
 * trial-and-error.
 *
 * Rules are derived from DSL structural constraints:
 * - Fork cannot be inserted in a terminal position (no outgoing path)
 * - for_each cannot nest inside for_each (runner limitation)
 * - Container kinds have insertion constraints based on graph position
 */
export declare function getDisabledKinds(context: InsertionContext, graph: WorkflowGraphModel): readonly DisabledKindEntry[];
//# sourceMappingURL=compatibility.d.ts.map