import type { BoardPlacementItem } from '@operato/board/board-placement-palette.js'; export interface PlacementRow { item: BoardPlacementItem; /** 들여쓰기 깊이. 화면은 이 값만 곱하면 된다. */ depth: number; /** 길을 보여 주려고 끼운 조상 — 그 자체는 놓을 것이 없다. */ context?: boolean; } /** * 계층 뷰 — 부모 순서로 늘어놓고 깊이를 함께 준다. * * `keep` 을 주면 그 항목들만 남기되 **조상은 길로 함께 남긴다**(맥락). 조상을 빼면 트리가 끊겨 어디에 * 속한 것인지 알 수 없다. 부모를 못 찾은 항목은 버리지 않고 최상위로 올린다. */ export declare function toPlacementTree(items: readonly BoardPlacementItem[], keep?: (item: BoardPlacementItem) => boolean): PlacementRow[]; /** * 종류 뷰 — `group` 이 있는 항목만 묶는다. * * `group` 이 없는 항목(계층 단계 같은 것)은 **종류가 아니므로** 여기 나오지 않는다. 그것들은 계층 뷰에서 * 고른다. 묶음 이름순으로 낸다. */ export declare function toPlacementGroups(items: readonly BoardPlacementItem[]): { group: string; items: BoardPlacementItem[]; }[]; /** 두 뷰를 쓸 수 있는 목록인가 — 호스트가 소속·종류를 주지 않으면 예전처럼 평평하게 보여 준다. */ export declare function hasHierarchy(items: readonly BoardPlacementItem[]): boolean; export declare function hasGroups(items: readonly BoardPlacementItem[]): boolean;