import { Rewards, StandardResponse, ICoinDetailsData, IGameLeaderboardData } from '@jolibox/types'; import { BaseSDK } from './sdk'; export class RewardsSDK extends BaseSDK implements Rewards { constructor() { super(); } /** * @private * 获取用户金币详细信息,包括金币余额、现金余额、宝石余额和订阅用户信息. 内部方法,供小程序调用 * @see {@link getCoinDetails} for more details. * @returns Promise> - 包含用户余额和订阅信息的响应 */ async getCoinDetails({ onUpdate }: { onUpdate?: (data: ICoinDetailsData) => void | Promise; }): Promise> { const canIUseResult = this.canIUseIfThrow('rewards.getCoinDetails'); if (canIUseResult?.code === 'FAILURE') { return canIUseResult as StandardResponse; } const result = (await this.commands.executeCommand( 'RewardsSDK.getCoinDetails', onUpdate )) as StandardResponse; return result; } /** * @private * 获取游戏排行榜数据. 内部方法,供小程序调用 * @returns Promise> - 包含排行榜数据的响应 */ async getLeaderBoardData(params: { gameId: string; onUpdate?: (data: IGameLeaderboardData) => void | Promise; }): Promise> { const canIUseResult = this.canIUseIfThrow('rewards.getLeaderBoardData'); if (canIUseResult?.code === 'FAILURE') { return canIUseResult as StandardResponse; } return (await this.commands.executeCommand( 'RewardsSDK.getLeaderBoardData', params )) as StandardResponse; } /** * prvate function */ createRewardsAdsManager() { const canIUseResult = this.canIUseIfThrow('rewards.createRewardsAdsManager'); if (canIUseResult?.code === 'FAILURE') { return canIUseResult as StandardResponse; } return this.commands.executeCommand('Rewards.createRewardsAdsManager'); } }