import 'package:dartz/dartz.dart'; import 'package:flowy_sdk/protobuf/flowy-user/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-user/user_profile.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-workspace/workspace_create.pb.dart'; export 'package:flowy_sdk/protobuf/flowy-workspace/workspace_create.pb.dart'; export 'package:flowy_sdk/protobuf/flowy-user/errors.pb.dart'; export 'package:flowy_sdk/protobuf/flowy-user/user_profile.pb.dart'; abstract class IUser { UserProfile get user; Future> fetchUserProfile(String userId); Future, WorkspaceError>> fetchWorkspaces(); Future> deleteWorkspace(String workspaceId); Future> signOut(); } typedef UserProfileUpdateCallback = void Function( Either); typedef AuthChangedCallback = void Function(Either); typedef WorkspacesUpdatedCallback = void Function( Either, WorkspaceError> workspacesOrFailed); abstract class IUserWatch { void startWatching(); void setProfileCallback(UserProfileUpdateCallback profileCallback); void setAuthCallback(AuthChangedCallback authCallback); void setWorkspacesCallback(WorkspacesUpdatedCallback workspacesCallback); Future stopWatching(); }