@ezoic/react-native-sdk 1.0.0 → 1.2.0

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.
@@ -1,17 +1,47 @@
1
1
  #import "EzoicReactNativeSdk.h"
2
2
  #import <EzoicReactNativeSdk/EzoicReactNativeSdk-Swift.h>
3
3
 
4
+ static NSString *const kEzoicRewardedEvent = @"EzoicRewardedAdEvent";
5
+ static NSString *const kEzoicInterstitialEvent = @"EzoicInterstitialAdEvent";
6
+
4
7
  @implementation EzoicReactNativeSdk {
5
8
  EzoicAdsImpl *_impl;
9
+ BOOL _hasListeners;
6
10
  }
7
11
 
8
12
  - (instancetype)init {
9
13
  if (self = [super init]) {
10
14
  _impl = [EzoicAdsImpl new];
15
+ __weak __typeof(self) weakSelf = self;
16
+ // The Swift impl invokes this for every rewarded lifecycle signal; forward
17
+ // to JS through RCTEventEmitter (guarded by an active-listener check so we
18
+ // don't log the "no listeners" warning when nothing is subscribed).
19
+ _impl.eventEmitter = ^(NSString *name, NSDictionary *body) {
20
+ __typeof(self) strongSelf = weakSelf;
21
+ if (strongSelf != nil && strongSelf->_hasListeners) {
22
+ [strongSelf sendEventWithName:name body:body];
23
+ }
24
+ };
11
25
  }
12
26
  return self;
13
27
  }
14
28
 
29
+ + (BOOL)requiresMainQueueSetup {
30
+ return NO;
31
+ }
32
+
33
+ - (NSArray<NSString *> *)supportedEvents {
34
+ return @[ kEzoicRewardedEvent, kEzoicInterstitialEvent ];
35
+ }
36
+
37
+ - (void)startObserving {
38
+ _hasListeners = YES;
39
+ }
40
+
41
+ - (void)stopObserving {
42
+ _hasListeners = NO;
43
+ }
44
+
15
45
  - (void)initialize:(JS::NativeEzoicAds::EzoicConfig &)config
16
46
  resolve:(RCTPromiseResolveBlock)resolve
17
47
  reject:(RCTPromiseRejectBlock)reject {
@@ -43,6 +73,38 @@
43
73
  [_impl trackPageview:^(id _Nullable v) { resolve(v); }];
44
74
  }
45
75
 
76
+ - (void)loadRewardedAd:(NSString *)adUnitIdentifier
77
+ resolve:(RCTPromiseResolveBlock)resolve
78
+ reject:(RCTPromiseRejectBlock)reject {
79
+ [_impl loadRewardedAd:adUnitIdentifier
80
+ resolve:^(id _Nullable v) { resolve(v); }
81
+ reject:^(NSString *code, NSString *msg, NSError *_Nullable e) { reject(code, msg, e); }];
82
+ }
83
+
84
+ - (void)showRewardedAd:(NSString *)adUnitIdentifier
85
+ resolve:(RCTPromiseResolveBlock)resolve
86
+ reject:(RCTPromiseRejectBlock)reject {
87
+ [_impl showRewardedAd:adUnitIdentifier
88
+ resolve:^(id _Nullable v) { resolve(v); }
89
+ reject:^(NSString *code, NSString *msg, NSError *_Nullable e) { reject(code, msg, e); }];
90
+ }
91
+
92
+ - (void)loadInterstitialAd:(NSString *)adUnitIdentifier
93
+ resolve:(RCTPromiseResolveBlock)resolve
94
+ reject:(RCTPromiseRejectBlock)reject {
95
+ [_impl loadInterstitialAd:adUnitIdentifier
96
+ resolve:^(id _Nullable v) { resolve(v); }
97
+ reject:^(NSString *code, NSString *msg, NSError *_Nullable e) { reject(code, msg, e); }];
98
+ }
99
+
100
+ - (void)showInterstitialAd:(NSString *)adUnitIdentifier
101
+ resolve:(RCTPromiseResolveBlock)resolve
102
+ reject:(RCTPromiseRejectBlock)reject {
103
+ [_impl showInterstitialAd:adUnitIdentifier
104
+ resolve:^(id _Nullable v) { resolve(v); }
105
+ reject:^(NSString *code, NSString *msg, NSError *_Nullable e) { reject(code, msg, e); }];
106
+ }
107
+
46
108
  - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
47
109
  (const facebook::react::ObjCTurboModule::InitParams &)params {
48
110
  return std::make_shared<facebook::react::NativeEzoicAdsSpecJSI>(params);
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ import { NativeEventEmitter } from 'react-native';
4
+ import NativeEzoicAds from "./NativeEzoicAds.js";
5
+ import { coerceAdUnitId } from "./helpers.js";
6
+
7
+ /** Lifecycle callbacks for an interstitial ad. All are optional. */
8
+
9
+ /** The single native event name carrying every interstitial lifecycle signal. */
10
+ const INTERSTITIAL_EVENT = 'EzoicInterstitialAdEvent';
11
+ // A single shared emitter is sufficient — events are routed to the right
12
+ // instance by adUnitIdentifier below.
13
+ const emitter = new NativeEventEmitter(NativeEzoicAds);
14
+
15
+ /**
16
+ * An interstitial ad. Use the static `load` to fetch an ad ahead of time, then
17
+ * call `show()` to present it full-screen at a natural transition point.
18
+ * Interstitials carry no reward.
19
+ *
20
+ * ```ts
21
+ * const ad = await EzoicInterstitialAd.load('12345');
22
+ * ad.setListeners({ onDismissed: () => console.log('closed') });
23
+ * await ad.show();
24
+ * ```
25
+ *
26
+ * Mirrors the native `EzoicInterstitialAd` load/show lifecycle on both
27
+ * platforms. Interstitial ads are single-use — load a new one for the next
28
+ * opportunity.
29
+ */
30
+ export class EzoicInterstitialAd {
31
+ /** The Ezoic ad unit identifier this ad was loaded for. */
32
+
33
+ listeners = {};
34
+ subscription = null;
35
+ constructor(adUnitIdentifier) {
36
+ this.adUnitIdentifier = adUnitIdentifier;
37
+ this.subscription = emitter.addListener(INTERSTITIAL_EVENT, raw => {
38
+ const event = raw;
39
+ if (event.adUnitIdentifier !== this.adUnitIdentifier) return;
40
+ this.handleEvent(event);
41
+ });
42
+ }
43
+
44
+ /**
45
+ * Loads an interstitial ad for the given Ezoic ad unit identifier. Resolves
46
+ * with a ready-to-show `EzoicInterstitialAd`, or rejects if no ad could be
47
+ * loaded.
48
+ */
49
+ static async load(adUnitIdentifier) {
50
+ const id = coerceAdUnitId(adUnitIdentifier);
51
+ const ad = new EzoicInterstitialAd(id);
52
+ try {
53
+ await NativeEzoicAds.loadInterstitialAd(id);
54
+ return ad;
55
+ } catch (error) {
56
+ ad.destroy();
57
+ throw error;
58
+ }
59
+ }
60
+
61
+ /** Registers lifecycle callbacks. Replaces any previously set listeners. */
62
+ setListeners(listeners) {
63
+ this.listeners = listeners;
64
+ }
65
+
66
+ /**
67
+ * Presents the interstitial ad full-screen. Resolves when the ad is
68
+ * dismissed. Rejects if the ad was not ready (load first) or failed to
69
+ * present.
70
+ */
71
+ async show() {
72
+ await NativeEzoicAds.showInterstitialAd(this.adUnitIdentifier);
73
+ }
74
+
75
+ /** Releases the event subscription. Safe to call multiple times. */
76
+ destroy() {
77
+ this.subscription?.remove();
78
+ this.subscription = null;
79
+ this.listeners = {};
80
+ }
81
+ handleEvent(event) {
82
+ switch (event.type) {
83
+ case 'shown':
84
+ this.listeners.onShown?.();
85
+ break;
86
+ case 'failedToShow':
87
+ this.listeners.onFailedToShow?.({
88
+ message: event.message ?? '',
89
+ code: event.code
90
+ });
91
+ // Failure to show is terminal — the native ad is single-use.
92
+ this.destroy();
93
+ break;
94
+ case 'impression':
95
+ this.listeners.onImpression?.();
96
+ break;
97
+ case 'clicked':
98
+ this.listeners.onClicked?.();
99
+ break;
100
+ case 'dismissed':
101
+ this.listeners.onDismissed?.();
102
+ // Dismissal is terminal — the native ad is single-use.
103
+ this.destroy();
104
+ break;
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=EzoicInterstitialAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","NativeEzoicAds","coerceAdUnitId","INTERSTITIAL_EVENT","emitter","EzoicInterstitialAd","listeners","subscription","constructor","adUnitIdentifier","addListener","raw","event","handleEvent","load","id","ad","loadInterstitialAd","error","destroy","setListeners","show","showInterstitialAd","remove","type","onShown","onFailedToShow","message","code","onImpression","onClicked","onDismissed"],"sourceRoot":"../../src","sources":["EzoicInterstitialAd.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAkC,cAAc;AAC3E,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,SAASC,cAAc,QAAQ,cAAW;;AAE1C;;AASA;AACA,MAAMC,kBAAkB,GAAG,0BAA0B;AASrD;AACA;AACA,MAAMC,OAAO,GAAG,IAAIJ,kBAAkB,CAACC,cAAuB,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,mBAAmB,CAAC;EAC/B;;EAGQC,SAAS,GAAiC,CAAC,CAAC;EAC5CC,YAAY,GAA+B,IAAI;EAE/CC,WAAWA,CAACC,gBAAwB,EAAE;IAC5C,IAAI,CAACA,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACF,YAAY,GAAGH,OAAO,CAACM,WAAW,CACrCP,kBAAkB,EACjBQ,GAAY,IAAK;MAChB,MAAMC,KAAK,GAAGD,GAA8B;MAC5C,IAAIC,KAAK,CAACH,gBAAgB,KAAK,IAAI,CAACA,gBAAgB,EAAE;MACtD,IAAI,CAACI,WAAW,CAACD,KAAK,CAAC;IACzB,CACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACE,aAAaE,IAAIA,CAACL,gBAAwB,EAAgC;IACxE,MAAMM,EAAE,GAAGb,cAAc,CAACO,gBAAgB,CAAC;IAC3C,MAAMO,EAAE,GAAG,IAAIX,mBAAmB,CAACU,EAAE,CAAC;IACtC,IAAI;MACF,MAAMd,cAAc,CAACgB,kBAAkB,CAACF,EAAE,CAAC;MAC3C,OAAOC,EAAE;IACX,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdF,EAAE,CAACG,OAAO,CAAC,CAAC;MACZ,MAAMD,KAAK;IACb;EACF;;EAEA;EACAE,YAAYA,CAACd,SAAuC,EAAQ;IAC1D,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC5B;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMe,IAAIA,CAAA,EAAkB;IAC1B,MAAMpB,cAAc,CAACqB,kBAAkB,CAAC,IAAI,CAACb,gBAAgB,CAAC;EAChE;;EAEA;EACAU,OAAOA,CAAA,EAAS;IACd,IAAI,CAACZ,YAAY,EAAEgB,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAChB,YAAY,GAAG,IAAI;IACxB,IAAI,CAACD,SAAS,GAAG,CAAC,CAAC;EACrB;EAEQO,WAAWA,CAACD,KAA8B,EAAQ;IACxD,QAAQA,KAAK,CAACY,IAAI;MAChB,KAAK,OAAO;QACV,IAAI,CAAClB,SAAS,CAACmB,OAAO,GAAG,CAAC;QAC1B;MACF,KAAK,cAAc;QACjB,IAAI,CAACnB,SAAS,CAACoB,cAAc,GAAG;UAC9BC,OAAO,EAAEf,KAAK,CAACe,OAAO,IAAI,EAAE;UAC5BC,IAAI,EAAEhB,KAAK,CAACgB;QACd,CAAC,CAAC;QACF;QACA,IAAI,CAACT,OAAO,CAAC,CAAC;QACd;MACF,KAAK,YAAY;QACf,IAAI,CAACb,SAAS,CAACuB,YAAY,GAAG,CAAC;QAC/B;MACF,KAAK,SAAS;QACZ,IAAI,CAACvB,SAAS,CAACwB,SAAS,GAAG,CAAC;QAC5B;MACF,KAAK,WAAW;QACd,IAAI,CAACxB,SAAS,CAACyB,WAAW,GAAG,CAAC;QAC9B;QACA,IAAI,CAACZ,OAAO,CAAC,CAAC;QACd;IACJ;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ import { NativeEventEmitter } from 'react-native';
4
+ import NativeEzoicAds from "./NativeEzoicAds.js";
5
+ import { coerceAdUnitId, mapRewardResult } from "./helpers.js";
6
+
7
+ /** A reward earned by the user for completing a rewarded ad. */
8
+
9
+ /** Lifecycle callbacks for a rewarded ad. All are optional. */
10
+
11
+ /** The single native event name carrying every rewarded lifecycle signal. */
12
+ const REWARDED_EVENT = 'EzoicRewardedAdEvent';
13
+ // A single shared emitter is sufficient — events are routed to the right
14
+ // instance by adUnitIdentifier below.
15
+ const emitter = new NativeEventEmitter(NativeEzoicAds);
16
+
17
+ /**
18
+ * A rewarded ad. Use the static `load` to fetch an ad ahead of time, then call
19
+ * `show()` to present it and grant the reward when the user finishes watching.
20
+ *
21
+ * ```ts
22
+ * const ad = await EzoicRewardedAd.load('12345');
23
+ * ad.setListeners({ onDismissed: () => console.log('closed') });
24
+ * const reward = await ad.show();
25
+ * if (reward) grantReward(reward.amount);
26
+ * ```
27
+ *
28
+ * Mirrors the native `EzoicRewardedAd` load/show lifecycle on both platforms.
29
+ * Rewarded ads are single-use — load a new one for the next opportunity.
30
+ */
31
+ export class EzoicRewardedAd {
32
+ /** The Ezoic ad unit identifier this ad was loaded for. */
33
+
34
+ listeners = {};
35
+ subscription = null;
36
+ constructor(adUnitIdentifier) {
37
+ this.adUnitIdentifier = adUnitIdentifier;
38
+ this.subscription = emitter.addListener(REWARDED_EVENT, raw => {
39
+ const event = raw;
40
+ if (event.adUnitIdentifier !== this.adUnitIdentifier) return;
41
+ this.handleEvent(event);
42
+ });
43
+ }
44
+
45
+ /**
46
+ * Loads a rewarded ad for the given Ezoic ad unit identifier. Resolves with
47
+ * a ready-to-show `EzoicRewardedAd`, or rejects if no ad could be loaded.
48
+ */
49
+ static async load(adUnitIdentifier) {
50
+ const id = coerceAdUnitId(adUnitIdentifier);
51
+ const ad = new EzoicRewardedAd(id);
52
+ try {
53
+ await NativeEzoicAds.loadRewardedAd(id);
54
+ return ad;
55
+ } catch (error) {
56
+ ad.destroy();
57
+ throw error;
58
+ }
59
+ }
60
+
61
+ /** Registers lifecycle callbacks. Replaces any previously set listeners. */
62
+ setListeners(listeners) {
63
+ this.listeners = listeners;
64
+ }
65
+
66
+ /**
67
+ * Presents the rewarded ad full-screen. Resolves with the earned reward, or
68
+ * `null` if the ad was dismissed before the reward was earned. Rejects if the
69
+ * ad was not ready (load first) or failed to present.
70
+ */
71
+ async show() {
72
+ const result = await NativeEzoicAds.showRewardedAd(this.adUnitIdentifier);
73
+ return mapRewardResult(result);
74
+ }
75
+
76
+ /** Releases the event subscription. Safe to call multiple times. */
77
+ destroy() {
78
+ this.subscription?.remove();
79
+ this.subscription = null;
80
+ this.listeners = {};
81
+ }
82
+ handleEvent(event) {
83
+ switch (event.type) {
84
+ case 'shown':
85
+ this.listeners.onShown?.();
86
+ break;
87
+ case 'failedToShow':
88
+ this.listeners.onFailedToShow?.({
89
+ message: event.message ?? '',
90
+ code: event.code
91
+ });
92
+ // Failure to show is terminal — the native ad is single-use.
93
+ this.destroy();
94
+ break;
95
+ case 'impression':
96
+ this.listeners.onImpression?.();
97
+ break;
98
+ case 'clicked':
99
+ this.listeners.onClicked?.();
100
+ break;
101
+ case 'reward':
102
+ this.listeners.onUserEarnedReward?.({
103
+ type: event.rewardType ?? '',
104
+ amount: event.rewardAmount ?? 0
105
+ });
106
+ break;
107
+ case 'dismissed':
108
+ this.listeners.onDismissed?.();
109
+ // Dismissal is terminal — the native ad is single-use.
110
+ this.destroy();
111
+ break;
112
+ }
113
+ }
114
+ }
115
+ //# sourceMappingURL=EzoicRewardedAd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","NativeEzoicAds","coerceAdUnitId","mapRewardResult","REWARDED_EVENT","emitter","EzoicRewardedAd","listeners","subscription","constructor","adUnitIdentifier","addListener","raw","event","handleEvent","load","id","ad","loadRewardedAd","error","destroy","setListeners","show","result","showRewardedAd","remove","type","onShown","onFailedToShow","message","code","onImpression","onClicked","onUserEarnedReward","rewardType","amount","rewardAmount","onDismissed"],"sourceRoot":"../../src","sources":["EzoicRewardedAd.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAkC,cAAc;AAC3E,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,SAASC,cAAc,EAAEC,eAAe,QAAQ,cAAW;;AAE3D;;AAMA;;AAUA;AACA,MAAMC,cAAc,GAAG,sBAAsB;AAiB7C;AACA;AACA,MAAMC,OAAO,GAAG,IAAIL,kBAAkB,CAACC,cAAuB,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,eAAe,CAAC;EAC3B;;EAGQC,SAAS,GAA6B,CAAC,CAAC;EACxCC,YAAY,GAA+B,IAAI;EAE/CC,WAAWA,CAACC,gBAAwB,EAAE;IAC5C,IAAI,CAACA,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACF,YAAY,GAAGH,OAAO,CAACM,WAAW,CAACP,cAAc,EAAGQ,GAAY,IAAK;MACxE,MAAMC,KAAK,GAAGD,GAA0B;MACxC,IAAIC,KAAK,CAACH,gBAAgB,KAAK,IAAI,CAACA,gBAAgB,EAAE;MACtD,IAAI,CAACI,WAAW,CAACD,KAAK,CAAC;IACzB,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACE,aAAaE,IAAIA,CAACL,gBAAwB,EAA4B;IACpE,MAAMM,EAAE,GAAGd,cAAc,CAACQ,gBAAgB,CAAC;IAC3C,MAAMO,EAAE,GAAG,IAAIX,eAAe,CAACU,EAAE,CAAC;IAClC,IAAI;MACF,MAAMf,cAAc,CAACiB,cAAc,CAACF,EAAE,CAAC;MACvC,OAAOC,EAAE;IACX,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdF,EAAE,CAACG,OAAO,CAAC,CAAC;MACZ,MAAMD,KAAK;IACb;EACF;;EAEA;EACAE,YAAYA,CAACd,SAAmC,EAAQ;IACtD,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC5B;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMe,IAAIA,CAAA,EAAgC;IACxC,MAAMC,MAAM,GAAG,MAAMtB,cAAc,CAACuB,cAAc,CAAC,IAAI,CAACd,gBAAgB,CAAC;IACzE,OAAOP,eAAe,CAACoB,MAAM,CAAC;EAChC;;EAEA;EACAH,OAAOA,CAAA,EAAS;IACd,IAAI,CAACZ,YAAY,EAAEiB,MAAM,CAAC,CAAC;IAC3B,IAAI,CAACjB,YAAY,GAAG,IAAI;IACxB,IAAI,CAACD,SAAS,GAAG,CAAC,CAAC;EACrB;EAEQO,WAAWA,CAACD,KAA0B,EAAQ;IACpD,QAAQA,KAAK,CAACa,IAAI;MAChB,KAAK,OAAO;QACV,IAAI,CAACnB,SAAS,CAACoB,OAAO,GAAG,CAAC;QAC1B;MACF,KAAK,cAAc;QACjB,IAAI,CAACpB,SAAS,CAACqB,cAAc,GAAG;UAC9BC,OAAO,EAAEhB,KAAK,CAACgB,OAAO,IAAI,EAAE;UAC5BC,IAAI,EAAEjB,KAAK,CAACiB;QACd,CAAC,CAAC;QACF;QACA,IAAI,CAACV,OAAO,CAAC,CAAC;QACd;MACF,KAAK,YAAY;QACf,IAAI,CAACb,SAAS,CAACwB,YAAY,GAAG,CAAC;QAC/B;MACF,KAAK,SAAS;QACZ,IAAI,CAACxB,SAAS,CAACyB,SAAS,GAAG,CAAC;QAC5B;MACF,KAAK,QAAQ;QACX,IAAI,CAACzB,SAAS,CAAC0B,kBAAkB,GAAG;UAClCP,IAAI,EAAEb,KAAK,CAACqB,UAAU,IAAI,EAAE;UAC5BC,MAAM,EAAEtB,KAAK,CAACuB,YAAY,IAAI;QAChC,CAAC,CAAC;QACF;MACF,KAAK,WAAW;QACd,IAAI,CAAC7B,SAAS,CAAC8B,WAAW,GAAG,CAAC;QAC9B;QACA,IAAI,CAACjB,OAAO,CAAC,CAAC;QACd;IACJ;EACF;AACF","ignoreList":[]}
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  import { TurboModuleRegistry } from 'react-native';
4
+
5
+ /**
6
+ * Result of `showRewardedAd`. `earned` is true when the user completed the ad
7
+ * and earned the reward; `type`/`amount` describe the granted reward (empty/0
8
+ * when the ad was dismissed without earning). The public `EzoicRewardedAd.show`
9
+ * maps this to `EzoicReward | null`.
10
+ */
11
+
4
12
  export default TurboModuleRegistry.getEnforcing('EzoicReactNativeSdk');
5
13
  //# sourceMappingURL=NativeEzoicAds.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeEzoicAds.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAmBlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,qBAAqB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeEzoicAds.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAWlD;AACA;AACA;AACA;AACA;AACA;;AAsBA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,qBAAqB,CAAC","ignoreList":[]}
@@ -21,4 +21,17 @@ export function normalizeSize(size) {
21
21
  export function coerceAdUnitId(adUnitIdentifier) {
22
22
  return String(adUnitIdentifier);
23
23
  }
24
+ /**
25
+ * Maps the native `showRewardedAd` result to the public reward shape: the
26
+ * `{ type, amount }` reward when earned, otherwise `null` (dismissed unearned).
27
+ */
28
+ export function mapRewardResult(result) {
29
+ if (result && result.earned) {
30
+ return {
31
+ type: result.type,
32
+ amount: result.amount
33
+ };
34
+ }
35
+ return null;
36
+ }
24
37
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["normalizeConfig","config","domain","Error","out","autoReadConsent","undefined","subjectToCOPPA","requestATTBeforeAds","debugEnabled","testMode","normalizeSize","size","split","map","s","trim","filter","length","join","coerceAdUnitId","adUnitIdentifier","String"],"sourceRoot":"../../src","sources":["helpers.ts"],"mappings":";;AAEA,OAAO,SAASA,eAAeA,CAACC,MAAmB,EAAe;EAChE,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACC,MAAM,EAAE;IAC7B,MAAM,IAAIC,KAAK,CAAC,oDAAoD,CAAC;EACvE;EACA,MAAMC,GAAgB,GAAG;IAAEF,MAAM,EAAED,MAAM,CAACC;EAAO,CAAC;EAClD,IAAID,MAAM,CAACI,eAAe,KAAKC,SAAS,EACtCF,GAAG,CAACC,eAAe,GAAGJ,MAAM,CAACI,eAAe;EAC9C,IAAIJ,MAAM,CAACM,cAAc,KAAKD,SAAS,EACrCF,GAAG,CAACG,cAAc,GAAGN,MAAM,CAACM,cAAc;EAC5C,IAAIN,MAAM,CAACO,mBAAmB,KAAKF,SAAS,EAC1CF,GAAG,CAACI,mBAAmB,GAAGP,MAAM,CAACO,mBAAmB;EACtD,IAAIP,MAAM,CAACQ,YAAY,KAAKH,SAAS,EAAEF,GAAG,CAACK,YAAY,GAAGR,MAAM,CAACQ,YAAY;EAC7E,IAAIR,MAAM,CAACS,QAAQ,KAAKJ,SAAS,EAAEF,GAAG,CAACM,QAAQ,GAAGT,MAAM,CAACS,QAAQ;EACjE,OAAON,GAAG;AACZ;AAEA,OAAO,SAASO,aAAaA,CAACC,IAAwB,EAAU;EAC9D,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,OAAOA,IAAI,CACRC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CACpBC,MAAM,CAAEF,CAAC,IAAKA,CAAC,CAACG,MAAM,GAAG,CAAC,CAAC,CAC3BC,IAAI,CAAC,GAAG,CAAC;AACd;AAEA,OAAO,SAASC,cAAcA,CAACC,gBAAwB,EAAU;EAC/D,OAAOC,MAAM,CAACD,gBAAgB,CAAC;AACjC","ignoreList":[]}
1
+ {"version":3,"names":["normalizeConfig","config","domain","Error","out","autoReadConsent","undefined","subjectToCOPPA","requestATTBeforeAds","debugEnabled","testMode","normalizeSize","size","split","map","s","trim","filter","length","join","coerceAdUnitId","adUnitIdentifier","String","mapRewardResult","result","earned","type","amount"],"sourceRoot":"../../src","sources":["helpers.ts"],"mappings":";;AAEA,OAAO,SAASA,eAAeA,CAACC,MAAmB,EAAe;EAChE,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACC,MAAM,EAAE;IAC7B,MAAM,IAAIC,KAAK,CAAC,oDAAoD,CAAC;EACvE;EACA,MAAMC,GAAgB,GAAG;IAAEF,MAAM,EAAED,MAAM,CAACC;EAAO,CAAC;EAClD,IAAID,MAAM,CAACI,eAAe,KAAKC,SAAS,EACtCF,GAAG,CAACC,eAAe,GAAGJ,MAAM,CAACI,eAAe;EAC9C,IAAIJ,MAAM,CAACM,cAAc,KAAKD,SAAS,EACrCF,GAAG,CAACG,cAAc,GAAGN,MAAM,CAACM,cAAc;EAC5C,IAAIN,MAAM,CAACO,mBAAmB,KAAKF,SAAS,EAC1CF,GAAG,CAACI,mBAAmB,GAAGP,MAAM,CAACO,mBAAmB;EACtD,IAAIP,MAAM,CAACQ,YAAY,KAAKH,SAAS,EAAEF,GAAG,CAACK,YAAY,GAAGR,MAAM,CAACQ,YAAY;EAC7E,IAAIR,MAAM,CAACS,QAAQ,KAAKJ,SAAS,EAAEF,GAAG,CAACM,QAAQ,GAAGT,MAAM,CAACS,QAAQ;EACjE,OAAON,GAAG;AACZ;AAEA,OAAO,SAASO,aAAaA,CAACC,IAAwB,EAAU;EAC9D,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,OAAOA,IAAI,CACRC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CACpBC,MAAM,CAAEF,CAAC,IAAKA,CAAC,CAACG,MAAM,GAAG,CAAC,CAAC,CAC3BC,IAAI,CAAC,GAAG,CAAC;AACd;AAEA,OAAO,SAASC,cAAcA,CAACC,gBAAwB,EAAU;EAC/D,OAAOC,MAAM,CAACD,gBAAgB,CAAC;AACjC;AAQA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAC7BC,MAA2C,EACF;EACzC,IAAIA,MAAM,IAAIA,MAAM,CAACC,MAAM,EAAE;IAC3B,OAAO;MAAEC,IAAI,EAAEF,MAAM,CAACE,IAAI;MAAEC,MAAM,EAAEH,MAAM,CAACG;IAAO,CAAC;EACrD;EACA,OAAO,IAAI;AACb","ignoreList":[]}
@@ -4,6 +4,8 @@ import NativeEzoicAds from "./NativeEzoicAds.js";
4
4
  import EzoicBannerNative from './EzoicBannerViewNativeComponent';
5
5
  import { coerceAdUnitId, normalizeConfig, normalizeSize } from "./helpers.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
+ export { EzoicRewardedAd } from "./EzoicRewardedAd.js";
8
+ export { EzoicInterstitialAd } from "./EzoicInterstitialAd.js";
7
9
  export const EzoicAds = {
8
10
  initialize(config) {
9
11
  return NativeEzoicAds.initialize(normalizeConfig(config));
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEzoicAds","EzoicBannerNative","coerceAdUnitId","normalizeConfig","normalizeSize","jsx","_jsx","EzoicAds","initialize","config","setGDPRConsent","applies","consentString","setGPPConsent","gppString","sectionIds","setSubjectToCOPPA","value","trackPageview","EzoicBannerView","props","adUnitIdentifier","size","onLoad","onError","onImpression","onClick","onOpen","onClose","rest","undefined","e","nativeEvent","onAdClick"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AACA,OAAOA,cAAc,MAA4B,qBAAkB;AACnE,OAAOC,iBAAiB,MAAM,kCAAkC;AAChE,SAASC,cAAc,EAAEC,eAAe,EAAEC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI3E,OAAO,MAAMC,QAAQ,GAAG;EACtBC,UAAUA,CAACC,MAAmB,EAAiB;IAC7C,OAAOT,cAAc,CAACQ,UAAU,CAACL,eAAe,CAACM,MAAM,CAAC,CAAC;EAC3D,CAAC;EACDC,cAAcA,CAACC,OAAgB,EAAEC,aAAsB,EAAQ;IAC7DZ,cAAc,CAACU,cAAc,CAACC,OAAO,EAAEC,aAAa,CAAC;EACvD,CAAC;EACDC,aAAaA,CAACC,SAAkB,EAAEC,UAAmB,EAAQ;IAC3Df,cAAc,CAACa,aAAa,CAACC,SAAS,EAAEC,UAAU,CAAC;EACrD,CAAC;EACDC,iBAAiBA,CAACC,KAAc,EAAQ;IACtCjB,cAAc,CAACgB,iBAAiB,CAACC,KAAK,CAAC;EACzC,CAAC;EACDC,aAAaA,CAAA,EAAqB;IAChC,OAAOlB,cAAc,CAACkB,aAAa,CAAC,CAAC;EACvC;AACF,CAAC;AAmBD,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAE;EAC3D,MAAM;IACJC,gBAAgB;IAChBC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,OAAO;IACPC,MAAM;IACNC,OAAO;IACP,GAAGC;EACL,CAAC,GAAGT,KAAK;EACT,oBACEd,IAAA,CAACL,iBAAiB;IAAA,GACZ4B,IAAI;IACRR,gBAAgB,EAAEnB,cAAc,CAACmB,gBAAgB,CAAE;IACnDC,IAAI,EAAElB,aAAa,CAACkB,IAAI,CAAE;IAC1BC,MAAM,EAAEA,MAAM,GAAG,MAAMA,MAAM,CAAC,CAAC,GAAGO,SAAU;IAC5CN,OAAO,EAAEA,OAAO,GAAIO,CAAC,IAAKP,OAAO,CAACO,CAAC,CAACC,WAAW,CAAC,GAAGF,SAAU;IAC7DL,YAAY,EAAEA,YAAY,GAAG,MAAMA,YAAY,CAAC,CAAC,GAAGK,SAAU;IAC9DG,SAAS,EAAEP,OAAO,GAAG,MAAMA,OAAO,CAAC,CAAC,GAAGI,SAAU;IACjDH,MAAM,EAAEA,MAAM,GAAG,MAAMA,MAAM,CAAC,CAAC,GAAGG,SAAU;IAC5CF,OAAO,EAAEA,OAAO,GAAG,MAAMA,OAAO,CAAC,CAAC,GAAGE;EAAU,CAChD,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"names":["NativeEzoicAds","EzoicBannerNative","coerceAdUnitId","normalizeConfig","normalizeSize","jsx","_jsx","EzoicRewardedAd","EzoicInterstitialAd","EzoicAds","initialize","config","setGDPRConsent","applies","consentString","setGPPConsent","gppString","sectionIds","setSubjectToCOPPA","value","trackPageview","EzoicBannerView","props","adUnitIdentifier","size","onLoad","onError","onImpression","onClick","onOpen","onClose","rest","undefined","e","nativeEvent","onAdClick"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AACA,OAAOA,cAAc,MAA4B,qBAAkB;AACnE,OAAOC,iBAAiB,MAAM,kCAAkC;AAChE,SAASC,cAAc,EAAEC,eAAe,EAAEC,aAAa,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG3E,SACEC,eAAe,QAGV,sBAAmB;AAC1B,SACEC,mBAAmB,QAEd,0BAAuB;AAE9B,OAAO,MAAMC,QAAQ,GAAG;EACtBC,UAAUA,CAACC,MAAmB,EAAiB;IAC7C,OAAOX,cAAc,CAACU,UAAU,CAACP,eAAe,CAACQ,MAAM,CAAC,CAAC;EAC3D,CAAC;EACDC,cAAcA,CAACC,OAAgB,EAAEC,aAAsB,EAAQ;IAC7Dd,cAAc,CAACY,cAAc,CAACC,OAAO,EAAEC,aAAa,CAAC;EACvD,CAAC;EACDC,aAAaA,CAACC,SAAkB,EAAEC,UAAmB,EAAQ;IAC3DjB,cAAc,CAACe,aAAa,CAACC,SAAS,EAAEC,UAAU,CAAC;EACrD,CAAC;EACDC,iBAAiBA,CAACC,KAAc,EAAQ;IACtCnB,cAAc,CAACkB,iBAAiB,CAACC,KAAK,CAAC;EACzC,CAAC;EACDC,aAAaA,CAAA,EAAqB;IAChC,OAAOpB,cAAc,CAACoB,aAAa,CAAC,CAAC;EACvC;AACF,CAAC;AAmBD,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAE;EAC3D,MAAM;IACJC,gBAAgB;IAChBC,IAAI;IACJC,MAAM;IACNC,OAAO;IACPC,YAAY;IACZC,OAAO;IACPC,MAAM;IACNC,OAAO;IACP,GAAGC;EACL,CAAC,GAAGT,KAAK;EACT,oBACEhB,IAAA,CAACL,iBAAiB;IAAA,GACZ8B,IAAI;IACRR,gBAAgB,EAAErB,cAAc,CAACqB,gBAAgB,CAAE;IACnDC,IAAI,EAAEpB,aAAa,CAACoB,IAAI,CAAE;IAC1BC,MAAM,EAAEA,MAAM,GAAG,MAAMA,MAAM,CAAC,CAAC,GAAGO,SAAU;IAC5CN,OAAO,EAAEA,OAAO,GAAIO,CAAC,IAAKP,OAAO,CAACO,CAAC,CAACC,WAAW,CAAC,GAAGF,SAAU;IAC7DL,YAAY,EAAEA,YAAY,GAAG,MAAMA,YAAY,CAAC,CAAC,GAAGK,SAAU;IAC9DG,SAAS,EAAEP,OAAO,GAAG,MAAMA,OAAO,CAAC,CAAC,GAAGI,SAAU;IACjDH,MAAM,EAAEA,MAAM,GAAG,MAAMA,MAAM,CAAC,CAAC,GAAGG,SAAU;IAC5CF,OAAO,EAAEA,OAAO,GAAG,MAAMA,OAAO,CAAC,CAAC,GAAGE;EAAU,CAChD,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ /** Lifecycle callbacks for an interstitial ad. All are optional. */
2
+ export interface EzoicInterstitialAdListeners {
3
+ onShown?: () => void;
4
+ onFailedToShow?: (error: {
5
+ message: string;
6
+ code?: number;
7
+ }) => void;
8
+ onImpression?: () => void;
9
+ onClicked?: () => void;
10
+ onDismissed?: () => void;
11
+ }
12
+ /**
13
+ * An interstitial ad. Use the static `load` to fetch an ad ahead of time, then
14
+ * call `show()` to present it full-screen at a natural transition point.
15
+ * Interstitials carry no reward.
16
+ *
17
+ * ```ts
18
+ * const ad = await EzoicInterstitialAd.load('12345');
19
+ * ad.setListeners({ onDismissed: () => console.log('closed') });
20
+ * await ad.show();
21
+ * ```
22
+ *
23
+ * Mirrors the native `EzoicInterstitialAd` load/show lifecycle on both
24
+ * platforms. Interstitial ads are single-use — load a new one for the next
25
+ * opportunity.
26
+ */
27
+ export declare class EzoicInterstitialAd {
28
+ /** The Ezoic ad unit identifier this ad was loaded for. */
29
+ readonly adUnitIdentifier: string;
30
+ private listeners;
31
+ private subscription;
32
+ private constructor();
33
+ /**
34
+ * Loads an interstitial ad for the given Ezoic ad unit identifier. Resolves
35
+ * with a ready-to-show `EzoicInterstitialAd`, or rejects if no ad could be
36
+ * loaded.
37
+ */
38
+ static load(adUnitIdentifier: string): Promise<EzoicInterstitialAd>;
39
+ /** Registers lifecycle callbacks. Replaces any previously set listeners. */
40
+ setListeners(listeners: EzoicInterstitialAdListeners): void;
41
+ /**
42
+ * Presents the interstitial ad full-screen. Resolves when the ad is
43
+ * dismissed. Rejects if the ad was not ready (load first) or failed to
44
+ * present.
45
+ */
46
+ show(): Promise<void>;
47
+ /** Releases the event subscription. Safe to call multiple times. */
48
+ destroy(): void;
49
+ private handleEvent;
50
+ }
51
+ //# sourceMappingURL=EzoicInterstitialAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EzoicInterstitialAd.d.ts","sourceRoot":"","sources":["../../../src/EzoicInterstitialAd.ts"],"names":[],"mappings":"AAIA,oEAAoE;AACpE,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAgBD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAmB;IAC9B,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO;IAYP;;;;OAIG;WACU,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAYzE,4EAA4E;IAC5E,YAAY,CAAC,SAAS,EAAE,4BAA4B,GAAG,IAAI;IAI3D;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,WAAW;CA0BpB"}
@@ -0,0 +1,55 @@
1
+ /** A reward earned by the user for completing a rewarded ad. */
2
+ export interface EzoicReward {
3
+ type: string;
4
+ amount: number;
5
+ }
6
+ /** Lifecycle callbacks for a rewarded ad. All are optional. */
7
+ export interface EzoicRewardedAdListeners {
8
+ onShown?: () => void;
9
+ onFailedToShow?: (error: {
10
+ message: string;
11
+ code?: number;
12
+ }) => void;
13
+ onImpression?: () => void;
14
+ onClicked?: () => void;
15
+ onDismissed?: () => void;
16
+ onUserEarnedReward?: (reward: EzoicReward) => void;
17
+ }
18
+ /**
19
+ * A rewarded ad. Use the static `load` to fetch an ad ahead of time, then call
20
+ * `show()` to present it and grant the reward when the user finishes watching.
21
+ *
22
+ * ```ts
23
+ * const ad = await EzoicRewardedAd.load('12345');
24
+ * ad.setListeners({ onDismissed: () => console.log('closed') });
25
+ * const reward = await ad.show();
26
+ * if (reward) grantReward(reward.amount);
27
+ * ```
28
+ *
29
+ * Mirrors the native `EzoicRewardedAd` load/show lifecycle on both platforms.
30
+ * Rewarded ads are single-use — load a new one for the next opportunity.
31
+ */
32
+ export declare class EzoicRewardedAd {
33
+ /** The Ezoic ad unit identifier this ad was loaded for. */
34
+ readonly adUnitIdentifier: string;
35
+ private listeners;
36
+ private subscription;
37
+ private constructor();
38
+ /**
39
+ * Loads a rewarded ad for the given Ezoic ad unit identifier. Resolves with
40
+ * a ready-to-show `EzoicRewardedAd`, or rejects if no ad could be loaded.
41
+ */
42
+ static load(adUnitIdentifier: string): Promise<EzoicRewardedAd>;
43
+ /** Registers lifecycle callbacks. Replaces any previously set listeners. */
44
+ setListeners(listeners: EzoicRewardedAdListeners): void;
45
+ /**
46
+ * Presents the rewarded ad full-screen. Resolves with the earned reward, or
47
+ * `null` if the ad was dismissed before the reward was earned. Rejects if the
48
+ * ad was not ready (load first) or failed to present.
49
+ */
50
+ show(): Promise<EzoicReward | null>;
51
+ /** Releases the event subscription. Safe to call multiple times. */
52
+ destroy(): void;
53
+ private handleEvent;
54
+ }
55
+ //# sourceMappingURL=EzoicRewardedAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EzoicRewardedAd.d.ts","sourceRoot":"","sources":["../../../src/EzoicRewardedAd.ts"],"names":[],"mappings":"AAIA,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CACpD;AAwBD;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO;IASP;;;OAGG;WACU,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAYrE,4EAA4E;IAC5E,YAAY,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI;IAIvD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKzC,oEAAoE;IACpE,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,WAAW;CAgCpB"}
@@ -7,12 +7,29 @@ export interface EzoicConfig {
7
7
  debugEnabled?: boolean;
8
8
  testMode?: boolean;
9
9
  }
10
+ /**
11
+ * Result of `showRewardedAd`. `earned` is true when the user completed the ad
12
+ * and earned the reward; `type`/`amount` describe the granted reward (empty/0
13
+ * when the ad was dismissed without earning). The public `EzoicRewardedAd.show`
14
+ * maps this to `EzoicReward | null`.
15
+ */
16
+ export interface EzoicRewardResult {
17
+ earned: boolean;
18
+ type: string;
19
+ amount: number;
20
+ }
10
21
  export interface Spec extends TurboModule {
11
22
  initialize(config: EzoicConfig): Promise<void>;
12
23
  setGDPRConsent(applies: boolean, consentString?: string): void;
13
24
  setGPPConsent(gppString?: string, sectionIds?: string): void;
14
25
  setSubjectToCOPPA(value: boolean): void;
15
26
  trackPageview(): Promise<boolean>;
27
+ loadRewardedAd(adUnitIdentifier: string): Promise<void>;
28
+ showRewardedAd(adUnitIdentifier: string): Promise<EzoicRewardResult>;
29
+ loadInterstitialAd(adUnitIdentifier: string): Promise<void>;
30
+ showInterstitialAd(adUnitIdentifier: string): Promise<void>;
31
+ addListener(eventName: string): void;
32
+ removeListeners(count: number): void;
16
33
  }
17
34
  declare const _default: Spec;
18
35
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeEzoicAds.d.ts","sourceRoot":"","sources":["../../../src/NativeEzoicAds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7D,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACnC;;AAED,wBAA6E"}
1
+ {"version":3,"file":"NativeEzoicAds.d.ts","sourceRoot":"","sources":["../../../src/NativeEzoicAds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7D,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrE,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAA6E"}
@@ -2,4 +2,17 @@ import type { EzoicConfig } from './NativeEzoicAds.js';
2
2
  export declare function normalizeConfig(config: EzoicConfig): EzoicConfig;
3
3
  export declare function normalizeSize(size: string | undefined): string;
4
4
  export declare function coerceAdUnitId(adUnitIdentifier: string): string;
5
+ export interface RewardResultLike {
6
+ earned: boolean;
7
+ type: string;
8
+ amount: number;
9
+ }
10
+ /**
11
+ * Maps the native `showRewardedAd` result to the public reward shape: the
12
+ * `{ type, amount }` reward when earned, otherwise `null` (dismissed unearned).
13
+ */
14
+ export declare function mapRewardResult(result: RewardResultLike | null | undefined): {
15
+ type: string;
16
+ amount: number;
17
+ } | null;
5
18
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAEpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAchE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO9D;AAED,wBAAgB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAEpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAchE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO9D;AAED,wBAAgB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKzC"}
@@ -1,6 +1,8 @@
1
1
  import type { StyleProp, ViewStyle } from 'react-native';
2
2
  import { type EzoicConfig } from './NativeEzoicAds.js';
3
3
  export type { EzoicConfig };
4
+ export { EzoicRewardedAd, type EzoicReward, type EzoicRewardedAdListeners, } from './EzoicRewardedAd.js';
5
+ export { EzoicInterstitialAd, type EzoicInterstitialAdListeners, } from './EzoicInterstitialAd.js';
4
6
  export declare const EzoicAds: {
5
7
  initialize(config: EzoicConfig): Promise<void>;
6
8
  setGDPRConsent(applies: boolean, consentString?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAIpE,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,eAAO,MAAM,QAAQ;uBACA,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;4BAGtB,OAAO,kBAAkB,MAAM,GAAG,IAAI;8BAGpC,MAAM,eAAe,MAAM,GAAG,IAAI;6BAGnC,OAAO,GAAG,IAAI;qBAGtB,OAAO,CAAC,OAAO,CAAC;CAGlC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,+BAyB1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAIpE,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,wBAAwB,GAC9B,MAAM,sBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,KAAK,4BAA4B,GAClC,MAAM,0BAAuB,CAAC;AAE/B,eAAO,MAAM,QAAQ;uBACA,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;4BAGtB,OAAO,kBAAkB,MAAM,GAAG,IAAI;8BAGpC,MAAM,eAAe,MAAM,GAAG,IAAI;6BAGnC,OAAO,GAAG,IAAI;qBAGtB,OAAO,CAAC,OAAO,CAAC;CAGlC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,+BAyB1D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ezoic/react-native-sdk",
3
- "version": "1.0.0",
4
- "description": "Ezoic Ads SDK for React Native (Prebid + Google Ad Manager banner ads).",
3
+ "version": "1.2.0",
4
+ "description": "Ezoic Ads SDK for React Native (Prebid + Google Ad Manager banner, interstitial and rewarded ads).",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
7
7
  "exports": {