export declare const MESSAGE_QUOTE_LIMIT = 2000; export interface ArkmeMessageQuote { version: 1; projection: 'arkme-text-v1'; sourceDigest: string; recordVersion?: number; /** UTF-16 offsets in quoteCanonicalText(), never offsets into Markdown. */ start: number; end: number; text: string; prefix: string; suffix: string; } export interface ArkmeQuoteReplyCapabilities { supported: boolean; maxQuoteLength: number; } export type ArkmeQuoteSource = { title?: string; textContent: string; textFormat?: 'plain' | 'markdown'; senderKind?: string; }; /** Versioned matching projection. Displayed quotation keeps its original whitespace. */ export declare function normalizeQuoteText(text: string): string; export declare function quoteSourceContent(item: ArkmeQuoteSource): string; export declare function quoteCanonicalText(item: ArkmeQuoteSource): string; export declare function readMessageQuote(value: unknown): ArkmeMessageQuote | undefined; /** New captures never serialize half a surrogate pair at the context boundary. */ export declare function quoteContext(text: string, start: number, end: number): { prefix: string; suffix: string; }; export declare function quoteMatchesCanonical(quote: ArkmeMessageQuote, text: string): boolean; export declare function quoteCapabilitiesFromWire(value: unknown): ArkmeQuoteReplyCapabilities; /** Only a server-validated, explicitly accessible quote may expose its snapshot. */ export declare function projectedMessageQuote(value: unknown, state: unknown): { quote?: ArkmeMessageQuote; quoteState?: 'available' | 'edited' | 'unavailable'; }; //# sourceMappingURL=message-quote.d.ts.map