type UseCase = { execute: (parameters: P, callbacks: C) => void } type AsyncUseCase = { execute: (parameters: P, callbacks: C) => Promise }