/** * Organization picker identity vs presentation. * * Organization IDs are transport/cache identity only. They are never * presentation strings. Incomplete rows (id without a display name) are * dropped at the query boundary instead of rendering the primary key. */ export interface OrganizationSwitcherEntity { id: string; logoUrl?: string | null; name: string; slug?: string | null; } export type OrganizationSelectionState = { kind: "personal"; } | { kind: "loading"; organizationId: string; } | { kind: "organization"; organization: OrganizationSwitcherEntity; } | { kind: "pending-activation"; } | { kind: "activation-error"; organizationId: string; } | { kind: "unresolved"; organizationId: string | null; } | { kind: "error"; organizationId: string | null; }; export type OrganizationListLoadState = "pending" | "success" | "error"; export type OrganizationAutoActivationState = "idle" | "error"; export type OrganizationHydrateLoadState = "idle" | "pending" | "success" | "error"; /** * Visible organization label. Returns null when only an id exists — * callers must not fall back to the primary key. */ export declare function organizationPresentationName(input: { name?: string | null; slug?: string | null; }): string | null; export declare function normalizeOrganizationSwitcherEntity(value: unknown): OrganizationSwitcherEntity | null; export declare function normalizeOrganizationSwitcherEntities(values: Iterable): OrganizationSwitcherEntity[]; export declare function resolveOrgOnlyAutoActivationId(input: { activeOrganizationId: string | null; hidePersonalAccount: boolean; listState: OrganizationListLoadState; organizations: readonly OrganizationSwitcherEntity[]; }): string | null; export declare function claimedOrganizationId(selection: OrganizationSelectionState): string | null; export declare function resolveOrganizationSelectionState(input: { activeOrganizationId: string | null; autoActivationState?: OrganizationAutoActivationState; hidePersonalAccount?: boolean; hydrateState?: OrganizationHydrateLoadState; listState: OrganizationListLoadState; organizations: readonly OrganizationSwitcherEntity[]; }): OrganizationSelectionState; export declare function organizationSelectionTriggerLabel(selection: OrganizationSelectionState | null | undefined, personalAccountLabel: string): string;