import { Context, LoadedModule, MedusaContainer } from "@medusajs/types";
import { DistributedTransactionEvents, DistributedTransactionType, TransactionFlow, TransactionModelOptions, TransactionStepsDefinition } from "../transaction";
import { OrchestratorBuilder } from "../transaction/orchestrator-builder";
import { WorkflowDefinition, WorkflowStepHandler } from "./workflow-manager";
type StepHandler = {
    invoke: WorkflowStepHandler;
    compensate?: WorkflowStepHandler;
};
export declare class LocalWorkflow {
    protected container_: MedusaContainer;
    protected workflowId: string;
    protected flow: OrchestratorBuilder;
    protected customOptions: Partial<TransactionModelOptions>;
    protected workflow: WorkflowDefinition;
    protected handlers: Map<string, StepHandler>;
    protected medusaContext?: Context;
    get container(): MedusaContainer;
    set container(modulesLoaded: LoadedModule[] | MedusaContainer);
    constructor(workflowId: string, modulesLoaded?: LoadedModule[] | MedusaContainer);
    private resolveContainer;
    private contextualizedMedusaModules;
    protected commit(): void;
    getFlow(): TransactionStepsDefinition;
    private registerEventCallbacks;
    run(uniqueTransactionId: string, input?: unknown, context?: Context, subscribe?: DistributedTransactionEvents, flowMetadata?: TransactionFlow["metadata"]): Promise<DistributedTransactionType>;
    getRunningTransaction(uniqueTransactionId: string, context?: Context): Promise<DistributedTransactionType>;
    cancel(transactionOrTransactionId: string | DistributedTransactionType, _?: unknown, // not used but a common argument on other methods called dynamically
    context?: Context, subscribe?: DistributedTransactionEvents): Promise<DistributedTransactionType>;
    retryStep(idempotencyKey: string, context?: Context, subscribe?: DistributedTransactionEvents): Promise<DistributedTransactionType>;
    registerStepSuccess(idempotencyKey: string, response?: unknown, context?: Context, subscribe?: DistributedTransactionEvents): Promise<DistributedTransactionType>;
    registerStepFailure(idempotencyKey: string, error?: Error | any, context?: Context, subscribe?: DistributedTransactionEvents, forcePermanentFailure?: boolean): Promise<DistributedTransactionType>;
    setOptions(options: Partial<TransactionModelOptions>): this;
    addAction(action: string, handler: StepHandler, options?: Partial<TransactionStepsDefinition>): OrchestratorBuilder;
    replaceAction(existingAction: string, action: string, handler: StepHandler, options?: Partial<TransactionStepsDefinition>): OrchestratorBuilder;
    insertActionBefore(existingAction: string, action: string, handler: StepHandler, options?: Partial<TransactionStepsDefinition>): OrchestratorBuilder;
    insertActionAfter(existingAction: string, action: string, handler: StepHandler, options?: Partial<TransactionStepsDefinition>): OrchestratorBuilder;
    appendAction(action: string, to: string, handler: StepHandler, options?: Partial<TransactionStepsDefinition>): OrchestratorBuilder;
    moveAction(actionToMove: string, targetAction: string): OrchestratorBuilder;
    moveAndMergeNextAction(actionToMove: string, targetAction: string): OrchestratorBuilder;
    mergeActions(where: string, ...actions: string[]): OrchestratorBuilder;
    deleteAction(action: string, parentSteps?: any): OrchestratorBuilder;
    pruneAction(action: string): OrchestratorBuilder;
    protected assertHandler(handler: StepHandler, action: string): void | never;
    private onLoad;
}
export {};
//# sourceMappingURL=local-workflow.d.ts.map