/// <reference types="dom-webcodecs" />
import { SourceStream } from './globals';
import { FFWorker } from "./message";
import { ChunkData, SourceNode, SourceType, TargetNode, WriteChunkData } from "./types/graph";
import { BufferPool } from './utils';
declare type SourceStreamCreator = (seekPos: number) => Promise<SourceStream<ChunkData>>;
export declare function getSourceInfo(src: SourceType): Promise<{
    size: number;
    url?: string;
    isHLS?: boolean;
}>;
export declare const sourceToStreamCreator: (src: SourceType) => SourceStreamCreator;
export declare class FileReader {
    #private;
    source: SourceType;
    streamCreator: SourceStreamCreator;
    stream: SourceStream<ChunkData> | undefined;
    worker: FFWorker;
    constructor(id: string, source: SourceType, worker: FFWorker);
    get url(): string;
    get end(): boolean;
}
export declare class StreamReader {
    #private;
    cacheData: ChunkData[];
    worker: FFWorker;
    stream: SourceStream<ChunkData>;
    bufferPool: BufferPool;
    constructor(id: string, cacheData: ChunkData[], stream: SourceStream<ChunkData>, worker: FFWorker);
    get end(): boolean;
    probe(): Promise<ChunkData | undefined>;
    read(): Promise<Uint8Array | VideoFrame | AudioData | undefined>;
    close(source: SourceNode): void;
}
declare type Reader = FileReader | StreamReader;
/**
 * Generic data type for all data buffer with unified API.
 */
export declare class Chunk {
    #private;
    worker: FFWorker;
    id: string;
    constructor(data: ChunkData | WriteChunkData, worker: FFWorker, id: string);
    get data(): Uint8Array | undefined;
    get videoFrame(): VideoFrame | undefined;
    get audioData(): AudioData | undefined;
    get offset(): number;
    close(): void;
}
/**
 * stream output handler
 */
export declare function newExporter(node: TargetNode, worker: FFWorker): Promise<Exporter>;
/**
 * Exporter is a class that exports data from a graph.
 */
export declare class Exporter {
    id: string;
    worker: FFWorker;
    readers: Reader[];
    constructor(id: string, worker: FFWorker, readers: Reader[]);
    next(): Promise<{
        output: Chunk[];
        progress: number;
        done: boolean;
    }>;
    close(): Promise<void>;
}
export {};
