import "package:flutter_secure_storage/flutter_secure_storage.dart"; // small key/value seam so the token storage backend is swappable. the default // is flutter_secure_storage which covers mobile + desktop properly and falls // back to a best-effort impl on web. anyone embedding the SDK can hand us their // own (e.g. an in-memory one for tests, or shared_prefs if they dont care). abstract class TokenStore { Future read(String key); Future write(String key, String value); Future delete(String key); } class SecureTokenStore implements TokenStore { SecureTokenStore({FlutterSecureStorage? storage}) : _storage = storage ?? const FlutterSecureStorage(); final FlutterSecureStorage _storage; @override Future read(String key) => _storage.read(key: key); @override Future write(String key, String value) => _storage.write(key: key, value: value); @override Future delete(String key) => _storage.delete(key: key); } // handy for tests, or platforms where you explicitly dont want persistence. class MemoryTokenStore implements TokenStore { final Map _m = {}; @override Future read(String key) async => _m[key]; @override Future write(String key, String value) async => _m[key] = value; @override Future delete(String key) async => _m.remove(key); }