import { type Logger } from "@logtape/logtape"; import { BackendPostgres } from "@sonamu-kit/tasks"; import { type RunnableWorkflow, type SchemaInput, type SchemaOutput, type StandardSchemaV1, type WorkflowRunHandle, type WorkflowSpec } from "@sonamu-kit/tasks/internal"; import { type Knex } from "knex"; import { type WorkflowMetadata } from "./decorator"; import { StepWrapper } from "./step-wrapper"; export interface WorkflowOptions { concurrency?: number; usePubSub?: boolean; listenDelay?: number; } export type WorkflowFunction = (params: Readonly<{ logger: Logger; input: Input; step: StepWrapper; version: string | null; }>) => Promise | Output; export type WorkflowCreateOptions = Omit, Output, SchemaInput>, "version"> & { id: string; version: string | null; function: WorkflowFunction, Output>; }; export declare class WorkflowManager { #private; constructor(dbConf: Knex.Config, runMigrations?: boolean); get backend(): BackendPostgres; get workflowDefinitions(): { id: string; name: string; version: string | null; schedules: { name: string; expression: string; }[]; retryPolicy: import("@sonamu-kit/tasks/internal").SerializableRetryPolicy | undefined; }[]; /** * 정의된 워크플로우 및 워크플로우에 대한 scheduled tasks를 동기화합니다. */ synchronize(workflowMap: Map): Promise; run(options: Omit, "function" | "schema" | "id">, input: SchemaInput): Promise>; scheduleTask(workflow: Pick, schedule: WorkflowMetadata["schedules"][number]): Promise; unscheduleTask(name: string): Promise; registerWorkflow(options: WorkflowCreateOptions): RunnableWorkflow, Output, SchemaInput>; unregisterWorkflow(workflow: Pick): Promise; setupWorker(options: WorkflowOptions): void; startWorker(): Promise; stopWorker(): Promise; stopSchedules(): Promise; destroySchedules(): Promise; destroy(): Promise; [Symbol.asyncDispose](): Promise; } //# sourceMappingURL=workflow-manager.d.ts.map