import { Entity, ModelId, MultiLangText, SuperClassCatalog } from './types'; /** * 상속 컬럼 참조 네임스페이스 접두사. 합성 modelId 형식 = `inherited::`. * 실제 modelId는 crypto.randomUUID()(하이픈 UUID, 콜론 없음)라 이 접두사 공간과 disjoint — * IndexColumn.columnRef가 로컬 dbAttr modelId(UUID)와 상속 컬럼(합성)을 단일 ModelId 형태로 * 균일하게 담을 수 있다(D2 = 2a 합성 stable modelId, IndexColumn 유니온화 회피). */ export declare const INHERITED_REF_PREFIX = "inherited:"; /** `inherited::` 합성 modelId 생성. */ export declare function makeInheritedColumnRef(baseClass: string, field: string): ModelId; /** ref가 상속 컬럼 합성 modelId인지. UUID(로컬 dbAttr)면 false. */ export declare function isInheritedColumnRef(ref: string): boolean; /** * 합성 modelId를 `{baseClass, field}`로 분해. 상속 ref가 아니거나 형식이 깨졌으면 null. * baseClass/field는 자바 식별자라 콜론을 포함하지 않으므로 접두사 뒤 **첫 콜론**으로 분할한다. */ export declare function parseInheritedColumnRef(ref: string): { baseClass: string; field: string; } | null; /** * 파생(비저장) 상속 컬럼 — `Entity.superClass`가 카탈로그로 기여하는 컬럼을 인덱스 대상으로 참조 * 가능하게 하는 투영 결과. `entity.attributes`에 넣지 않는다(G4 보존). 뷰 picker·라벨, codegen, * 검증이 온디맨드로 이 함수를 호출해 소비한다. */ export interface InheritedColumn { /** 합성 modelId(`inherited::`) — IndexColumn.columnRef가 참조하는 값. */ modelId: ModelId; /** 기여한 슈퍼클래스명(= 카탈로그 name = Entity.superClass). */ baseClass: string; /** 논리 필드명(합성 id 키, D6). */ field: string; /** 물리 컬럼명(@Index columnList 코드젠·라벨용). */ physicalName: string; /** dbTypes 카탈로그 값. */ dataType: string; logicalName?: MultiLangText; length?: number; scale?: number; } /** * 엔티티의 `superClass`를 카탈로그로 해소해 상속 컬럼을 투영한다(파생·비저장). * * - `entity.superClass`가 **비어 있으면** 카탈로그의 **default base**(`SuperClassDef.default`)로 폴백한다. * 레거시 관례상 superClass 미명시 = 코드젠 암묵 default(`extends BaseEntity`)라, 빈 값은 default 상속으로 * 해석해야 상속 컬럼이 점등된다. default가 지정 안 된 카탈로그면 빈 값은 여전히 빈 배열(opt-in 보존). * - 명시적 `superClass='Object'`(자바 `extends Object` = default 상속 opt-out 트릭)는 non-empty라 * default 폴백에 안 걸리고 카탈로그 미스 → 빈 배열. opt-out이 자연 보존된다. * - D7 스킵: **값 타입**(`isValueTypeStereotype` — 임베더블·직렬화 타입은 엔티티 상속에 참여하지 않는다), 엔티티 자신이 * 카탈로그 base(= 상속의 원천)면 스킵(자기 자신에게 투영하는 순환 방지). * - 각 투영 컬럼에 합성 modelId(§4.3)를 부여한다. * - 초기엔 1단 투영만(대부분 BaseEntity 단일 단계). base가 또 다른 base를 상속하는 다단 체인은 * 카탈로그가 상위 참조를 표현하도록 확장한 뒤 재귀 활성(범위 밖). * * 카탈로그가 비어 있거나 매칭 base가 없으면 빈 배열(inert 게이트 — groupCodeCatalog 동일 관례). */ export declare function projectInheritedColumns(entity: Entity, catalog: SuperClassCatalog): InheritedColumn[];