// one provides UIKit and Android capabilities outside React Navigation.
// adapted from expo-router (MIT license): https://github.com/expo/expo

export { Color } from './color'
export type { ColorType } from './color'

export { Fonts, useFonts } from './fonts'
export type { FontMap, FontSource, UseFontsResult } from './fonts'

export {
  ZoomTransitionSource,
  ZoomTransitionEnabler,
  ZoomTransitionAlignmentRectDetector,
} from './zoom'

export { ToolbarHost, ToolbarItem } from './toolbar'
export type { ToolbarHostProps, ToolbarItemProps } from './toolbar'

// './menu/index', not './menu': Menu.native.tsx (the SwiftUI Menu) shadows
// the menu/ directory for case-insensitive resolvers, which leaves
// MenuAction undefined at runtime.
export { MenuAction } from './menu/index'
export type { MenuActionProps } from './menu/index'

export { SplitView } from './split-view'
export type { SplitViewProps, SplitViewColumnProps } from './split-view'

// uniform device services surfaced top-level on One. each service documents
// its own methods and supported behavior for migration from expo modules.
export { Clipboard } from './clipboard'
export {
  Battery,
  useBatteryLevel,
  useBatteryState,
  useLowPowerMode,
  usePowerState,
} from './battery'
export { useAudioPlayer, useAudioPlayerStatus } from './audio/hooks'
export type {
  BatteryLevelEvent,
  BatteryPowerModeEvent,
  BatteryPowerState,
  BatteryState,
  BatteryStateEvent,
  BatterySubscription,
} from './battery'
export { Barometer } from './barometer'
export type { BarometerMeasurement, BarometerSubscription } from './barometer'
export { Pedometer } from './pedometer'
export type {
  PedometerPermissionResponse,
  PedometerPermissionStatus,
  PedometerResult,
  PedometerSubscription,
} from './pedometer'
export { LightSensor } from './light-sensor'
export type { LightSensorMeasurement, LightSensorSubscription } from './light-sensor'
export { Brightness } from './brightness'
export type {
  BrightnessEvent,
  BrightnessMode,
  BrightnessPermissionResponse,
  BrightnessPermissionStatus,
  BrightnessSubscription,
} from './brightness'
export { SpeechSynthesis } from './speech-synthesis'
export type {
  SpeechSynthesisEvent,
  SpeechSynthesisEventType,
  SpeechSynthesisOptions,
  SpeechSynthesisVoice,
  SpeechSynthesisVoiceQuality,
} from './speech-synthesis'
export { Browser } from './browser'
export type {
  BrowserAuthSessionOptions,
  BrowserAuthSessionResult,
  BrowserOpenOptions,
  BrowserPresentationStyle,
  BrowserRedirectResult,
  BrowserResult,
  BrowserResultType,
} from './browser'
export { Updates } from './updates'
export type {
  UpdateAsset,
  UpdateManifest,
  UpdateMetadataValue,
  UpdatesCheckResult,
  UpdatesFetchResult,
  UpdatesStagedSubscription,
} from './updates'
export { Network, useNetworkState } from './network'
export type {
  NetworkState,
  NetworkStateSubscription,
  NetworkStateType,
} from './network'
export { AESEncryptionKey, AESSealedData, Crypto } from './crypto'
export type {
  AESDecryptOptions,
  AESEncryptionKeyType,
  AESEncryptOptions,
  AESKeySize,
  AESSealedDataConfig,
  AESSealedDataType,
  BinaryInput,
  CryptoApi,
  DigestAlgorithm,
  DigestEncoding,
  DigestStringOptions,
  GCMNonceParam,
} from './crypto'
export { Localization, useCalendars, useLocales } from './localization'
export type { Calendar, Locale, LocalizationApi } from './localization'
export { SecureStore } from './secure-store'
export type { SecureStoreAccessibility, SecureStoreOptions } from './secure-store'
export { Auth } from './auth'
export type {
  AppleAuth,
  AppleAuthScope,
  AppleCredential,
  AppleCredentialState,
  AppleFullName,
  AppleRealUserStatus,
  AppleSignInOptions,
  AppleSignInResult,
} from './auth'
export { Speech } from './speech'
export type {
  SpeechErrorCode,
  SpeechEvent,
  SpeechEventType,
  SpeechPermissionResponse,
  SpeechPermissionStatus,
  SpeechSession,
  SpeechStartOptions,
} from './speech'
