import { OCCTWorkerManager } from "@bitbybit-dev/occt-worker";
import { JSCADWorkerManager } from "@bitbybit-dev/jscad-worker";
import { ManifoldWorkerManager } from "@bitbybit-dev/manifold-worker";
import type { WorkerInstances, WorkerOptions } from "./worker-utils";
/**
 * Options for initializing bitbybit
 */
export interface InitBitByBitOptions extends WorkerOptions {
    /** Pre-created worker instances. If not provided, workers will be created from CDN. */
    workers?: WorkerInstances;
}
/**
 * Interface for worker managers that engine-specific BitByBitBase classes must implement
 */
export interface BitByBitWorkerManagers {
    occtWorkerManager: OCCTWorkerManager;
    jscadWorkerManager: JSCADWorkerManager;
    manifoldWorkerManager: ManifoldWorkerManager;
}
/**
 * Result of kernel initialization
 */
export interface InitKernelsResult {
    message: string;
    initializedKernels: string[];
}
/**
 * Waits for all enabled kernels to be initialized.
 * This is engine-agnostic and can be used by all engine packages.
 *
 * @param managers - The worker managers from BitByBitBase
 * @param options - Which kernels are enabled
 */
export declare function waitForKernelInitialization(managers: BitByBitWorkerManagers, options: WorkerOptions): Promise<InitKernelsResult>;
/**
 * Creates worker instances based on options.
 * If workers are provided in options, uses those. Otherwise creates from CDN.
 *
 * @param options - Initialization options
 */
export declare function getOrCreateWorkers(options: InitBitByBitOptions): WorkerInstances;
