import { ReactNode, CSSProperties, HTMLAttributes } from 'react'; import { MissionApiService, MissionItem } from '@lofter-mission/core'; // 通用样式Props类型 export interface BaseStyleProps { className?: string; style?: CSSProperties; } // 活动信息类型 export interface ActivityInfo { activityCode: string; name?: string; status?: string; [key: string]: any; } // 任务对象类型 - 现在使用 MissionItem 类而不是普通接口 export type Mission = MissionItem & { tabName?: string; // 从tab信息中添加的标签名 }; // 用户积分信息类型 export interface UserInfo { points?: number; level?: number; nickname?: string; [key: string]: any; } // 奖励item类型(引用core包的PrizeItem) export type PrizeItem = import('@lofter-mission/core').PrizeItem; // 奖励活动类型(引用core包的AwardActivity) export type AwardActivity = import('@lofter-mission/core').AwardActivity; // 奖励item组件Props export interface AwardItemViewProps extends BaseStyleProps { activityInfo?: ActivityInfo; prize: PrizeItem; onRedeem?: (prize: PrizeItem, points: number) => void; cardClassName?: string; imageClassName?: string; titleClassName?: string; buttonClassName?: string; maxedOutText?: string; redeemText?: string; customRedeem?: ( prize: PrizeItem, callback: ( otherParams?: any ) => Promise<{ status: boolean, points?: number }> ) => Promise; } // 奖励列表组件Props export interface AwardListViewProps extends BaseStyleProps { activityInfo?: ActivityInfo; onPrizeRedeem?: (prize: PrizeItem, points?: number) => void; callbackPoints?: (points?: number) => void; customRedeem?: ( prize: PrizeItem, callback: ( otherParams?: any ) => Promise<{ status: boolean, points?: number }> ) => Promise; loadingClassName?: string; errorClassName?: string; emptyClassName?: string; itemsClassName?: string; loadingText?: string; errorText?: string; emptyText?: string; } // 组件Props类型定义 export interface ActivityContainerProps extends BaseStyleProps, Omit, 'className' | 'style'> { activityCode: string; children?: ReactNode; presetMissionApiService?: MissionApiService; presetActivityInfo?: any; // 预设的活动信息,如果有则不发起请求 } export interface ActivityUserProps extends BaseStyleProps { activityInfo?: ActivityInfo; loadingClassName?: string; errorClassName?: string; noDataClassName?: string; loadingText?: string; errorText?: string; noDataText?: string; pointsText?: string; } // 任务执行上下文类型(引用core包的MissionExecutionContext) export type MissionExecutionContext = import('@lofter-mission/core').MissionExecutionContext; // 自定义任务处理函数类型 export type CustomTaskHandler = ( context: MissionExecutionContext, showMissionType: number, mission: Mission ) => Promise<{ needRefresh?: boolean; [key: string]: any } | null>; export interface MissionItemViewProps extends BaseStyleProps { activityInfo?: ActivityInfo; mission: Mission; onProgressUpdate?: (mission: Mission, points?: number) => void; onCustomShare?: (mission: Mission) => void; /** 自定义任务处理函数,用于处理类型 29(通用任务)和 30(购买商品)等需要外部自定义逻辑的任务 */ onCustomTask?: CustomTaskHandler; cardClassName?: string; titleClassName?: string; rewardClassName?: string; actionClassName?: string; buttonClassName?: string; completedText?: string; defaultActionText?: string; } export interface MissionListViewProps extends BaseStyleProps { activityInfo?: ActivityInfo; tabName?: string; onMissionProgressUpdate?: (mission: Mission, points?: number) => void; onCustomShare?: (mission: Mission) => void; /** 自定义任务处理函数,用于处理类型 29(通用任务)和 30(购买商品)等需要外部自定义逻辑的任务 */ onCustomTask?: CustomTaskHandler; loadingClassName?: string; errorClassName?: string; emptyClassName?: string; itemsClassName?: string; loadingText?: string; errorText?: string; emptyText?: string; isShowStepMission?: boolean; } export interface MissionPopupViewProps extends BaseStyleProps { activityInfo?: ActivityInfo; visible?: boolean; onClose?: () => void; onMissionProgressUpdate?: (mission: Mission) => void; overlayClassName?: string; popupClassName?: string; headerClassName?: string; contentClassName?: string; closeButtonClassName?: string; title?: string; loadingText?: string; errorText?: string; retryText?: string; }