import * as NATIVE from './native-constants'; import { RunContextBrowser } from '../../rc-browser'; import { MuWebBridge } from './web-bridge'; import { NgZone } from '@angular/core'; export interface ReferrerParams { utm_source: string; utm_medium: string; utm_campaign: string; utm_term: string; utm_content: string; gclid: string; mode: string; } export declare enum State { LOADING = 0, INITIALIZED = 1, SHOWN = 2 } export declare enum SDK_TYPE { MOBILE = "MOBILE", WEB = "WEB", CORDOVA = "CORDOVA" } export declare enum UserAgent { BROWSER = "BROWSER", ANDROID = "ANDROID", IOS = "IOS" } export interface Location { lat: number; lng: number; } export interface MobileSdkParams { source: string; requestId: number; } declare class LaunchContext { directLink: string; source: string; referrerParams: ReferrerParams; isUpgrade: boolean; } export declare class MuBridge { protected rc: RunContextBrowser; protected ngZone: NgZone; currKeyboardHt: number; protected runningInBrowser: boolean; private nextRequestId; private requestMap; private location; private netType; private _state; protected userAgent: UserAgent; protected permObj: object; private initConfig; protected launchContext: LaunchContext; protected webBridge: MuWebBridge; protected sdkType: SDK_TYPE; protected mobileSdkParams: MobileSdkParams; constructor(rc: RunContextBrowser, ngZone: NgZone); preInit(remoteUrl: string): void; init(): Promise; isRunningInDev(): boolean; isRunningInBrowser(): boolean; isRunningInMWeb(): boolean; isRunningInIPad(): boolean; get state(): State; set state(newState: State); setStateShown(): void; getDirectLink(): string; setWebDirectLink(directLink: string): void; resetDirectLink(): void; getReferrerParams(): ReferrerParams; isUpgrade(): boolean; getUserAgent(): UserAgent; getRemoteUrl(): string; getAppVersion(): string; getAppChannel(): string; getPseudoId(): string; getFcmId(): string; getAdId(): string; getAppInstallTime(): number; getDeviceId(): string; getLocation(): string; getCordovaNetworkType(): string; getLocalStoragePath(): string; setUserId(userId: number): Promise; logEvent(eventName: string, eventDataStr: string): Promise; setUserProperty(propName: string, value: string): Promise; isWebSdkInvocation(): boolean; isMobileSdkInvocation(): boolean; isSdkInvocation(): boolean; getSdkType(): SDK_TYPE; setMobileSdkParams(source: string, requestId: string): void; getMobileSdkSource(): string; getMobileSdkRequestId(): number; /** * This will only get invoked for Sdk type Mobile since this is the main app and * any SDK invocation would happen wrt a direct link and response via Intent broadcast * in Android */ onSdkSuccessResponse(requestId: number, data?: object, closeApp?: boolean): Promise; onSdkFailureResponse(requestId: number, data: object, uiError: Object, closeApp?: boolean): Promise; protected onMobileSdkResponse(requestId: number, data: object, closeApp?: boolean): Promise; setGlobalKeyValue(key: string, value: string): Promise; getGlobalKeyValue(key: string): Promise; setUserKeyValue(key: string, value: string): Promise; getUserKeyValue(key: string): Promise; setGcConfig(config: string): Promise; getGcConfig(category: string, key: string): Promise; prepareConnection(): Promise; sendRouterRequest(api: string, params: object): Promise; sendRouterEvent(name: string, params: object, ephemeral: boolean): Promise; isAndroid(): boolean; isIos(): boolean; getUserProfilePicUrl(clientId: number, profilePicFileName?: string): string; getDeviceInfo(): Promise; getSessionInfo(): Promise; recreateSession(): Promise; getCurrentLocation(): Promise; requestMobNumHint(): Promise; getPhoneContacts(): Promise; takePictureFromCamera(): Promise; selectPictureFromGallery(): Promise; selectDocumentFile(): Promise; getPermission(permission: NATIVE.Permission, showRationale?: boolean): Promise<{ permGiven: boolean; dialogShown: boolean; webStream?: MediaStream; }>; writeExternalStyles(base64Data: string): Promise; saveBinaryFile(filePath: string, fileName: string, base64Data: string): Promise; /** // * @returns { action: string, result: string } * * Eg. action : SAVED_PAYEES, DISMISS, SCAN * result : Scanned result if action is SCAN */ payViaQr(invSource: string): Promise; scanQrCode(invSource: string, title: String): Promise; scanBarcode(invSource: string): Promise; openInMobileBrowser(url: string): Promise; closeMobileBrowser(): Promise; enableDebug(): Promise; updateGcConfig(): Promise; closeApp(): Promise; logoutUser(): Promise; forgetUser(): Promise; launchAppMarket(packageName?: string): Promise; sendMail(email?: string, subject?: string, body?: string): Promise; placeCall(mobileNumber: string): Promise; checkIfPkgInstalled(pkgName: string): Promise; hasPermission(permission: NATIVE.Permission): Promise; listenForSmsCode(): Promise; setVerStringToken(clientTransactionId: string): Promise; copyToClipBoard(text: string): Promise; openSoftInputKeyboard(): Promise; hideSoftInputKeyboard(): Promise; logOutCurrentUser(): Promise; resetApp(): Promise; asyncRequestFromNative(fnName: string, requestTag: string, ...params: any[]): Promise; private asyncRequestFromNativeInternal; eventFromNative(eventName: string, ...params: any[]): void; private onUpdateCustomData; private onEphEvent; private onVerSmsCode; private onVerSmsTimeout; private onMobileBrowserClosed; private onAdjustPan; private onFingerprintScanResult; private onConnectionAttr; private onScreenPause; private onScreenResume; setDirectLink(directLink: string): void; /** * Request has a response to be given back to JS mapped with requestId * @param messageId API to be called * @param params arguments for the API */ protected sendAsyncRequest(apiName: string, ...params: any[]): Promise; asyncResponseFromNative(requestId: number, json: object): void; } export {};