/** 라우팅에 필요한 인스턴스 사실만 — 엔진 객체를 그대로 받지 않는다(순수하게 유지). */ export interface RoutableInstance { /** 'live' 면 현실을 비추는 트윈(미러). 그 외는 시뮬. */ mode?: string; /** 커널 런타임(tick/dispatch)이 붙어 있나 — 시뮬 경로에서만 만들어진다. */ hasRuntime: boolean; /** 관측 커널이 dispatch 를 받을 수 있나. */ hasKernelDispatch: boolean; } export type CommandRoute = /** 커널 런타임으로(시뮬 — 커널이 세계다). */ { target: 'runtime'; } /** 관측 커널로(미러 — 주석만). 방출된 사실은 저널 큐에 실어야 한다. */ | { target: 'kernel'; } /** 보내지 않는다. 사유는 언어 중립 코드 — 화면이 `twin.cmderr.` 로 사람 말을 만든다. */ | { target: 'reject'; errorCode: string; errorParams?: Record; }; /** 이 커맨드가 실 프로세스를 바꾸는 것인가(= 액추에이션). */ export declare const isActuation: (type: string) => boolean; /** * 어디로 보낼지 정한다. * * `inst` 가 없거나 호출자 도메인 소유가 아니면 **같은 사유로** 거절한다 — 존재 여부를 알려 주면 * 다른 테넌트의 인스턴스 id 를 추측할 수 있다(있음/없음이 구별되면 그것이 정보다). */ export declare function routeCommand(inst: RoutableInstance | undefined, ownedByCaller: boolean, type: string): CommandRoute;