import { Domain } from '@things-factory/shell'; import { User } from '@things-factory/auth-base'; export declare class TwinInstance { readonly id: string; domain?: Domain; domainId?: string; instanceId: string; /** * **사람이 부르는 이름** — 업무키(`instanceId`)와 나란히 두는 표시명(프레임워크 엔티티 규약). * * ── 왜 업무키와 이름을 나눠 두나 ───────────────────────────────────────────── * `instanceId` 는 URL·저널·구독이 전부 쓰는 **계약**이라 바꿀 수 없다. 반대로 이름은 바뀌고, * 중복되고(사이트 둘에 "도장" 이 있는 것이 정상), 언어마다 다르다. 둘을 한 컬럼에 담으면 개명이 * 곧 다른 트윈이 되고 재동기가 끊긴다 — 그래서 나눈다(이 저장소에서 식별자가 밖에서 오는 것은 * 전부 이 규약을 쓴다: `spaceId`·`locationId`·`equipmentId`·`operationKey`). * * 나눴으면 **이름을 반드시 함께 둬야 한다.** 이 자리가 없던 동안 사이트 이름은 model 안에만 있어서 * 목록이 `crew-two` 만 보였다 — 나누기만 하고 절반을 빼먹으면 화면에는 id 만 남는다. * * 원본이 이름을 말하지 않으면 비운다(id 를 베끼지 않는다). */ name?: string; description?: string; kind: string; restartPolicy: string; model?: any; localDeclarations?: any; spaceId?: string; areaId?: string; status?: string; purpose: string; copyOf?: string; /** * **이 트윈을 다시 읽는 방법** — 어떤 원본에서 나왔나(`MasterOrigin`). * * 트윈은 원본을 비출 뿐이므로(ADR-0028) 원본이 달라지면 다시 읽어야 한다. 그런데 이 자리가 없던 * 동안 트윈은 **자기가 무엇에서 나왔는지 몰랐다** — 어댑터로 들어온 트윈은 `TwinReference` 행이 * 있었지만 템플릿으로 세운 트윈에는 아무 표식도 없었고, 그래서 첫날의 모습에 영원히 머무는 * 트윈이 만들어졌다. 원천이 무엇이든 여기 한 자리에 남긴다. * * **비어 있을 수 있다** — 이 자리가 생기기 전에 만들어진 트윈이 그렇다. 그때는 "다시 읽을 수 * 없다" 가 사실이므로 화면이 그대로 말한다(짐작해 채우지 않는다). */ origin?: any; createdAt?: Date; updatedAt?: Date; creator?: User; creatorId?: string; updater?: User; updaterId?: string; }