export interface IPushServiceSubscriptionKeys {
    pushToken?: string;
    publicKey?: string;
    authToken?: string;
    endpoint?: string;
}
export declare abstract class IPushService {
    /**
     * Get current status of permission for send notifications.
     *
     * @return { NotificationPermission }
     */
    abstract getPermission(): NotificationPermission;
    /**
     * Check is permission granted.
     *
     * @return { boolean }
     */
    abstract checkIsPermissionGranted(): boolean;
    /**
     * Check is permission default.
     *
     * @return { boolean }
     */
    abstract checkIsPermissionDefault(): boolean;
    /**
     * Check is manual unsubscribed for push notifications.
     */
    abstract checkIsManualUnsubscribed(): Promise<boolean>;
    /**
     * Request permission for send notifications.
     *
     * @return { Promise<void> }
     */
    abstract askPermission(): Promise<void>;
    /**
     * Get subscription keys for send push notifications.
     *
     * @return { Promise<IPushServiceSubscriptionKeys> }
     */
    abstract getTokens(): Promise<IPushServiceSubscriptionKeys>;
    /**
     * Subscribe for push notifications.
     *
     * @return { Promise<void> }
     */
    abstract subscribe(): Promise<void>;
    /**
     * Unsubscribe for push notifications.
     *
     * @return { Promise<void> }
     */
    abstract unsubscribe(): Promise<void>;
    /**
     * Check can receive notifications from Pushwoosh.
     *
     * @return { Promise<boolean> }
     */
    abstract checkIsRegister(): Promise<boolean>;
    /**
     * Check is change sender configuration
     */
    abstract checkIsNeedResubscribe(): Promise<boolean>;
}
