import 'package:result_monad/result_monad.dart';

import '../../models/circle_data.dart';
import '../../models/connection.dart';
import '../../models/exec_error.dart';

abstract class ICirclesRepo {
  void clear();

  void addAllCircles(List<CircleData> circles);

  void addConnectionToCircle(CircleData circle, Connection connection);

  void clearMyCircles();

  void upsertCircle(CircleData circle);

  void deleteCircle(CircleData circle);

  List<CircleData> getMyCircles();

  Result<List<Connection>, ExecError> getCircleMembers(CircleData circle);

  Result<List<CircleData>, ExecError> getCirclesForUser(String id);

  bool updateConnectionCircleData(String id, List<CircleData> currentCircless);
}
