import type { LayoutEngine } from "./types.js";
export interface ElkLayoutEngineOptions {
    /**
     * Factory function that creates a Web Worker for off-main-thread layout.
     * When provided, the engine uses `elkjs/lib/elk-api.js` (lightweight ~5KB)
     * and delegates computation to the worker.
     *
     * When omitted, the engine dynamically imports `elkjs/lib/elk.bundled.js`
     * which includes the full WASM layout algorithms (~1.5MB) and runs on
     * the main thread with an async API.
     *
     * Example (Next.js / Vite):
     * ```ts
     * const workerFactory = () =>
     *   new Worker(new URL('elkjs/lib/elk-worker.min.js', import.meta.url));
     * ```
     */
    workerFactory?: () => Worker;
    /**
     * Additional ELK layout options to merge with workflow defaults.
     * See: https://eclipse.dev/elk/reference/options.html
     */
    layoutOptions?: Record<string, string>;
}
/**
 * Creates an ELK-based layout engine with optional Web Worker support.
 *
 * This function dynamically imports elkjs — the import is deferred so that
 * the ~1.5MB WASM module is only loaded when layout is first requested,
 * not at SDK initialization time.
 *
 * If elkjs is not installed (optional peer dependency), the import will
 * reject and the caller should fall back to the dagre engine.
 *
 * @throws If elkjs cannot be imported (not installed or bundler misconfiguration).
 */
export declare function createElkLayoutEngine(options?: ElkLayoutEngineOptions): Promise<LayoutEngine>;
//# sourceMappingURL=elk-layout-engine.d.ts.map