export interface MentionTrigger { start: number; end: number; query: string; } /** Find the active @ token immediately before the caret. The trigger starts at * line start or after whitespace; this avoids turning email addresses into bot * mentions. Display names may contain spaces once a suggestion has been * inserted, but an in-progress query intentionally stops at whitespace. */ export declare function findMentionTrigger(text: string, caret: number): MentionTrigger | null; export declare function insertBotMention(text: string, trigger: Pick, botName: string): { text: string; caret: number; }; export declare function filterMentionBots(bots: readonly T[], query: string): T[]; /** Insert visible attachment markers at the textarea selection. Images remain * binary attachments, while the markers preserve their intended position in * the plain-text task body and make the preview order unambiguous. */ export declare function insertImageMarkers(text: string, selectionStart: number, selectionEnd: number, markers: readonly string[]): { text: string; caret: number; }; /** Remove one generated marker without collapsing surrounding words. */ export declare function removeImageMarker(text: string, marker: string): string; /** Remove one image marker and compact the remaining markers back to attachment * order. This keeps `[图片 N]` aligned with the backend's 1-based attachment * numbering after deleting an image from the middle of the list. */ export declare function removeAndReindexImageMarkers(text: string, removedMarker: string, remainingMarkers: readonly string[], markerForIndex: (index: number) => string): { text: string; markers: string[]; }; //# sourceMappingURL=create-session-composer.d.ts.map