import { clContext as nodenCLContext } from 'nodencl';
import { Layer } from './layer';
import { RedioPipe, RedioEnd } from 'redioactive';
import { OpenCLBuffer } from 'nodencl';
import { Frame } from 'beamcoder';
import { VideoFormat } from './config';
import { ClJobs } from './clJobQueue';
export declare class CombineLayer {
private readonly layer;
private readonly audioPipe;
private readonly videoPipe;
private readonly endEvent;
private audioStarted;
private videoStarted;
private audioEnd;
private videoEnd;
constructor(layer: Layer, audPipe: RedioPipe, vidPipe: RedioPipe);
getLayer(): Layer;
getAudioPipe(): RedioPipe;
getVideoPipe(): RedioPipe;
checkAudio(frame: Frame | RedioEnd): boolean;
checkVideo(frame: OpenCLBuffer | RedioEnd): boolean;
}
export declare class Combiner {
private readonly clContext;
private readonly chanID;
private readonly consumerFormat;
private readonly clJobs;
private lastNumAudLayers;
private lastNumVidLayers;
private numConsumers;
private audCombiner;
private vidCombiner;
private audioPipe;
private videoPipe;
private combineLayers;
private audLayerPipes;
private vidLayerPipes;
constructor(clContext: nodenCLContext, chanID: string, consumerFormat: VideoFormat, clJobs: ClJobs);
initialise(): Promise;
makeAudCombiner(numLayers: number): Promise;
makeVidCombiner(numLayers: number): Promise;
updateLayers(layers: CombineLayer[]): void;
addConsumer(): void;
removeConsumer(): void;
getAudioPipe(): RedioPipe | undefined;
getVideoPipe(): RedioPipe | undefined;
}