import { clContext as nodenCLContext, KernelParams, OpenCLProgram, RunTimings } from 'nodencl'; export declare type JobCB = () => void; interface ClJob { name: string; program: OpenCLProgram; params: KernelParams; cb: JobCB; } export declare type JobID = { source: string; timestamp: number; }; declare type JobsRequest = { id: string; jobs: ClJob[]; done: () => void; }; export declare class ClJobs { private readonly processJobs; private jobs; constructor(processJobs: ClProcessJobs); makeKey(id: JobID): string; add(id: JobID, name: string, program: OpenCLProgram, params: KernelParams, cb: JobCB): void; get(id: JobID): ClJob[] | undefined; delete(id: JobID): void; clear(): void; runQueue(id: JobID): Promise; clearQueue(src: string): void; } export declare class ClProcessJobs { private readonly clContext; private readonly requests; private readonly runEvents; private readonly clJobs; private readonly showTimings; constructor(clContext: nodenCLContext); processQueue(): Promise; getJobs(): ClJobs; requestRun(id: string, request: JobsRequest): void; logTimings(id: string, end: number[], timings: Map): void; } export {};