package com.gh.gamecenter.core.provider

import android.content.Context

import io.reactivex.Single

interface IPushProvider {

    /**
     * 同意隐私政策前初始化推送功能
     * @param applicationContext 上下文
     */
    fun initialize(applicationContext: Context)

    /**
     * 同意隐私政策后注册推送功能
     * @param applicationContext 上下文
     * @return 回调结果
     */
    fun register(applicationContext: Context): Single<String>

    /**
     * 绑定账号
     * @param account 账号
     * @return 回调结果
     */
    fun bindAccount(account: String): Single<String>

    /**
     * 绑定别名
     * @param alias 别名
     * @return 回调结果
     */
    fun bindAlias(alias: String): Single<String>

    /**
     * 解绑别名
     * @param alias 别名
     * @return 回调结果
     */
    fun unbindAlias(alias: String): Single<String>

    /**
     * 绑定渠道
     * @param channel 渠道名
     * @return 回调结果
     */
    fun bindChannel(channel: String): Single<String>

    /**
     * 获取极光推送 Registration Id
     * @param context 上下文
     * @return 极光推送 Registration Id
     */
    fun getRegistrationId(context: Context): String

    /**
     * 清除桌面角标
     * @param applicationContext 上下文
     */
    fun cleanBadgeNumber(applicationContext: Context)

    /**
     * 设置推送打开回调
     * @param callback 回调
     */
    fun setOnPushOpenedCallback(callback: (String, String, String, String, String) -> Unit)
}