import { Canvas } from "ppu-ocv";
import type { DetectedObject, YoloDetectionOptions } from "./interface";
/**
 * YOLOv11 Object Detection Inference Engine
 *
 * High-performance YOLO model inference with image preprocessing,
 * model execution, and NMS post-processing.
 *
 * @example
 * const detector = new YoloDetectionInference({
 *   model: {
 *     path: './model.onnx',
 *     classNames: ['person', 'car', 'bicycle']
 *   },
 *   thresholds: {
 *     confidence: 0.5
 *   }
 * });
 *
 * await detector.init();
 * const detections = await detector.detect(imageBuffer);
 */
export declare class YoloDetectionInference {
    private readonly model;
    private readonly classNames;
    private readonly thresholds;
    private readonly debugging;
    private modelMetadata;
    private session;
    private static readonly CHANNELS;
    constructor(options: YoloDetectionOptions);
    /**
     * Initialize the YOLO model and prepare for inference
     */
    init(): Promise<void>;
    /**
     * Convert an ArrayBuffer to a Canvas
     * @param buffer - The input image as ArrayBuffer
     * @returns A Canvas object containing the image
     * @throws Error if the conversion fails
     */
    static convertBufferToCanvas(buffer: ArrayBuffer): Promise<Canvas>;
    /**
     * Detect objects in an image
     * @param image - The input image as ArrayBuffer or Canvas
     * @returns An array of detected objects with bounding boxes, class names, and confidence scores
     * @throws Error if the model is not initialized or detection fails
     * @example
     * const detections = await detector.detect(imageBuffer);
     * detections.forEach(detection => {
     *   console.log(`Detected ${detection.className} at ${JSON.stringify(detection.box)} with confidence ${detection.confidence}`);
     * });
     */
    detect(image: ArrayBuffer | Canvas): Promise<DetectedObject[]>;
    private preprocessImage;
    private canvasToTensor;
    private runInference;
    private postprocessOutput;
    private extractCandidates;
    private extractWithLowerThreshold;
    private debugTensorData;
    private applyNMS;
    private scaleCandidates;
    private calculateIoU;
    private saveDebugImages;
    private savePreprocessedImage;
    private saveDetectionVisualization;
    private log;
    /**
     * Releases the onnx runtime session and cleans up resources.
     * This method should be called when the inference engine is no longer needed
     * to prevent memory leaks.
     * @throws Error if the session release fails
     */
    destroy(): Promise<void>;
}
