1import { NativeModulesProxy, ProxyNativeModule } from '@unimodules/core'; 2import { PermissionResponse } from 'unimodules-permissions-interface'; 3 4export enum IosAlertStyle { 5 NONE = 0, 6 BANNER = 1, 7 ALERT = 2, 8} 9 10export enum IosAllowsPreviews { 11 NEVER = 0, 12 ALWAYS = 1, 13 WHEN_AUTHENTICATED = 2, 14} 15 16export enum IosAuthorizationStatus { 17 NOT_DETERMINED = 0, 18 DENIED = 1, 19 AUTHORIZED = 2, 20 PROVISIONAL = 3, 21} 22 23export interface NotificationPermissionsStatus extends PermissionResponse { 24 android?: { 25 importance: number; 26 interruptionFilter?: number; 27 }; 28 ios?: { 29 status: IosAuthorizationStatus; 30 allowsDisplayInNotificationCenter: boolean | null; 31 allowsDisplayOnLockScreen: boolean | null; 32 allowsDisplayInCarPlay: boolean | null; 33 allowsAlert: boolean | null; 34 allowsBadge: boolean | null; 35 allowsSound: boolean | null; 36 allowsCriticalAlerts?: boolean | null; 37 alertStyle: IosAlertStyle; 38 allowsPreviews?: IosAllowsPreviews; 39 providesAppNotificationSettings?: boolean; 40 allowsAnnouncements?: boolean | null; 41 }; 42} 43 44export interface IosNotificationPermissionsRequest { 45 allowAlert?: boolean; 46 allowBadge?: boolean; 47 allowSound?: boolean; 48 allowDisplayInCarPlay?: boolean; 49 allowCriticalAlerts?: boolean; 50 provideAppNotificationSettings?: boolean; 51 allowProvisional?: boolean; 52 allowAnnouncements?: boolean; 53} 54 55export interface AndroidNotificationPermissionRequest {} 56 57export type NativeNotificationPermissionsRequest = 58 | IosNotificationPermissionsRequest 59 | AndroidNotificationPermissionRequest; 60 61export interface NotificationPermissionsModule extends ProxyNativeModule { 62 getPermissionsAsync: () => Promise<NotificationPermissionsStatus>; 63 requestPermissionsAsync: ( 64 request: NativeNotificationPermissionsRequest 65 ) => Promise<NotificationPermissionsStatus>; 66} 67 68export default (NativeModulesProxy.ExpoNotificationPermissionsModule as any) as NotificationPermissionsModule; 69