import { StreamRef } from "./types/graph";
export declare type FilterArgs<T extends Filter['type']> = Extract<Filter, {
    type: T;
    args: any;
}>['args'];
export declare type Filter = {
    type: 'tracks';
    args: 'video' | 'audio';
} | {
    type: 'trim';
    args: {
        start: number;
        duration: number;
    };
} | {
    type: 'setpts';
} | {
    type: 'fifo';
} | {
    type: 'volume';
    args: number;
} | {
    type: 'merge';
} | // implicit args: {number of inputs}
{
    type: 'concat';
} | {
    type: 'format';
    args: {
        pixelFormat?: string;
        sampleFormat?: string;
        sampleRate?: number;
        channelLayout?: string;
    };
};
/**
 * valid `args` based on previous streams, then create FilterNodes (update streams metadata)
 * @returns array of streamRef, ref to created FilterNodes' outStreams, or unchanged streamRefs.
 */
export declare function applySingleFilter(streamRefs: StreamRef[], filter: Filter): StreamRef[];
/**
 * valid `args` based on previous streams, then create FilterNodes (update streams metadata)
 * @returns array of streamRef, ref to created FilterNodes' outStreams, or unchanged streamRefs.
 */
export declare function applyMulitpleFilter(streamRefsArr: StreamRef[][], filter: Filter): StreamRef[];
