import { type ReactNode, type RefObject } from 'react'; import type { ArkmeSourceItem } from '../types.js'; import type { useDirectMessageAdmission } from './direct-message-admission.js'; export declare function usePrivateChatActions(account: string | undefined, userId: number | undefined, source: ArkmeSourceItem | undefined, active: boolean, open: boolean): { canManage: boolean; changeBan: (banned: boolean) => Promise; relatedAllowed: boolean; relatedError: unknown; refreshRelated: () => void; ban: import("./resource-store.js").ResourceSnapshot; }; export interface ConversationActionItem { id: string; label: ReactNode; keepOpenOnSelect?: boolean; icon: ReactNode; checked?: boolean; busy?: boolean; disabled?: boolean; error?: string; invoke(): void; } export interface ConversationExportAction { busy: boolean; processed: number; invoke(): void; } export declare function conversationExportActionItem(action: ConversationExportAction): ConversationActionItem; /** Ordered business declarations; adding an item never changes the menu's cache or event machinery. */ export declare function privateChatActionItems(actions: ReturnType, admission: ReturnType, openRelated: () => void, exportAction?: ConversationExportAction, openCommonGroups?: () => void): ConversationActionItem[]; export declare function ConversationActionsMenu({ items, anchor, onClose, label, trigger }: { items: readonly ConversationActionItem[]; anchor: RefObject; host?: HTMLElement; onClose(): void; label?: string; trigger?: { open: boolean; onOpenChange(open: boolean): void; busy?: boolean; }; }): import("react").JSX.Element; //# sourceMappingURL=PrivateChatActions.d.ts.map