/** 커널 `YieldEstimator` 와 같은 모양(커널 타입에 의존하지 않기 위해 구조로 맞춘다). */ export interface YieldEstimatorResult { estimator?: { estimate(ctx: { kind: string; }): number | undefined; }; /** 작업 종류 → 실측 양품률(0..1). 추정기가 답하는 종류들. */ learned: Record; /** 종류별 표본 — 배운 값의 근거 크기(화면·로그가 「몇 건에서 배웠나」를 말할 수 있게). */ samples: Record; /** 표본이 모자라 쓰지 않은 종류와 판정 건수 — 배우지 못한 것을 밝힌다. */ skipped: { kind: string; judged: number; }[]; minSamples: number; } /** * 기본 표본 하한 — 판정 20건 미만이면 그 종류는 배우지 않는다. * * 소요(5건)보다 높게 잡는 이유: 비율은 **드문 사건**을 재는 값이다. 불량률 5% 인 공정에서 20건을 봐도 * 불량은 한 건이고, 그 한 건이 있고 없음으로 비율이 0% 와 5% 사이를 오간다. 낮게 잡으면 추정기가 * 이력이라는 이름으로 잡음을 실어 보낸다. */ export declare const DEFAULT_YIELD_MIN_SAMPLES = 20; /** * 작업 종류별 KPI 그룹에서 양품률 추정기를 만든다(순수 — DB·커널 모름). * `groups` 는 `computeTwinKpi({ groupBy: 'taskKind' })` 의 `groups.items` 를 그대로 넘긴다. */ export declare function buildYieldEstimator(groups: { key: string; quality?: { good: number; scrap: number; }; }[] | undefined, opts?: { minSamples?: number; }): YieldEstimatorResult;