import type { FeatureType } from "../event.enums"; import type { UserEngagementData, CommentEngagementParam, PreregisterEngagementParam, LotteryEngagementParam, LotteryDrawEngagementParam, ShareEngagementParam, SubscribeEngagementParam, TeamEngagementParam, VoteEngagementParam, Vote2EngagementParam, UgcEngagementParam, UgcLikeEngagementParam, Vote2EngagementError, LotteryEngagementError, ClaimActivationKeyEngagementError, LotteryDrawEngagementError, TeamEngagementError, GiftCodeEngagementError, RedeemEngagementParam, RedeemEngagementError } from "./engage"; import type { ReferralEngagementError, ReferralEngagementParam } from "./engage.referral"; import type { ZeroChatGPTEngagementParam } from "./engage.zeroChatGPT"; import type { Reward } from "./reward"; export * from "./engage"; export * from "./reward"; export type UserEngagement = { /** 参与记录 ID */ engagement_id: number; /** 用户 ID */ user_id: string; /** 活动 ID */ event_id: number; /** 玩法 ID */ feature_id: number; /** 玩法参与次数 */ sequence: number; /** 附带的数据,由 feature_id 的类型决定 */ data?: UserEngagementData; server_id?: string; role_id?: string; created_at: number; /** 参与奖励列表 */ rewards?: Reward[]; }; export declare const UserEngagementValidator: import("@seayoo-web/validator").ObjectValidator & { plain: never; optional: never; maybeNull: never; lock: never; }; /** * 部分玩法参与时需要提供的参数 */ export type EngagementParam = null | PreregisterEngagementParam | LotteryEngagementParam | CommentEngagementParam | ShareEngagementParam | VoteEngagementParam | Vote2EngagementParam | SubscribeEngagementParam | TeamEngagementParam | LotteryDrawEngagementParam | ZeroChatGPTEngagementParam | UgcEngagementParam | UgcLikeEngagementParam | RedeemEngagementParam | ReferralEngagementParam; export type EngagementFeatureType = FeatureType | unknown; /** * 根据玩法类型推导需要提交的参数数据类型 */ export type InferEngagementParam = [T] extends ["preregister"] ? PreregisterEngagementParam : [T] extends ["lottery"] ? LotteryEngagementParam : [T] extends ["comment"] ? CommentEngagementParam : [T] extends ["share"] ? ShareEngagementParam | null : [T] extends ["vote"] ? VoteEngagementParam : [T] extends ["vote2"] ? Vote2EngagementParam : [T] extends ["weixin_subscribe"] ? SubscribeEngagementParam : [T] extends ["team"] ? TeamEngagementParam : [T] extends ["lottery_draw"] ? LotteryDrawEngagementParam : [T] extends ["zero_chatgpt"] ? ZeroChatGPTEngagementParam : [T] extends ["ugc"] ? UgcEngagementParam : [T] extends ["ugc_like"] ? UgcLikeEngagementParam : [T] extends ["redeem"] ? RedeemEngagementParam : [T] extends ["referral"] ? ReferralEngagementParam : EngagementParam; export type EngagementCommonError = "invalid_token" | "event_not_found" | "feature_not_found" | "visit_record_not_found" | "event_not_started" | "event_already_ended" | "engage_feature_reached_limit" | "invalid_merchant_parameter" | "budget_not_enough" | "combo_id_not_found"; export type EngagementError = EngagementCommonError | TeamEngagementError | Vote2EngagementError | ClaimActivationKeyEngagementError | LotteryDrawEngagementError | LotteryEngagementError | GiftCodeEngagementError | RedeemEngagementError | ReferralEngagementError; /** * 根据玩法类型推导额外的错误字段 */ export type InferEngagementError = ([T] extends ["vote2"] ? Vote2EngagementError : [T] extends ["claim_activation_key"] ? ClaimActivationKeyEngagementError : [T] extends ["lottery"] ? LotteryEngagementError : [T] extends ["lottery_draw"] ? LotteryDrawEngagementError : [T] extends ["team"] ? TeamEngagementError : [T] extends ["gift_code"] ? GiftCodeEngagementError : [T] extends ["redeem"] ? RedeemEngagementError : [T] extends ["referral"] ? ReferralEngagementError : EngagementError) | EngagementCommonError;