import { BehaviorSubject } from 'rxjs';
import { Subject } from 'rxjs';
import { Config } from './Config';
import { Installator } from "./Installator";
import { ChildProcess } from "./Node";
interface HandBrakeArgs {
    'input'?: string;
    'output'?: string;
    'help'?: boolean;
    'version'?: boolean;
    'verbose'?: boolean;
    'preset'?: boolean;
    'preset-list'?: boolean;
    'preset-import-file'?: string;
    'no-dvdnav'?: string;
    'no-opencl'?: boolean;
    'title'?: string;
    'min-duration'?: string;
    'scan'?: boolean;
    'main-feature'?: boolean;
    'chapters'?: boolean;
    'angle'?: number;
    'previews'?: string;
    'start-at-preview'?: string;
    'start-at'?: string;
    'stop-at'?: string;
    'format'?: string;
    'markers'?: boolean;
    'no-markers'?: boolean;
    'optimize'?: boolean;
    'ipod-atom'?: boolean;
    'no-ipod-atom'?: boolean;
    'use-opencl'?: boolean;
}
interface ProcessState {
    min?: number;
    hour?: number;
    sec?: number;
    percent?: number;
    fps?: number;
    status?: 'pending' | 'starting' | 'running' | 'caneled' | 'done' | 'error';
    errorMessage?: string;
}
export declare class HandBrakeTs {
    readonly installator: Installator;
    readonly config: Config;
    constructor();
    exec(args: HandBrakeArgs): HandBrakeProcess;
    static singleton: HandBrakeTs;
    static instance(): HandBrakeTs;
}
export declare class HandBrakeProcess {
    private processInicializer;
    private args;
    private instalator;
    private config;
    private progressRegExp;
    readonly logStream: Subject<string>;
    readonly errorStream: Subject<string>;
    readonly stateChange: BehaviorSubject<ProcessState>;
    private process;
    constructor(processInicializer: ChildProcess, args: HandBrakeArgs, instalator: Installator, config: Config);
    private init;
    isRun(): boolean;
    start(): Promise<void>;
    captureErrors(line: any): void;
    get state(): ProcessState;
    cancel(): void;
    private emitProgress;
    private updateState;
}
export declare const handBrakeTs: HandBrakeTs;
export {};
//# sourceMappingURL=HandBrake.d.ts.map