import { type MessageSelectionTarget } from './ArkmeMessageTextSelection.js'; import { type ArkmeMediaAccess } from './media-access.js'; import type { ArkmeContentBlock, ArkmeLongArticleDetail, ArkmeRelatedRecordingItem, ArkmeSharedRecordingPreview, ArkmeTimelineItem, ArkmeUploadedAsset } from '../types.js'; import { type ArkmeMentionClickHandler, type ArkmeMentionClickPredicate } from './ArkmeRichText.js'; export declare function arkmeMessageCopyLinkSidFromUrl(rawUrl: string, shareWebsite?: string): string | undefined; export declare function arkmeContentMediaUrl(block: ArkmeContentBlock): string; export declare function ArkmeFileCard({ alwaysPreview, block, fallback, onOpen, previewOpen }: { alwaysPreview?: boolean; block: ArkmeContentBlock; fallback?: boolean; onOpen?: (block: ArkmeContentBlock) => void; previewOpen?: boolean; }): import("react").JSX.Element; export declare function ArkmeForwardArticleContent({ item }: { item: ArkmeTimelineItem; }): import("react").JSX.Element; type ImagePreviewMode = 'contained' | 'covered' | 'original'; export declare function arkmeNextImagePreviewMode(mode: ImagePreviewMode): ImagePreviewMode; export declare function arkmeImagePreviewScale(mode: ImagePreviewMode, viewportWidth: number, viewportHeight: number, imageWidth: number, imageHeight: number): number; export declare function arkmeImagePreviewSpringFrames(): { duration: number; frames: { offset: number; progress: number; }[]; }; interface ImagePreviewDragOrigin { clientY: number; scrollTop: number; } export declare function arkmeImagePreviewDragTop(origin: ImagePreviewDragOrigin, clientY: number): number; export declare function arkmeImagePreviewAnchoredTop(imageYRatio: number, scrollHeight: number, pointerY: number): number; interface ImagePreviewRect { left: number; top: number; width: number; height: number; } export declare function arkmeContainedImageRect(viewportWidth: number, viewportHeight: number, imageWidth: number, imageHeight: number): ImagePreviewRect; export declare function ArkmeMediaPreview({ blocks, selected, onSelect, onClose, previewUrl, openLocalFile, forceDownload, navigation }: { navigation?: import('./ArkmeFileViewer.js').ArkmePreviewNavigation | undefined; blocks: ArkmeContentBlock[]; selected: ArkmeContentBlock; onSelect: (block: ArkmeContentBlock) => void; onClose: () => void; previewUrl?: string; openLocalFile?: boolean; forceDownload?: boolean; }): import("react").JSX.Element; export declare function arkmeSharedRecordingTimeText(recording: Pick): string; export declare function arkmeRelatedRecordingItemFromSharedRecordingPreview(recording: ArkmeSharedRecordingPreview, owner?: Pick): ArkmeRelatedRecordingItem; export declare function arkmeRelatedRecordingItemFromSharedRecording(item: ArkmeTimelineItem): ArkmeRelatedRecordingItem | undefined; export declare function ArkmeMessageContent({ sessionAttachmentPreview, item, sourceRef, sourceIdentityKey, sourceDisplayName, onLongArticleUpdated, highlightMentions, collapseText, presentation, shareWebsite, onMessageCopyLinkOpen, onMentionClick, isMentionClickable, mediaSelectionIsExplicit, onCallDetailOpen, onArticleOpen, selectionTarget }: { sessionAttachmentPreview?: boolean; item: ArkmeTimelineItem; selectionTarget?: MessageSelectionTarget | undefined; presentation?: 'bubble' | 'detail'; sourceRef?: string; sourceIdentityKey?: string; sourceDisplayName?: string; onLongArticleUpdated?: (detail: ArkmeLongArticleDetail) => void; highlightMentions?: boolean; collapseText?: boolean; shareWebsite?: string; onMessageCopyLinkOpen?: (sid: string) => void; onMentionClick?: ArkmeMentionClickHandler; isMentionClickable?: ArkmeMentionClickPredicate; mediaSelectionIsExplicit?: boolean; onCallDetailOpen?: (videoUrl?: string) => void; onArticleOpen?: () => void; }): import("react").JSX.Element; /** The drawer keeps its existing text semantics while voice notes retain media. */ export declare function ArkmeRecordDetailContent({ item, sourceRef, showOriginal }: { item: ArkmeTimelineItem; sourceRef?: string | undefined; showOriginal?: boolean; }): import("react").JSX.Element; export declare function ArkmeAttachmentDraftTile({ asset, previewUrl, onRemove, onOpen, disabled, keyboardFocused, preparation }: { asset: Pick & Partial>; previewUrl?: string; onRemove: () => void; onOpen?: () => void; disabled?: boolean; keyboardFocused?: boolean; preparation?: { state: 'queued' | 'preparing' | 'failed'; error?: string; retry(): void; }; }): import("react").JSX.Element; /** Session-only entry; owns a snapshot independent of the currently selected chat. */ export declare function openSessionAttachmentPreview(blocks: ArkmeContentBlock[], selected: ArkmeContentBlock, source: string, forceDownload?: boolean, mediaAccess?: ArkmeMediaAccess): void; export {}; //# sourceMappingURL=ArkmeRichContent.d.ts.map