import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; export interface Spec extends TurboModule { getBrightness: () => Promise; setBrightness: (val: number) => Promise; setBrightnessForce: (val: number) => Promise; getAppBrightness: () => Promise; setAppBrightness: (val: number) => Promise; grantWriteSettingPremission: () => void; getScreenMode: () => Promise; setScreenMode: (val: number) => Promise; saveBrightness: () => Promise; restoreBrightness: () => number; getVolume: (type?: VolumeType) => Promise; setVolume: (value: number, config?: VolumeConfig | VolumeType) => void; addVolumeListener: () => void; removeVolumeListener: (listener?: EmitterSubscription) => void; isWifiEnabled: () => Promise; switchWifiSilence: (onComplete?: CompleteFunc) => void; switchWifi: (onComplete?: CompleteFunc) => void; isLocationEnabled: () => Promise; getLocationMode: () => Promise; switchLocation: (onComplete?: CompleteFunc) => void; isBluetoothEnabled: () => Promise; switchBluetooth: (onComplete?: CompleteFunc) => void; switchBluetoothSilence: (onComplete?: CompleteFunc) => void; isAirplaneEnabled: () => Promise; switchAirplane: (onComplete?: CompleteFunc) => void; openAppSystemSettings: () => void; addBluetoothListener: () => void; addWifiListener: ( callback: (wifiEnabled: boolean) => void ) => Promise; addLocationListener: ( callback: (locationEnabled: boolean) => void ) => Promise; addLocationModeListener: ( callback: (locationMode: number) => void ) => Promise; addAirplaneListener: ( callback: (airplaneModeEnabled: boolean) => void ) => Promise; removeListener: (type: string) => void; } type EmitterSubscription = { remove: unknown; type: 'bluetooth' | 'wifi' | 'location' | 'locationMode' | 'airplane' } type CompleteFunc = () => void type VolumeType = | "call" | "system" | "ring" | "music" | "alarm" | "notification"; type VolumeConfig = { type?: VolumeType; playSound?: boolean; showUI?: boolean; } type VolumeData = { value: number; call?: number; system?: number; ring?: number; music?: number; alarm?: number; notification?: number; } export default TurboModuleRegistry.get('ReactNativeSystemSetting') as Spec | null;