import type { ComponentType, ErrorInfo, ReactNode } from 'react'; import type { MMKV } from 'react-native-mmkv'; import type { SendbirdUser } from '@sendbird/uikit-utils'; export type LocalCacheStorage = AsyncLocalCacheStorage | MMKVLocalCacheStorage; export type KeyValuePairGet = [string, string | null]; export type KeyValuePairSet = [string, string]; export interface AsyncLocalCacheStorage { getAllKeys(): Promise; getItem(key: string): Promise; setItem(key: string, value: string): Promise; removeItem(key: string): Promise; multiSet?(keyValuePairs: Array): Promise; multiGet?(keys: string[]): Promise; multiRemove?(keys: string[]): Promise; } export type MMKVLocalCacheStorage = Pick & { // Support both v3.x (delete) and v4.x (remove) APIs for backward compatibility delete?: (key: string) => void; remove?: (key: string) => void; }; export type ErrorBoundaryProps = { error: Error; errorInfo: ErrorInfo; reset: () => void }; export type CommonComponent

= ComponentType

; export type MentionedUser = { range: Range; user: SendbirdUser; }; export type Range = { start: number; end: number; }; export enum TypingIndicatorType { Text = 'text', Bubble = 'bubble', }