Pular para o conteúdo principal

Módulo de Processamento de Recompensas

O Módulo de Processamento de Recompensas fornece funcionalidades para gerenciar recompensas do jogador, incluindo reivindicar recompensas, ativar boosters e recuperar informações sobre boosters e recompensas ativas no SDK da Web do Gamanza Engage.

Acessando o Módulo

O RewardsProcessorModule é inicializado internamente pelo SDK e não deve ser instanciado diretamente. Ele é acessível através da instância principal do SDK.

// Exemplo de acesso ao RewardsProcessorModule através do SDK
const { RewardsProcessor } = GamanzaEngageWebClientSDK.getInstance();

Métodos

playerClaimRewardsByGroupId

Envia uma solicitação para reivindicar recompensas do jogador pelo ID do grupo de recompensas.

Assinatura:

playerClaimRewardsByGroupId(groupId: string): Promise<SimpleResponse<ClaimableRewardsType[]>>

Parâmetros:

NomeTipoDescrição
groupIdTipo stringO identificador exclusivo do grupo de recompensas a ser reivindicado

Retorna:

TipoDescrição
Promise<SimpleResponse<ClaimableRewardsType[]>>Uma promessa que é resolvida em uma resposta simples contendo um array de recompensas reivindicadas ou um erro

Exemplo:

// Reivindicar recompensas pelo ID do grupo
const groupId = "group-123";
const response = await sdk.RewardsProcessor.playerClaimRewardsByGroupId(groupId);

if (response.ok) {
console.log('Recompensas reivindicadas com sucesso:', response.data);
} else {
console.error('Falha ao reivindicar recompensas:', response.error);
}

playerClaimMissionRewards

Envia uma solicitação para reivindicar recompensas de missão para o jogador autenticado atual.

Reivindica uma recompensa originada de uma missão concluída.

⚠️ Este método faz parte do módulo RewardsProcessor, não do módulo Missions.

Os parâmetros necessários (bundleStateId e missionStateId) devem ser extraídos dos metadados das recompensas onde a fonte === "missions" retornada por getPlayerRewards().

Assinatura:

playerClaimMissionRewards(playerBundleStateId: string, missionStateId: string): Promise<SimpleResponse<ClaimableRewardsType[]>>

Parâmetros:

NomeTipoDescrição
playerBundleStateIdTipo stringO identificador exclusivo do estado do pacote do jogador
missionStateIdTipo stringO identificador exclusivo do estado da missão

Retorna:

TipoDescrição
Promise<SimpleResponse<ClaimableRewardsType[]>>Uma promessa que é resolvida em uma resposta simples contendo uma matriz de recompensas reivindicadas ou um erro

Exemplo:

// Reivindicar recompensas da missão
const playerBundleStateId = "bundle-state-123";
const missionStateId = "mission-state-456";

const response = await sdk.RewardsProcessor.playerClaimMissionRewards(
playerBundleStateId,
missionStateId
);

if (response.ok) {
console.log('Recompensas da missão reivindicadas com sucesso:', response.data);
} else {
console.error('Falha ao reivindicar recompensas da missão:', response.error);
}

playerActivateBooster

Ativa um booster concedido ao jogador autenticado atual.

Assinatura:

playerActivateBooster(rewardId: string, payload: ActivateBoosterRequest): Promise<SimpleResponse<PlayerRewardActive>>

Parâmetros:

NomeTipoDescrição
rewardIdTipo stringO identificador exclusivo da recompensa a ser ativada
payloadActivateBoosterRequestInformações adicionais necessárias para ativar o booster com base no tipo

Retorna:

TipoDescrição
Promise<SimpleResponse<PlayerRewardActive>>Uma promessa que é resolvida em uma resposta simples contendo a recompensa ativada ou um erro

Exemplo:

// Ativar um booster de nível
const rewardId = "reward-123";
const payload = {
boosterType: "level",
levelId: "level-456"
};

const response = await sdk.RewardsProcessor.playerActivateBooster(rewardId, payload);

if (response.ok) {
console.log('Booster ativado com sucesso:', response.data);
} else {
console.error('Falha ao ativar o booster:', response.error);
}

// Ativar um booster de missão
const missionBoosterPayload = {
boosterType: "mission",
missionId: "mission-789"
};

const missionResponse = await sdk.RewardsProcessor.playerActivateBooster(
"reward-456",
missionBoosterPayload
);

getPlayerActiveLevelBooster

Retorna a lista de boosters de nível ativos para o jogador autenticado atual.

Assinatura:

getPlayerActiveLevelBooster(): Promise<PlayerLevelBooster[]>

Retorna:

TipoDescrição
Promise<PlayerLevelBooster[]>Uma promessa que é resolvida em uma matriz de boosters de nível ativos

Exemplo:

// Obter boosters de nível ativos
const levelBoosters = await sdk.RewardsProcessor.getPlayerActiveLevelBooster();

console.log(`Encontrados ${levelBoosters.length} boosters de nível ativos`);
levelBoosters.forEach(booster => {
console.log(`ID do booster: ${booster.id}`);
console.log(`Taxa do booster: ${booster.boosterRate}`);
console.log(`Ativo de ${booster.timeStart} a ${booster.timeEnd}`);
});

getPlayerActiveMissionBoosters

Retorna a lista de boosters de missão ativos para o jogador autenticado atual.

Assinatura:

getPlayerActiveMissionBoosters(): Promise<PlayerMissionsBooster[]>

Retorna:

TipoDescrição
Promise<PlayerMissionsBooster[]>Uma promessa que é resolvida em um array de boosters de missão ativos

Exemplo:

// Obter boosters de missão ativos
const missionBoosters = await sdk.RewardsProcessor.getPlayerActiveMissionBoosters();

console.log(`Encontrados ${missionBoosters.length} boosters de missão ativos`);
missionBoosters.forEach(booster => {
console.log(`ID do Booster: ${booster._id}`);
console.log(`Taxa do Booster: ${booster.boosterRate}`);
console.log(`Ativo de ${booster.timeStart} a ${booster.timeEnd}`);
});

getPlayerActiveTokenBoosters

Retorna a lista de boosters de token ativos para o jogador autenticado atual.

Assinatura:

getPlayerActiveTokenBoosters(): Promise<PlayerTokensBooster[]>

Retorna:

TipoDescrição
Promise<PlayerTokensBooster[]>Uma promessa que é resolvida em um array de boosters de token ativos

Exemplo:

// Obter boosters de token ativos
const tokenBoosters = await sdk.RewardsProcessor.getPlayerActiveTokenBoosters();

console.log(`Encontrados ${tokenBoosters.length} boosters de token ativos`);
tokenBoosters.forEach(booster => {
console.log(`ID do Booster: ${booster._id}`);
console.log(`Taxa do Booster: ${booster.boosterRate}`);
console.log(`Ativo de ${booster.timeStart} a ${booster.timeEnd}`);
});

getPlayerAllActiveBoostersByType

Retorna a lista de todos os boosters ativos por tipo para o jogador autenticado atual.

Assinatura:

getPlayerAllActiveBoostersByType(): Promise<ActiveRewardsByType>

Retorna:

TipoDescrição
Promise<ActiveRewardsByType>Uma promessa que é resolvida em um objeto contendo arrays de diferentes tipos de boosters ativos

Exemplo:

// Obter todos os boosters ativos por tipo
const allBoosters = await sdk.RewardsProcessor.getPlayerAllActiveBoostersByType();

console.log(`Boosters de Nível: ${allBoosters.levelBoosters.length}`);
console.log(`Boosters de Missão: ${allBoosters.missionBoosters.length}`);
console.log(`Boosters de Token: ${allBoosters.tokenBoosters.length}`);

// Acessar tipos de booster específicos
if (allBoosters.levelBoosters.length > 0) {
const firstLevelBooster = allBoosters.levelBoosters[0];
console.log(`Taxa do Primeiro Booster de Nível: ${firstLevelBooster.boosterRate}`);
}

getPlayerRewards

Retorna a lista de recompensas para o jogador autenticado atual. A resposta pode ser modificada com base nos argumentos de filtro da solicitação.

Assinatura:

getPlayerRewards(request: ListRewardsRequest): Promise<PaginationResponse<PlayerRewardActive[]>>

Parâmetros:

NomeTipoDescrição
requestListRewardsRequestObjeto contendo parâmetros de filtro para a lista de recompensas

Retorna:

TipoDescrição
Promise<PaginationResponse<PlayerRewardActive[]>>Uma promessa que é resolvida em uma resposta paginada contendo um array de recompensas do jogador

Exemplo:

// Obter recompensas do jogador com filtros
const request = {
limit: 10,
page: 1,
status: ["ativo", "concedido"],
rewardType: ["tokens", "level_booster"]
};

const response = await sdk.RewardsProcessor.getPlayerRewards(request);

console.log(`Total de recompensas: ${response.totalDocs}`);
console.log(`Página ${response.page} de ${response.totalPages}`);

response.docs.forEach(reward => {
console.log(`ID da recompensa: ${reward.id}`);
console.log(`Status: ${reward.status}`);
console.log(`Ativação: ${reward.activation}`);
});

// Obter próxima página
if (response.hasNextPage) {
const nextPageRequest = {
...request,
page: response.nextPage
};
const nextPageResponse = await sdk.RewardsProcessor.getPlayerRewards(nextPageRequest);
}

playerRequestDeclineReward

Permite que o jogador autenticado recuse uma recompensa específica pelo seu ID.

Importante:

  • Esta opção só terá efeito se a sua instância estiver configurada para permitir que as recompensas sejam ativadas pelo jogador. Se essa configuração estiver desligada, as recompensas são atribuídas automaticamente e esta opção não se aplica. Para ativar recompensas recusadas pelos jogadores, entre em contato com o seu Gerente de Sucesso do Cliente.

Efeitos colaterais:

  • Em caso de sucesso, o SDK limpa os caches de recompensas para que as leituras subsequentes reflitam o estado atualizado.

Assinatura:

playerRequestDeclineReward(rewardId: string): Promise<SimpleResponse<ClaimableRewardsType>>

Parâmetros:

NomeTipoDescrição
rewardIdTipo stringO identificador exclusivo da recompensa a ser recusada

Retorna:

TipoDescrição
Promise<SimpleResponse<ClaimableRewardsType>>Resolve { ok: true, data: ClaimableRewardsType } em caso de sucesso; caso contrário { ok: false, data: null, error }

Exemplo:

// Recusar uma recompensa específica pelo seu ID
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});

if (!rewards.docs.length) throw new Error('Nenhuma recompensa disponível para recusar');

const rewardToDecline = rewards.docs[0];
const declineResponse = await sdk.RewardsProcessor.playerRequestDeclineReward(rewardToDecline.id);

if (declineResponse.ok) {
console.log('Recompensa recusada:', declineResponse.data);
} else {
console.error('Falha ao recusar recompensa:', declineResponse.error);
}

playerRequestDeclineMissionRewards

Permite que o jogador autenticado recuse as recompensas concedidas por um Pacote de Missão.

Importante:

  • Esta opção só terá efeito se a sua instância estiver configurada para permitir que as recompensas sejam ativadas pelo jogador. Se essa configuração estiver desligada, as recompensas são atribuídas automaticamente e esta opção não se aplica. Para ativar recompensas recusadas pelos jogadores, entre em contato com o seu Gerente de Sucesso do Cliente.

Efeitos colaterais:

  • Em caso de sucesso, o SDK limpa os caches de recompensas para que as leituras subsequentes reflitam o estado atualizado.

Os parâmetros necessários (bundleStateId e missionStateId) devem ser extraídos dos metadados das recompensas onde a origem === "missions" retornada por getPlayerRewards().

Assinatura:

playerRequestDeclineMissionRewards(bundleStateId: string, missionStateId: string): Promise<SimpleResponse<null>>

Parâmetros:

NomeTipoDescrição
bundleStateIdTipo stringO identificador do estado do pacote de jogador associado ao pacote de missão
missionStateIdTipo stringO identificador do estado da missão cujas recompensas devem ser recusadas

Retorna:

TipoDescrição
Promise<SimpleResponse<null>>Uma promessa que é resolvida em uma resposta simples indicando sucesso com data definida como null, ou um erro quando malsucedida

Exemplo:

// Recusar recompensas originárias de um pacote de missão
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});

// Encontre uma recompensa que tenha se originado de missões
const missionReward = rewards.docs.find(r => r.source === 'missions');
if (!missionReward || !missionReward.metadata) throw new Error('Nenhuma recompensa de missão encontrada');

const response = await sdk.RewardsProcessor.playerRequestDeclineMissionRewards(
missionReward.metadata.bundleStateId,
missionReward.metadata.missionStateId,
);

if (response.ok) {
console.log('Recompensas de missão recusadas com sucesso');
} else {
console.error('Falha ao recusar recompensas de missão:', response.error);
}

playerRequestDeclineRewardByGroupId

Permite que o jogador autenticado decline várias recompensas concedidas especificando o ID do grupo de recompensas.

Importante:

  • Esta opção só terá efeito se sua instância estiver configurada para permitir que as recompensas sejam ativadas pelo jogador. Se essa configuração estiver desligada, as recompensas são atribuídas automaticamente e esta opção não se aplica. Para habilitar recompensas recusadas pelo jogador, entre em contato com seu Gerente de Sucesso do Cliente.

Efeitos colaterais:

  • No caso de sucesso, o SDK limpa os caches de recompensas para que as leituras subsequentes reflitam o estado atualizado.

Observações:

  • O groupId pode ser obtido de um item de recompensa via reward.group.groupId ao listar recompensas com getPlayerRewards().

Assinatura:

playerRequestDeclineRewardByGroupId(groupId: string): Promise<SimpleResponse<null>>

Parâmetros:

NomeTipoDescrição
groupIdTipo stringO identificador único do grupo de recompensas cujas recompensas devem ser recusadas

Retorna:

TipoDescrição
Promise<SimpleResponse<null>>Uma promessa que é resolvida em uma resposta simples indicando sucesso com data definida como null, ou um erro quando malsucedida

Exemplo:

// Recusar todas as recompensas por um ID de grupo específico
const rewards = await sdk.RewardsProcessor.getPlayerRewards({
status: 'unclaimed',
page: 1,
limit: 10,
});

if (!rewards.docs.length) throw new Error('Nenhuma recompensa disponível para recusar');

// Localizar uma recompensa com um identificador de grupo
const rewardWithGroup = rewards.docs.find(r => r.group && r.group.groupId);
if (!rewardWithGroup) throw new Error('Nenhuma recompensa agrupada encontrada');

const declineByGroupResponse = await sdk.RewardsProcessor.playerRequestDeclineRewardByGroupId(
rewardWithGroup.group.groupId
);

if (declineByGroupResponse.ok) {
console.log('As recompensas do grupo foram recusadas com sucesso');
} else {
console.error('Falha ao recusar recompensas por ID de grupo:', declineByGroupResponse.error);
}

Interfaces Relacionadas

ActivateBoosterRequest

Interface para ativar um impulsionador.

interface ActivateBoosterRequest {
boosterType: BoosterType;
levelId?: string;
missionId?: string;
}
PropriedadeTipoObrigatórioDescrição
boosterTypeBoosterTypeSimO tipo de impulsionador a ser ativado (nível, missão ou tokens)
levelIdTipo stringNãoO ID do nível (obrigatório quando boosterType é "level")
missionIdTipo stringNãoO ID da missão (obrigatório quando boosterType é "mission")

BoosterType

Enum para tipos de impulsionadores.

enum BoosterType {
LEVEL = 'level',
MISSION = 'mission',
TOKENS = 'tokens',
}
ValorDescrição
NÍVELTipo de impulsionador de nível
MISSÃOTipo de impulsionador de missão
TOKENSTipo de impulsionador de tokens

PlayerRewardActive

Interface para recompensas ativas do jogador.

interface PlayerRewardActive {
id: string;
status: RewardStatusEnum | ExternalRewardStatus;
playerId: string;
activation: ActivationType;
playerCategoryId: string;
earnedReward: Record<string, any>;
metadata?: Record<string, any>;
trigger?: string;
expirationDate?: Date;
countdown?: ActiveCountdownBoosterType;
group?: RewardGroup;
source?: string;
}
PropriedadeTipoObrigatórioDescrição
idTipo stringSimIdentificador exclusivo da recompensa
statusRewardStatusEnum | ExternalRewardStatusSimSituação atual da recompensa
playerIdTipo stringSimIdentificador do jogador que possui a recompensa
activationActivationTypeSimComo a recompensa é ativada (automática ou pelo jogador)
playerCategoryIdTipo stringSimIdentificador de categoria do jogador
earnedRewardRecord<string, any>SimDetalhes da recompensa obtida
metadataRecord<string, any>NãoMetadados adicionais para a recompensa
triggerTipo stringNãoO que desencadeou a recompensa
expirationDateDateNãoQuando a recompensa expira
countdownActiveCountdownBoosterTypeNãoContagem regressiva até a expiração
groupRewardGroupNãoInformações do grupo da recompensa
sourceTipo stringNãoA origem da recompensa, por exemplo, CRM, Missões, etc

PlayerLevelBooster

Interface para boosters de nível de jogador.

interface PlayerLevelBooster {
id: string;
playerId: string;
rewardId: string;
boosterRate: number;
timeStart: Date;
timeEnd: Date;
status: RewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVE;
metadata?: Record<string, any>;
}
PropriedadeTipoObrigatórioDescrição
idTipo stringSimIdentificador único para o booster de nível
playerIdTipo stringSimIdentificador do jogador que possui o booster
rewardIdTipo stringSimIdentificador da recompensa associada
boosterRateTipo numberSimTaxa na qual o booster é aplicado
timeStartDateSimQuando o booster começa
timeEndDateSimQuando o booster termina
statusRewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVESimStatus atual do booster
metadataRecord<string, any>NãoMetadados adicionais para o booster

PlayerMissionsBooster

Interface para boosters de missões do jogador.

interface PlayerMissionsBooster extends Omit<PlayerLevelBooster, 'id'> {
_id: string;
}
PropriedadeTipoObrigatórioDescrição
_idTipo stringSimIdentificador exclusivo para o impulsionador de missão
playerIdTipo stringSimIdentificador do jogador que possui o impulsionador
rewardIdTipo stringSimIdentificador da recompensa associada
boosterRateTipo numberSimTaxa na qual o impulsionador é aplicado
timeStartDateSimQuando o impulsionador começa
timeEndDateSimQuando o impulsionador termina
statusRewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVESimStatus atual do impulsionador
metadataRecord<string, any>NãoMetadados adicionais para o impulsionador

PlayerTokensBooster

Interface para impulsionadores de tokens de jogador.

interface PlayerTokensBooster extends Omit<PlayerLevelBooster, 'id'> {
_id: string;
}
PropriedadeTipoObrigatórioDescrição
_idstringSimIdentificador exclusivo para o impulsionador de token
playerIdstringSimIdentificador do jogador que possui o impulsionador
rewardIdstringSimIdentificador da recompensa associada
boosterRatenumberSimTaxa na qual o booster é aplicado
timeStartDateSimQuando o booster começa
timeEndDateSimQuando o booster termina
statusRewardStatusEnum.ACTIVE | RewardStatusEnum.INACTIVESimStatus atual do booster
metadataRecord<string, any>NãoMetadados adicionais para o booster

ActiveRewardsByType

Interface para recompensas ativas agrupadas por tipo.

interface ActiveRewardsByType {
levelBoosters: PlayerLevelBooster[];
missionBoosters: PlayerMissionsBooster[];
tokenBoosters: PlayerTokensBooster[];
}
PropriedadeTipoObrigatórioDescrição
levelBoostersPlayerLevelBooster[]SimArray de boosters de nível ativos
missionBoostersPlayerMissionsBooster[]SimArray de boosters de missão ativos
tokenBoostersPlayerTokensBooster[]SimArray de boosters de token ativos

ListRewardsRequest

Interface para filtrar recompensas do jogador.

interface ListRewardsRequest extends Omit<PaginationRequest, 'order'> {
playerId?: string;
status?: RewardStatusEnum[] | RewardStatusEnum;
activation?: ActivationType;
source?: string;
rewardType?: RewardTypeEnum[] | RewardTypeEnum;
startDate?: Date;
endDate?: Date;
}
PropriedadeTipoObrigatórioDescrição
playerIdTipo stringNãoFiltrar por ID do jogador
statusRewardStatusEnum[]RewardStatusEnum`NãoFiltrar por status da recompensa (aceita um único valor ou uma matriz)
activationActivationTypeNãoFiltrar por tipo de ativação
sourceTipo stringNãoFiltrar por fonte
rewardTypeRewardTypeEnum[]RewardTypeEnum`NãoFiltrar por tipo de recompensa (aceita um único valor ou uma matriz)
startDateDateNãoFiltrar por data de início
endDateDateNãoFiltrar por data de término
limitTipo numberNãoNúmero de itens por página (da PaginationRequest)
pageTipo numberNãoNúmero da página (da PaginationRequest)

ClaimableRewardsType

Interface para recompensas que podem ser reivindicadas.

type ClaimableRewardsType = {
id: string;
playerId: string;
status: ClaimableRewardStatusEnum;
activation: 'automatic' | 'by_player';
playerCategoryId: string;
earnedReward: unknown;
metadata: Record<string, unknown>;
trigger?: string;
expirationDate: string;
countdown: string;
};
PropriedadeTipoObrigatórioDescrição
idTipo stringSimIdentificador exclusivo da recompensa
playerIdTipo stringSimIdentificador do jogador que possui a recompensa
statusClaimableRewardStatusEnumSimStatus atual da recompensa
activation'automatic' | 'by_player'SimComo a recompensa é ativada
playerCategoryIdTipo stringSimIdentificador de categoria do jogador
earnedRewardunknownSimDetalhes da recompensa conquistada
metadataRecord<string, unknown>SimMetadados adicionais para a recompensa
triggerTipo stringNãoO que ativou a recompensa
expirationDateTipo stringSimQuando a recompensa expira (formato ISO 8601)
countdownTipo stringSimTempo restante até a expiração (ex.: "9d 17h 27m")

RewardStatusEnum

Enum para status de recompensa.

enum RewardStatusEnum {
ACTIVE = 'active',
INACTIVE = 'inactive',
GRANTED = 'granted',
PENDING = 'pending',
IN_PROGRESS = 'in_progress',
COMPLETED = 'completed',
FAILED = 'failed',
CLAIMED = 'claimed',
UNCLAIMED = 'unclaimed',
DELETED = 'deleted',
EXPIRED = 'expired',
BOUNCED = 'bounced',
DECLINED = 'declined',
}
ValorDescrição
ACTIVERecompensa está ativa
INATIVORecompensa está inativa
CONCEDIDORecompensa foi concedida
PENDENTERecompensa está pendente
EM_ANDAMENTORecompensa está em andamento
CONCLUÍDORecompensa está concluída
FALHOURecompensa falhou
REIVINDICADORecompensa foi reivindicada
NÃO_REIVINDICADORecompensa não foi reivindicada
EXCLUÍDARecompensa foi excluída
EXPIRADARecompensa expirou
DEVOLVIDAEntrega da recompensa devolvida (não pôde ser entregue)
RECUSADARecompensa foi recusada pelo jogador ou sistema

RewardTypeEnum

export enum RewardTypeEnum {
TOKENS = 'tokens',
XP = 'xp',
BONUS_OFFER = 'bonus_offer',
LEVEL_BOOSTER = 'level_booster',
MISSION_BOOSTER = 'mission_booster',
TOKEN_BOOSTER = 'token_booster',
EXTERNAL = 'external',
CASH = 'cash',
MINI_GAME = 'mini_game',
}

Recompensa (união discriminada)

interface RewardTranslation {
language: string;
description: string;
}

interface BaseReward {
type: RewardTypeEnum;
rewardType: RewardTypeEnum;
translations?: RewardTranslation[];
level: number;
activation: string; // @TODO: define this
boosterRate: number;
expirationValidityTime?: {
timeType: string; // @TODO: define this
};
timeFrame: ISO8601Duration;
termsAndConditions?: Pick<TranslationType, 'language' | 'description'>[];
}

interface TokensReward extends Pick<BaseReward, 'type' | 'termsAndConditions' | 'translations'> {
type: RewardTypeEnum.TOKENS;
amount: number;
}

interface BonusOfferReward extends Pick<BaseReward, 'type'> {
type: RewardTypeEnum.BONUS_OFFER;
bonusId: string;
bonusByCurrency: {
[key: string]: {
name: string;
bonusOfferId: string;
};
};
}

interface LevelBoosterReward extends BaseReward {
type: RewardTypeEnum.LEVEL_BOOSTER;
}

interface MissionBoosterReward extends BaseReward {
type: RewardTypeEnum.MISSION_BOOSTER;
}

interface TokenBoosterReward extends BaseReward {
type: RewardTypeEnum.TOKEN_BOOSTER;
}

interface ExternalReward extends Pick<BaseReward, 'type'> {
type: RewardTypeEnum.EXTERNAL;
imageUrl: string;
description: string;
}

export type Reward = BaseReward & (
| TokensReward
| BonusOfferReward
| LevelBoosterReward
| MissionBoosterReward
| TokenBoosterReward
| ExternalReward
);

ClaimableRewardStatusEnum

export enum ClaimableRewardStatusEnum {
CLAIMED = 'claimed',
UNCLAIMED = 'unclaimed',
GRANTED = 'granted',
PENDING = 'pending',
IN_PROGRESS = 'in_progress',
COMPLETED = 'completed',
FAILED = 'failed',
DELETED = 'deleted',
EXPIRED = 'expired',
DECLINED = 'declined',
}

PaginationResponse

Interface genérica para respostas paginadas.

interface PaginationResponse<T> {
docs: T;
totalDocs: number;
limit: number;
totalPages: number;
page: number;
pagingCounter: number;
hasPrevPage: boolean;
hasNextPage: boolean;
prevPage: number | null;
nextPage: number | null;
}
PropriedadeTipoObrigatórioDescrição
docsTSimMatriz de itens para a página atual
totalDocsTipo numberSimNúmero total de itens em todas as páginas
limitTipo numberSimNúmero de itens por página
totalPagesTipo numberSimNúmero total de páginas
pageTipo numberSimNúmero da página atual
pagingCounterTipo numberSimO índice inicial da página atual
hasPrevPageTipo booleanSimSe existe uma página anterior
hasNextPageTipo booleanSimSe existe uma próxima página
prevPagenumber | nullSimNúmero da página anterior ou nulo se não houver
nextPagenumber | nullSimNúmero da próxima página ou nulo se não houver

SimpleResponse

Interface genérica para respostas simples.

interface SimpleResponse<T> {
ok: boolean;
data: T | null;
error?: {
code: string;
message: string;
};
}
PropriedadeTipoObrigatórioDescrição
okTipo booleanSimSe a operação foi bem-sucedida
dataT | nullSimDados de resposta ou nulo se a operação falhar
erro{ code: string; message: string; }NãoInformações de erro se a operação falhar