/** * 탐색기 필터 — 순수 로직. 매칭 노드 + 그 조상 체인을 보존하는 keep 집합을 계산한다. * * 매칭 축은 표시 모드에 묶지 않는다: 노드의 `matchText`(논리·물리·코드명을 소문자로 합쳐둔 문자열)에 * 대한 대소문자 무시 부분일치 — 사용자가 어떤 이름 표기를 기억하든 찾히도록. `matchText`가 없는 노드 * (그룹·관계/노트 섹션 등 필터 비대상)는 자기 자신으로는 매칭되지 않고, 자손이 매칭될 때만 조상으로 보존된다. */ export interface FilterableNode { key: string; /** 검색 대상 문자열(소문자 합성). 없으면 자기 자신은 매칭 대상이 아님. */ matchText?: string; children: FilterableNode[]; } /** 검색 축 합성 — 빈 값 제외 후 소문자·공백 결합. 모두 비면 undefined(필터 비대상 노드). */ export declare function buildMatchText(...parts: Array): string | undefined; /** * `query`(호출부에서 trim·소문자로 정규화, 비어있지 않다고 가정)에 대해 트리에서 보존할 노드 key 집합. * 노드가 self 매칭이거나 자손이 보존되면 포함 → 조상 체인이 자동으로 함께 보존된다. */ export declare function computeKeptKeys(root: FilterableNode, query: string): Set;