import { Entity, LogicalModel } from './types'; /** * 패키지 동일성 키. `kind` 를 함께 들고 다니는 이유는 **비교 가능성**이다 — 명시 패키지는 FQN 전체이고 * 그룹 세그먼트는 조각이라, 서로 다른 종류끼리는 같은지 다른지 판정할 수 없다(조각만으로는 base·layer 를 * 모른다). 그 경우를 조용히 "다르다"로 처리하면 실제 충돌을 놓치므로 호출부가 구분할 수 있게 남긴다. */ export type EntityPackageKey = { kind: 'explicit'; value: string; } /** 그룹 세그먼트. `''` = 세그먼트 생략(그룹 미소속 또는 그룹에 packageName 없음). */ | { kind: 'group'; value: string; }; export declare function entityPackageKey(entity: Entity, logical: LogicalModel): EntityPackageKey; /** * 두 엔티티가 **서로 다른 패키지에 놓인다는 것이 증명되는가**. * * 이름은 일부러 `samePackage` 의 부정이 아니라 *증명 가능성*으로 잡았다 — 판정 불가(키 종류가 다름)를 * "다르다"로 흘리면 면제가 조용히 넓어져 **실제 충돌이 무신호**가 된다. 면제는 적극적으로 증명될 때만 * 준다(그 외에는 종전대로 신고 = 현행 동작 보존). */ export declare function provablyDifferentPackage(a: Entity, b: Entity, logical: LogicalModel): boolean;