import type { IMapRenderer, MapRenderOptions, MapRenderProgress, MapRenderResult } from '../../application/ports/outbound/IMapRenderer.js'; /** Thrown when a world cannot be rendered. */ export declare class MapRenderError extends Error { constructor(message: string); } /** * Parse a BlueMap progress line such as * `updating map 'overworld': 33.333% (ETA: 20 seconds)`. Returns null for * lines that are not progress reports. */ export declare function parseProgressLine(line: string): MapRenderProgress | null; /** Directories the renderer reads from and writes to. */ export interface BlueMapCliRendererPaths { /** Directory holding the worlds (`/worlds`). */ worldsDir: string; /** Output directory (`/maps`), kept out of worlds/ so backups stay lean. */ mapsDir: string; /** BlueMap image build context (holds the Dockerfile), used only when the image is missing. */ dockerDir: string; } /** * {@link IMapRenderer} that runs the BlueMap CLI in Docker. BlueMap runs * standalone (no Minecraft server needed), so this works with mc-router * auto-scaling. * * Output per world: * maps//web/ web map (index.html is the iframe entry point) * maps//config/ generated BlueMap config * maps/.bluemap-data/ shared render cache (Minecraft client jar, textures) * * Docker is run with argv arrays (no shell) and `--` before the image, so a * world name such as `-lobby` only ever appears inside mount paths (#728). */ export declare class BlueMapCliRenderer implements IMapRenderer { private readonly paths; constructor(paths: BlueMapCliRendererPaths); renderWorld(worldName: string, options?: MapRenderOptions, onProgress?: (progress: MapRenderProgress) => void): Promise; /** Build the BlueMap image unless it already exists. */ private ensureImage; private docker; } //# sourceMappingURL=BlueMapCliRenderer.d.ts.map