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-infra/workspace_create.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-workspace/errors.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(); Future> initUser(); } typedef UserProfileUpdateCallback = void Function(Either); typedef AuthChangedCallback = void Function(Either); typedef WorkspacesUpdatedCallback = void Function(Either, WorkspaceError> workspacesOrFailed); abstract class IUserListener { void start(); void setProfileCallback(UserProfileUpdateCallback profileCallback); void setAuthCallback(AuthChangedCallback authCallback); void setWorkspacesCallback(WorkspacesUpdatedCallback workspacesCallback); Future stop(); }