export interface BoundingBox {
    readonly x: number;
    readonly y: number;
    readonly w: number;
    readonly h: number;
}
export interface Landmark {
    readonly x: number;
    readonly y: number;
    readonly label?: string;
}
/**
 * Canonical pixel/frame format identifier used throughout the streaming +
 * detection pipeline.
 *
 * - `jpeg`   — encoded JPEG bytes (decoder-side `sharp` encode)
 * - `rgb`    — packed RGB24 (3 bytes/pixel, planar order R,G,B)
 * - `bgr`    — packed BGR24 (3 bytes/pixel, planar order B,G,R)
 * - `yuv420` — planar YUV 4:2:0 (1.5 bytes/pixel)
 * - `gray`   — single-channel 8-bit luminance (1 byte/pixel)
 *
 * Single source of truth: matches `FrameFormatSchema` in
 * `capabilities/schemas/detection-shared.ts`.
 */
export type FrameFormat = 'jpeg' | 'rgb' | 'bgr' | 'yuv420' | 'gray';
/** Subset of `FrameFormat` accepted by the raw inference fast path. */
export type RawFrameFormat = Exclude<FrameFormat, 'jpeg' | 'yuv420'>;
export interface FrameInput {
    readonly data: Uint8Array;
    readonly format: FrameFormat;
    readonly width: number;
    readonly height: number;
    readonly timestamp: number;
}
export interface AudioChunkInput {
    readonly [key: string]: unknown;
    readonly data: Float32Array<ArrayBuffer>;
    readonly sampleRate: number;
    readonly channels: number;
    readonly timestamp: number;
    readonly deviceId?: number;
}
/**
 * Classification result for an audio chunk.
 * Mirrors `SpatialDetection` (class + originalClass): `className` is the
 * primary display class (macro or raw depending on how it was produced),
 * `originalClass` is the raw backend label that was actually emitted.
 * Both values are kept so downstream consumers — especially the UI — can
 * render and filter consistently regardless of the classMode.
 */
export interface AudioClassificationEntry {
    readonly className: string;
    readonly originalClass?: string;
    readonly score: number;
}
/**
 * Complete result of audio analysis on a single chunk.
 * Produced by the addon, consumed by detection-wiring for EventBus emission.
 */
export interface AudioAnalysisResult {
    /** Audio level metrics — always present */
    readonly level: {
        readonly rms: number;
        readonly dbfs: number;
    };
    /** Classification results — present only if classifier is enabled and produced results */
    readonly classification?: {
        readonly labels: readonly AudioClassificationEntry[];
        readonly inferenceMs: number;
    };
    /** Chunk timestamp from the stream */
    readonly timestamp: number;
}
/** Settings for audio analysis filtering (passed to the addon) */
export interface AudioAnalysisSettings {
    readonly minConfidence: number;
    readonly allowedClasses: string[];
}
//# sourceMappingURL=io.d.ts.map