import { FirebaseApp } from '@nativescript/firebase-core';
import { IMessaging, RemoteMessage } from '.';
import { MessagingCore, AuthorizationStatus } from '@nativescript/firebase-messaging-core';
export { AuthorizationStatus };
export declare class Messaging implements IMessaging {
    _app: FirebaseApp;
    _onMessage?: (message: RemoteMessage) => void;
    _onToken?: (token: string) => void;
    _onNotificationTap?: (message: RemoteMessage) => void;
    _instance: MessagingCore;
    constructor();
    get showNotificationsWhenInForeground(): boolean;
    set showNotificationsWhenInForeground(value: boolean);
    getToken(): Promise<string>;
    getAPNSToken(): string;
    hasPermission(): Promise<AuthorizationStatus>;
    onMessage(listener: (message: RemoteMessage) => any): void;
    onToken(listener: (token: string) => any): void;
    onNotificationTap(listener: (message: RemoteMessage) => any): void;
    registerDeviceForRemoteMessages(): Promise<void>;
    requestPermission(permissions?: any): Promise<AuthorizationStatus>;
    subscribeToTopic(topic: string): Promise<void>;
    unregisterDeviceForRemoteMessages(): Promise<void>;
    unsubscribeFromTopic(topic: string): Promise<void>;
    deleteToken(): Promise<void>;
    get isDeviceRegisteredForRemoteMessages(): boolean;
    get autoInitEnabled(): boolean;
    set autoInitEnabled(value: boolean);
    get app(): FirebaseApp;
    get native(): FIRMessaging;
    get ios(): FIRMessaging;
}
