import { Multiplicity, Point } from './types'; export type MarkerMode = 'db' | 'class'; /** 한 끝(AssociationEnd)의 표기 결정에 필요한 의미 정보. */ export interface EndSemantics { multiplicity: Multiplicity; navigable: boolean; composition: boolean; /** 반대쪽 끝의 navigable — 단방향(this && !other)일 때만 네비 화살표를 그린다. */ otherNavigable: boolean; } export interface Segment { x1: number; y1: number; x2: number; y2: number; } export interface Circle { cx: number; cy: number; r: number; } export interface Polygon { points: Point[]; } export interface EndMarkers { /** 실선 stroke — 까마귀발 갈래·바·스파인·네비 화살표. */ lines: Segment[]; /** 중공 원(fill none) — 선택성(optional) 표기. */ circles: Circle[]; /** 채워진 다각형(fill=stroke) — 컴포지션 마름모. */ polygons: Polygon[]; } /** * 끝점 표기가 끝점에서 진출 방향으로 차지하는 최대 거리(선택성 원의 바깥 둘레, db 모드가 최대). * 직각 라우팅이 이보다 짧은 stub으로 꺾으면 표기가 코너에 얹혀 바(one tick)가 진행 반대쪽으로 * 삐져나오고 선택성 원이 경로를 벗어나 뜬다 → 호출측은 stub을 이 거리보다 길게 잡아야 한다. */ export declare const MARKER_REACH: number; /** * 한 끝점의 표기 마커를 산출한다. * @param end 엔티티 경계의 끝점 (레거시 point1) * @param toward 그 끝이 향하는 다음 점 (레거시 point2). 직각 모드는 stub 방향, 직선 모드는 다음 waypoint/반대끝. */ export declare function endMarkers(end: Point, toward: Point, sem: EndSemantics, mode: MarkerMode): EndMarkers;