import type { OnnxTensorData, OnnxSessionInfo, OnnxInferenceResult } from '../../types/interfaces';
import type { Constructor } from './mixinUtils';
interface OrtInferenceSession {
    inputNames: readonly string[];
    outputNames: readonly string[];
    run(feeds: Record<string, unknown>): Promise<Record<string, OrtTensor>>;
    release(): Promise<void>;
}
interface OrtTensor {
    type: string;
    dims: readonly number[];
    data: Float32Array | BigInt64Array | Int32Array | Uint8Array | Float64Array;
}
interface OrtNamespace {
    InferenceSession: {
        create(path: string, options?: unknown): Promise<OrtInferenceSession>;
    };
    Tensor: {
        new (type: string, data: ArrayLike<number> | ArrayLike<bigint> | Float32Array | BigInt64Array | Int32Array | Uint8Array, dims: readonly number[]): OrtTensor;
    };
}
declare global {
    interface Window {
        ort?: OrtNamespace;
    }
}
export declare function OnnxInferenceMixin<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @internal */ _onnxSessions: Map<string, unknown>;
        /** @internal */ _onnxNextId: number;
        createOnnxSession(config: {
            modelPath: string;
            numThreads?: number;
        }): Promise<OnnxSessionInfo>;
        runOnnxSession(sessionId: string, inputs: Record<string, OnnxTensorData>): Promise<OnnxInferenceResult>;
        releaseOnnxSession(sessionId: string): Promise<{
            released: boolean;
        }>;
    };
} & TBase;
export {};
//# sourceMappingURL=onnxInference.d.ts.map