@datalyr/react-native 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +31 -140
  2. package/LICENSE +21 -0
  3. package/README.md +434 -217
  4. package/datalyr-react-native.podspec +31 -0
  5. package/ios/DatalyrNative.m +74 -0
  6. package/ios/DatalyrNative.swift +332 -0
  7. package/ios/DatalyrSKAdNetwork.m +26 -0
  8. package/lib/datalyr-sdk.d.ts +73 -3
  9. package/lib/datalyr-sdk.js +353 -3
  10. package/lib/index.d.ts +2 -0
  11. package/lib/index.js +4 -2
  12. package/lib/integrations/apple-search-ads-integration.d.ts +43 -0
  13. package/lib/integrations/apple-search-ads-integration.js +106 -0
  14. package/lib/integrations/index.d.ts +7 -0
  15. package/lib/integrations/index.js +7 -0
  16. package/lib/integrations/meta-integration.d.ts +76 -0
  17. package/lib/integrations/meta-integration.js +218 -0
  18. package/lib/integrations/tiktok-integration.d.ts +82 -0
  19. package/lib/integrations/tiktok-integration.js +356 -0
  20. package/lib/native/DatalyrNativeBridge.d.ts +57 -0
  21. package/lib/native/DatalyrNativeBridge.js +187 -0
  22. package/lib/native/index.d.ts +5 -0
  23. package/lib/native/index.js +5 -0
  24. package/lib/types.d.ts +29 -0
  25. package/package.json +11 -5
  26. package/src/datalyr-sdk-expo.ts +997 -0
  27. package/src/datalyr-sdk.ts +455 -19
  28. package/src/expo.ts +42 -18
  29. package/src/index.ts +8 -2
  30. package/src/integrations/apple-search-ads-integration.ts +119 -0
  31. package/src/integrations/index.ts +8 -0
  32. package/src/integrations/meta-integration.ts +238 -0
  33. package/src/integrations/tiktok-integration.ts +360 -0
  34. package/src/native/DatalyrNativeBridge.ts +313 -0
  35. package/src/native/index.ts +11 -0
  36. package/src/types.ts +39 -0
  37. package/src/utils-expo.ts +25 -3
  38. package/src/utils-interface.ts +38 -0
  39. package/EXPO_INSTALL.md +0 -297
  40. package/INSTALL.md +0 -402
  41. package/examples/attribution-example.tsx +0 -377
  42. package/examples/auto-events-example.tsx +0 -403
  43. package/examples/example.tsx +0 -250
  44. package/examples/skadnetwork-example.tsx +0 -380
  45. package/examples/test-implementation.tsx +0 -163
@@ -0,0 +1,31 @@
1
+ require 'json'
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "datalyr-react-native"
7
+ s.version = package['version']
8
+ s.summary = package['description']
9
+ s.description = <<-DESC
10
+ Datalyr SDK for React Native with bundled Meta (Facebook) and TikTok SDKs.
11
+ Provides deferred deep linking, event forwarding, and advanced attribution
12
+ without requiring users to install additional packages.
13
+ DESC
14
+ s.homepage = package['homepage']
15
+ s.license = package['license']
16
+ s.author = package['author']
17
+ s.platform = :ios, "13.0"
18
+ s.source = { :git => package['repository']['url'], :tag => "v#{s.version}" }
19
+ s.source_files = "ios/**/*.{h,m,swift}"
20
+ s.swift_version = "5.0"
21
+
22
+ s.dependency "React-Core"
23
+ s.dependency "FBSDKCoreKit", "~> 17.0"
24
+ s.dependency "TikTokBusinessSDK", "~> 1.4"
25
+
26
+ # Disable bitcode (required for TikTok SDK)
27
+ s.pod_target_xcconfig = {
28
+ 'ENABLE_BITCODE' => 'NO',
29
+ 'DEFINES_MODULE' => 'YES'
30
+ }
31
+ end
@@ -0,0 +1,74 @@
1
+ #import <React/RCTBridgeModule.h>
2
+
3
+ @interface RCT_EXTERN_MODULE(DatalyrNative, NSObject)
4
+
5
+ // Meta SDK Methods
6
+ RCT_EXTERN_METHOD(initializeMetaSDK:(NSString *)appId
7
+ clientToken:(NSString *)clientToken
8
+ advertiserTrackingEnabled:(BOOL)advertiserTrackingEnabled
9
+ resolve:(RCTPromiseResolveBlock)resolve
10
+ reject:(RCTPromiseRejectBlock)reject)
11
+
12
+ RCT_EXTERN_METHOD(fetchDeferredAppLink:(RCTPromiseResolveBlock)resolve
13
+ reject:(RCTPromiseRejectBlock)reject)
14
+
15
+ RCT_EXTERN_METHOD(logMetaEvent:(NSString *)eventName
16
+ valueToSum:(NSNumber *)valueToSum
17
+ parameters:(NSDictionary *)parameters
18
+ resolve:(RCTPromiseResolveBlock)resolve
19
+ reject:(RCTPromiseRejectBlock)reject)
20
+
21
+ RCT_EXTERN_METHOD(logMetaPurchase:(double)amount
22
+ currency:(NSString *)currency
23
+ parameters:(NSDictionary *)parameters
24
+ resolve:(RCTPromiseResolveBlock)resolve
25
+ reject:(RCTPromiseRejectBlock)reject)
26
+
27
+ RCT_EXTERN_METHOD(setMetaUserData:(NSDictionary *)userData
28
+ resolve:(RCTPromiseResolveBlock)resolve
29
+ reject:(RCTPromiseRejectBlock)reject)
30
+
31
+ RCT_EXTERN_METHOD(clearMetaUserData:(RCTPromiseResolveBlock)resolve
32
+ reject:(RCTPromiseRejectBlock)reject)
33
+
34
+ RCT_EXTERN_METHOD(updateMetaTrackingAuthorization:(BOOL)enabled
35
+ resolve:(RCTPromiseResolveBlock)resolve
36
+ reject:(RCTPromiseRejectBlock)reject)
37
+
38
+ // TikTok SDK Methods
39
+ RCT_EXTERN_METHOD(initializeTikTokSDK:(NSString *)appId
40
+ tiktokAppId:(NSString *)tiktokAppId
41
+ accessToken:(NSString *)accessToken
42
+ debug:(BOOL)debug
43
+ resolve:(RCTPromiseResolveBlock)resolve
44
+ reject:(RCTPromiseRejectBlock)reject)
45
+
46
+ RCT_EXTERN_METHOD(trackTikTokEvent:(NSString *)eventName
47
+ eventId:(NSString *)eventId
48
+ properties:(NSDictionary *)properties
49
+ resolve:(RCTPromiseResolveBlock)resolve
50
+ reject:(RCTPromiseRejectBlock)reject)
51
+
52
+ RCT_EXTERN_METHOD(identifyTikTokUser:(NSString *)externalId
53
+ externalUserName:(NSString *)externalUserName
54
+ phoneNumber:(NSString *)phoneNumber
55
+ email:(NSString *)email
56
+ resolve:(RCTPromiseResolveBlock)resolve
57
+ reject:(RCTPromiseRejectBlock)reject)
58
+
59
+ RCT_EXTERN_METHOD(logoutTikTok:(RCTPromiseResolveBlock)resolve
60
+ reject:(RCTPromiseRejectBlock)reject)
61
+
62
+ RCT_EXTERN_METHOD(updateTikTokTrackingAuthorization:(BOOL)enabled
63
+ resolve:(RCTPromiseResolveBlock)resolve
64
+ reject:(RCTPromiseRejectBlock)reject)
65
+
66
+ // SDK Availability Check
67
+ RCT_EXTERN_METHOD(getSDKAvailability:(RCTPromiseResolveBlock)resolve
68
+ reject:(RCTPromiseRejectBlock)reject)
69
+
70
+ // Apple Search Ads Attribution
71
+ RCT_EXTERN_METHOD(getAppleSearchAdsAttribution:(RCTPromiseResolveBlock)resolve
72
+ reject:(RCTPromiseRejectBlock)reject)
73
+
74
+ @end
@@ -0,0 +1,332 @@
1
+ import Foundation
2
+ import FBSDKCoreKit
3
+ import TikTokBusinessSDK
4
+ import AdServices
5
+
6
+ @objc(DatalyrNative)
7
+ class DatalyrNative: NSObject {
8
+
9
+ @objc static func requiresMainQueueSetup() -> Bool {
10
+ return false
11
+ }
12
+
13
+ // MARK: - Meta (Facebook) SDK Methods
14
+
15
+ @objc func initializeMetaSDK(
16
+ _ appId: String,
17
+ clientToken: String?,
18
+ advertiserTrackingEnabled: Bool,
19
+ resolve: @escaping RCTPromiseResolveBlock,
20
+ reject: @escaping RCTPromiseRejectBlock
21
+ ) {
22
+ DispatchQueue.main.async {
23
+ Settings.shared.appID = appId
24
+
25
+ if let token = clientToken, !token.isEmpty {
26
+ Settings.shared.clientToken = token
27
+ }
28
+
29
+ Settings.shared.isAdvertiserTrackingEnabled = advertiserTrackingEnabled
30
+ Settings.shared.isAdvertiserIDCollectionEnabled = advertiserTrackingEnabled
31
+
32
+ ApplicationDelegate.shared.application(
33
+ UIApplication.shared,
34
+ didFinishLaunchingWithOptions: nil
35
+ )
36
+
37
+ resolve(true)
38
+ }
39
+ }
40
+
41
+ @objc func fetchDeferredAppLink(
42
+ _ resolve: @escaping RCTPromiseResolveBlock,
43
+ reject: @escaping RCTPromiseRejectBlock
44
+ ) {
45
+ AppLinkUtility.fetchDeferredAppLink { url, error in
46
+ if error != nil {
47
+ // Don't reject - deferred deep link not available is expected in many cases
48
+ // Error is normal when no deferred link exists
49
+ resolve(nil)
50
+ return
51
+ }
52
+
53
+ if let url = url {
54
+ resolve(url.absoluteString)
55
+ } else {
56
+ resolve(nil)
57
+ }
58
+ }
59
+ }
60
+
61
+ @objc func logMetaEvent(
62
+ _ eventName: String,
63
+ valueToSum: NSNumber?,
64
+ parameters: NSDictionary?,
65
+ resolve: @escaping RCTPromiseResolveBlock,
66
+ reject: @escaping RCTPromiseRejectBlock
67
+ ) {
68
+ var params: [AppEvents.ParameterName: Any] = [:]
69
+
70
+ if let dict = parameters as? [String: Any] {
71
+ for (key, value) in dict {
72
+ params[AppEvents.ParameterName(key)] = value
73
+ }
74
+ }
75
+
76
+ if let value = valueToSum?.doubleValue {
77
+ AppEvents.shared.logEvent(AppEvents.Name(eventName), valueToSum: value, parameters: params)
78
+ } else if params.isEmpty {
79
+ AppEvents.shared.logEvent(AppEvents.Name(eventName))
80
+ } else {
81
+ AppEvents.shared.logEvent(AppEvents.Name(eventName), parameters: params)
82
+ }
83
+
84
+ resolve(true)
85
+ }
86
+
87
+ @objc func logMetaPurchase(
88
+ _ amount: Double,
89
+ currency: String,
90
+ parameters: NSDictionary?,
91
+ resolve: @escaping RCTPromiseResolveBlock,
92
+ reject: @escaping RCTPromiseRejectBlock
93
+ ) {
94
+ var params: [AppEvents.ParameterName: Any] = [:]
95
+
96
+ if let dict = parameters as? [String: Any] {
97
+ for (key, value) in dict {
98
+ params[AppEvents.ParameterName(key)] = value
99
+ }
100
+ }
101
+
102
+ AppEvents.shared.logPurchase(amount: amount, currency: currency, parameters: params)
103
+ resolve(true)
104
+ }
105
+
106
+ @objc func setMetaUserData(
107
+ _ userData: NSDictionary,
108
+ resolve: @escaping RCTPromiseResolveBlock,
109
+ reject: @escaping RCTPromiseRejectBlock
110
+ ) {
111
+ AppEvents.shared.setUserData(
112
+ userData["email"] as? String,
113
+ forType: .email
114
+ )
115
+ AppEvents.shared.setUserData(
116
+ userData["firstName"] as? String,
117
+ forType: .firstName
118
+ )
119
+ AppEvents.shared.setUserData(
120
+ userData["lastName"] as? String,
121
+ forType: .lastName
122
+ )
123
+ AppEvents.shared.setUserData(
124
+ userData["phone"] as? String,
125
+ forType: .phone
126
+ )
127
+ AppEvents.shared.setUserData(
128
+ userData["dateOfBirth"] as? String,
129
+ forType: .dateOfBirth
130
+ )
131
+ AppEvents.shared.setUserData(
132
+ userData["gender"] as? String,
133
+ forType: .gender
134
+ )
135
+ AppEvents.shared.setUserData(
136
+ userData["city"] as? String,
137
+ forType: .city
138
+ )
139
+ AppEvents.shared.setUserData(
140
+ userData["state"] as? String,
141
+ forType: .state
142
+ )
143
+ AppEvents.shared.setUserData(
144
+ userData["zip"] as? String,
145
+ forType: .zip
146
+ )
147
+ AppEvents.shared.setUserData(
148
+ userData["country"] as? String,
149
+ forType: .country
150
+ )
151
+
152
+ resolve(true)
153
+ }
154
+
155
+ @objc func clearMetaUserData(
156
+ _ resolve: @escaping RCTPromiseResolveBlock,
157
+ reject: @escaping RCTPromiseRejectBlock
158
+ ) {
159
+ AppEvents.shared.clearUserData()
160
+ resolve(true)
161
+ }
162
+
163
+ @objc func updateMetaTrackingAuthorization(
164
+ _ enabled: Bool,
165
+ resolve: @escaping RCTPromiseResolveBlock,
166
+ reject: @escaping RCTPromiseRejectBlock
167
+ ) {
168
+ Settings.shared.isAdvertiserTrackingEnabled = enabled
169
+ Settings.shared.isAdvertiserIDCollectionEnabled = enabled
170
+ resolve(true)
171
+ }
172
+
173
+ // MARK: - TikTok SDK Methods
174
+
175
+ @objc func initializeTikTokSDK(
176
+ _ appId: String,
177
+ tiktokAppId: String,
178
+ accessToken: String?,
179
+ debug: Bool,
180
+ resolve: @escaping RCTPromiseResolveBlock,
181
+ reject: @escaping RCTPromiseRejectBlock
182
+ ) {
183
+ DispatchQueue.main.async {
184
+ let config = TikTokConfig(appId: appId, tiktokAppId: tiktokAppId)
185
+
186
+ if let token = accessToken, !token.isEmpty {
187
+ config?.accessToken = token
188
+ }
189
+
190
+ if debug {
191
+ config?.setLogLevel(.debug)
192
+ }
193
+
194
+ if let validConfig = config {
195
+ TikTokBusiness.initializeSdk(validConfig)
196
+ resolve(true)
197
+ } else {
198
+ reject("tiktok_init_error", "Failed to create TikTok config", nil)
199
+ }
200
+ }
201
+ }
202
+
203
+ @objc func trackTikTokEvent(
204
+ _ eventName: String,
205
+ eventId: String?,
206
+ properties: NSDictionary?,
207
+ resolve: @escaping RCTPromiseResolveBlock,
208
+ reject: @escaping RCTPromiseRejectBlock
209
+ ) {
210
+ // Use TikTokBaseEvent for modern API (trackEvent methods are deprecated)
211
+ let event: TikTokBaseEvent
212
+
213
+ if let eid = eventId, !eid.isEmpty {
214
+ event = TikTokBaseEvent(eventName: eventName, eventId: eid)
215
+ } else {
216
+ event = TikTokBaseEvent(eventName: eventName)
217
+ }
218
+
219
+ // Add properties to the event
220
+ if let dict = properties as? [String: Any] {
221
+ for (key, value) in dict {
222
+ event.addProperty(withKey: key, value: value)
223
+ }
224
+ }
225
+
226
+ TikTokBusiness.trackTTEvent(event)
227
+ resolve(true)
228
+ }
229
+
230
+ @objc func identifyTikTokUser(
231
+ _ externalId: String,
232
+ externalUserName: String,
233
+ phoneNumber: String,
234
+ email: String,
235
+ resolve: @escaping RCTPromiseResolveBlock,
236
+ reject: @escaping RCTPromiseRejectBlock
237
+ ) {
238
+ // Method signature: identifyWithExternalID:externalUserName:phoneNumber:email:
239
+ TikTokBusiness.identify(
240
+ withExternalID: externalId.isEmpty ? nil : externalId,
241
+ externalUserName: externalUserName.isEmpty ? nil : externalUserName,
242
+ phoneNumber: phoneNumber.isEmpty ? nil : phoneNumber,
243
+ email: email.isEmpty ? nil : email
244
+ )
245
+ resolve(true)
246
+ }
247
+
248
+ @objc func logoutTikTok(
249
+ _ resolve: @escaping RCTPromiseResolveBlock,
250
+ reject: @escaping RCTPromiseRejectBlock
251
+ ) {
252
+ TikTokBusiness.logout()
253
+ resolve(true)
254
+ }
255
+
256
+ @objc func updateTikTokTrackingAuthorization(
257
+ _ enabled: Bool,
258
+ resolve: @escaping RCTPromiseResolveBlock,
259
+ reject: @escaping RCTPromiseRejectBlock
260
+ ) {
261
+ // TikTok SDK handles ATT automatically, but we track the change
262
+ resolve(true)
263
+ }
264
+
265
+ // MARK: - SDK Availability Check
266
+
267
+ @objc func getSDKAvailability(
268
+ _ resolve: @escaping RCTPromiseResolveBlock,
269
+ reject: @escaping RCTPromiseRejectBlock
270
+ ) {
271
+ resolve([
272
+ "meta": true,
273
+ "tiktok": true,
274
+ "appleSearchAds": true
275
+ ])
276
+ }
277
+
278
+ // MARK: - Apple Search Ads Attribution
279
+
280
+ @objc func getAppleSearchAdsAttribution(
281
+ _ resolve: @escaping RCTPromiseResolveBlock,
282
+ reject: @escaping RCTPromiseRejectBlock
283
+ ) {
284
+ // AdServices is available on iOS 14.3+
285
+ if #available(iOS 14.3, *) {
286
+ do {
287
+ // Get the attribution token from AdServices
288
+ let token = try AAAttribution.attributionToken()
289
+
290
+ // Send token to Apple's API to get attribution data
291
+ var request = URLRequest(url: URL(string: "https://api-adservices.apple.com/api/v1/")!)
292
+ request.httpMethod = "POST"
293
+ request.setValue("text/plain", forHTTPHeaderField: "Content-Type")
294
+ request.httpBody = token.data(using: .utf8)
295
+
296
+ let task = URLSession.shared.dataTask(with: request) { data, response, error in
297
+ if let error = error {
298
+ // Network error - resolve with nil instead of rejecting
299
+ resolve(nil)
300
+ return
301
+ }
302
+
303
+ guard let data = data else {
304
+ resolve(nil)
305
+ return
306
+ }
307
+
308
+ do {
309
+ if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] {
310
+ // Return attribution data
311
+ // Includes: attribution, orgId, orgName, campaignId, campaignName,
312
+ // adGroupId, adGroupName, clickDate, conversionType, etc.
313
+ resolve(json)
314
+ } else {
315
+ resolve(nil)
316
+ }
317
+ } catch {
318
+ resolve(nil)
319
+ }
320
+ }
321
+ task.resume()
322
+
323
+ } catch {
324
+ // Attribution token not available (user didn't come from Apple Search Ads)
325
+ resolve(nil)
326
+ }
327
+ } else {
328
+ // iOS version too old
329
+ resolve(nil)
330
+ }
331
+ }
332
+ }
@@ -0,0 +1,26 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <StoreKit/StoreKit.h>
3
+
4
+ @interface DatalyrSKAdNetwork : NSObject <RCTBridgeModule>
5
+ @end
6
+
7
+ @implementation DatalyrSKAdNetwork
8
+
9
+ RCT_EXPORT_MODULE();
10
+
11
+ RCT_EXPORT_METHOD(updateConversionValue:(NSInteger)value
12
+ resolve:(RCTPromiseResolveBlock)resolve
13
+ reject:(RCTPromiseRejectBlock)reject) {
14
+ if (@available(iOS 14.0, *)) {
15
+ @try {
16
+ [SKAdNetwork updateConversionValue:value];
17
+ resolve(@(YES));
18
+ } @catch (NSException *exception) {
19
+ reject(@"skadnetwork_error", exception.reason, nil);
20
+ }
21
+ } else {
22
+ reject(@"ios_version_error", @"SKAdNetwork requires iOS 14.0+", nil);
23
+ }
24
+ }
25
+
26
+ @end
@@ -1,6 +1,7 @@
1
- import { DatalyrConfig, EventData, UserProperties, AutoEventConfig } from './types';
1
+ import { DatalyrConfig, EventData, UserProperties, AutoEventConfig, DeferredDeepLinkResult } from './types';
2
2
  import { AttributionData } from './attribution';
3
3
  import { SessionData } from './auto-events';
4
+ import { AppleSearchAdsAttribution } from './native/DatalyrNativeBridge';
4
5
  export declare class DatalyrSDK {
5
6
  private state;
6
7
  private httpClient;
@@ -93,13 +94,67 @@ export declare class DatalyrSDK {
93
94
  */
94
95
  trackWithSKAdNetwork(event: string, properties?: EventData): Promise<void>;
95
96
  /**
96
- * Track purchase with automatic revenue encoding
97
+ * Track purchase with automatic revenue encoding and platform forwarding
97
98
  */
98
99
  trackPurchase(value: number, currency?: string, productId?: string): Promise<void>;
99
100
  /**
100
- * Track subscription with automatic revenue encoding
101
+ * Track subscription with automatic revenue encoding and platform forwarding
101
102
  */
102
103
  trackSubscription(value: number, currency?: string, plan?: string): Promise<void>;
104
+ /**
105
+ * Track add to cart event
106
+ */
107
+ trackAddToCart(value: number, currency?: string, productId?: string, productName?: string): Promise<void>;
108
+ /**
109
+ * Track view content/product event
110
+ */
111
+ trackViewContent(contentId?: string, contentName?: string, contentType?: string, value?: number, currency?: string): Promise<void>;
112
+ /**
113
+ * Track initiate checkout event
114
+ */
115
+ trackInitiateCheckout(value: number, currency?: string, numItems?: number, productIds?: string[]): Promise<void>;
116
+ /**
117
+ * Track complete registration event
118
+ */
119
+ trackCompleteRegistration(method?: string): Promise<void>;
120
+ /**
121
+ * Track search event
122
+ */
123
+ trackSearch(query: string, resultIds?: string[]): Promise<void>;
124
+ /**
125
+ * Track lead/contact form submission
126
+ */
127
+ trackLead(value?: number, currency?: string): Promise<void>;
128
+ /**
129
+ * Track add payment info event
130
+ */
131
+ trackAddPaymentInfo(success?: boolean): Promise<void>;
132
+ /**
133
+ * Get deferred attribution data from platform SDKs
134
+ */
135
+ getDeferredAttributionData(): DeferredDeepLinkResult | null;
136
+ /**
137
+ * Get platform integration status
138
+ */
139
+ getPlatformIntegrationStatus(): {
140
+ meta: boolean;
141
+ tiktok: boolean;
142
+ appleSearchAds: boolean;
143
+ };
144
+ /**
145
+ * Get Apple Search Ads attribution data
146
+ * Returns attribution if user installed via Apple Search Ads, null otherwise
147
+ */
148
+ getAppleSearchAdsAttribution(): AppleSearchAdsAttribution | null;
149
+ /**
150
+ * Update tracking authorization status on all platform SDKs
151
+ * Call this AFTER the user responds to the ATT permission dialog
152
+ */
153
+ updateTrackingAuthorization(enabled: boolean): Promise<void>;
154
+ /**
155
+ * Handle deferred deep link data from platform SDKs
156
+ */
157
+ private handleDeferredDeepLink;
103
158
  /**
104
159
  * Get conversion value for testing (doesn't send to Apple)
105
160
  */
@@ -175,5 +230,20 @@ export declare class Datalyr {
175
230
  static trackAppUpdate(previousVersion: string, currentVersion: string): Promise<void>;
176
231
  static trackRevenue(eventName: string, properties?: EventData): Promise<void>;
177
232
  static updateAutoEventsConfig(config: Partial<AutoEventConfig>): void;
233
+ static trackAddToCart(value: number, currency?: string, productId?: string, productName?: string): Promise<void>;
234
+ static trackViewContent(contentId?: string, contentName?: string, contentType?: string, value?: number, currency?: string): Promise<void>;
235
+ static trackInitiateCheckout(value: number, currency?: string, numItems?: number, productIds?: string[]): Promise<void>;
236
+ static trackCompleteRegistration(method?: string): Promise<void>;
237
+ static trackSearch(query: string, resultIds?: string[]): Promise<void>;
238
+ static trackLead(value?: number, currency?: string): Promise<void>;
239
+ static trackAddPaymentInfo(success?: boolean): Promise<void>;
240
+ static getDeferredAttributionData(): DeferredDeepLinkResult | null;
241
+ static getPlatformIntegrationStatus(): {
242
+ meta: boolean;
243
+ tiktok: boolean;
244
+ appleSearchAds: boolean;
245
+ };
246
+ static getAppleSearchAdsAttribution(): AppleSearchAdsAttribution | null;
247
+ static updateTrackingAuthorization(enabled: boolean): Promise<void>;
178
248
  }
179
249
  export default datalyr;