import 'app_error.dart';

sealed class DataState {
  const DataState();

  static const initial = Initial();

  static const loading = Loading();

  static failure(AppError e) => Failure(e);

  static success<T>(T data) => Success(data);

  bool get isReady => this is Success;
}

class Initial extends DataState {
  const Initial();
}

class Loading extends DataState {
  const Loading();
}

class Success<T> extends DataState {
  final T data;

  const Success(this.data);
}

class Failure extends DataState {
  final AppError error;

  const Failure(this.error);
}