import { type PersonRecordItem } from './shared-person-records.js'; import type { ArkmeConversationMemberItem, ArkmeConversationMemberRecordMode, ArkmeGroupAvatarFallback, ArkmeGroupMemberRemoveResult, ArkmeSourceItem, ArkmeTimelineItem } from '../types.js'; import type { ArkmeAvatarImagePort } from './avatar-image-store.js'; export declare const ARKME_MEMBER_RECORDS_DEFAULT_WIDTH = 428; export declare const ARKME_MEMBER_RECORDS_RESIZE_HANDLE_WIDTH = 10; export declare const ARKME_MEMBER_RECORDS_RESIZE_INDICATOR_WIDTH = 3; export declare const ARKME_MEMBER_RECORDS_MAX_WIDTH_FACTOR = 0.6; export declare const ARKME_MEMBER_RECORD_OTHER_BUBBLE: "var(--arkme-member-record-other-bubble, var(--dsw-specific-bubble-highlight, var(--dsw-alias-bg-layer-3, #e1e5ee)))"; export declare const ARKME_MEMBER_RECORDS_LOAD_MORE_THRESHOLD = 120; export declare function shouldLoadOlderArkmeMemberRecords(scrollTop: number, hasMore: boolean, cursor: number | undefined, loading: boolean): boolean; export declare function clampArkmeMemberRecordsWidth(preferredWidth: number, availableWidth: number): number; export declare function arkmeMemberConversationAction(member: Pick): 'send_to_self' | 'private_chat'; export interface ArkmeMemberMenuPosition { left: number; top: number; placement: 'above' | 'below'; } export declare function positionArkmeMemberMenu(anchorRect: Pick, hostRect: Pick, rowCount: number): ArkmeMemberMenuPosition; export declare function arkmeMemberActionMenuRowCount(member: ArkmeConversationMemberItem, sourceKind: ArkmeSourceItem['kind'], canRemove?: boolean): number; export declare function ArkmeMemberRecordCountLabel({ label, count }: { label: string; count?: number | undefined; }): import("react").JSX.Element; export declare function ArkmeMemberActionMenu(props: { member: ArkmeConversationMemberItem; sourceKind: ArkmeSourceItem['kind']; position: ArkmeMemberMenuPosition; hoverAnchor?: HTMLElement | undefined; hoverSide?: 'left' | 'right' | undefined; onMention: () => void; onPrivateChat?: (() => void) | undefined; onWorld?: (() => void) | undefined; onRecords: (mode: ArkmeConversationMemberRecordMode) => void; canRemove?: boolean; onRemove?: () => void; onClose: () => void; }): import("react").JSX.Element; export declare function ArkmeGroupMemberRemoveDialog(props: { sourceRef: string; member: ArkmeConversationMemberItem; onClose: () => void; onRemoved: (result: ArkmeGroupMemberRemoveResult) => void; }): import("react").JSX.Element; export declare function arkmeMemberProfileNames(member: Pick, showTopicNickname: boolean): { displayName: string; topicNickname: string; }; export type ArkmeMemberProfileIdentity = Pick & { avatarFallback?: ArkmeGroupAvatarFallback; }; export declare function ArkmeMemberProfileCard(props: { member: ArkmeMemberProfileIdentity; imagePort?: ArkmeAvatarImagePort; imageKey?: string | undefined; error?: string; hideSend?: boolean; showTopicNickname?: boolean; busy: boolean; onClose: () => void; onSend: () => void; onContactAsTeam?: (() => void) | undefined; }): import("react").JSX.Element; export declare function arkmeMemberRecordTotal(member: ArkmeConversationMemberItem, mode: ArkmeConversationMemberRecordMode): number; export declare function formatArkmeMemberRecordTime(timestamp: number, nowMillis?: number): string; export type ArkmeMemberRecordTimelineEntry = { kind: 'time'; key: string; timestamp: number; label: string; } | { kind: 'record'; key: string; item: PersonRecordItem; }; export declare function arkmeMemberRecordTimeline(items: readonly ArkmeTimelineItem[], nowMillis?: number, dateOnly?: boolean): ArkmeMemberRecordTimelineEntry[]; interface MemberRecordsPanelProps { sourceRef: string; sourceIdentityKey?: string | undefined; sourceName?: string | undefined; source?: ArkmeSourceItem | undefined; accountKey?: string | undefined; member: ArkmeConversationMemberItem; mode: ArkmeConversationMemberRecordMode; onClose: () => void; onOpenOrigin?: ((item: ArkmeTimelineItem, source?: ArkmeSourceItem) => void) | undefined; } export declare function ArkmeMemberRecordsPanel(props: MemberRecordsPanelProps): import("react").JSX.Element; /** Bot history is scoped to the already loaded timeline until a Bot-specific page API exists. */ export declare function ArkmeLoadedBotRecordsPanel(props: { sourceRef: string; sourceIdentityKey?: string; botName: string; mode: ArkmeConversationMemberRecordMode; items: readonly ArkmeTimelineItem[]; onClose: () => void; }): import("react").JSX.Element; export {}; //# sourceMappingURL=ArkmeChatMemberActions.d.ts.map