import { Context, Schema, Service } from 'koishi'; import { ThemeConfig } from './theme'; export declare const inject: { required: string[]; }; export declare const name = "markdown-to-image-service"; export declare const usage = "## \u4F7F\u7528\n\n\u53D1\u9001\u300Cmdimg\u300D\u52A0\u4E00\u6BB5 Markdown\uFF0C\u5F97\u5230\u4E00\u5F20\u56FE\u7247\uFF1B\u4E0D\u5E26\u6587\u672C\u65F6\u4F1A\u7B49\u4F60\u8865\u53D1\u3002\n\n## \u6307\u4EE4\n\n| \u6307\u4EE4 | \u8BF4\u660E |\n| --- | --- |\n| `mdimg [\u6587\u672C]` | Markdown \u8F6C\u56FE\u7247 |\n\n## \u670D\u52A1\n\n```typescript\nctx.markdownToImage.convertToImage(markdownText: string): Promise\n```"; export interface RenderingConfig { /** 初始视口宽度(图片内容宽度)。 */ width: number; /** 内容过宽时的最大宽度上限。 */ maxWidth: number; /** 设备缩放比率,建议 2 以获得高清图片。 */ deviceScaleFactor: number; /** 图片输出格式。 */ imageFormat: 'png' | 'jpeg' | 'webp'; /** jpeg/webp 质量(1-100)。 */ imageQuality: number; /** 内容内边距(像素)。 */ padding: number; } export interface Config { rendering: RenderingConfig; theme: ThemeConfig; } export declare const Config: Schema; declare module 'koishi' { interface Context { markdownToImage: MarkdownToImageService; } } /** * 渲染器本体。它只是一个普通的类,不经服务注册: * mdimg 指令直接持有一个实例,对外的 `markdownToImage` 服务也只是转交给它。 * (指令若去读 `ctx.markdownToImage`,而插件没有 inject 自己提供的服务,Koishi 会报 inject 警告。) */ export declare class MarkdownRenderer { private ctx; readonly config: Config; private md; constructor(ctx: Context, config: Config); private getTheme; /** 生成自包含、可离线渲染的完整 HTML。 */ buildHtml(body: string, hasMermaid: boolean): string; /** 将 Markdown 文本渲染为完整 HTML(供调试或二次处理)。 */ render(markdownText: string): string; convertToImage(markdownText: string, options?: Partial): Promise; private runMermaid; } export declare class MarkdownToImageService extends Service { static inject: string[]; readonly config: Config; readonly renderer: MarkdownRenderer; constructor(ctx: Context, config: Config); /** 生成自包含、可离线渲染的完整 HTML。 */ buildHtml(body: string, hasMermaid: boolean): string; /** 将 Markdown 文本渲染为完整 HTML(供调试或二次处理)。 */ render(markdownText: string): string; convertToImage(markdownText: string, options?: Partial): Promise; } export declare function apply(ctx: Context, config: Config): Promise;