import { Ref } from '@typegoose/typegoose'; import { Business, Restaurant } from '~backend/business/business.model'; import { DineroObject } from 'dinero.js'; import { Member, LevelUp, Membership } from '../membership/membership.interface'; import { FreeCreditOption, Voucher, VoucherClaim } from '../marketing.interface'; import { Types } from 'mongoose'; import { CreditTransaction } from '../credit/credit.interface'; export interface RewardBillItem { productId: string; count: number; userId: string | null; itemTotal: DineroObject; } /** @deprecated */ export interface CreateJoinRewardOption { member: Member.Member; membership: Membership; restaurant: Restaurant | null; } export interface CreateRewardsOption { billId: string; billTotal: DineroObject; userId: string | null; items: RewardBillItem[]; } export interface MemberRewardIssueResult { id: Ref; fromExp: number; toExp: number; levelUp: LevelUp[]; tier?: number; } export interface RewardIssue { user: string; member: MemberRewardIssueResult | null; claims: Ref[]; read: boolean; creditTransactions: Ref[]; } export interface Reward { id: string; business: Ref; restaurant: Ref | null; experience: number; vouchers: Ref[]; credits: FreeCreditOption[]; issued: RewardIssue | null; } export interface CreateRewardDto { business: Types.ObjectId; restaurant: Types.ObjectId | null; experience: number; vouchers: Types.ObjectId[]; issued: RewardIssue; credits: FreeCreditOption[]; }