import type { MediationNetwork, AFPurchaseType } from './Appsflyer_constants'; export interface AFInit { devKey: string; appID: string; isDebug?: boolean; waitForATTUserAuthorization?: number; registerConversionListener?: boolean; registerOnAppOpenAttribution?: boolean; registerOnDeepLink?: boolean; useUninstallSandbox?: boolean; useReceiptValidationSandbox?: boolean; minTimeBetweenSessions?: number; deepLinkTimeout?: number; manualStart?: boolean; } export interface AFEvent { eventName?: string; eventValue?: any; } export interface OnConversionDataResult { callbackName: string; errorMessage?: string; data?: any; } export interface OnAppOpenAttribution { callbackName: string; errorMessage?: string; data?: any; } export interface OnDeepLink { status: string; error?: string; deepLink?: any; } export interface StringMap { [key: string]: string; } export interface AFLinkGenerator { brandDomain?: string; campaign?: string; channel?: string; referrerName?: string; referrerImageURL?: string; referrerCustomerId?: string; baseDeeplink?: string; //af_dp addParameters?: StringMap; } export interface AFInAppPurchase { currency: string; additionalParameters?: StringMap; } export interface AFAndroidInAppPurchase extends AFInAppPurchase { publicKey: string; signature: string; purchaseData: string; price: string; } export interface AFIosInAppPurchase extends AFInAppPurchase { inAppPurchase: string; price: string; transactionId: string; } export interface AFPromotion { appID: string; campaign: string; parameters: StringMap; } export interface AFLatLng { latitude: number; longitude: number; } export interface AFPartnerData { data: any; partnerId: string; } export interface AFLogInvite { eventParameters: StringMap; channel: string; } export interface AFLink { link: string; } export interface AFRes { res: string; } export interface AFUninstall { token: string; } export interface AFUid { uid: string; } export interface AFCurrency { currencyCode: string; } export interface AFCuid { cuid: string; } export interface AFAnonymizeUser { anonymizeUser: boolean; } export interface AFOnelinkID { onelinkID: string; } export interface AFOnelinkDomain { domains: string[]; } export interface AFUrls { urls: string[]; } export interface AFPath { path: string[]; } export interface AFEmails { emails: string[]; encode?: boolean; } export interface AFStop { stop: boolean; } export interface AFIsStopped { isStopped: boolean; } export interface AFFilters { filters: string[]; } export interface AFData { additionalData: any; } export interface AFDisable { shouldDisable: boolean; } export interface AFFbDAL { enableFacebookDAL: boolean; } export interface AFPushPayload { pushPayload: StringMap; } export interface AFLanguage { language: string; } export interface AFPhone { phone: string; } export interface AFHost { hostPrefixName: string; hostName: string; } export interface AFAppendToDeepLink { contains: string; parameters: StringMap; } export interface AFEnableTCFDataCollection { shouldEnableTCFDataCollection: boolean; } export interface IAppsFlyerConsent { isUserSubjectToGDPR: boolean; hasConsentForDataUsage?: boolean; hasConsentForAdsPersonalization?: boolean; } class AppsFlyerConsentClass implements IAppsFlyerConsent { public isUserSubjectToGDPR: boolean; public hasConsentForDataUsage?: boolean; public hasConsentForAdsPersonalization?: boolean; private constructor( isUserSubjectToGDPR: boolean, hasConsentForDataUsage?: boolean, hasConsentForAdsPersonalization?: boolean, ) { this.isUserSubjectToGDPR = isUserSubjectToGDPR; this.hasConsentForDataUsage = hasConsentForDataUsage; this.hasConsentForAdsPersonalization = hasConsentForAdsPersonalization; } static forGDPRUser(hasConsentForDataUsage: boolean, hasConsentForAdsPersonalization: boolean): IAppsFlyerConsent { return new AppsFlyerConsentClass(true, hasConsentForDataUsage, hasConsentForAdsPersonalization); } static forNonGDPRUser(): IAppsFlyerConsent { return new AppsFlyerConsentClass(false); } } export const AppsFlyerConsent = { forGDPRUser: AppsFlyerConsentClass.forGDPRUser, forNonGDPRUser: AppsFlyerConsentClass.forNonGDPRUser, }; export interface AFConsentData { data: IAppsFlyerConsent; } export interface AFAdRevenueData { monetizationNetwork: string; mediationNetwork: MediationNetwork; currencyIso4217Code: string; revenue: number; additionalParameters?: StringMap; } export interface AFConsentOptions { isUserSubjectToGDPR?: boolean | null; hasConsentForDataUsage?: boolean | null; hasConsentForAdsPersonalization?: boolean | null; hasConsentForAdStorage?: boolean | null; } export interface AFIsStarted { isStarted: boolean; } export interface AFPurchaseDetails { purchaseType: AFPurchaseType; purchaseToken: string; productId: string; } export interface AFPurchaseDetailsV2 { purchaseDetails: AFPurchaseDetails; additionalParameters?: StringMap; }