import 'package:dartz/dartz.dart';
import '../../core/errors/failures.dart';

/// UseCase 추상 클래스
/// 모든 UseCase는 이 클래스를 상속받아 구현
/// 
/// [Type]: 반환 타입
/// [Params]: 파라미터 타입
abstract class UseCase<Type, Params> {
  /// UseCase 실행 메서드
  Future<Either<Failure, Type>> call(Params params);
}

/// 파라미터가 없는 UseCase를 위한 클래스
class NoParams {
  const NoParams();
}

