import type { AsyncResult, TaggedError } from "@fabric/core"; /** * A use case is a piece of domain logic that can be executed. */ export type UseCase< TDependencies, TPayload, TOutput, TErrors extends TaggedError, > = TPayload extends undefined ? (dependencies: TDependencies) => AsyncResult : ( dependencies: TDependencies, payload: TPayload, ) => AsyncResult;