import { AuthorizationStatus } from './common';
import { Permissions } from '.';
export declare class KlaviyoPush {
    private static _instance;
    private static _onToken;
    private static _onMessage;
    private static _onNonKlaviyoMessageListener;
    private static _onKlaviyoCustomDataMessage;
    private _APNSToken;
    private _APNSTokenString;
    onToken?: (token: string) => void;
    onMessage?: (message: any, nativeMessage: any) => void;
    onNonKlaviyoMessageListener?: (message: any) => void;
    onKlaviyoCustomDataMessage?: (data: Record<any, any>, message: any) => void;
    get showNotificationsWhenInForeground(): boolean;
    set showNotificationsWhenInForeground(value: boolean);
    _hasPermission(resolve: any, reject: any): void;
    hasPermission(): Promise<AuthorizationStatus>;
    private _getTokenQeueue;
    registerDeviceForRemoteMessages(): Promise<void>;
    requestPermission(permissions?: Permissions): Promise<AuthorizationStatus>;
    unregisterDeviceForRemoteMessages(): Promise<void>;
    get isDeviceRegisteredForRemoteMessages(): boolean;
    getCurrentToken(): Promise<string>;
    static getInstance(): KlaviyoPush;
}
export { AuthorizationStatus } from './common';
