import { DbColumn, Entity, ModelId } from './types'; /** SHARED_REF 컬럼의 파생 투영값. insertable/updatable는 정의상 항상 false. */ export interface ResolvedSharedColumn { /** 타깃 컬럼의 물리명(이 컬럼이 read-only로 투영되는 실제 물리 컬럼). */ physicalName: string; insertable: false; updatable: false; } /** * SHARED_REF 후보·해석의 **컬럼 스코프 엔터티** — "임베드 평탄화 후 같은 물리 테이블에 들어가는 * 컬럼을 가진 엔터티들". 일반 엔터티는 자기 자신뿐이지만, JPA_EMBEDDABLE 엔터티는 @Embedded로 owner * 테이블에 평탄화되므로 owner 엔터티(자기를 EMBED_OWN 표시속성으로 임베드한 엔터티)의 컬럼도 같은 * 테이블 스코프다 → embeddable 안의 Money.currency가 owner의 통화 writer 컬럼을 SHARED_REF로 공유할 수 * 있다(BNKR_SALES 실측: OrderAmount·CancellationAmtDetail 등 수많은 embeddable이 owner의 단일 통화 * 컬럼을 공유하는 지배적 패턴). owner 판별 = `embedded.embeddableRef === 이 엔터티 modelId`인 EMBED_OWN * 표시속성 보유(adapter가 owner에 push, diagramAdapter.ts:428). 다중 owner(재사용, 결정 B-1)면 합집합 — * 실효 물리명이 같으면 각 usage의 @AttributeOverride가 정상 emit되고 어긋나면 dangling으로 표면화된다. * 일반 엔터티엔 [self]만 반환 → 기존 동작 무회귀. */ export declare function sharedColumnScopeEntities(entity: Entity, entities: readonly Entity[]): Entity[]; /** 스코프 엔터티들의 전 컬럼 평탄화 — 해석 인덱스(`indexColumnsByModelId`) 입력. */ export declare function collectSharedColumns(entity: Entity, entities: readonly Entity[]): DbColumn[]; /** * 같은 엔터티의 컬럼들을 modelId로 인덱싱 — picker 후보 해석·SHARED_REF 타깃 조회 공용 인덱스. * EMBED 펼친 dbAttrs를 포함한 전 컬럼을 평탄화하므로 SHARED_REF 타깃이 임베드 내부여도 조회된다. * (embeddable→owner 크로스 스코프가 필요하면 `collectSharedColumns`로 입력을 넓혀 넘긴다.) */ export declare function indexColumnsByModelId(columns: readonly DbColumn[]): Map; /** * SHARED_REF 컬럼의 파생 투영을 계산. OWN(sharedColumnRef 부재)이거나 타깃이 dangling(인덱스에 * 없음)이면 `null` — 호출자는 col.sharedColumnRef 존재 여부로 OWN/SHARED_REF를 구분하고, 이 * 헬퍼는 "해석 가능한 투영값"만 반환한다. */ export declare function resolveSharedColumn(col: DbColumn, columnsById: ReadonlyMap): ResolvedSharedColumn | null;