import { Config, Container, OpCommand, RunCommandArgs } from './../types';
import Docker, { ContainerCreateOptions } from '@cto.ai/dockerode';
import { OpJob, OpPipeline, OpService as OpServicePreview } from './../types/OpsYml';
import { AnalyticsService } from './../services/Analytics';
import { ContainerService } from './../services/Container';
import { FeathersClient } from './../services/Feathers';
import { ImageService } from './../services/Image';
import { OpsYmlEnvVar } from '../types/OpsYml';
import { RegistryAuthService } from './../services/RegistryAuth';
import { BuildOptions } from '../types/Docker';
export interface OpRunInputs {
    op: OpCommand;
    isPipeline: boolean;
    config: Config;
    parsedArgs: RunCommandArgs;
    options: ContainerCreateOptions;
    container: Docker.Container;
    version: string;
    flags: {
        nocache: boolean;
    };
}
export declare class OpService {
    protected registryAuthService: RegistryAuthService;
    protected imageService: ImageService;
    protected containerService: ContainerService;
    protected analytics: AnalyticsService;
    protected api: FeathersClient;
    constructor(registryAuthService?: RegistryAuthService, imageService?: ImageService, containerService?: ContainerService, analytics?: AnalyticsService, api?: FeathersClient);
    opBuild: (op: OpCommand, opPath: string, config: Config, options: BuildOptions) => Promise<void>;
    opsBuildLoop: (ops: OpCommand[], opPath: string, config: Config, options: BuildOptions) => Promise<void>;
    setDefaultRegistryToken: (config: Config) => Promise<void>;
    getOpsFromFileSystem: (opPath: string) => Promise<any>;
    convertOpsToCommands: (opsToBuild: (OpCommand | OpPipeline | OpServicePreview)[], config: Config, opPath: string) => Promise<OpCommand[]>;
    convertPipelinesToOps: (pipelines: OpPipeline[], config: Config, opPath: string) => Promise<OpCommand[]>;
    createJobContents: (config: Config, pipeline: OpPipeline, job: OpJob, jobIndex: number) => Promise<string>;
    addJobPackages: (packages: string[], targetFile: string) => void;
    writeJobContents: (contents: string, targetFile: string) => void;
    run(op: OpCommand, isPipeline: boolean, parsedArgs: RunCommandArgs, config: Config, version: string, flags: {
        nocache: boolean;
    }): Promise<Boolean>;
    updateOpFields: (inputs: OpRunInputs) => OpRunInputs;
    getImage: (inputs: OpRunInputs) => Promise<OpRunInputs>;
    pullImageFromRegistry: (op: OpCommand, config: Config, version: string) => Promise<void>;
    setOpImageUrl: (op: OpCommand, config: Config) => string;
    setEnvs: (inputs: OpRunInputs) => OpRunInputs;
    hostSetup: ({ op, ...rest }: OpRunInputs) => {
        op: {
            bind: string[];
            type: "command" | "glue_code" | "job" | "service";
            run: string;
            sdk?: string | undefined;
            network?: string | undefined;
            src: string[];
            mountCwd: boolean;
            mountHome: boolean;
            port: string[];
            image: string | void;
            domain: string | void;
            name: string;
            version: string;
            platformVersion: string;
            description: string;
            publishDescription?: string | undefined;
            env?: string[] | OpsYmlEnvVar | undefined;
            runId: string;
            opsHome: string;
            configDir: string;
            stateDir: string;
            localStateDir: string;
            teamID?: string | undefined;
            teamName: string;
            help: {
                usage: string;
                arguments: {
                    [key: string]: string;
                };
                options: {
                    [key: string]: string;
                };
            };
            isPublic: boolean;
            isPublished?: boolean | undefined;
            id: string;
            createdAt: string;
            updatedAt: string;
            local?: boolean | undefined;
            events?: string[] | undefined;
            trigger?: string[] | undefined;
        };
        isPipeline: boolean;
        config: Config;
        parsedArgs: RunCommandArgs;
        options: ContainerCreateOptions;
        container: Docker.Container;
        version: string;
        flags: {
            nocache: boolean;
        };
    };
    setBinds: ({ op, ...rest }: OpRunInputs) => {
        op: {
            bind: string[];
            type: "command" | "glue_code" | "job" | "service";
            run: string;
            sdk?: string | undefined;
            network?: string | undefined;
            src: string[];
            mountCwd: boolean;
            mountHome: boolean;
            port: string[];
            image: string | void;
            domain: string | void;
            name: string;
            version: string;
            platformVersion: string;
            description: string;
            publishDescription?: string | undefined;
            env?: string[] | OpsYmlEnvVar | undefined;
            runId: string;
            opsHome: string;
            configDir: string;
            stateDir: string;
            localStateDir: string;
            teamID?: string | undefined;
            teamName: string;
            help: {
                usage: string;
                arguments: {
                    [key: string]: string;
                };
                options: {
                    [key: string]: string;
                };
            };
            isPublic: boolean;
            isPublished?: boolean | undefined;
            id: string;
            createdAt: string;
            updatedAt: string;
            local?: boolean | undefined;
            events?: string[] | undefined;
            trigger?: string[] | undefined;
        };
        isPipeline: boolean;
        config: Config;
        parsedArgs: RunCommandArgs;
        options: ContainerCreateOptions;
        container: Docker.Container;
        version: string;
        flags: {
            nocache: boolean;
        };
    };
    getOptions: ({ op, config, ...rest }: OpRunInputs) => {
        op: OpCommand;
        options: {
            AttachStderr: boolean;
            AttachStdin: boolean;
            AttachStdout: boolean;
            Cmd: string[];
            Env: string[] | OpsYmlEnvVar | undefined;
            WorkingDir: string;
            HostConfig: {
                Binds: string[];
                NetworkMode: string | undefined;
                SecurityOpt: string[];
            };
            Image: string | void;
            OpenStdin: boolean;
            StdinOnce: boolean;
            Tty: boolean;
            Volumes: {};
            VolumesFrom: never[];
        };
        isPipeline: boolean;
        parsedArgs: RunCommandArgs;
        container: Docker.Container;
        version: string;
        flags: {
            nocache: boolean;
        };
    };
    addPortsToOptions: ({ op, options, ...rest }: OpRunInputs) => Promise<OpRunInputs>;
    createContainer: (inputs: OpRunInputs) => Promise<OpRunInputs>;
    attachToContainer: (inputs: OpRunInputs) => Promise<OpRunInputs>;
    convertEnvStringsToObject: (acc: Container<string>, curr: string) => {
        [x: string]: string;
    };
    overrideEnvWithProcessEnv: (processEnv: Container<string | undefined>) => ([key, val,]: [string, string]) => string[];
    replaceHomeAlias: (bindPair: string) => string;
}
