import { BasicAction, MablAction } from './MablAction';
import { MablSymbol } from './MablSymbol';
import { StepDescriptor } from './types/StepDescriptor';
interface BasicStep extends BasicAction {
    actions: MablAction[];
    getFormattedStep: () => object;
    getStepName: () => string;
    toStepDescriptor: () => any;
    toMablscript: () => string;
    setAnnotation: (annotation: object) => void;
    getAnnotation: () => StepAnnotation | undefined;
    setDescription: (description: string) => void;
    getDescription: () => string | undefined;
    subVariable: (argument: string) => string;
    description?: string;
    annotation?: StepAnnotation;
}
export declare enum StepDescriptionSource {
    AI = "ai",
    Default = "default",
    User = "user"
}
export interface StepAnnotation {
    description: string;
    note: string;
    aiGeneratedDescription?: string;
    descriptionPromptId?: string;
    descriptionSource?: StepDescriptionSource;
}
export interface LineDiffStep {
    annotation?: StepAnnotation;
    disabled: boolean;
    mablscript?: string;
    descriptor?: StepDescriptor;
}
export declare class MablStep extends MablAction implements BasicStep {
    id?: string;
    actions: MablAction[];
    disabled?: boolean;
    description?: string;
    annotation?: StepAnnotation;
    stepSourceIndexInFlow?: number;
    static mablScriptStepNames: string[];
    static yamlMablScriptNames: string[];
    protected stepVersion: number;
    constructor(name: string, args: any[], actions: MablAction[], actionCode: string);
    getStepVersion(): number;
    setStepId(id: string | undefined): void;
    stepId(): string | undefined;
    canContinueOnFailure(): boolean;
    canFailAtEnd(): boolean;
    getStepName(): string;
    isDisabled(): boolean;
    setDisabled(disabled: boolean): void;
    setAnnotation(annotation: object): void;
    getAnnotation(): StepAnnotation | undefined;
    setDescription(description: string): void;
    getDescription(): string | undefined;
    setStepSourceIndexInFlow(index: number): void;
    getStepSourceIndexInFlow(): number | undefined;
    getResolvedDescription(): string;
    substituteMablscriptVariable(argument: string | MablSymbol): string;
    toStepDescriptor(): any;
    protected annotationsOnStep(): boolean;
    protected annotationsAsYml(): AnnotatedStepYml;
    getFormattedStep(): object;
    toMablscript(): string;
    toLineDiffFormat(_omitStepId?: boolean): string;
    stringify(value: any): string;
    static cloneAndRemoveUndefinedEntriesFromObject(obj: object): object;
}
interface AnnotatedStepYml {
    disabled?: boolean;
    annotation?: StepAnnotation;
    description?: string;
}
export interface UnimplementedStep {
    names: string[];
}
export interface FormattedStep {
    [key: string]: FormattedMablscriptStep;
}
export interface FormattedMablscriptStep {
    disabled?: boolean;
    annotation?: StepAnnotation;
    description?: string;
    id?: string;
}
export declare function buildSourceRepresentationOfObject(object: object): string;
export declare function buildObjectString(objectString: {
    [key: string]: any;
}): string[];
export declare function isMablStepV1(value: any): value is MablStep;
export {};
//# sourceMappingURL=MablStep.d.ts.map