import { StepMetadata } from '../decorators/Step';
export type DSLDefinition = {
    variables: Record<string, unknown>;
    plan: Statement;
};
export type Statement = {
    condition?: (dsl: DSLDefinition) => Promise<boolean>;
    retries?: number;
    timeout?: number;
    required?: boolean;
} & ({
    sequence: Sequence;
} | {
    parallel: Parallel;
} | {
    execute: Execute;
});
export type Sequence = {
    elements: Statement[];
};
export type Parallel = {
    branches: Statement[];
};
export type Execute = {
    code?: string;
    step?: StepInvocation;
    activity?: ActivityInvocation;
    workflow?: WorkflowInvocation;
};
export type ActivityInvocation = {
    name: string;
    arguments?: string[];
    result?: string;
    group?: number;
};
export type WorkflowInvocation = {
    name: string;
    arguments?: string[];
    result?: string;
    group?: number;
};
export type StepInvocation = {
    name: string;
    arguments?: string[];
    result?: string;
    group?: number;
};
export declare function DSLInterpreter(dsl: DSLDefinition, injectedActivities?: Record<string, (...args: string[]) => Promise<string | undefined>>, injectedSteps?: Record<string, (...args: string[]) => Promise<string | undefined>>): Promise<unknown>;
/**
 * Adapter function to convert StepMetadata from the @Step decorator into DSLDefinition format
 *
 * @param steps Array of step metadata from a Workflow class
 * @returns DSLDefinition object representing the workflow steps
 */
export declare function convertStepsToDSL(steps: StepMetadata[], initialVariables?: Record<string, unknown>): DSLDefinition;
