import type { ArkmeContentBlock } from '../types.js'; export interface ArticleExportContent { title: string; textContent: string; textFormat?: 'plain' | 'markdown' | undefined; contentBlocks?: ArkmeContentBlock[] | undefined; } interface Run { text: string; bold?: boolean; italic?: boolean; mono?: boolean; } export type ArticleExportBlock = { kind: 'text'; runs: Run[]; size: number; gap: number; quote?: boolean; } | { kind: 'image'; ref: string; alt: string; }; export declare const ARTICLE_IMAGE_WIDTH = 420; export declare const ARTICLE_IMAGE_PAGE_HEIGHT = 2400; export declare function articleExportFileName(title: string): string; /** Semantic mobile layout; wide tables become labeled rows rather than clipped columns. */ export declare function articleExportBlocks(article: ArticleExportContent): ArticleExportBlock[]; export declare function articleExportMarkdown(article: ArticleExportContent): string; export declare function downloadArticleBlob(blob: Blob, name: string): void; export declare function wrapArticleRuns(runs: Run[], size: number, width: number, measure: (text: string, run: Run, size: number) => number): Run[][]; export declare function articleBoundImage(ref: string, blocks?: readonly ArkmeContentBlock[]): ArkmeContentBlock; export declare function exportArticleImages(article: ArticleExportContent, signal: AbortSignal, progress: (label: string) => void): Promise; /** Keep the Markdown portable: image data is embedded instead of exporting expiring local URLs. */ export declare function exportArticleMarkdown(article: ArticleExportContent, signal: AbortSignal): Promise; export {}; //# sourceMappingURL=long-article-export.d.ts.map