import { AniraWasmInstance } from '../factory';
import { BaseWrapper, PossiblePointer } from './BaseWrapper';
import { InferenceConfig } from './InferenceConfig';
import { PrePostProcessor } from './PrePostProcessor';
import { HostConfig } from './utils/HostConfig';
/**
 * TypeScript wrapper for anira::InferenceHandler
 * Thread-safe C API wrapper
 */
export declare class InferenceHandler extends BaseWrapper {
    constructor(wasmInstance: AniraWasmInstance, preprocessor: PossiblePointer<PrePostProcessor>, config: PossiblePointer<InferenceConfig>, customProcessor?: PossiblePointer);
    /** Free the underlying C++ object. See :ref:`lifecycle-and-cleanup` for when to call this. */
    destroy(): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::set_inference_backend`. */
    setInferenceBackend(backend: number): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::get_inference_backend`. */
    getInferenceBackend(): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::prepare() <void anira::InferenceHandler::prepare(HostConfig)>`. */
    prepare(hostConfig: PossiblePointer<HostConfig>): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::prepare() <void anira::InferenceHandler::prepare(HostConfig, unsigned int, size_t)>`. */
    prepare(hostConfig: PossiblePointer<HostConfig>, customLatency: number, tensorIndex?: number): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::prepare() <void anira::InferenceHandler::prepare(HostConfig, std::vector<unsigned int>)>`. */
    prepare(hostConfig: PossiblePointer<HostConfig>, customLatency: Uint32Array): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::process() <size_t anira::InferenceHandler::process(float* const*, size_t, size_t)>`. */
    process(dataPtr: number, numSamples: number, tensorIndex?: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::process() <size_t anira::InferenceHandler::process(const float* const*, size_t, float* const*, size_t, size_t)>`. */
    process(inputPtr: number, numInputSamples: number, outputPtr: number, numOutputSamples: number, tensorIndex?: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::process() <size_t* anira::InferenceHandler::process(const float* const* const*, size_t*, float* const* const*, size_t*)>` (multi-tensor overload). */
    processMulti(inputPtr: number, numInputPtr: number, outputPtr: number, numOutputPtr: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::push_data() <void anira::InferenceHandler::push_data(const float* const*, size_t, size_t)>`. */
    pushData(inputPtr: number, numSamples: number, tensorIndex?: number): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::push_data() <void anira::InferenceHandler::push_data(const float* const* const*, size_t*)>` (multi-tensor overload). */
    pushDataMulti(inputPtr: number, numSamplesPtr: number): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::pop_data() <size_t anira::InferenceHandler::pop_data(float* const*, size_t, size_t)>` (non-blocking). */
    popData(outputPtr: number, numSamples: number, tensorIndex?: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::pop_data() <size_t anira::InferenceHandler::pop_data(float* const*, size_t, std::chrono::steady_clock::time_point, size_t)>` (blocking with timeout). */
    popDataBlocking(outputPtr: number, numSamples: number, waitMs: number, tensorIndex?: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::pop_data() <size_t* anira::InferenceHandler::pop_data(float* const* const*, size_t*)>` (multi-tensor, non-blocking). */
    popDataMulti(outputPtr: number, numSamplesPtr: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::pop_data() <size_t* anira::InferenceHandler::pop_data(float* const* const*, size_t*, std::chrono::steady_clock::time_point)>` (multi-tensor, blocking with timeout). */
    popDataMultiBlocking(outputPtr: number, numSamplesPtr: number, waitMs: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::get_latency`. */
    getLatency(tensorIndex?: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::get_latency_vector`. */
    getLatencyVector(): number[];
    /** Mirrors :cpp:func:`anira::InferenceHandler::get_available_samples`. */
    getAvailableSamples(tensorIndex: number, channel?: number): number;
    /** Mirrors :cpp:func:`anira::InferenceHandler::set_non_realtime`. */
    setNonRealtime(nonRealtime: boolean): void;
    /** Mirrors :cpp:func:`anira::InferenceHandler::reset`. */
    reset(): void;
}
//# sourceMappingURL=InferenceHandler.d.ts.map