import type { ReferenceAdapter } from './reference-adapter.js'; import { type ReferenceStep } from './reference-progress.js'; /** 마스터 한 벌에서 센 것 — 커넥터와 무관한 자리 이름으로만 센다. */ export interface MasterCounts { locations: number; areas: number; equipment: number; materialDefinitions: number; operations: number; /** 생산 선언이 없으면 `undefined` — 0 과 구별한다(선언 자체가 없는 것과 비어 있는 것은 다르다). */ materials?: number; materialsWithHome?: number; routes?: number; recipes?: number; recipesWithRoute?: number; locationTypes?: number; resourceTypes?: number; } export interface ProbeStep { key: ReferenceStep | string; detail?: string; /** 그 단계가 끝난 시각까지 걸린 밀리초 — 어느 단계가 느린지 보이게 한다. */ elapsedMs: number; } export interface ProbeReport { adapter: string; /** 어댑터가 선언하고 **구현까지 있는** 능력. 선언만 있는 것은 여기 나오지 않는다. */ capabilities: string[]; connection?: { ok: boolean; readiness?: string; notes?: string[]; error?: string; }; sites?: { siteId: string; name?: string; }[]; /** 사이트마다 한 벌 — 마스터는 사이트 단위다. */ masters: { siteId: string; steps: ProbeStep[]; counts?: MasterCounts; warnings: string[]; space?: unknown; identity?: unknown; /** 표본 — 눈으로 확인할 몇 건. 전체를 싣지 않는다(원본이 수천 건이다). */ samples?: { recipes?: unknown[]; routes?: unknown[]; locations?: unknown[]; }; elapsedMs: number; error?: string; }[]; /** 라이브를 부른 경우에만 — 한 주기가 낸 기록을 종류별로 센다. */ live?: { records: number; byShape: Record; samples: unknown[]; elapsedMs: number; error?: string; }; /** 선언한 단계 중 **한 번도 보고되지 않은** 것. 선언해 두고 보내지 않으면 화면의 진행이 멈춘 것처럼 보인다. */ silentSteps?: string[]; /** 선언하지 않은 이름으로 보고한 단계. 표준 낱말 밖의 값은 화면이 번역할 수 없다. */ unknownSteps?: string[]; } /** * 어댑터 한 벌을 실 원본에 붙여 본다. * * 실패를 던지지 않는다 — **어디까지 갔는지가 보고의 내용**이다. 연결이 안 되면 그 사실이, 마스터가 * 실패하면 어느 단계에서 실패했는지가 보고에 남는다(예외로 끝나면 그 정보가 사라진다). */ export declare function probeReference(opts: { adapter: ReferenceAdapter; config: any; /** 특정 사이트만 볼 때. 없으면 `discoverSites` 가 낸 전부. */ siteId?: string; /** * 라이브 한 주기를 부를지. **기본은 부르지 않는다** — 첫 주기가 전량 읽기다. * `waitMs` 만큼 기다린 뒤 멈춘다(주기가 끝나지 않았으면 그때까지 받은 것만 센다). */ live?: { waitMs: number; sampleCount?: number; }; /** 표본 건수 — 기본 3건. */ sampleCount?: number; }): Promise; /** 보고를 사람이 읽는 줄로 — 화면이 아니라 터미널·로그가 읽는다. */ export declare function formatProbeReport(r: ProbeReport): string;