import { Association, Entity, LogicalModel, ModelId } from './types'; /** * 「참고 전용」 축의 단일 출처 — 산출(DDL·코드젠·mermaid)과 검증이 같은 기준으로 대상을 고르게 한다. * * 판정 자체는 한 줄이지만(플래그 하나) 자리를 따로 두는 이유는 **소비처가 넷**이고 그 넷이 기준을 각자 * 재기술하면 어긋나기 때문이다 — `entityPackage.ts`·`indexColumnRef.ts` 와 같은 근거다. 실제로 그룹 * `excludeDDLGeneration` 은 소비처가 자기 자리에서 각자 판단하다가 산출 경로에서 통째로 누락됐다 * (2026-08-24 · 레거시 패리티 회귀 4번째). * * ★**대상에서 뺀다 ≠ 참조를 못 푼다.** 여기 함수들은 *생성·판정 목록*만 좁힌다. 살아남은 요소가 참고 전용 * 요소를 참조할 수 있고(임베드 소스·상속 부모·공유 컬럼) 그 해소 맵은 모델 전량을 훑어야 한다 — 좁히면 * 산출이 조용히 어긋난다(`ddl.ts` 의 `attrOwner`·`attrCols` 주석과 같은 기준). */ /** 참고 전용 여부 — 미설정/false 는 대상(기본이 「대상」이다: 신호를 지우는 쪽이 명시적 선택이어야 한다). */ export declare function isReferenceOnly(e: Entity): boolean; /** 참고 전용 엔티티 modelId 집합 — 관계 필터·FK 부모 가드가 반복 순회 없이 공유한다. */ export declare function referenceOnlyIds(logical: LogicalModel): ReadonlySet; /** 산출·판정 대상 엔티티. */ export declare function targetEntities(logical: LogicalModel): Entity[]; /** * 산출·판정 대상 관계 — **양 end 가 모두 대상**일 때만. * * 한쪽만 참고 전용인 관계를 남기면 그 관계의 결함(cascade·다중성·nav)이 *대상 쪽 이슈로* 보고되는데 * 고칠 지점은 참고 전용 쪽에 있어 「고칠 수 있는 자리를 지목해야 한다」를 위반한다. 반대로 그런 관계가 * 존재한다는 사실 자체는 신호 가치가 있다 — 그건 이 필터가 아니라 전용 규칙이 다룰 축이다(잔여 등재). */ export declare function targetAssociations(logical: LogicalModel, refOnly?: ReadonlySet): Association[]; /** * 문서 단위 「참고 전용」을 **엔티티 층으로 투영**한다 — doc 루트 마커(`DiagramMeta.referenceOnly`)를 * 산출·검증이 이미 보는 그 기준 하나로 내린다. * * ★두 번째 코드 경로를 만들지 않는 것이 요점이다. "문서 플래그면 결과가 빈다"를 소비처마다 따로 쓰면 * 그 단락 로직이 엔티티 층 시맨틱과 어긋날 수 있다(모델 레벨 규칙·헤더 방출 등). 투영은 **정의상** * 엔티티 층과 같은 답을 준다. * * 플래그가 꺼져 있으면 **원 객체를 그대로** 돌려주므로(참조 동일) 통상 경로의 추가 비용은 0이다. */ export declare function applyDocumentReferenceOnly(logical: LogicalModel, docReferenceOnly: boolean | undefined): LogicalModel; /** * **실효** 참고 전용 — 엔티티 단위 ∪ 문서 단위. 표시 계층(캔버스)이 쓴다. * * ★산출·검증은 `applyDocumentReferenceOnly` **투영**으로 같은 답을 얻으므로 이 함수를 쓰지 않는다 * (모델을 한 번 좁히면 하류 전체가 엔티티 층 기준 하나만 보게 되는 것이 그쪽의 요점이다). 반면 캔버스는 * 노드마다 렌더하므로 모델을 좁히는 것이 아니라 **노드별 질의**가 필요하다 — 그래서 축이 둘로 갈리고, * 갈리는 만큼 OR 를 각자 재기술하지 않도록 여기 한 곳에 둔다. * * ⚠️화면이 이 OR 를 안 보면 **거짓말을 한다** — 문서가 참고 전용이라 산출이 0인데 노드가 실선이면 * 사용자는 그것들이 산출에 들어간다고 읽는다(이 리포가 반복해 경계해 온 무신호 소실의 표시 축 변형). */ export declare function effectiveReferenceOnly(e: Entity, docReferenceOnly: boolean | undefined): boolean;