/** Minimal surface of `@react-native-async-storage/async-storage`'s default export. */ export interface AsyncStorageLike { getItem(key: string): Promise; setItem(key: string, value: string): Promise; removeItem(key: string): Promise; } /** Minimal surface of `expo-file-system`'s legacy string-based file API. */ export interface FileSystemLike { documentDirectory: string | null; writeAsStringAsync(fileUri: string, contents: string, options?: { encoding?: 'utf8' | 'base64'; }): Promise; } /** Minimal surface of `expo-sharing`. */ export interface SharingLike { shareAsync(uri: string): Promise; } /** The URL that ends an OAuth session: one for every provider, or one per provider name. */ export type OAuthRedirectUrl = string | { [provider: string]: string; }; /** Minimal surface of `expo-web-browser`'s `AuthSessionOpenOptions`. */ export interface AuthSessionOptionsLike { /** iOS 17.4+: end the session on the `https` redirect URL's host and path instead of its scheme. */ preferUniversalLinks?: boolean; } /** Minimal surface of `expo-web-browser`. */ export interface WebBrowserLike { openAuthSessionAsync(url: string, redirectUrl?: string | null, options?: AuthSessionOptionsLike): Promise<{ type: string; url?: string; }>; }