import { Observable } from 'rxjs'; declare enum RewardType { SERVICE = "service", PRODUCT = "product" } declare enum RedeemMethods { WEB = "web", PARTNER = "partner" } interface IGetRewardsFromRedeemItemInput { id: string; } interface IGetRewardsFromRedeemItemOutput { id: string; name: string; score: number; stock: number; redeemTimes: number; redeemDelay: number; } export interface IDepleteRewardsStockItemInput { id: string; quantity: number; redeemId: string; } export interface IGetRewardsFromRedeemInput { programId: string; storeId: string; rewards: IGetRewardsFromRedeemItemInput[]; } export interface IGetRewardsFromRedeemOutput { rewards: IGetRewardsFromRedeemItemOutput[]; } export interface IDepleteRewardsStockInput { rewards: IDepleteRewardsStockItemInput[]; } export interface ICancelRewardStockDepletionInput { redeemId: string; } export interface IGetRewardsInput { take?: number; skip?: number; programId?: string; search?: string; status?: boolean; type?: RewardType; scoreUpTo?: number; categoryIds?: string[]; customerCategoryId?: string; retrieveAll?: boolean; storeId: string; } export interface IGetRewardsByProgramInput { take?: number; skip?: number; programId: string; search?: string; status?: boolean; type?: RewardType; scoreUpTo?: number; categoryIds?: string[]; customerCategoryId?: string; retrieveAll?: boolean; } export interface IGetRewardsOutput { data: IGetRewardsDataOutput[]; count: number; } export interface IGetRewardsDataOutput { id?: string; type: RewardType; name: string; description?: string; imageUrl?: string; requiredScore: number; redeemMethod: RedeemMethods; storeId: string; programId: string; stock?: number; rewardHash?: string; status?: boolean; customersCategory: IGetRewardsCustomerCategoryOutput[]; category: IGetRewardsCategoryOutput; partnerId: string; refRewardId?: string; } export interface IGetRewardsCustomerCategoryOutput { id: string; customerCategoryId: string; rewardsId: string; } export interface IGetRewardsCategoryOutput { id: string; name: string; icon: string; isDefault: boolean; status: boolean; redeemBy: string; storeId: string; programId: string; } export interface IRewardsService { getRewardsFromRedeem(input: IGetRewardsFromRedeemInput): Observable; depleteRewardsStock(input: IDepleteRewardsStockInput): Observable; cancelRewardStockDepletion(input: ICancelRewardStockDepletionInput): Observable; } export interface IRewardsController { getRewards(input: IGetRewardsInput): Observable; getRewardsByProgram(input: IGetRewardsByProgramInput): Observable; } export {};