import { BaseChannel } from "async-channel";
import { GenericMutationCtx, GenericDataModel, FunctionType, FunctionReference } from "convex/server";
import { JournalEntry } from "../component/schema.js";
import { api } from "../component/_generated/api.js";
import { UseApi } from "../types.js";
import { RetryBehavior, WorkpoolOptions, RunResult, SchedulerOptions } from "@convex-dev/workpool";
export type OriginalEnv = {
    Date: {
        now: () => number;
    };
};
export type WorkerResult = {
    type: "handlerDone";
    runResult: RunResult;
} | {
    type: "executorBlocked";
};
export type StepRequest = {
    name: string;
    functionType: FunctionType;
    function: FunctionReference<any>;
    args: any;
    retry: RetryBehavior | boolean | undefined;
    schedulerOptions: SchedulerOptions;
    resolve: (result: unknown) => void;
    reject: (error: unknown) => void;
};
export declare class StepExecutor {
    private workflowId;
    private generationNumber;
    private ctx;
    private component;
    private journalEntries;
    private receiver;
    private originalEnv;
    private workpoolOptions;
    private journalEntrySize;
    constructor(workflowId: string, generationNumber: number, ctx: GenericMutationCtx<GenericDataModel>, component: UseApi<typeof api>, journalEntries: Array<JournalEntry>, receiver: BaseChannel<StepRequest>, originalEnv: OriginalEnv, workpoolOptions: WorkpoolOptions | undefined);
    run(): Promise<WorkerResult>;
    completeMessage(message: StepRequest, entry: JournalEntry): void;
    startStep(message: StepRequest): Promise<JournalEntry>;
}
//# sourceMappingURL=step.d.ts.map