import { COMMAND_TYPE, WORKFLOW_TYPE, GLUECODE_TYPE, JOB_TYPE, SERVICE_TYPE, PIPELINE_TYPE } from '../constants/opConfig';
export interface OpsYmlEnvVar {
    configs?: string[];
    secrets?: string[];
    static?: string[];
}
export interface OpsYml {
    version: string;
    ops: OpCommand[];
    pipelines: OpPipeline[];
    workflows: OpWorkflow[];
    services: OpService[];
}
export declare function instanceOfOpWorkflow(object: any): object is OpWorkflow;
export interface OpBase {
    name: string;
    version: string;
}
export interface OpCommand extends BaseFields {
    type: COMMAND_TYPE | GLUECODE_TYPE | JOB_TYPE | SERVICE_TYPE;
    run: string;
    sdk?: string;
    bind: string[];
    network?: string;
    src: string[];
    mountCwd: boolean;
    mountHome: boolean;
    port: string[];
    image: string | void;
    domain: string | void;
}
export declare function instanceOfOpPipeline(object: any): object is OpPipeline;
export type Ops = (OpCommand | OpPipeline)[];
export interface OpPipeline extends BaseFields {
    type: PIPELINE_TYPE;
    version: string;
    name: string;
    public?: boolean;
    remote?: boolean;
    jobs: OpJob[];
    id: string;
    description: string;
    teamName: string;
    env?: OpsYmlEnvVar;
    events?: string[];
    trigger?: string[];
    bind?: string[];
    linkedCommandsNames?: string[];
}
export interface OpJob {
    packages: string[];
    name: string;
    sdk?: string;
    version: string;
    description: string;
    steps: string[];
    env?: OpsYmlEnvVar;
    bind?: string[];
    linked: boolean;
    params?: string[];
}
export interface OpService {
    type: SERVICE_TYPE;
    name: string;
    version: string;
    description: string;
    public?: boolean;
    isPublic?: boolean;
    port: number;
    run: string;
    sdk?: string;
    domain?: string;
    env?: OpsYmlEnvVar;
    events?: string[];
    trigger?: string[];
}
export declare const convertServicesToOps: (services: OpService[]) => OpCommand[];
export declare const checkAndApplyLatestSDKVersion: (commands: OpCommand[]) => OpCommand[];
export interface OpWorkflow extends BaseFields {
    type: WORKFLOW_TYPE;
    remote: boolean;
    steps: string[];
    bind?: string[];
    linkedCommandsNames?: string[];
}
interface BaseFields {
    name: string;
    version: string;
    platformVersion: string;
    description: string;
    publishDescription?: string;
    env?: string[] | OpsYmlEnvVar;
    runId: string;
    opsHome: string;
    configDir: string;
    stateDir: string;
    localStateDir: string;
    teamID?: string;
    teamName: string;
    help: {
        usage: string;
        arguments: {
            [key: string]: string;
        };
        options: {
            [key: string]: string;
        };
    };
    isPublic: boolean;
    isPublished?: boolean;
    id: string;
    createdAt: string;
    updatedAt: string;
    local?: boolean;
    events?: string[];
    trigger?: string[];
}
export {};
