import { Component } from '@hatiolab/things-scene'; /** 인덱스 1건 — 한 컴포넌트의 인스펙터 표시/조작에 필요한 메타. */ export interface IndexEntry { component: Component; /** 등록 타입(@sceneComponent 이름) — 그룹 키. */ type: string; id?: string; tag?: string; clazz?: string; /** state.name (검색 대상). */ name?: string; /** 표시용 라벨: #id @tag .(class) — 없으면 undefined. */ label?: string; hidden: boolean; locked: boolean; /** root(=0) 기준 깊이. flat 에는 depth>0 만 담긴다. */ depth: number; parent?: Component; isContainer: boolean; } export interface InspectorIndex { root: Component; /** 루트 제외, depth-first 순서의 전체 컴포넌트. */ flat: IndexEntry[]; /** 타입(state.type) → 해당 타입 엔트리 목록 (= "컴포넌트 그룹"). */ byType: Map; } /** scene root 를 순회해 flat 목록 + 타입 그룹 맵을 만든다. root 자신은 제외. */ export declare function buildInspectorIndex(root: Component): InspectorIndex; export type SearchField = 'type' | 'id' | 'tag' | 'name' | 'class'; /** 검색어 1개 — field 지정 시 그 필드만, 없으면 전 필드 통합 부분일치. */ export interface SearchTerm { field?: SearchField; value: string; } /** 검색 문자열을 공백 토큰화해 SearchTerm[] 로 파싱. `field:value` 는 필드 스코프. 소문자화. */ export declare function parseQuery(raw: string): SearchTerm[]; /** * 파싱된 검색어(AND)로 컴포넌트 매치 판정. * - field 지정 term → 해당 필드 부분일치 * - bare term → type/name/id/tag/class 통합 부분일치 * 빈 terms 는 항상 매치. */ export declare function matchesQuery(component: Component, terms: SearchTerm[]): boolean;