/// <reference types="node" />
import execa from 'execa';
import { Container, ExecOptions, Exec, ContainerStatus, ContainerFactoryOptions } from '@teambit/capsule';
import { AnyFS, NodeFS } from '@teambit/any-fs';
import { Stream } from 'stream';
import ContainerExec from './container-exec';
export interface BitExecOption extends ExecOptions {
    cwd: string;
    stdio?: 'pipe' | 'ipc' | 'ignore' | 'inherit' | Stream | number | undefined;
}
export interface BitContainerConfig extends ContainerFactoryOptions {
    other?: string;
}
export default class FsContainer implements Container<Exec, AnyFS> {
    readonly wrkDir: string;
    id: string;
    fs: NodeFS;
    constructor(wrkDir: string);
    getPath(): string;
    private composePath;
    outputFile(file: any, data: any, options: any): Promise<void>;
    removePath(dir: string): Promise<any>;
    symlink(src: string, dest: string): Promise<any>;
    exec(execOptions: BitExecOption, exec?: ContainerExec): Promise<ContainerExec>;
    execP(execOptions: BitExecOption): Promise<string>;
    terminal(): Promise<execa.ExecaReturnValue<string>>;
    start(): Promise<void>;
    inspect(): Promise<ContainerStatus>;
    pause(): Promise<void>;
    resume(): Promise<void>;
    stop(ttl?: number | undefined): Promise<void>;
    destroy(): Promise<void>;
    log(): Promise<Exec>;
    on(event: string, fn: (data: any) => void): void;
}
