import { type LabelRowKind } from "../UiLabelRow/UiLabelRow.js";
/**
 * One label entry in the checklist.
 *
 * @internal
 */
export interface IUiLabelsChecklistItem {
    id: string;
    label: string;
    kind?: LabelRowKind;
    /** Locked rows render checked + disabled and are always included (the primary key). */
    locked?: boolean;
}
/**
 * Whether an item counts as selected: locked items always do, otherwise
 * membership in `selectedIds`. Exported so callers apply the same rule.
 *
 * @internal
 */
export declare const isLabelsChecklistItemChecked: (item: IUiLabelsChecklistItem, selectedIds: readonly string[]) => boolean;
/**
 * @internal
 */
export interface IUiLabelsChecklistProps {
    items: ReadonlyArray<IUiLabelsChecklistItem>;
    /** Locked items are always selected regardless of this. */
    defaultSelectedIds: ReadonlyArray<string>;
    /** Fires on Apply with the locked-augmented selection (staged internally until then). */
    onApply: (selectedIds: string[]) => void;
    /** Back arrow — returns to the parent view. */
    onBack: () => void;
    /** Dismisses the menu; Cancel and (post-commit) Apply both call it. */
    onClose: () => void;
    dataTestId?: string;
}
/**
 * Per-label checklist drill-in for the grantee "⋯" menu. Stages selection
 * internally, commits via `onApply`, and renders its own back-only header so it
 * slots into {@link UiMenu} as a `showComponentOnly` content item.
 *
 * @internal
 */
export declare function UiLabelsChecklist({ items, defaultSelectedIds, onApply, onBack, onClose, dataTestId }: IUiLabelsChecklistProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=UiLabelsChecklist.d.ts.map