UNPKG

@elemental-design/expo-notifications

Version:
236 lines (235 loc) 6.51 kB
import { CalendarTriggerInput as NativeCalendarTriggerInput } from './NotificationScheduler.types'; export interface PushNotificationTrigger { type: 'push'; remoteMessage?: FirebaseRemoteMessage; } export interface CalendarNotificationTrigger { type: 'calendar'; repeats: boolean; dateComponents: { era?: number; year?: number; month?: number; day?: number; hour?: number; minute?: number; second?: number; weekday?: number; weekdayOrdinal?: number; quarter?: number; weekOfMonth?: number; weekOfYear?: number; yearForWeekOfYear?: number; nanosecond?: number; isLeapMonth: boolean; timeZone?: string; calendar?: string; }; } interface Region { type: string; identifier: string; notifyOnEntry: boolean; notifyOnExit: boolean; } export interface CircularRegion extends Region { type: 'circular'; radius: number; center: { latitude: number; longitude: number; }; } export interface BeaconRegion extends Region { type: 'beacon'; notifyEntryStateOnDisplay: boolean; major: number | null; minor: number | null; uuid?: string; beaconIdentityConstraint?: { uuid: string; major: number | null; minor: number | null; }; } export interface LocationNotificationTrigger { type: 'location'; repeats: boolean; region: CircularRegion | BeaconRegion; } export interface TimeIntervalNotificationTrigger { type: 'timeInterval'; repeats: boolean; seconds: number; } export interface DailyNotificationTrigger { type: 'daily'; hour: number; minute: number; } export interface FirebaseRemoteMessage { collapseKey: string | null; data: { [key: string]: string; }; from: string | null; messageId: string | null; messageType: string | null; originalPriority: number; priority: number; sentTime: number; to: string | null; ttl: number; notification: null | { body: string | null; bodyLocalizationArgs: string[] | null; bodyLocalizationKey: string | null; channelId: string | null; clickAction: string | null; color: string | null; usesDefaultLightSettings: boolean; usesDefaultSound: boolean; usesDefaultVibrateSettings: boolean; eventTime: number | null; icon: string | null; imageUrl: string | null; lightSettings: number[] | null; link: string | null; localOnly: boolean; notificationCount: number | null; notificationPriority: number | null; sound: string | null; sticky: boolean; tag: string | null; ticker: string | null; title: string | null; titleLocalizationArgs: string[] | null; titleLocalizationKey: string | null; vibrateTimings: number[] | null; visibility: number | null; }; } export interface UnknownNotificationTrigger { type: 'unknown'; } export declare type NotificationTrigger = PushNotificationTrigger | CalendarNotificationTrigger | LocationNotificationTrigger | TimeIntervalNotificationTrigger | DailyNotificationTrigger | UnknownNotificationTrigger; export declare type CalendarTriggerInput = NativeCalendarTriggerInput['value'] & { repeats?: boolean; }; export interface TimeIntervalTriggerInput { repeats?: boolean; seconds: number; } export interface DailyTriggerInput { hour: number; minute: number; repeats: true; } export declare type DateTriggerInput = Date | number; export declare type NotificationTriggerInput = null | DateTriggerInput | TimeIntervalTriggerInput | DailyTriggerInput | CalendarTriggerInput; export declare enum AndroidNotificationPriority { MIN = "min", LOW = "low", DEFAULT = "default", HIGH = "high", MAX = "max" } export declare type NotificationContent = { title: string | null; subtitle: string | null; body: string | null; data: { [key: string]: unknown; }; sound: 'default' | 'defaultCritical' | 'custom' | null; } & ({ launchImageName: string | null; badge: number | null; attachments: { identifier: string | null; url: string | null; type: string | null; }[]; summaryArgument?: string | null; summaryArgumentCount?: number; categoryIdentifier: string | null; threadIdentifier: string | null; targetContentIdentifier?: string; } | { badge?: number; /** * Format: '#AARRGGBB' */ color?: string; priority?: AndroidNotificationPriority; vibrationPattern?: number[]; }); export interface NotificationRequest { identifier: string; content: NotificationContent; trigger: NotificationTrigger; } export interface NotificationContentInput { title?: string; subtitle?: string; body?: string; data?: { [key: string]: unknown; }; badge?: number; sound?: boolean | string; launchImageName?: string; vibrate?: number[]; priority?: string; /** * Format: '#AARRGGBB', '#RRGGBB' or one of the named colors, * see https://developer.android.com/reference/kotlin/android/graphics/Color?hl=en */ color?: string; autoDismiss?: boolean; attachments?: { url: string; identifier?: string; typeHint?: string; hideThumbnail?: boolean; thumbnailClipArea?: { x: number; y: number; width: number; height: number; }; thumbnailTime?: number; }[]; } export interface NotificationRequestInput { identifier?: string; content: NotificationContentInput; trigger: NotificationTriggerInput; } export interface Notification { date: number; request: NotificationRequest; } export interface NotificationResponse { notification: Notification; actionIdentifier: string; userText?: string; } export interface NotificationBehavior { shouldShowAlert: boolean; shouldPlaySound: boolean; shouldSetBadge: boolean; priority?: AndroidNotificationPriority; } export declare type ActionType = { actionId: string; buttonTitle: string; isDestructive?: boolean; isAuthenticationRequired?: boolean; doNotOpenInForeground?: boolean; textInput?: { submitButtonTitle: string; placeholder: string; }; }; export {};