import { Voucher, VoucherClaim, GetAvailableVoucherDto, AfterSalesClaimOpts } from '../marketing.model'; import { DocumentType, ReturnModelType } from '@typegoose/typegoose'; import { MemberClaim, CodeConfig } from '../marketing.interface'; import { Types } from 'mongoose'; import { Member } from '../membership/membership.interface'; import { MailService } from '~backend/mail/mail.service'; import mongodb from 'mongodb'; import { UserService } from '~backend/user/user.service'; import { Restaurant } from '~backend/business/business.model'; export declare class VoucherService { readonly voucherModel: ReturnModelType; readonly voucherClaimModel: ReturnModelType; private readonly restaurantModel; private readonly mailService; private readonly userService; private readonly logger; constructor(voucherModel: ReturnModelType, voucherClaimModel: ReturnModelType, restaurantModel: ReturnModelType, mailService: MailService, userService: UserService); static getExpiredAt(voucher: Voucher, date?: Date): Date; static getExpiredDateAggregateObject(voucher: Voucher): any; static getAfterSalesIssueQuantity(opts: AfterSalesClaimOpts): number; static validRententionVouchersForPos(vouchers: Voucher[], filter: GetAvailableVoucherDto): Voucher[]; all(): Promise; findById(id: string): Promise; findByIds(ids: Types.ObjectId[]): Promise; findByBusinessId(businessId: string): Promise; findSimpleClaimVouchers(): Promise[]>; findSimpleClaimVouchersByBusinessRestaurantId({ businessId, restaurantId, }: { businessId: string; restaurantId: string; }): Promise; findVoucherClaimsByVoucherId(id: string): Promise; findForPos(businessId: string, restaurantId: string): Promise; getFeedbackVouchers(businessId: string, restaurantId: string): Promise; findClaimForPos(uid: string, restaurantId: string, businessId: string): Promise; create(payload: Voucher): Promise; update(id: string, payload: Voucher, updateClaims?: boolean): Promise; delete(id: string): Promise; bulkCreateMemberClaims(members: Member.Member[], voucher: Voucher): Promise; revertClaim(id: string, session?: mongodb.ClientSession): Promise; createClaim(payload: { userId: string; voucher: Voucher; quantity?: number; date?: Date; codeConfig?: CodeConfig; code?: string; }, session?: mongodb.ClientSession): Promise; transferClaim(userId: string, voucherClaim: VoucherClaim, date?: Date, session?: mongodb.ClientSession): Promise; bulkUpdateClaimsByVoucher(voucher: Voucher): Promise; updateClaimsBillId(ids: string[], billId: string): Promise; bulkApplyClaims(ids: string[], restaurantId: string, session: mongodb.ClientSession, billId?: string): Promise; bulkRevertAppliedClaims(ids: string[], session: mongodb.ClientSession): Promise; findClaimByUser(uid: string): Promise; findClaimById(id: string): Promise; findClaimByIds(ids: string[]): Promise; findClaimByUserAndId(uid: string, id: string): Promise; clearRedeemCode(): Promise; }