import type { IPipelineTemplateConfigV2 } from '../../../domain';
import type { IPipeline } from '../../../domain/IPipeline';
import type { IPipelineTemplateV2Collections } from '../../../domain/IPipelineTemplateV2';
export interface IPipelineTemplate {
    id: string;
    selfLink?: string;
    metadata: ITemplateMetadata;
    protect: boolean;
    schema: string;
    source: string;
    stages: ITemplateStage[];
    variables: IVariableMetadata[];
}
export interface ITemplateMetadata {
    description: string;
    name: string;
    owner: string;
}
export interface IVariableMetadata {
    defaultValue?: any;
    description?: string;
    example?: string;
    group?: string;
    name: string;
    type: VariableType;
}
export declare type VariableType = 'int' | 'float' | 'list' | 'object' | 'string' | 'boolean';
export interface ITemplateStage {
    dependsOn: string[];
    id: string;
    name: string;
    type: string;
}
export interface IPipelineTemplateConfig extends Partial<IPipeline> {
    type: string;
    plan?: boolean;
    config?: {
        schema: string;
        pipeline: {
            name: string;
            application: string;
            pipelineConfigId?: string;
            template: {
                source: string;
            };
            variables?: {
                [key: string]: any;
            };
        };
        configuration?: {
            inherit?: string[];
        };
    };
}
export interface IPipelineTemplatePlanResponse {
    errors: IPipelineTemplatePlanError[];
    message: string;
    status: string;
}
export interface IPipelineTemplatePlanError {
    severity: string;
    message: string;
    location: string;
    cause: string;
    suggestion: string;
    details: {
        [key: string]: string;
    };
    nestedErrors: IPipelineTemplatePlanError[];
}
export declare class PipelineTemplateReader {
    static getPipelineTemplateFromSourceUrl(source: string, executionId?: string, pipelineConfigId?: string): PromiseLike<IPipelineTemplate>;
    static getPipelinePlan(config: IPipelineTemplateConfig | IPipelineTemplateConfigV2, executionId?: string): PromiseLike<IPipeline>;
    static getPipelineTemplatesByScope: (scope: string) => PromiseLike<IPipelineTemplate[]>;
    static getPipelineTemplatesByScopes(scopes: string[]): PromiseLike<IPipelineTemplate[]>;
    static getPipelineTemplateConfig({ name, application, source, }: {
        name: string;
        application: string;
        source: string;
    }): Partial<IPipelineTemplateConfig>;
    static getV2PipelineTemplateList(): PromiseLike<IPipelineTemplateV2Collections>;
}
