@trillboards/ads-sdk 2.0.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.
- package/CHANGELOG.md +39 -0
- package/README.md +158 -0
- package/dist/index.d.mts +602 -0
- package/dist/index.d.ts +602 -0
- package/dist/index.js +1752 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1739 -0
- package/dist/index.mjs.map +1 -0
- package/dist/react-native.d.mts +154 -0
- package/dist/react-native.d.ts +154 -0
- package/dist/react-native.js +193 -0
- package/dist/react-native.js.map +1 -0
- package/dist/react-native.mjs +190 -0
- package/dist/react-native.mjs.map +1 -0
- package/dist/react.d.mts +239 -0
- package/dist/react.d.ts +239 -0
- package/dist/react.js +1891 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +1885 -0
- package/dist/react.mjs.map +1 -0
- package/dist/server.d.mts +238 -0
- package/dist/server.d.ts +238 -0
- package/dist/server.js +209 -0
- package/dist/server.js.map +1 -0
- package/dist/server.mjs +200 -0
- package/dist/server.mjs.map +1 -0
- package/dist/trillboards-lite.global.js +2 -0
- package/dist/trillboards-lite.global.js.map +1 -0
- package/package.json +109 -0
package/dist/react.d.mts
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
interface TrillboardsConfig {
|
|
5
|
+
deviceId: string;
|
|
6
|
+
apiBase?: string;
|
|
7
|
+
cdnBase?: string;
|
|
8
|
+
waterfall?: WaterfallMode;
|
|
9
|
+
autoStart?: boolean;
|
|
10
|
+
refreshInterval?: number;
|
|
11
|
+
heartbeatInterval?: number;
|
|
12
|
+
defaultImageDuration?: number;
|
|
13
|
+
defaultAdInterval?: number;
|
|
14
|
+
programmaticTimeout?: number;
|
|
15
|
+
programmaticMinInterval?: number;
|
|
16
|
+
programmaticRetry?: number;
|
|
17
|
+
programmaticBackoffMax?: number;
|
|
18
|
+
cacheSize?: number;
|
|
19
|
+
}
|
|
20
|
+
type WaterfallMode = 'programmatic_only' | 'programmatic_then_direct' | 'direct_only';
|
|
21
|
+
interface AdItem {
|
|
22
|
+
id: string;
|
|
23
|
+
allocation_id?: string;
|
|
24
|
+
type: 'image' | 'video';
|
|
25
|
+
media_url: string;
|
|
26
|
+
/** Duration in seconds */
|
|
27
|
+
duration: number;
|
|
28
|
+
title?: string;
|
|
29
|
+
impression_id: string;
|
|
30
|
+
tracking?: {
|
|
31
|
+
impression_url: string;
|
|
32
|
+
complete_url: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
interface TrillboardsState {
|
|
36
|
+
initialized: boolean;
|
|
37
|
+
isPlaying: boolean;
|
|
38
|
+
isPaused: boolean;
|
|
39
|
+
isOffline: boolean;
|
|
40
|
+
currentAd: AdItem | null;
|
|
41
|
+
adCount: number;
|
|
42
|
+
programmaticPlaying: boolean;
|
|
43
|
+
prefetchedReady: boolean;
|
|
44
|
+
waterfallMode: WaterfallMode;
|
|
45
|
+
screenId: string | null;
|
|
46
|
+
deviceId: string | null;
|
|
47
|
+
}
|
|
48
|
+
interface BridgeConfig {
|
|
49
|
+
send: (event: string, data: unknown) => void;
|
|
50
|
+
receive?: (callback: (command: unknown) => void) => void;
|
|
51
|
+
events?: string[];
|
|
52
|
+
name?: string;
|
|
53
|
+
}
|
|
54
|
+
interface EventMap {
|
|
55
|
+
initialized: {
|
|
56
|
+
deviceId: string;
|
|
57
|
+
};
|
|
58
|
+
ads_refreshed: {
|
|
59
|
+
count: number;
|
|
60
|
+
};
|
|
61
|
+
ads_loaded_from_cache: {
|
|
62
|
+
count: number;
|
|
63
|
+
};
|
|
64
|
+
ad_started: {
|
|
65
|
+
id: string;
|
|
66
|
+
type: string;
|
|
67
|
+
index: number;
|
|
68
|
+
};
|
|
69
|
+
ad_ended: {
|
|
70
|
+
id: string;
|
|
71
|
+
type: string;
|
|
72
|
+
duration: number;
|
|
73
|
+
};
|
|
74
|
+
ad_ready: {
|
|
75
|
+
type: 'programmatic' | 'direct';
|
|
76
|
+
source?: string;
|
|
77
|
+
};
|
|
78
|
+
ad_error: {
|
|
79
|
+
error: string;
|
|
80
|
+
source?: string;
|
|
81
|
+
};
|
|
82
|
+
programmatic_started: {
|
|
83
|
+
source: string;
|
|
84
|
+
variant: string | null;
|
|
85
|
+
};
|
|
86
|
+
programmatic_ended: {
|
|
87
|
+
source: string;
|
|
88
|
+
variant: string | null;
|
|
89
|
+
duration: number;
|
|
90
|
+
};
|
|
91
|
+
programmatic_error: {
|
|
92
|
+
error: string;
|
|
93
|
+
code?: number;
|
|
94
|
+
};
|
|
95
|
+
programmatic_no_fill: {
|
|
96
|
+
source: string;
|
|
97
|
+
};
|
|
98
|
+
programmatic_timeout: {
|
|
99
|
+
source: string;
|
|
100
|
+
};
|
|
101
|
+
impression_tracked: {
|
|
102
|
+
adId: string;
|
|
103
|
+
impressionId: string;
|
|
104
|
+
};
|
|
105
|
+
state_changed: TrillboardsState;
|
|
106
|
+
bridge_event: {
|
|
107
|
+
event: string;
|
|
108
|
+
data: unknown;
|
|
109
|
+
};
|
|
110
|
+
visibility_changed: {
|
|
111
|
+
visible: boolean;
|
|
112
|
+
};
|
|
113
|
+
offline: Record<string, never>;
|
|
114
|
+
online: Record<string, never>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class TrillboardsAds {
|
|
118
|
+
/** Singleton reference — `create()` destroys any previous instance. */
|
|
119
|
+
private static _instance;
|
|
120
|
+
private config;
|
|
121
|
+
private state;
|
|
122
|
+
private events;
|
|
123
|
+
private api;
|
|
124
|
+
private cache;
|
|
125
|
+
private bridge;
|
|
126
|
+
private programmaticPlayer;
|
|
127
|
+
private directPlayer;
|
|
128
|
+
/** Stored references for window event listeners (cleanup in destroy). */
|
|
129
|
+
private onlineHandler;
|
|
130
|
+
private offlineHandler;
|
|
131
|
+
private visibilityHandler;
|
|
132
|
+
private constructor();
|
|
133
|
+
/**
|
|
134
|
+
* Create and initialize a new TrillboardsAds instance.
|
|
135
|
+
* If a previous instance exists, it is destroyed first
|
|
136
|
+
* (singleton guard).
|
|
137
|
+
*/
|
|
138
|
+
static create(config: TrillboardsConfig): Promise<TrillboardsAds>;
|
|
139
|
+
/**
|
|
140
|
+
* Initialize the SDK (private — called by `create()` only).
|
|
141
|
+
*/
|
|
142
|
+
private init;
|
|
143
|
+
/**
|
|
144
|
+
* Destroy the SDK instance and clean up all resources.
|
|
145
|
+
*/
|
|
146
|
+
destroy(): void;
|
|
147
|
+
/**
|
|
148
|
+
* Show the ad container and start playback.
|
|
149
|
+
*/
|
|
150
|
+
show(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Hide the ad container and pause playback.
|
|
153
|
+
*/
|
|
154
|
+
hide(): void;
|
|
155
|
+
/**
|
|
156
|
+
* Skip the current ad.
|
|
157
|
+
*/
|
|
158
|
+
skipAd(): void;
|
|
159
|
+
/**
|
|
160
|
+
* Force refresh — re-fetches VAST URLs from server with null etag.
|
|
161
|
+
*/
|
|
162
|
+
refresh(): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* Prefetch the next ad for instant playback.
|
|
165
|
+
*/
|
|
166
|
+
prefetchNextAd(): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* Get current public state.
|
|
169
|
+
*/
|
|
170
|
+
getState(): TrillboardsState;
|
|
171
|
+
/**
|
|
172
|
+
* Get current ad list.
|
|
173
|
+
*/
|
|
174
|
+
getAds(): AdItem[];
|
|
175
|
+
/**
|
|
176
|
+
* Subscribe to an event.
|
|
177
|
+
*/
|
|
178
|
+
on<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
179
|
+
/**
|
|
180
|
+
* Unsubscribe from an event.
|
|
181
|
+
*/
|
|
182
|
+
off<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
183
|
+
/**
|
|
184
|
+
* Register a custom native bridge.
|
|
185
|
+
*/
|
|
186
|
+
registerBridge(config: BridgeConfig): boolean;
|
|
187
|
+
private createContainer;
|
|
188
|
+
private refreshAds;
|
|
189
|
+
private startRefreshTimer;
|
|
190
|
+
private startHeartbeatTimer;
|
|
191
|
+
private playNextAd;
|
|
192
|
+
private playProgrammatic;
|
|
193
|
+
private playDirect;
|
|
194
|
+
private scheduleNextDirect;
|
|
195
|
+
private scheduleProgrammaticRetry;
|
|
196
|
+
private resetProgrammaticBackoff;
|
|
197
|
+
private emitStateChanged;
|
|
198
|
+
private handleBridgeCommand;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
interface TrillboardsContextValue {
|
|
202
|
+
sdk: TrillboardsAds | null;
|
|
203
|
+
state: TrillboardsState;
|
|
204
|
+
isReady: boolean;
|
|
205
|
+
error: string | null;
|
|
206
|
+
}
|
|
207
|
+
interface TrillboardsProviderProps {
|
|
208
|
+
config: TrillboardsConfig;
|
|
209
|
+
children: React.ReactNode;
|
|
210
|
+
}
|
|
211
|
+
declare function TrillboardsProvider({ config, children }: TrillboardsProviderProps): react_jsx_runtime.JSX.Element;
|
|
212
|
+
declare function useTrillboardsContext(): TrillboardsContextValue;
|
|
213
|
+
|
|
214
|
+
interface UseTrillboardsAdsReturn {
|
|
215
|
+
isReady: boolean;
|
|
216
|
+
error: string | null;
|
|
217
|
+
state: TrillboardsState;
|
|
218
|
+
ads: AdItem[];
|
|
219
|
+
hasPrefetchedAd: boolean;
|
|
220
|
+
show: () => void;
|
|
221
|
+
hide: () => void;
|
|
222
|
+
skipAd: () => void;
|
|
223
|
+
refresh: () => Promise<void>;
|
|
224
|
+
prefetchNextAd: () => Promise<void>;
|
|
225
|
+
}
|
|
226
|
+
declare function useTrillboardsAds(): UseTrillboardsAdsReturn;
|
|
227
|
+
|
|
228
|
+
declare function useAdEvents<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
229
|
+
|
|
230
|
+
interface TrillboardsAdSlotProps {
|
|
231
|
+
style?: React.CSSProperties;
|
|
232
|
+
className?: string;
|
|
233
|
+
onAdStarted?: (data: EventMap['ad_started']) => void;
|
|
234
|
+
onAdEnded?: (data: EventMap['ad_ended']) => void;
|
|
235
|
+
onAdError?: (data: EventMap['ad_error']) => void;
|
|
236
|
+
}
|
|
237
|
+
declare function TrillboardsAdSlot({ style, className, onAdStarted, onAdEnded, onAdError, }: TrillboardsAdSlotProps): react_jsx_runtime.JSX.Element;
|
|
238
|
+
|
|
239
|
+
export { type AdItem, type EventMap, TrillboardsAdSlot, type TrillboardsAdSlotProps, type TrillboardsConfig, TrillboardsProvider, type TrillboardsProviderProps, type TrillboardsState, type UseTrillboardsAdsReturn, type WaterfallMode, useAdEvents, useTrillboardsAds, useTrillboardsContext };
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
interface TrillboardsConfig {
|
|
5
|
+
deviceId: string;
|
|
6
|
+
apiBase?: string;
|
|
7
|
+
cdnBase?: string;
|
|
8
|
+
waterfall?: WaterfallMode;
|
|
9
|
+
autoStart?: boolean;
|
|
10
|
+
refreshInterval?: number;
|
|
11
|
+
heartbeatInterval?: number;
|
|
12
|
+
defaultImageDuration?: number;
|
|
13
|
+
defaultAdInterval?: number;
|
|
14
|
+
programmaticTimeout?: number;
|
|
15
|
+
programmaticMinInterval?: number;
|
|
16
|
+
programmaticRetry?: number;
|
|
17
|
+
programmaticBackoffMax?: number;
|
|
18
|
+
cacheSize?: number;
|
|
19
|
+
}
|
|
20
|
+
type WaterfallMode = 'programmatic_only' | 'programmatic_then_direct' | 'direct_only';
|
|
21
|
+
interface AdItem {
|
|
22
|
+
id: string;
|
|
23
|
+
allocation_id?: string;
|
|
24
|
+
type: 'image' | 'video';
|
|
25
|
+
media_url: string;
|
|
26
|
+
/** Duration in seconds */
|
|
27
|
+
duration: number;
|
|
28
|
+
title?: string;
|
|
29
|
+
impression_id: string;
|
|
30
|
+
tracking?: {
|
|
31
|
+
impression_url: string;
|
|
32
|
+
complete_url: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
interface TrillboardsState {
|
|
36
|
+
initialized: boolean;
|
|
37
|
+
isPlaying: boolean;
|
|
38
|
+
isPaused: boolean;
|
|
39
|
+
isOffline: boolean;
|
|
40
|
+
currentAd: AdItem | null;
|
|
41
|
+
adCount: number;
|
|
42
|
+
programmaticPlaying: boolean;
|
|
43
|
+
prefetchedReady: boolean;
|
|
44
|
+
waterfallMode: WaterfallMode;
|
|
45
|
+
screenId: string | null;
|
|
46
|
+
deviceId: string | null;
|
|
47
|
+
}
|
|
48
|
+
interface BridgeConfig {
|
|
49
|
+
send: (event: string, data: unknown) => void;
|
|
50
|
+
receive?: (callback: (command: unknown) => void) => void;
|
|
51
|
+
events?: string[];
|
|
52
|
+
name?: string;
|
|
53
|
+
}
|
|
54
|
+
interface EventMap {
|
|
55
|
+
initialized: {
|
|
56
|
+
deviceId: string;
|
|
57
|
+
};
|
|
58
|
+
ads_refreshed: {
|
|
59
|
+
count: number;
|
|
60
|
+
};
|
|
61
|
+
ads_loaded_from_cache: {
|
|
62
|
+
count: number;
|
|
63
|
+
};
|
|
64
|
+
ad_started: {
|
|
65
|
+
id: string;
|
|
66
|
+
type: string;
|
|
67
|
+
index: number;
|
|
68
|
+
};
|
|
69
|
+
ad_ended: {
|
|
70
|
+
id: string;
|
|
71
|
+
type: string;
|
|
72
|
+
duration: number;
|
|
73
|
+
};
|
|
74
|
+
ad_ready: {
|
|
75
|
+
type: 'programmatic' | 'direct';
|
|
76
|
+
source?: string;
|
|
77
|
+
};
|
|
78
|
+
ad_error: {
|
|
79
|
+
error: string;
|
|
80
|
+
source?: string;
|
|
81
|
+
};
|
|
82
|
+
programmatic_started: {
|
|
83
|
+
source: string;
|
|
84
|
+
variant: string | null;
|
|
85
|
+
};
|
|
86
|
+
programmatic_ended: {
|
|
87
|
+
source: string;
|
|
88
|
+
variant: string | null;
|
|
89
|
+
duration: number;
|
|
90
|
+
};
|
|
91
|
+
programmatic_error: {
|
|
92
|
+
error: string;
|
|
93
|
+
code?: number;
|
|
94
|
+
};
|
|
95
|
+
programmatic_no_fill: {
|
|
96
|
+
source: string;
|
|
97
|
+
};
|
|
98
|
+
programmatic_timeout: {
|
|
99
|
+
source: string;
|
|
100
|
+
};
|
|
101
|
+
impression_tracked: {
|
|
102
|
+
adId: string;
|
|
103
|
+
impressionId: string;
|
|
104
|
+
};
|
|
105
|
+
state_changed: TrillboardsState;
|
|
106
|
+
bridge_event: {
|
|
107
|
+
event: string;
|
|
108
|
+
data: unknown;
|
|
109
|
+
};
|
|
110
|
+
visibility_changed: {
|
|
111
|
+
visible: boolean;
|
|
112
|
+
};
|
|
113
|
+
offline: Record<string, never>;
|
|
114
|
+
online: Record<string, never>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class TrillboardsAds {
|
|
118
|
+
/** Singleton reference — `create()` destroys any previous instance. */
|
|
119
|
+
private static _instance;
|
|
120
|
+
private config;
|
|
121
|
+
private state;
|
|
122
|
+
private events;
|
|
123
|
+
private api;
|
|
124
|
+
private cache;
|
|
125
|
+
private bridge;
|
|
126
|
+
private programmaticPlayer;
|
|
127
|
+
private directPlayer;
|
|
128
|
+
/** Stored references for window event listeners (cleanup in destroy). */
|
|
129
|
+
private onlineHandler;
|
|
130
|
+
private offlineHandler;
|
|
131
|
+
private visibilityHandler;
|
|
132
|
+
private constructor();
|
|
133
|
+
/**
|
|
134
|
+
* Create and initialize a new TrillboardsAds instance.
|
|
135
|
+
* If a previous instance exists, it is destroyed first
|
|
136
|
+
* (singleton guard).
|
|
137
|
+
*/
|
|
138
|
+
static create(config: TrillboardsConfig): Promise<TrillboardsAds>;
|
|
139
|
+
/**
|
|
140
|
+
* Initialize the SDK (private — called by `create()` only).
|
|
141
|
+
*/
|
|
142
|
+
private init;
|
|
143
|
+
/**
|
|
144
|
+
* Destroy the SDK instance and clean up all resources.
|
|
145
|
+
*/
|
|
146
|
+
destroy(): void;
|
|
147
|
+
/**
|
|
148
|
+
* Show the ad container and start playback.
|
|
149
|
+
*/
|
|
150
|
+
show(): void;
|
|
151
|
+
/**
|
|
152
|
+
* Hide the ad container and pause playback.
|
|
153
|
+
*/
|
|
154
|
+
hide(): void;
|
|
155
|
+
/**
|
|
156
|
+
* Skip the current ad.
|
|
157
|
+
*/
|
|
158
|
+
skipAd(): void;
|
|
159
|
+
/**
|
|
160
|
+
* Force refresh — re-fetches VAST URLs from server with null etag.
|
|
161
|
+
*/
|
|
162
|
+
refresh(): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* Prefetch the next ad for instant playback.
|
|
165
|
+
*/
|
|
166
|
+
prefetchNextAd(): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* Get current public state.
|
|
169
|
+
*/
|
|
170
|
+
getState(): TrillboardsState;
|
|
171
|
+
/**
|
|
172
|
+
* Get current ad list.
|
|
173
|
+
*/
|
|
174
|
+
getAds(): AdItem[];
|
|
175
|
+
/**
|
|
176
|
+
* Subscribe to an event.
|
|
177
|
+
*/
|
|
178
|
+
on<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
179
|
+
/**
|
|
180
|
+
* Unsubscribe from an event.
|
|
181
|
+
*/
|
|
182
|
+
off<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
183
|
+
/**
|
|
184
|
+
* Register a custom native bridge.
|
|
185
|
+
*/
|
|
186
|
+
registerBridge(config: BridgeConfig): boolean;
|
|
187
|
+
private createContainer;
|
|
188
|
+
private refreshAds;
|
|
189
|
+
private startRefreshTimer;
|
|
190
|
+
private startHeartbeatTimer;
|
|
191
|
+
private playNextAd;
|
|
192
|
+
private playProgrammatic;
|
|
193
|
+
private playDirect;
|
|
194
|
+
private scheduleNextDirect;
|
|
195
|
+
private scheduleProgrammaticRetry;
|
|
196
|
+
private resetProgrammaticBackoff;
|
|
197
|
+
private emitStateChanged;
|
|
198
|
+
private handleBridgeCommand;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
interface TrillboardsContextValue {
|
|
202
|
+
sdk: TrillboardsAds | null;
|
|
203
|
+
state: TrillboardsState;
|
|
204
|
+
isReady: boolean;
|
|
205
|
+
error: string | null;
|
|
206
|
+
}
|
|
207
|
+
interface TrillboardsProviderProps {
|
|
208
|
+
config: TrillboardsConfig;
|
|
209
|
+
children: React.ReactNode;
|
|
210
|
+
}
|
|
211
|
+
declare function TrillboardsProvider({ config, children }: TrillboardsProviderProps): react_jsx_runtime.JSX.Element;
|
|
212
|
+
declare function useTrillboardsContext(): TrillboardsContextValue;
|
|
213
|
+
|
|
214
|
+
interface UseTrillboardsAdsReturn {
|
|
215
|
+
isReady: boolean;
|
|
216
|
+
error: string | null;
|
|
217
|
+
state: TrillboardsState;
|
|
218
|
+
ads: AdItem[];
|
|
219
|
+
hasPrefetchedAd: boolean;
|
|
220
|
+
show: () => void;
|
|
221
|
+
hide: () => void;
|
|
222
|
+
skipAd: () => void;
|
|
223
|
+
refresh: () => Promise<void>;
|
|
224
|
+
prefetchNextAd: () => Promise<void>;
|
|
225
|
+
}
|
|
226
|
+
declare function useTrillboardsAds(): UseTrillboardsAdsReturn;
|
|
227
|
+
|
|
228
|
+
declare function useAdEvents<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
229
|
+
|
|
230
|
+
interface TrillboardsAdSlotProps {
|
|
231
|
+
style?: React.CSSProperties;
|
|
232
|
+
className?: string;
|
|
233
|
+
onAdStarted?: (data: EventMap['ad_started']) => void;
|
|
234
|
+
onAdEnded?: (data: EventMap['ad_ended']) => void;
|
|
235
|
+
onAdError?: (data: EventMap['ad_error']) => void;
|
|
236
|
+
}
|
|
237
|
+
declare function TrillboardsAdSlot({ style, className, onAdStarted, onAdEnded, onAdError, }: TrillboardsAdSlotProps): react_jsx_runtime.JSX.Element;
|
|
238
|
+
|
|
239
|
+
export { type AdItem, type EventMap, TrillboardsAdSlot, type TrillboardsAdSlotProps, type TrillboardsConfig, TrillboardsProvider, type TrillboardsProviderProps, type TrillboardsState, type UseTrillboardsAdsReturn, type WaterfallMode, useAdEvents, useTrillboardsAds, useTrillboardsContext };
|