export { O as OFFICIAL_BROWSER, d as detectEnvChannel, i as isOfficialBrowser } from './env-jbPgOoZW.mjs'; /** * Mintegral 渠道注入的 HttpAPI 对象 * 文档: https://www.playturbo.com/review/doc */ declare global { interface Window { HttpAPI?: { sendPoint(data: string): void; }; } } /** * social_media 渠道的埋点实现(AiX WebSDK 相关)**故意不放在本文件 / 本包内静态引用**。 * * 原因:`@playcraft/ads-tracking` 是预先用 tsup/esbuild 打包发布的 npm 包。如果在这里 * `import('./social-share')`(哪怕包一层 `if (AD_NETWORK === 'social_media')` 再用 * `require()`),esbuild 在打包本包自身时就会把 `social-share.ts` 的所有函数声明(包括 * 硬编码的 AiX SDK 域名 `static.aix.levelinfinite.com`)无条件提升到 dist 顶层—— * 因为那时 AD_NETWORK 根本还不存在(它是下游游戏项目 webpack 构建时才通过 DefinePlugin * 注入的常量),esbuild 没有任何依据做条件裁剪,域名字符串会原样躺进每个渠道的产物里, * 不管会不会被调用到。 * * 因此改为纯依赖注入:本文件只维护一个可选的 handlers 引用,由外部通过 * `registerSocialMediaHandlers()` 注入。真正"按 AD_NETWORK 决定要不要 require * social-share 实现"的逻辑,放在消费方自己的源码里(例如 playable-sdk 的 * tracking-init.ts)——消费方对 `@playcraft/ads-tracking` 是作为 node_modules 里的 * 外部依赖引用(tsup 默认把 dependencies 当 external,不会内联),所以那条 * `if (AD_NETWORK === 'social_media') { require('@playcraft/ads-tracking/social-share') }` * 能一直以"真实的、跨文件的模块引用"形式存活到最终游戏项目自己的 webpack 构建, * 届时 DefinePlugin + Terser 才能真正把整个 social-share 模块从非 social_media 渠道的 * 产物里剔除。 */ interface SocialMediaTrackingHandlers { loadAiXSDK(config: { game_code: string; track_id: string; skey: string; page_type?: string; }): void; startStayDuration(): void; reportLoaded(): void; reportChallengeSuccess(): void; reportDownload(): void; autoReportShare(toChannel?: string): void; autoReportShareChannel(channelName: string): void; } /** * 注入 social_media 渠道的埋点实现(AiX WebSDK)。 * 仅需在实际构建 social_media 渠道时,由消费方按 AD_NETWORK 条件调用; * 其它渠道不调用即可,本包内部不会主动引入 social-share 的任何代码。 */ declare function registerSocialMediaHandlers(handlers: SocialMediaTrackingHandlers): void; /** 设置 social_media tracker 配置(由 index.ts 调用) */ declare function setSocialTrackerConfig(cfg: { game_code: string; track_id: string; skey: string; page_type?: string; }): void; /** * 根据传入的 0-100 进度值触发对应里程碑,不重复上报 * @param percent - 当前进度百分比(0-100) */ declare function onPlaycraftChallengeProgress(percent: number): void; /** * SDK 初始化开始(原 _onInit) * 渠道埋点: Bigabid:mraid_viewable | InMobi:Ad_Load_Start | AppLovin:LOADING * 同时初始化进度里程碑 * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftTrackingInit(adNetwork?: string): void; /** * 游戏资源加载中(原 _onStart) * 渠道埋点: Bigabid:game_viewable | InMobi:Ad_Viewable | AppLovin:LOADED * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftTrackingLoading(adNetwork?: string): void; /** * 游戏资源加载完成、主场景就绪(原 _onInteractive) * 渠道埋点: AppLovin:DISPLAYED * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftTrackingLoaded(adNetwork?: string): void; /** * 游戏挑战开始,首次用户交互(原 onInteraction) * 渠道埋点: Bigabid:engagement | InMobi:First_Engagement | AppLovin:CHALLENGE_STARTED * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftChallengeStart(adNetwork?: string): void; /** * 游戏挑战成功(原 _onSuccess,合并自 _trackChallengeSuccess) * 渠道埋点: AppLovin:CHALLENGE_SOLVED | Bigabid:complete | InMobi:Gameplay_Complete * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftChallengeSuccess(adNetwork?: string): void; /** * 游戏结束(原 _onFinish) * 渠道埋点: Bigabid:complete | InMobi:Gameplay_Complete | AppLovin:ENDCARD_SHOWN * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftChallengeFinish(adNetwork?: string): void; /** * 点击安装(原 onInstall) * 渠道埋点: Bigabid:click | InMobi:DSP_Click | AppLovin:CTA_CLICKED * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftInstall(adNetwork?: string): void; /** * 重试游戏(原 _onRetry,注意原命名有拼写 LRetry,此处保持一致) * 渠道埋点: AppLovin:CHALLENGE_RETRY * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftRetry(adNetwork?: string): void; /** * 游戏挑战失败(原 _trackChallengeFailed) * 渠道埋点: AppLovin:CHALLENGE_FAILED * @param adNetwork - 可选的广告渠道名称,不传则使用全局 AD_NETWORK */ declare function onPlaycraftChallengeFailed(adNetwork?: string): void; /** * 统一的埋点追踪对象 */ declare const tracking: { /** * SDK 初始化开始,同时初始化进度里程碑 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftTrackingInit: typeof onPlaycraftTrackingInit; /** * 游戏资源加载中 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftTrackingLoading: typeof onPlaycraftTrackingLoading; /** * 游戏资源加载完成、主场景就绪 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftTrackingLoaded: typeof onPlaycraftTrackingLoaded; /** * 游戏挑战开始(首次用户交互) * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftChallengeStart: typeof onPlaycraftChallengeStart; /** * 上报游戏挑战进度(0-100),内部自动触发对应里程碑,不重复上报 * @param percent - 当前进度百分比(0-100) */ onPlaycraftChallengeProgress: typeof onPlaycraftChallengeProgress; /** * 游戏挑战成功 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftChallengeSuccess: typeof onPlaycraftChallengeSuccess; /** * 游戏结束 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftChallengeFinish: typeof onPlaycraftChallengeFinish; /** * 点击安装 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftInstall: typeof onPlaycraftInstall; /** * 重试游戏 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftRetry: typeof onPlaycraftRetry; /** * 游戏挑战失败 * @param adNetwork - 可选的广告渠道名称 */ onPlaycraftChallengeFailed: typeof onPlaycraftChallengeFailed; /** * 设置 social_media 渠道 tracker 配置(game_code/skey/track_id) * 必须在 onPlaycraftTrackingInit 之前调用 * @param cfg - tracker 配置 */ setSocialTrackerConfig: typeof setSocialTrackerConfig; /** * 注入 social_media 渠道的埋点实现(AiX WebSDK)。 * 只有真正构建 social_media 渠道时才需要调用,其它渠道不调用即可。 * @param handlers - 来自 `@playcraft/ads-tracking/social-share` 的实现 */ registerSocialMediaHandlers: typeof registerSocialMediaHandlers; /** * 分享按钮点击上报(social_media 渠道,未注入 handlers 时静默跳过) */ onShareClick: (toChannel?: string) => void | undefined; /** * 分享渠道点击上报(social_media 渠道,未注入 handlers 时静默跳过) * @param channelName - 渠道名称(如 "meta", "tiktok", "x") */ onShareChannelClick: (channelName: string) => void | undefined; }; export { type SocialMediaTrackingHandlers, tracking };