import { defineWorkflow } from "openworkflow";
interface OrderInput {
orderId: string;
customerId: string;
}
interface OrderResult {
success: boolean;
trackingNumber: string;
}
export const processOrder = defineWorkflow<OrderInput, OrderResult>(
{ name: "process-order" },
async ({ input, step }) => {
const validated = await step.run({ name: "validate" }, async () => {
// input is typed as OrderInput
return validateOrder(input.orderId);
});
const trackingNumber = await step.run({ name: "ship" }, async () => {
return shipOrder(input.orderId);
});
// Return type must match OrderResult
return {
success: true,
trackingNumber,
};
},
);