export declare class TwinControlMutation { /** Command 채널 — 오더 hold/resume/release 등. 커널 dispatch 로 위임, ack{accepted,error} 반환. */ dispatchTwinCommand(instanceId: string, command: any, context: ResolverContext): Promise<{ accepted: boolean; error?: string; errorCode?: string; errorParams?: Record; }>; /** * 구동 채널 — **원본을 지난다**(ADR-0029 §8). * * ── 무엇이 바뀌었나 (2026-08-19) ────────────────────────────────────────── * 예전에는 이 문이 `TwinEngine.runtime(...).scenario` 를 **직접** 잡았다. 시뮬만 할 수 있는 일(자극·배속· * 정지)이 계약 밖의 지름길로 들어온 셈이고, 실 시스템에는 그 자리가 아예 없었다. 이제 길은 하나다: * 트윈 → 그 트윈의 원본 → 어댑터가 **선언한** `control` 능력. 선언하지 않은 원본에는 문이 열리지 않고, * 그 사실을 사유 코드로 말한다(`not-declared`) — 실 WMS 가 정지되지 않는 것은 결손이 아니다. * * 반환을 Boolean 에서 객체로 바꿨다: 예전에는 거절 사유를 실을 자리가 없어 **로그로만** 남겼다. * 화면은 왜 안 되는지 알 수 없었다. */ controlTwinSource(instanceId: string, action: string, context: ResolverContext, scenario?: any, speed?: number): Promise; /** 이 트윈의 원본이 **무엇을 받을 수 있나** — 화면이 버튼을 열기 전에 묻는 자리. */ twinSourceCapability(instanceId: string, context: ResolverContext): Promise; }