import Command, { flags } from './../base';
import { Answers, Config, OpCommand, OpPipeline, OpsYml, OpWorkflow, RunCommandArgs } from './../types';
export interface IRunInputs {
    parsedArgs: RunCommandArgs;
    teamName: string;
    opName: string;
    opVersion: string;
    config: Config;
    commands: Array<OpCommand | OpPipeline | OpWorkflow>;
    pipelines: OpPipeline[];
    selectedOp: OpCommand | OpPipeline | OpWorkflow;
    options: {
        nocache: boolean;
    };
}
export default class Run extends Command {
    static description: string;
    static flags: flags.Input<any>;
    static strict: boolean;
    static args: {
        description: string;
        name: string;
        parse: (input: string) => string;
    }[];
    customParse: (options: typeof Run, argv: string[]) => {
        args: any;
        flags: any;
        opParams: string[];
    };
    parseYamlFile: (relativePathToOpsYml: string) => Promise<OpsYml>;
    readOpsFromLocalManifest: (relativePathToOpsYml: string) => (inputs: IRunInputs) => Promise<IRunInputs>;
    addMissingApiFieldsToLocalOps: (inputs: IRunInputs) => Promise<IRunInputs>;
    filterLocalOps: (inputs: IRunInputs) => IRunInputs;
    formatOpEmoji: (op: OpCommand | OpPipeline | OpWorkflow) => string;
    formatOpName: (op: OpCommand | OpPipeline | OpWorkflow) => string;
    fuzzyFilterParams: (ops: Array<OpCommand | OpPipeline | OpWorkflow>) => {
        name: string;
        value: OpCommand | OpPipeline | OpWorkflow;
    }[];
    autocompleteSearch: (ops: Array<OpCommand | OpPipeline | OpWorkflow>) => (_: Answers, input?: string) => Promise<{
        name: string;
        value: OpCommand | OpPipeline | OpWorkflow;
    }[]>;
    selectOpOrWorkflowToRun: (inputs: IRunInputs) => Promise<IRunInputs>;
    printCustomHelp: (op: OpCommand) => void;
    checkForHelpMessage: (inputs: IRunInputs) => IRunInputs | void;
    getPublishedPipelines: (inputs: IRunInputs) => Promise<Array<OpCommand | OpWorkflow>>;
    isPipelinePublished: (inputs: IRunInputs) => Promise<boolean>;
    getPipelineJob: (teamName: string, opName: string, opVersion: string) => Promise<OpCommand | null>;
    executeOpService: (inputs: IRunInputs) => Promise<IRunInputs>;
    /**
     * Extracts the Workflow Team and Name from the input argument
     * @cto.ai/github -> { teamName: cto.ai, opname: github, opVersion: '' }
     * cto.ai/github -> { teamName: cto.ai, opname: github, opVersion: '' }
     * github -> { teamName: '', opname: github, opVersion: '' }
     * @cto.ai/github:0.1.0 -> { teamName: cto.ai, opname: github, opVersion: '0.1.0' }
     * cto.ai/github:customVersion -> { teamName: cto.ai, opname: github, opVersion: 'customVersion' }
     * github:myVersion -> { teamName: '', opname: github, opVersion: 'myVersion' }
     * cto.ai/extra/blah -> InvalidOpName
     * cto.ai/extra:version1:version2 -> InvalidOpName
     * null -> InvalidOpName
     */
    parseTeamOpNameVersion: (inputs: IRunInputs) => {
        teamName: string;
        opName: string;
        opVersion: string | undefined;
        parsedArgs: RunCommandArgs;
        config: Config;
        commands: (OpCommand | OpPipeline | OpWorkflow)[];
        pipelines: OpPipeline[];
        selectedOp: OpCommand | OpPipeline | OpWorkflow;
        options: {
            nocache: boolean;
        };
    };
    parseYmlEnvVariables: (env: any, teamName: string) => Promise<string[]>;
    getEnvConfigs: (envs: string[], teamName: string) => Promise<string[]>;
    getEnvSecrets: (envs: string[], teamName: string) => Promise<string[]>;
    splitEnvKeys(e: string): any;
    getApiOps: (inputs: IRunInputs) => Promise<IRunInputs>;
    sendAnalytics: (inputs: IRunInputs) => Promise<IRunInputs>;
    run(): Promise<void>;
}
