import 'package:dartz/dartz.dart'; import 'package:flowy_sdk/protobuf/flowy-user/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-user/user_detail.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_detail.pb.dart'; export 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart'; typedef UserCreateWorkspaceCallback = void Function( Either, WorkspaceError> workspacesOrFailed); typedef UserDeleteWorkspaceCallback = void Function( Either, WorkspaceError> workspacesOrFailed); abstract class IUser { UserDetail get user; Future> fetchUserDetail(String userId); Future, WorkspaceError>> fetchWorkspaces(); Future> deleteWorkspace(String workspaceId); Future> signOut(); } abstract class IUserWatch { void startWatching( {UserCreateWorkspaceCallback? createWorkspaceCallback, UserDeleteWorkspaceCallback? deleteWorkspaceCallback}); Future stopWatching(); }