import { Observable, Subject } from "rxjs";
import { IBetterLogger } from "@codiac.io/codiac-common";
import { IContainerServiceClient } from "@codiac.io/codiac-relay-contracts/interfaces";
import { IOutputStyler } from "../ops";
import { CliEnviro } from "../ops/entities";
export declare const DEFAULT_IMAGE_TAG: string;
export declare class RelayContainer implements IContainerServiceClient {
    private styler;
    private cliEnviro;
    private logger;
    private healthCheckUrl;
    private retryTimeOut;
    private projectRoot?;
    private localEntities;
    imageName: string;
    imageTag: string;
    containerName: string;
    silent: boolean;
    readyFailed$: Subject<unknown>;
    private connectionRefusedCount;
    private serverErrorCount;
    private readonly MAXTRIESBEFORECONTAINERRESTART;
    private docker;
    private _cliExec;
    private isWin;
    private socketPath;
    private _userMessages;
    get userMessages(): Observable<string | undefined>;
    private dockerFailedSubj;
    private get dockerFailed$();
    private dockerSubj;
    private get docker$();
    private startFailedSubj;
    private get startFailed$();
    private readySubj;
    get ready$(): Observable<boolean>;
    constructor(styler: IOutputStyler, cliEnviro: CliEnviro, logger: IBetterLogger, healthCheckUrl?: string, retryTimeOut?: number, projectRoot?: string | undefined, localEntities?: boolean);
    /** Creates subfolders in codiac program folder required for local entities.
     *
     * Does not throw: Logs any encountered errors and continues.
    */
    private createLocalDataFolders;
    private init;
    private getAllContainersOfRelayImage;
    private getRelayImageFromDockerPS;
    private getRunningContainers;
    private versionMismatch;
    private deleteRelayImage;
    private getRelayImages;
    private dockerSetRelayRestart;
    healthCheck(): void;
    stop(): Observable<boolean>;
    remove(): Observable<boolean>;
    destroy(): Observable<boolean>;
    private createContainer;
    private pullImage;
    private execStart;
    private watchLogs;
    private getDocker;
    private promisifyStream;
}
