@wajub/js 1.3.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/dist/pure.d.ts ADDED
@@ -0,0 +1,431 @@
1
+ /**
2
+ * Wajub Checkout SDK — TypeScript definitions
3
+ *
4
+ * npm loader (recommended — loads runtime from CDN):
5
+ * npm install @wajub/js
6
+ * import { loadWajub, mount } from "@wajub/js";
7
+ * const rt = await loadWajub();
8
+ *
9
+ * Deferred load (no side effect on import):
10
+ * import { loadWajub } from "@wajub/js/pure";
11
+ *
12
+ * CDN script tag (full runtime):
13
+ * <script src="https://js.wajub.com"></script>
14
+ *
15
+ * CDN ESM (full runtime):
16
+ * import { mount } from "https://js.wajub.com/wajub.mjs";
17
+ */
18
+
19
+ export interface LoadWajubOptions {
20
+ /** CDN origin (default https://js.wajub.com). */
21
+ jsOrigin?: string;
22
+ /** Full script URL override (default `{jsOrigin}/wajub.js`). */
23
+ jsUrl?: string;
24
+ }
25
+
26
+ /** Runtime globals after Wajub.js CDN script loads. */
27
+ export interface WajubRuntime {
28
+ wajub: WajubSDK;
29
+ Wajub: WajubFactory;
30
+ WajubError: typeof WajubError;
31
+ }
32
+
33
+ export interface LoadWajubFn {
34
+ (options?: LoadWajubOptions): Promise<WajubRuntime | null>;
35
+ setLoadParameters(params: LoadWajubOptions): void;
36
+ }
37
+
38
+ /**
39
+ * Load Wajub.js from the CDN. Resolves to `null` on the server (SSR-safe).
40
+ */
41
+ export const loadWajub: LoadWajubFn;
42
+
43
+ /** @wajub/js async helpers — load CDN then call API. Return null on SSR. */
44
+ export function mount(
45
+ container: string | HTMLElement,
46
+ config: EmbeddedConfig,
47
+ ): Promise<CheckoutInstance | null>;
48
+ export function open(config: PopupConfig): Promise<PopupInstance | null>;
49
+ export function checkout(config: EmbeddedConfig): Promise<void | null>;
50
+ export function preload(sessionId: string, options?: { iframe?: boolean }): Promise<void | null>;
51
+ export function fetchSession(sessionId: string): Promise<SessionPreview>;
52
+ export function components(
53
+ sessionId: string,
54
+ options?: Partial<ComponentConfig>,
55
+ ): Promise<ComponentsFactory | null>;
56
+ export function confirmPayment(
57
+ options: ConfirmPaymentOptions,
58
+ ): Promise<{ status: string; transaction?: Record<string, unknown> | null }>;
59
+ export function getVersion(): Promise<string | null>;
60
+ export function getCheckoutOrigin(): Promise<string | null>;
61
+
62
+ export type CheckoutState =
63
+ | "INITIATED"
64
+ | "COLLECTING_DETAILS"
65
+ | "PROCESSING"
66
+ | "OTP_REQUIRED"
67
+ | "3DS_REQUIRED"
68
+ | "USSD_REQUIRED"
69
+ | "APPROVAL_REQUIRED"
70
+ | "VERIFYING"
71
+ | "PENDING"
72
+ | "SUCCESS"
73
+ | "FAILED"
74
+ | "EXPIRED"
75
+ | "CANCELLED";
76
+
77
+ export type WajubErrorType =
78
+ | "api_error"
79
+ | "authentication_error"
80
+ | "invalid_request_error"
81
+ | "payment_error"
82
+ | "rate_limit_error";
83
+
84
+ export interface WajubErrorShape {
85
+ name: "WajubError";
86
+ message: string;
87
+ type: WajubErrorType;
88
+ code: string;
89
+ decline_code: string | null;
90
+ retryable: boolean;
91
+ param: string | null;
92
+ }
93
+
94
+ export declare class WajubError extends Error implements WajubErrorShape {
95
+ type: WajubErrorType;
96
+ code: string;
97
+ decline_code: string | null;
98
+ retryable: boolean;
99
+ param: string | null;
100
+ static fromPayload(payload: unknown): WajubError;
101
+ toJSON(): WajubErrorShape;
102
+ }
103
+
104
+ export type AppearanceThemePreset = "stripe" | "night" | "flat" | "none";
105
+ export type AppearanceColorScheme = "light" | "dark" | "auto";
106
+ export type AppearanceLabels = "above" | "floating";
107
+
108
+ export interface AppearanceVariables {
109
+ colorPrimary?: string;
110
+ colorBackground?: string;
111
+ colorText?: string;
112
+ colorTextSecondary?: string;
113
+ colorTextPlaceholder?: string;
114
+ colorDanger?: string;
115
+ colorSuccess?: string;
116
+ fontFamily?: string;
117
+ fontSizeBase?: string;
118
+ fontWeightNormal?: string;
119
+ fontWeightMedium?: string;
120
+ fontWeightBold?: string;
121
+ spacingUnit?: string;
122
+ borderRadius?: string;
123
+ spacingGridRow?: string;
124
+ spacingGridColumn?: string;
125
+ }
126
+
127
+ export type AppearanceRules = Record<string, Record<string, string>>;
128
+
129
+ export interface AppearanceConfig {
130
+ /** Built-in preset (layered before explicit keys). */
131
+ theme?: AppearanceThemePreset;
132
+ primaryColor?: string;
133
+ secondaryColor?: string;
134
+ backgroundColor?: string;
135
+ fontFamily?: string;
136
+ borderRadius?: string;
137
+ buttonTextColor?: string;
138
+ inputBackgroundColor?: string;
139
+ inputBorderColor?: string;
140
+ textMutedColor?: string;
141
+ successColor?: string;
142
+ errorColor?: string;
143
+ shadow?: string;
144
+ colorScheme?: AppearanceColorScheme;
145
+ labels?: AppearanceLabels;
146
+ disableAnimations?: boolean;
147
+ variables?: AppearanceVariables;
148
+ rules?: AppearanceRules;
149
+ }
150
+
151
+ /** @deprecated Use AppearanceConfig */
152
+ export interface EmbedTheme {
153
+ primaryColor?: string;
154
+ fontFamily?: string;
155
+ borderRadius?: string;
156
+ }
157
+
158
+ export type CheckoutLayout = "classic" | "compact" | "tabs" | "accordion";
159
+
160
+ export interface EmbedBreakdown {
161
+ subtotal: number;
162
+ discount: number;
163
+ tax: number;
164
+ total: number;
165
+ currency: string;
166
+ }
167
+
168
+ export interface SessionPreview {
169
+ session_id: string;
170
+ status: string;
171
+ environment: "sandbox" | "live";
172
+ amount: number;
173
+ currency: string;
174
+ merchant_name: string;
175
+ payment_methods: Array<{ id: string; type: string; label: string }>;
176
+ saved_methods?: Array<{ id: string; type: string; label: string }>;
177
+ features: Record<string, boolean>;
178
+ }
179
+
180
+ export interface EmbeddedConfig {
181
+ sessionId: string;
182
+ locale?: string;
183
+ embedOrigin?: string;
184
+ /** @deprecated Prefer appearance */
185
+ theme?: EmbedTheme;
186
+ appearance?: AppearanceConfig;
187
+ layout?: CheckoutLayout;
188
+ loadingText?: string;
189
+ showLoading?: boolean;
190
+ onReady?: (instance: CheckoutInstance) => void;
191
+ onSuccess?: (transaction: Record<string, unknown>) => void;
192
+ onError?: (error: WajubError | Record<string, unknown>) => void;
193
+ onLoadError?: (error: WajubError | Record<string, unknown>) => void;
194
+ onCancel?: () => void;
195
+ onExpired?: () => void;
196
+ onStateChange?: (payload: { state?: CheckoutState; method?: string }) => void;
197
+ onMethodChange?: (payload: { methodId?: string; method_id?: string }) => void;
198
+ onBreakdown?: (breakdown: EmbedBreakdown) => void;
199
+ onResize?: (height: number) => void;
200
+ onClose?: () => void;
201
+ }
202
+
203
+ export interface CheckoutInstance {
204
+ mount(): void;
205
+ unmount(): void;
206
+ update(
207
+ config: Partial<
208
+ Pick<EmbeddedConfig, "locale" | "theme" | "appearance" | "layout"> & { currency?: string }
209
+ >,
210
+ ): void;
211
+ getState(): CheckoutState | string;
212
+ submit(): void;
213
+ cancel(): void;
214
+ retry(): void;
215
+ selectMethod(methodId: string): void;
216
+ close(): void;
217
+ destroy(): void;
218
+ }
219
+
220
+ export interface PopupConfig extends EmbeddedConfig {
221
+ width?: number;
222
+ height?: number;
223
+ closeOnOverlay?: boolean;
224
+ closeOnEscape?: boolean;
225
+ }
226
+
227
+ export interface PopupInstance extends CheckoutInstance {
228
+ isOpen?(): boolean;
229
+ }
230
+
231
+ export type ComponentType = "card" | "mobileMoney" | "wallet" | "payment" | "address";
232
+
233
+ export type AddressMode = "shipping" | "billing";
234
+ export type PhoneFieldMode = "always" | "auto" | "never";
235
+ export type CollectAddressMode = "shipping" | "billing";
236
+
237
+ export interface AddressValue {
238
+ line1: string;
239
+ line2?: string;
240
+ city: string;
241
+ state?: string;
242
+ postal_code?: string;
243
+ country: string;
244
+ }
245
+
246
+ export interface ComponentAddressValue {
247
+ name?: string;
248
+ phone?: string;
249
+ address?: AddressValue | null;
250
+ mode?: AddressMode;
251
+ }
252
+
253
+ export interface ComponentChangeEvent {
254
+ complete?: boolean;
255
+ empty?: boolean;
256
+ error?: WajubErrorShape | Record<string, unknown>;
257
+ value?: ComponentAddressValue | Record<string, unknown>;
258
+ }
259
+
260
+ export interface ComponentFieldsConfig {
261
+ phone?: PhoneFieldMode;
262
+ }
263
+
264
+ export interface ComponentConfig {
265
+ sessionId: string;
266
+ locale?: string;
267
+ componentOrigin?: string;
268
+ appearance?: AppearanceConfig;
269
+ layout?: CheckoutLayout;
270
+ /** Payment component — collect shipping/billing address inline. */
271
+ collectAddress?: CollectAddressMode;
272
+ /** Address component — shipping vs billing labels. */
273
+ addressMode?: AddressMode;
274
+ collectName?: boolean;
275
+ fields?: ComponentFieldsConfig;
276
+ onReady?: (component: ComponentInstance) => void;
277
+ onChange?: (event: ComponentChangeEvent) => void;
278
+ onFocus?: () => void;
279
+ onBlur?: () => void;
280
+ onLoadError?: (error: WajubError | Record<string, unknown>) => void;
281
+ onSuccess?: (transaction: Record<string, unknown>) => void;
282
+ onError?: (error: WajubError | Record<string, unknown>) => void;
283
+ onMethodChange?: (payload: { methodId?: string }) => void;
284
+ }
285
+
286
+ export interface ComponentInstance {
287
+ mount(container: string | HTMLElement): ComponentInstance;
288
+ unmount(): void;
289
+ destroy(): void;
290
+ on(event: string, fn: (data?: unknown) => void): ComponentInstance;
291
+ off(event: string, fn: (data?: unknown) => void): ComponentInstance;
292
+ update(config: Partial<Pick<ComponentConfig, "locale" | "appearance" | "layout">>): ComponentInstance;
293
+ focus(): ComponentInstance;
294
+ blur(): ComponentInstance;
295
+ submit(): ComponentInstance;
296
+ selectMethod(methodId: string): ComponentInstance;
297
+ getState(): CheckoutState | string;
298
+ isComplete(): boolean;
299
+ getError(): WajubError | null;
300
+ /** Address component — current field values (also on `change.value`). */
301
+ getValue(): ComponentAddressValue | Record<string, unknown> | null;
302
+ }
303
+
304
+ export interface ComponentsFactory {
305
+ sessionId: string;
306
+ create(type: ComponentType, config?: Partial<ComponentConfig>): ComponentInstance;
307
+ }
308
+
309
+ export interface ConfirmPaymentOptions {
310
+ sessionId: string;
311
+ components?: ComponentInstance & { _paymentComponent?: ComponentInstance };
312
+ callback?: string;
313
+ }
314
+
315
+ export interface CreatePaymentParams {
316
+ amount: number;
317
+ currency: string;
318
+ reference?: string;
319
+ description?: string;
320
+ customer?: {
321
+ email?: string;
322
+ name?: string;
323
+ phone?: string;
324
+ country?: string;
325
+ };
326
+ bearer?: "merchant" | "customer";
327
+ /** URL HTTPS where the payer is redirected after payment (redirect flow). */
328
+ callback?: string;
329
+ metadata?: Record<string, string>;
330
+ }
331
+
332
+ export interface CreatePaymentResult {
333
+ sessionId: string;
334
+ authorizationToken: string;
335
+ authorizationUrl: string | null;
336
+ transaction: Record<string, unknown> | null;
337
+ raw: Record<string, unknown>;
338
+ }
339
+
340
+ export interface WajubInitOptions {
341
+ /** Existing session token from your backend (authorization_token). */
342
+ sessionId?: string;
343
+ /** Publishable key when using object form: Wajub({ publishableKey, sessionId }). */
344
+ publishableKey?: string;
345
+ /** @deprecated Alias for publishableKey */
346
+ apiKey?: string;
347
+ /** API origin (default baked at SDK build — https://api.wajub.com). */
348
+ apiBase?: string;
349
+ /** Full POST /payments URL override. */
350
+ paymentsUrl?: string;
351
+ /** Route via checkout BFF (/api/payments) — useful for local demos / CORS. */
352
+ useCheckoutProxy?: boolean;
353
+ componentOrigin?: string;
354
+ }
355
+
356
+ export interface InitCheckoutOptions extends Partial<EmbeddedConfig> {
357
+ mode?: "inline" | "overlay" | "redirect";
358
+ container?: string | HTMLElement;
359
+ /** Use an existing session — skips createPayment(). */
360
+ sessionId?: string;
361
+ payment?: CreatePaymentParams;
362
+ checkout?: Partial<EmbeddedConfig>;
363
+ }
364
+
365
+ export interface InitCheckoutResult {
366
+ session: CreatePaymentResult | { sessionId: string };
367
+ instance: CheckoutInstance | PopupInstance | null;
368
+ }
369
+
370
+ /** Wajub.js client — create a session (pk) and/or use an existing sessionId. */
371
+ export interface WajubClient {
372
+ publishableKey: string | null;
373
+ sessionId: string | null;
374
+ environment: "sandbox" | "live" | null;
375
+ apiBase: string;
376
+ checkoutOrigin: string;
377
+ useSession(sessionId: string): WajubClient;
378
+ createPayment(params: CreatePaymentParams): Promise<CreatePaymentResult>;
379
+ initCheckout(options: InitCheckoutOptions): Promise<InitCheckoutResult>;
380
+ fetchSession(sessionId?: string): Promise<SessionPreview>;
381
+ preload(sessionId?: string, options?: { iframe?: boolean }): void;
382
+ checkout(config?: Partial<EmbeddedConfig>): void;
383
+ mount(container: string | HTMLElement, config?: Partial<EmbeddedConfig>): CheckoutInstance;
384
+ open(config?: Partial<PopupConfig>): PopupInstance;
385
+ components(sessionIdOrConfig?: string | Partial<ComponentConfig>, config?: Partial<ComponentConfig>): ComponentsFactory;
386
+ confirmPayment(options?: ConfirmPaymentOptions): Promise<{ status: string; transaction?: Record<string, unknown> | null }>;
387
+ }
388
+
389
+ export interface WajubFactory {
390
+ (publishableKeyOrSessionId: string, options?: WajubInitOptions): WajubClient;
391
+ (options: WajubInitOptions): WajubClient;
392
+ session(sessionId: string, options?: WajubInitOptions): WajubClient;
393
+ parsePublishableKey(key: string): { key: string; environment: "sandbox" | "live" };
394
+ createPayment(
395
+ publishableKey: string,
396
+ params: CreatePaymentParams,
397
+ options?: WajubInitOptions,
398
+ ): Promise<CreatePaymentResult>;
399
+ }
400
+
401
+ export interface WajubSDK {
402
+ checkout(config: EmbeddedConfig): void;
403
+ mount(container: string | HTMLElement, config: EmbeddedConfig): CheckoutInstance;
404
+ open(config: PopupConfig): PopupInstance;
405
+ preload(sessionId: string, options?: { iframe?: boolean }): void;
406
+ fetchSession(sessionId: string): Promise<SessionPreview>;
407
+ components(sessionId: string, options?: Partial<ComponentConfig>): ComponentsFactory;
408
+ confirmPayment(options: ConfirmPaymentOptions): Promise<{ status: string }>;
409
+ /** @deprecated Removed in SDK 2.1 — use components or mount(). */
410
+ createHeadless(config: EmbeddedConfig): never;
411
+ /** Wajub(pk | sessionId | options) — session-bound client with createPayment + mount. */
412
+ create: WajubFactory;
413
+ version: string;
414
+ sdkMajor: string;
415
+ checkoutOrigin: string;
416
+ }
417
+
418
+ declare global {
419
+ interface Window {
420
+ wajub: WajubSDK;
421
+ Wajub: WajubFactory;
422
+ WajubError: typeof WajubError;
423
+ WajubPay: { create(opts: EmbeddedConfig & { container: string | HTMLElement }): unknown };
424
+ __WajubCheckoutCore?: unknown;
425
+ __WajubComponentsCore?: unknown;
426
+ __WajubAppearance?: unknown;
427
+ __WajubError?: unknown;
428
+ }
429
+ }
430
+
431
+ export {};
package/dist/pure.mjs ADDED
@@ -0,0 +1,2 @@
1
+ /*! @wajub/js v1.3.0 — loader only · runtime from https://js.wajub.com/wajub.js */
2
+ var _0x331504=_0x2806;(function(_0x261aef,_0x21ec6c){var _0x50407f={_0x4a2240:0x149,_0x4b27ef:0x128},_0x2bb6ce=_0x2806,_0xbc28c6=_0x261aef();while(!![]){try{var _0x42e0fb=parseInt(_0x2bb6ce(0x131))/(0x1*-0x2379+-0x1f21+0x1*0x429b)*(-parseInt(_0x2bb6ce(0x11f))/(0x1*-0x3e6+0x976+-0x3*0x1da))+parseInt(_0x2bb6ce(0x125))/(0x1e27+0x2106+0xa5*-0x62)+-parseInt(_0x2bb6ce(0x13c))/(0x577*0x3+0x49e+-0x14ff)+-parseInt(_0x2bb6ce(0x140))/(0x35a+0x3*-0x23e+-0x1*-0x365)+-parseInt(_0x2bb6ce(_0x50407f._0x4a2240))/(-0x1d*0x21+-0x1bf0+0x1fb3)+-parseInt(_0x2bb6ce(0x16e))/(0xd5*-0x4+-0x1*-0x2069+-0xe87*0x2)+-parseInt(_0x2bb6ce(_0x50407f._0x4b27ef))/(0x2b1*0x6+0x256d+0x358b*-0x1)*(-parseInt(_0x2bb6ce(0x12a))/(-0xb*0x1b1+-0x989+0x1c2d));if(_0x42e0fb===_0x21ec6c)break;else _0xbc28c6['push'](_0xbc28c6['shift']());}catch(_0x153815){_0xbc28c6['push'](_0xbc28c6['shift']());}}}(_0xb611,-0x60031+0x5b12e+-0x43cfe*-0x1));var JS_ORIGIN='https://'+_0x331504(0x127)+_0x331504(0x121),loadPromise=null,loadParameters={'jsOrigin':null,'jsUrl':null};function isBrowser(){var _0x24e638={_0x144b9a:0x15c,_0x22fcbc:0x11c},_0x168d76=_0x331504,_0x31015e={'Erjaq':function(_0x194635,_0x32ab81){return _0x194635!==_0x32ab81;},'ctFzE':function(_0x528842,_0x38b740){return _0x528842!==_0x38b740;}};return _0x31015e['Erjaq'](typeof window,_0x168d76(_0x24e638._0x144b9a)+'d')&&_0x31015e[_0x168d76(_0x24e638._0x22fcbc)](typeof document,'undefine'+'d');}function scriptReady(){var _0x53832c={_0x334419:0x133,_0xaed276:0x12d,_0xbba872:0x143},_0x8b0929=_0x331504,_0x20f38e={'gHkUM':function(_0x47cc93){return _0x47cc93();}};return _0x20f38e[_0x8b0929(_0x53832c._0x334419)](isBrowser)&&window[_0x8b0929(_0x53832c._0xaed276)]&&window[_0x8b0929(_0x53832c._0xbba872)];}function resolveScriptUrl(_0x53c481){var _0x2ddbeb={_0x5a95db:0x141,_0x238595:0x12f,_0x4b9cf9:0x15e},_0x19831c=_0x331504,_0x54b835={'MUbyp':function(_0x5850e8,_0x3e509d){return _0x5850e8||_0x3e509d;},'uLQAi':function(_0x42bb6f,_0x409e84){return _0x42bb6f(_0x409e84);}},_0x325cd3=_0x54b835[_0x19831c(_0x2ddbeb._0x5a95db)](_0x53c481,{}),_0x24bfa5=_0x325cd3[_0x19831c(0x13f)]||loadParameters[_0x19831c(0x13f)]||JS_ORIGIN;if(_0x325cd3[_0x19831c(0x12f)]||loadParameters[_0x19831c(0x12f)])return _0x325cd3[_0x19831c(_0x2ddbeb._0x238595)]||loadParameters[_0x19831c(0x12f)];return _0x54b835[_0x19831c(0x150)](String,_0x24bfa5)[_0x19831c(_0x2ddbeb._0x4b9cf9)](/\/+$/,'')+('/wajub.j'+'s');}function injectScript(_0x4a1e13){var _0x4b23be={_0x38cf2e:0x134,_0x2297be:0x163,_0x341e58:0x169},_0x51f038={_0x3b4295:0x14a,_0x28b39f:0x15d,_0x1862b3:0x14e,_0x169f0d:0x16b,_0x9d6f2b:0x123,_0x268d72:0x138,_0x4d1fee:0x12b,_0x243d50:0x167,_0x34e112:0x142,_0x4803fc:0x157},_0x44f306={_0x202526:0x15a,_0x220537:0x151,_0x546581:0x15b},_0x42631f={_0x3ab4e3:0x120},_0x55744d=_0x331504,_0xe9de55={'QVqkr':function(_0x3a190a){return _0x3a190a();},'Cwbor':_0x55744d(_0x4b23be._0x38cf2e),'qcqfk':_0x55744d(0x12c),'dqGPz':_0x55744d(_0x4b23be._0x2297be),'BxGUp':_0x55744d(0x130),'aGlPA':function(_0x4867c5){return _0x4867c5();}};if(_0xe9de55[_0x55744d(0x13e)](scriptReady))return Promise[_0x55744d(_0x4b23be._0x341e58)]();if(loadPromise)return loadPromise;return loadPromise=new Promise(function(_0x5aecfa,_0x34e4df){var _0x57ec7b={_0x55033a:0x168,_0x213d92:0x156,_0x445c9a:0x154},_0x2acb53={_0x1b4fdd:0x168,_0x34c8f6:0x137},_0x4b1f7a=_0x55744d,_0x39e45a={'mZEWl':function(_0x246b48,_0x52077c){return _0x246b48(_0x52077c);},'hHVFw':_0x4b1f7a(0x156)+'\x20script\x20'+_0x4b1f7a(0x165)+'but\x20glob'+_0x4b1f7a(_0x51f038._0x3b4295)+'ing','lZuaE':_0x4b1f7a(0x156)+_0x4b1f7a(0x148)+'to\x20load','yvWDc':function(_0x1dfa44){return _0x1dfa44();},'kkQOX':function(_0x41706d,_0x3c4e7a){return _0x41706d+_0x3c4e7a;}},_0x382cd0=document[_0x4b1f7a(0x11e)+'ector']('script[data-wajub-js="true"]');if(_0x382cd0){function _0x4cd88c(){var _0x530bc7=_0x4b1f7a;if(scriptReady())_0x5aecfa();else _0x39e45a['mZEWl'](_0x34e4df,new Error(_0x39e45a[_0x530bc7(_0x42631f._0x3ab4e3)]));}if(_0xe9de55['QVqkr'](scriptReady)){_0x5aecfa();return;}_0x382cd0[_0x4b1f7a(0x139)+_0x4b1f7a(0x15d)](_0xe9de55[_0x4b1f7a(0x159)],_0x4cd88c),_0x382cd0[_0x4b1f7a(0x139)+_0x4b1f7a(_0x51f038._0x28b39f)](_0xe9de55[_0x4b1f7a(_0x51f038._0x1862b3)],function(){var _0x1dce33=_0x4b1f7a;_0x39e45a[_0x1dce33(_0x2acb53._0x1b4fdd)](_0x34e4df,new Error(_0x39e45a[_0x1dce33(_0x2acb53._0x34c8f6)]));});return;}var _0x4db7be=document[_0x4b1f7a(0x14f)+_0x4b1f7a(_0x51f038._0x169f0d)](_0xe9de55['dqGPz']);_0x4db7be['src']=_0x4a1e13,_0x4db7be[_0x4b1f7a(0x129)]=!![],_0x4db7be[_0x4b1f7a(_0x51f038._0x9d6f2b)+_0x4b1f7a(0x14d)]('data-wajub-js',_0xe9de55[_0x4b1f7a(_0x51f038._0x268d72)]),_0x4db7be[_0x4b1f7a(_0x51f038._0x4d1fee)]=function(){var _0xc6b6a7=_0x4b1f7a;if(!_0x39e45a[_0xc6b6a7(0x12e)](scriptReady)){loadPromise=null,_0x39e45a[_0xc6b6a7(_0x57ec7b._0x55033a)](_0x34e4df,new Error(_0xc6b6a7(_0x57ec7b._0x213d92)+'\x20loaded\x20'+_0xc6b6a7(_0x57ec7b._0x445c9a)+_0xc6b6a7(0x14a)+'ing'));return;}_0x5aecfa();},_0x4db7be[_0x4b1f7a(_0x51f038._0x243d50)]=function(){var _0x122801=_0x4b1f7a;loadPromise=null,_0x39e45a['mZEWl'](_0x34e4df,new Error(_0x39e45a[_0x122801(_0x44f306._0x202526)](_0x122801(_0x44f306._0x220537)+_0x122801(_0x44f306._0x546581)+_0x122801(0x122)+_0x122801(0x164),_0x4a1e13)));},(document[_0x4b1f7a(_0x51f038._0x34e112)]||document[_0x4b1f7a(0x158)+_0x4b1f7a(0x15f)])['appendCh'+_0x4b1f7a(_0x51f038._0x4803fc)](_0x4db7be);}),loadPromise;}export function loadWajub(_0x216f42){var _0x567e30={_0x26b303:0x169},_0x4667be={_0x27cf45:0x12d,_0x34430c:0x143},_0x143f1f=_0x331504;if(!isBrowser())return Promise[_0x143f1f(_0x567e30._0x26b303)](null);return injectScript(resolveScriptUrl(_0x216f42))[_0x143f1f(0x161)](function(){var _0x8c9ebf=_0x143f1f;return{'wajub':window[_0x8c9ebf(_0x4667be._0x27cf45)],'Wajub':window[_0x8c9ebf(_0x4667be._0x34430c)],'WajubError':window[_0x8c9ebf(0x135)+'or']};});}loadWajub[_0x331504(0x155)+_0x331504(0x124)+'s']=function(_0xfa1bd3){var _0x213395=_0x331504,_0x2a6023={'UWVZF':function(_0xe8f266,_0x337c4e){return _0xe8f266||_0x337c4e;}};loadParameters=Object[_0x213395(0x11d)]({},loadParameters,_0x2a6023[_0x213395(0x136)](_0xfa1bd3,{}));};async function getRuntime(){return loadWajub();}export async function mount(_0x1d0814,_0x33e075){var _0x498fd7={_0x2b1152:0x12d,_0x17629f:0x144},_0x100a6e=_0x331504,_0x27e867={'jhuSP':function(_0x3fe725){return _0x3fe725();}},_0x5b1fe1=await _0x27e867[_0x100a6e(0x145)](getRuntime);if(!_0x5b1fe1)return null;return _0x5b1fe1[_0x100a6e(_0x498fd7._0x2b1152)][_0x100a6e(_0x498fd7._0x17629f)](_0x1d0814,_0x33e075);}export async function open(_0x1f62b1){var _0x1c08ac={_0x1afdca:0x12d,_0x57cba9:0x126},_0x1feb1d=_0x331504,_0x47a94f={'UCezF':function(_0x179951){return _0x179951();}},_0x5e8f2a=await _0x47a94f[_0x1feb1d(0x13d)](getRuntime);if(!_0x5e8f2a)return null;return _0x5e8f2a[_0x1feb1d(_0x1c08ac._0x1afdca)][_0x1feb1d(_0x1c08ac._0x57cba9)](_0x1f62b1);}export async function checkout(_0x293a2c){var _0x3a864a=_0x331504,_0x4b58ed=await getRuntime();if(!_0x4b58ed)return;return _0x4b58ed[_0x3a864a(0x12d)]['checkout'](_0x293a2c);}export async function preload(_0x4be997,_0x255fa9){var _0x4ee8b7=await getRuntime();if(!_0x4ee8b7)return;return _0x4ee8b7['wajub']['preload'](_0x4be997,_0x255fa9);}export async function fetchSession(_0x36ee33){var _0x5bbc5e={_0x499388:0x16a,_0x14774e:0x14b,_0x3118f5:0x162,_0x516042:0x12d},_0x2e2b66=_0x331504,_0x8e4d0={'ODgIL':function(_0x4cf315){return _0x4cf315();},'KWkDU':_0x2e2b66(_0x5bbc5e._0x499388)+_0x2e2b66(_0x5bbc5e._0x14774e)+_0x2e2b66(0x16d)+'ly'},_0xd92024=await _0x8e4d0['ODgIL'](getRuntime);if(!_0xd92024)return Promise[_0x2e2b66(_0x5bbc5e._0x3118f5)](new Error(_0x8e4d0['KWkDU']));return _0xd92024[_0x2e2b66(_0x5bbc5e._0x516042)][_0x2e2b66(0x16a)+'sion'](_0x36ee33);}export async function components(_0x537609,_0x2b430e){var _0x161d8d={_0x542102:0x160,_0x51516c:0x12d,_0x2a581e:0x13a},_0x515237=_0x331504,_0x355a94={'bEkng':function(_0x150d99){return _0x150d99();}},_0x480566=await _0x355a94[_0x515237(_0x161d8d._0x542102)](getRuntime);if(!_0x480566)return null;return _0x480566[_0x515237(_0x161d8d._0x51516c)][_0x515237(_0x161d8d._0x2a581e)+'ts'](_0x537609,_0x2b430e);}export async function confirmPayment(_0x2f8965){var _0x27b4ca={_0x175053:0x153,_0x53985e:0x132,_0x1a07be:0x152},_0x42726f=_0x331504,_0x3b18b2=await getRuntime();if(!_0x3b18b2)return Promise[_0x42726f(0x162)](new Error(_0x42726f(_0x27b4ca._0x175053)+_0x42726f(_0x27b4ca._0x53985e)+_0x42726f(_0x27b4ca._0x1a07be)+_0x42726f(0x166)));return _0x3b18b2[_0x42726f(0x12d)][_0x42726f(0x153)+_0x42726f(0x13b)](_0x2f8965);}export async function getVersion(){var _0xeb5b32={_0x59f1c9:0x146},_0x239855=_0x331504,_0x4a3006={'uIBQE':function(_0x4c1900){return _0x4c1900();}},_0x2676ce=await _0x4a3006[_0x239855(0x14c)](getRuntime);return _0x2676ce?_0x2676ce['wajub'][_0x239855(_0xeb5b32._0x59f1c9)]:null;}function _0x2806(_0x3fff2c,_0x2743f4){_0x3fff2c=_0x3fff2c-(0x1462+0x1a1+-0x14e7);var _0x1e1e48=_0xb611();var _0x5be7f5=_0x1e1e48[_0x3fff2c];if(_0x2806['JMwioD']===undefined){var _0x17b9f8=function(_0x15854f){var _0xd7d314='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3295f5='',_0xda8128='';for(var _0x3c9c7c=-0x1*0x1e35+-0x1*0x16ae+0x1*0x34e3,_0x575231,_0x399d51,_0x292c9a=-0x1*-0x247d+-0x60d*0x1+0x2*-0xf38;_0x399d51=_0x15854f['charAt'](_0x292c9a++);~_0x399d51&&(_0x575231=_0x3c9c7c%(-0xd39+-0x1879+-0x12db*-0x2)?_0x575231*(0x1d0e+-0x1*0x22c9+-0x1*-0x5fb)+_0x399d51:_0x399d51,_0x3c9c7c++%(0x1e5f+0x1fa6*0x1+-0x21*0x1e1))?_0x3295f5+=String['fromCharCode'](-0xa4e+0x2607+-0x1aba&_0x575231>>(-(0x29*0x46+-0x62*0x3b+0x2*0x5b1)*_0x3c9c7c&0x1915+0x942+-0x2251)):-0x22c9*-0x1+0x12c7+-0x3590){_0x399d51=_0xd7d314['indexOf'](_0x399d51);}for(var _0x40ddeb=0xad2+0x141d+0x1eef*-0x1,_0x252fab=_0x3295f5['length'];_0x40ddeb<_0x252fab;_0x40ddeb++){_0xda8128+='%'+('00'+_0x3295f5['charCodeAt'](_0x40ddeb)['toString'](-0xb80+0x2d*0x9+-0x16d*-0x7))['slice'](-(0x1354*0x2+0x4c4*-0x4+-0x1396));}return decodeURIComponent(_0xda8128);};_0x2806['gliSbl']=_0x17b9f8,_0x2806['uiGLjp']={},_0x2806['JMwioD']=!![];}var _0x5e50c5=_0x1e1e48[-0x232d+-0xce*0x1d+0x3a83],_0x37be97=_0x3fff2c+_0x5e50c5,_0x586883=_0x2806['uiGLjp'][_0x37be97];return!_0x586883?(_0x5be7f5=_0x2806['gliSbl'](_0x5be7f5),_0x2806['uiGLjp'][_0x37be97]=_0x5be7f5):_0x5be7f5=_0x586883,_0x5be7f5;}function _0xb611(){var _0x5eddb3=['yNv0igDSB2i','C2v0tg9Hzfa','v2fQDwiUANm','AwXK','zg9JDw1LBNq','q3DIB3i','A2Trt1G','BYbSB2fKifC','Dw5KzwzPBMu','tgLZDgvUzxi','CMvWBgfJzq','rwXLBwvUDa','yKvRBMC','DgHLBG','CMvQzwn0','C2nYAxb0','zNjVBsa','ChjLC2vUDca','B25SEq','B25LCNjVCG','BvPfv2W','CMvZB2X2zq','zMv0y2Htzxm','zw1LBNq','t3jPz2LU','B3DZzxiGB24','mJuYoti5nKD6zMfWzW','y3rgEKu','yxnZAwDU','CxvLCNLtzwW','mMXbDNn1sW','AeHwrNC','lMnVBq','ywP1yI5QCYa','C2v0qxr0CMK','yxjHBwv0zxi','ndaZotyYteXAvMLN','B3bLBG','ANmUD2fQDwi','nZG4mZjAuwr3reS','yxn5BMm','mtqWnhbuzNnzCq','B25SB2fK','zxjYB3i','D2fQDwi','Exzxrgm','ANnvCMW','Dhj1zq','ndu1odq0Dg9WsKHA','yxLTzw50oIa','z0HRvu0','Bg9Hza','v2fQDwjfCNi','vvDwwKy','BfP1yuu','qNHhvxa','ywrKrxzLBNq','y29TCg9Uzw4','yxLTzw50','nJGZnduYBKjvvM5d','vunLEKy','yuDSuee','ANnpCMLNAw4','mtu1nta4nvnnq0reDW','tvvIExa','AgvHza','v2fQDwi','Bw91BNq','AMH1u1a','DMvYC2LVBG','y2HLy2TVDxq','igzHAwXLzca','nJKXnZCWq3vpsuLg','ywXZig1PC3m','C2LVBJOGyNi','DuLcuuu','yNv0zq','CwnXzMS','y3jLyxrLrwW','DuXrqwK','rMfPBgvKihq','yNjVD3nLCIa','y29UzMLYBva'];_0xb611=function(){return _0x5eddb3;};return _0xb611();}export async function getCheckoutOrigin(){var _0x21d233={_0x5653c0:0x12d},_0x488090=_0x331504,_0x2aae78=await getRuntime();return _0x2aae78?_0x2aae78[_0x488090(_0x21d233._0x5653c0)][_0x488090(0x147)+_0x488090(0x16c)]:null;}export default{'loadWajub':loadWajub,'mount':mount,'open':open,'checkout':checkout,'preload':preload,'fetchSession':fetchSession,'components':components,'confirmPayment':confirmPayment,'getVersion':getVersion,'getCheckoutOrigin':getCheckoutOrigin};