import * as React from 'react';
export interface PersonData {
    name: string;
    avatarUrl?: string;
    /** 角色 / 部門 / ID 等 meta 單行(ProfileCard subtitle) */
    description?: string;
    /** Presence 狀態(對齊 Avatar presence canonical)。**2026-05-14 v12 update**(per user 拍板):
     *  production 每 user 一定有 presence state,**undefined = loading transient(資料還沒讀到)**,
     *  不是「user 沒設定」。ProfileCard 在 undefined 期間隱藏整 status block,**禁** render「Status not set」
     *  placeholder 文字。 */
    status?: 'online' | 'away' | 'busy' | 'offline';
    /** Status 訊息(ProfileCard status section)。只在 status defined 時 render,缺則顯 `—` placeholder。
     *  Status undefined 整 block skip(無 statusMessage 也跟著 skip)。 */
    statusMessage?: React.ReactNode;
    /** **2026-05-07 v15.7 user directive**:ProfileCard default 只 render `id` + `employeeNumber`,
     *  其他 description 一律 opt-in by consumer 透過 `fields` array prop。對齊
     *  `NAMECARD_DEFAULT_FIELD_KEYS = ['id', 'employeeNumber']`。 */
    id?: string;
    employeeNumber?: string;
    /** 自訂額外 fields(在 default fields 之後 append)。Email / Phone / Department / Location
     *  / 任何其他 description 一律走這個 prop(opt-in,consumer 自選)。 */
    fields?: {
        label: string;
        value: string;
    }[];
    /** 跳至完整 profile 頁的 handler(hover ProfileCard 必含,不傳時 fallback noop placeholder) */
    onViewProfile?: () => void;
}
export type PersonValue = string | PersonData;
declare function resolvePerson(value: PersonValue): PersonData;
declare function buildPersonProfileCard(person: PersonData): React.ReactNode;
declare function PersonDisplay({ value, size }: {
    value?: PersonValue | null;
    size?: 'sm' | 'md' | 'lg';
}): import("react/jsx-runtime").JSX.Element;
declare namespace PersonDisplay {
    var displayName: string;
}
declare function MultiPersonDisplay({ value, size, max, measured, onRemove, }: {
    value?: PersonValue[] | null;
    size?: 'sm' | 'md' | 'lg';
    /** 最多顯示幾個 avatar(不含 +N),預設 3。`measured=true` 時忽略此 prop(改 container width 算)*/
    max?: number;
    /**
     * 2026-05-15 codex Round 5 C+ SSOT fix:`measured=true` 啟動 container-width 量測(取代 hardcode `max ?? 3`)
     * → display + edit stack 同 algorithm(同 cell width → 同 overflow 判斷),不再 display 用固定 3 vs edit
     * 用 useOverflowCount。對齊 field-controls.spec.md:286 「4-mode 共享 renderer」contract + user round 3
     * verbatim「同空間兩判斷點」SSOT directive。Default false 保 backward compat(non-cell context 仍 max ?? 3)。
     */
    measured?: boolean;
    /** 傳入時啟用 dismiss(edit mode),callback 接收被移除的 person */
    onRemove?: (person: PersonValue) => void;
}): import("react/jsx-runtime").JSX.Element;
declare namespace MultiPersonDisplay {
    var displayName: string;
}
declare function PersonAvatarTag({ person, size, onRemove, }: {
    person: PersonData;
    size?: 'sm' | 'md' | 'lg';
    onRemove?: () => void;
}): import("react/jsx-runtime").JSX.Element;
declare namespace PersonAvatarTag {
    var displayName: string;
}
export { PersonDisplay, MultiPersonDisplay, PersonAvatarTag, buildPersonProfileCard, resolvePerson };
//# sourceMappingURL=person-display.d.ts.map