import 'dart:async'; import 'package:flutter/material.dart'; import '../login_config.dart'; import '../model/login_confirmation_result.dart'; import '../model/login_user.dart'; abstract class LoginRepository { String loginError = ''; String getLoginError() => loginError; Future login(String username, String password); Future sendLoginEmail(String input); Future forgotPassword(String email); Future isRegistrationRequired(LoginUser user); Future reLogin({required VoidCallback onLoggedIn}); } abstract class LoginRespositoryWithAnonymous extends LoginRepository { Future signInAnonymous(); } abstract class LoginRespositoryWithPhoneNumber extends LoginRepository { Future trySignInWithPhoneNumber({ required String phoneNumber, void Function( String verificationId, int? resendToken, LoginConfirmationResult? resultWeb, )? onCodeSent, void Function(String errorCode)? onVerificationFailed, }); Future signInWithSMSCode( String verificationId, String smsCode, String phoneNumber, { LoginConfirmationResult? resultWeb, }); } abstract class LoginRepositoryWithSocial extends LoginRepository { Future signInWithSocial(SocialLoginBundle bundle); }