import 'package:dartz/dartz.dart'; import 'package:flowy_infra/notifier.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-user-data-model/protobuf.dart' show UserProfile; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/workspace.pb.dart'; export 'package:flowy_sdk/protobuf/flowy-user-data-model/protobuf.dart' show UserProfile; abstract class IUser { UserProfile get user; Future> fetchUserProfile(String userId); Future, FlowyError>> fetchWorkspaces(); Future> deleteWorkspace(String workspaceId); Future> signOut(); Future> initUser(); } typedef UserProfileUpdatedNotifierValue = Either; typedef AuthNotifierValue = Either; typedef WorkspaceUpdatedNotifierValue = Either, FlowyError>; abstract class IUserListener { void start(); PublishNotifier get profileUpdatedNotifier; PublishNotifier get authDidChangedNotifier; PublishNotifier get workspaceUpdatedNotifier; Future stop(); }