import { LangCode, MultiLangText } from './types'; /** * 소비처가 로케일을 고르는 **기본 순서**. `agent/schema.ts` 의 `MULTI_LANG` 키 순서와 같고, * 종전 소비처들이 각자 `?.ko ?? ?.en ?? ?.ja ?? ?.zh` 로 재기술하던 그 순서다. */ export declare const LANG_ORDER: readonly LangCode[]; /** * MultiLangText 에 실제로 값이 있는가 — 빈 객체·전 로케일 공백은 없는 것으로 본다. * * ★**단일 출처**(종전 `columnResolve` 소유 · 그 앞은 비공개 `hasText`) — 논리명은 객체 축이라 `||`·`??` 로는 * 갈리지 않고, 그 판정을 소비처가 각자 재기술하면 어긋난다. 지금 넷이 같은 것을 물어야 한다: 실효 컬럼 해소 * (`columnResolve`), 스테레오타입 전환 시 논리명 이전(`editor/commandPlans`), 코드젠 javadoc(`scaffoldJava`), * 편집·표시 뷰의 폴백 판정. * * ⚠️`normalizeMultiLangText(t) !== undefined` 와 **항상 같은 답**이어야 한다(테스트가 고정한다). 술어를 싸게 * 두려고 두 산식으로 나눠 놓은 것이므로, 한쪽만 고치면 어긋난다. */ export declare function hasMultiLangText(t: MultiLangText | undefined): boolean; /** * 저장·전송 표현을 **정규형**으로 접는다 — 빈 로케일 키를 떼고, 남는 것이 없으면 `undefined`(=부재). * * ★**참조 안정**: 뗄 것이 없으면 **원본을 그대로 돌려준다**. 로드 경로가 전 필드를 통과시키므로 매번 새 * 객체를 만들면 왕복 diff·재렌더가 이유 없이 늘어난다(`columnResolution` 이 같은 이유로 참조 안정을 지킨다). */ export declare function normalizeMultiLangText(t: MultiLangText | undefined | null): MultiLangText | undefined; /** * 이 값을 MultiLangText 자리에 **넣어도 되는가** — 입력 경계에서 쓰는 «수용 형상» 술어. * * 허용: 부재(`undefined`)·비움(`null`)·빈 객체(`{}` = 부재 동치)·키가 전부 `ko|en|ja|zh` 이고 값이 문자열인 객체. * 거부: 그 밖 전부 — 특히 **평문 문자열**. * * ★★**왜 필요한가**(2026-09-05 실사용 결함): `attribute.update {description: "설명"}` 처럼 평문을 보내면 * 어느 층도 막지 않아 그대로 저장되고, 그 값이 객체로 취급되는 지점에서 **문자 단위 맵** * (`{"0":"회","1":"원",…}` · 공백 인덱스는 아예 누락)으로 굳는다. 「모르는 값을 발명하지 말 것」의 짝인 * **「형상이 틀린 값을 조용히 받지 말 것」**이고, 조용한 오염이라 에러보다 나쁘다. * * ⚠️`normalizeOpMultiLang`(resolver)의 `isLangShaped` 와 **묻는 것이 다르다** — 그쪽은 *「이 값이 * MultiLangText «인가»」*(정규화 대상 고르기)이고 이쪽은 *「이 자리에 이 값을 «받아도 되는가»」*다. * 그래서 `{}` 의 답이 갈린다(전자는 아니오 = 안 접는다 / 후자는 예 = 부재 동치라 받는다). */ export declare function isMultiLangAssignable(v: unknown): boolean; /** * 표시할 문자열 하나를 고른다 — `prefer`(유저·콘텐츠 언어) 우선, 없으면 `LANG_ORDER` 순으로 **첫 비어있지 않은 값**. * * ★소비처가 `?.[lang] ?? ?.ko ?? ?.en` 으로 재기술하던 자리의 단일 출처다. 손 나열은 두 관용구로 갈렸고 * (`??` 8자리 / `||` 5자리) **`??` 쪽만 빈 문자열에서 멈춰** 뒤 로케일 값을 잃었다. 폴백 «꼬리»(그룹 패키지명· * i18n 기본 문구 등)는 자리마다 다르므로 여기서 정하지 않고 `undefined` 를 돌려 호출자가 잇게 한다. */ export declare function pickMultiLangText(t: MultiLangText | undefined | null, prefer?: LangCode): string | undefined;