@vantagepay/vantagepay 0.15.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/README.md +515 -0
- package/dist/apiConfig.d.ts +10 -0
- package/dist/apiError.d.ts +5 -0
- package/dist/apiTokens.d.ts +7 -0
- package/dist/authentication/index.d.ts +22 -0
- package/dist/authentication/types.d.ts +67 -0
- package/dist/baseApi.d.ts +9 -0
- package/dist/common/types.d.ts +99 -0
- package/dist/consumers/index.d.ts +11 -0
- package/dist/consumers/types.d.ts +358 -0
- package/dist/content/index.d.ts +7 -0
- package/dist/devices/types.d.ts +20 -0
- package/dist/eventTypes.d.ts +10 -0
- package/dist/gmoney/index.d.ts +48 -0
- package/dist/gmoney/types.d.ts +136 -0
- package/dist/hubtel/index.d.ts +21 -0
- package/dist/hubtel/types.d.ts +35 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.m.js +2 -0
- package/dist/index.m.js.map +1 -0
- package/dist/index.modern.mjs +2 -0
- package/dist/index.modern.mjs.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/log/index.d.ts +19 -0
- package/dist/log/messageTemplate.d.ts +10 -0
- package/dist/log/types.d.ts +20 -0
- package/dist/lookups/index.d.ts +28 -0
- package/dist/lookups/types.d.ts +1840 -0
- package/dist/merchants/index.d.ts +36 -0
- package/dist/merchants/types.d.ts +479 -0
- package/dist/payments/index.d.ts +38 -0
- package/dist/payments/types.d.ts +2015 -0
- package/dist/qr/index.d.ts +6 -0
- package/dist/reports/index.d.ts +8 -0
- package/dist/reports/types.d.ts +67 -0
- package/dist/system/index.d.ts +4 -0
- package/dist/tokens/types.d.ts +38 -0
- package/dist/transflow/index.d.ts +11 -0
- package/dist/transflow/types.d.ts +11 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/apiTokens.ts","../src/eventTypes.ts","../src/apiError.ts","../src/baseApi.ts","../src/authentication/index.ts","../src/lookups/types.ts","../src/lookups/index.ts","../src/payments/types.ts","../src/payments/index.ts","../src/log/types.ts","../src/consumers/index.ts","../src/qr/index.ts","../src/merchants/index.ts","../src/log/messageTemplate.ts","../src/log/index.ts","../src/system/index.ts","../src/content/index.ts","../src/reports/index.ts","../src/index.ts"],"sourcesContent":["\r\n// Using this from React requires the following to be applied in the application somewhere.\r\n// import { Buffer } from 'buffer'\r\n// global.Buffer = Buffer\r\n\r\nclass ApiTokens {\r\n public accessToken: string | null = null\r\n public refreshToken: string | null = null\r\n\r\n public decodeToken(token?: string): any {\r\n if (token) { \r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'\r\n if (isBrowser) {\r\n // Browser compatible version.\r\n const base64Url = token.split('.')[1]\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map((c) => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join(''))\r\n\r\n return JSON.parse(jsonPayload) || {}\r\n }\r\n else {\r\n const base64 = Buffer.from(token.split('.')[1], 'base64').toString()\r\n return JSON.parse(base64) || {}\r\n }\r\n }\r\n \r\n return {}\r\n }\r\n}\r\n\r\nexport default new ApiTokens()\r\n","export const OnSessionExpired = Symbol('login.session.expired')\r\nexport const OnAutomaticRefresh = Symbol('login.session.refreshed')\r\nexport const OnApiRetry = Symbol('api.retry')\r\nexport const OnPaymentStatusUpdate = Symbol('payment.status')\r\nexport const OnPaymentComplete = Symbol('payment.complete')\r\nexport const OnRequires3DSecure = Symbol('payment.wait.requires3dSecure')\r\nexport const OnRequiresPin = Symbol('payment.wait.requiresPin')\r\nexport const OnRequiresConfirmation = Symbol('payment.wait.requiresConfirmation')\r\nexport const OnRequiresAddress = Symbol('payment.wait.requiresAddress')\r\nexport const OnComplete3DSecure = Symbol('payment.complete3dSecure')","export class ApiError extends Error { \r\n public constructor(\r\n public statusCode: number,\r\n public result: any,\r\n message?: string,\r\n ) {\r\n let newMessage = message\r\n\r\n // Turn the message into a single string if there are multiple validation errors.\r\n if (Array.isArray(result) && result.length > 0) {\r\n newMessage = result.join(' ')\r\n }\r\n else if (typeof result === 'string' || result instanceof String) {\r\n newMessage = result.toString()\r\n }\r\n \r\n super(newMessage)\r\n Object.setPrototypeOf(this, ApiError.prototype)\r\n }\r\n}","import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\r\nimport { ApiError } from './apiError'\r\nimport ApiTokens from './apiTokens'\r\nimport PubSub from 'pubsub-js'\r\n\r\nconst LogSeparator = '-'.repeat(120)\r\n\r\nexport { default as ApiTokens } from './apiTokens'\r\n\r\nexport abstract class BaseApi { \r\n private readonly axiosInstance: AxiosInstance\r\n \r\n protected readonly consoleLogging: boolean\r\n protected readonly events = PubSub\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false) {\r\n this.axiosInstance = axiosInstance\r\n this.consoleLogging = consoleLogging || false\r\n }\r\n\r\n protected async request<T>(endpoint: string, method: string, body: any = null, token: string | null = null): Promise<T> {\r\n let response: AxiosResponse<any, any>\r\n\r\n try { \r\n let config: AxiosRequestConfig<any> = { \r\n method: method,\r\n url: endpoint\r\n }\r\n \r\n if (token || ApiTokens.accessToken) {\r\n config.headers = { 'Authorization': 'Bearer ' + (token || ApiTokens.accessToken) }\r\n }\r\n\r\n if (body) {\r\n config.data = body\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n' + LogSeparator)\r\n console.debug(`${method}: ${this.axiosInstance.defaults.baseURL}${endpoint}`)\r\n console.debug(LogSeparator)\r\n \r\n if (config.headers) {\r\n console.debug('-- HEADERS --')\r\n console.dir(config.headers)\r\n }\r\n\r\n if (config.data) {\r\n console.debug('-- REQUEST --')\r\n console.dir(config.data, { depth: null })\r\n }\r\n }\r\n\r\n response = await this.axiosInstance(config)\r\n\r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n-- RESPONSE --')\r\n console.dir(response.data, { depth: null })\r\n }\r\n } catch (error) {\r\n if (this.consoleLogging) {\r\n if (error.response) {\r\n console.error(`\\r\\n-- ERROR ${error.response.status} --\\r\\n`, error.response.data)\r\n }\r\n else {\r\n console.error(`\\r\\n-- ERROR ${error.errno || error.code } --\\r\\n`, error.code)\r\n }\r\n \r\n console.debug(LogSeparator)\r\n }\r\n\r\n let statusCode = 0\r\n let result = null\r\n let message = null\r\n \r\n if (error.response) {\r\n if (error.response.data) {\r\n result = error.response.data.result || null\r\n message = error.response.data.message || null\r\n statusCode = error.response.data.status || error.response.status\r\n }\r\n else {\r\n statusCode = error.response.status\r\n }\r\n }\r\n\r\n throw new ApiError(statusCode, result, message || error.message)\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug(LogSeparator)\r\n }\r\n\r\n if (response.data) {\r\n if (!response.data.success && typeof response.data !== 'string') {\r\n throw new ApiError(response.data.status || response.status, response.data.result || null, response.data.message || null)\r\n }\r\n\r\n return response.data.result || response.data || null\r\n }\r\n\r\n return null\r\n }\r\n}\r\n","import { BaseApi, ApiTokens } from '../baseApi'\r\nimport { OnSessionExpired } from '../eventTypes'\r\nimport {\r\n ChangePasswordRequest,\r\n ForgotPasswordRequest,\r\n LoginRequest,\r\n OtpVerificationRequest,\r\n TokenResponse,\r\n} from './types'\r\n\r\nconst baseAuthEndpoint = '/v1/auth'\r\n\r\nexport class Authentication extends BaseApi {\r\n isLoggedIn(): boolean {\r\n if (ApiTokens.accessToken) {\r\n try {\r\n return new Date().getTime() < ApiTokens.decodeToken(ApiTokens.accessToken).exp * 1000\r\n }\r\n catch {\r\n return false\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n async login(username: string, password: string): Promise<TokenResponse> {\r\n const request: LoginRequest = {\r\n username: username,\r\n password: password\r\n }\r\n\r\n ApiTokens.accessToken = null\r\n ApiTokens.refreshToken = null\r\n\r\n try {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/login`, 'POST', request)\r\n\r\n ApiTokens.accessToken = tokenResponse.accessToken\r\n ApiTokens.refreshToken = tokenResponse.refreshToken\r\n\r\n return Promise.resolve(tokenResponse)\r\n }\r\n catch (loginError) {\r\n // Change the access token if there is a response property for a new token. This may clear the token which is also expected.\r\n if (loginError.result) {\r\n ApiTokens.accessToken = loginError.result.changePasswordAccessToken || loginError.result.validatePhoneNumberAccessToken || loginError.result.resendEmailVerificationToken\r\n }\r\n \r\n throw loginError\r\n }\r\n }\r\n \r\n async logout(): Promise<void> {\r\n const refreshToken = ApiTokens.refreshToken\r\n \r\n ApiTokens.accessToken = null\r\n ApiTokens.refreshToken = null\r\n\r\n if (refreshToken) {\r\n await this.request(`${baseAuthEndpoint}/logout`, 'POST', null, refreshToken)\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --')\r\n }\r\n\r\n this.events.publish(OnSessionExpired)\r\n }\r\n\r\n return Promise.resolve()\r\n }\r\n \r\n async refresh(token?: string): Promise<TokenResponse> {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/refresh`, 'POST', null, token || ApiTokens.refreshToken)\r\n \r\n ApiTokens.accessToken = tokenResponse.accessToken\r\n ApiTokens.refreshToken = tokenResponse.refreshToken\r\n\r\n return Promise.resolve(tokenResponse)\r\n }\r\n \r\n async changePassword(oldPassword: string, newPassword: string): Promise<TokenResponse> {\r\n const request: ChangePasswordRequest = {\r\n oldPassword: oldPassword,\r\n newPassword: newPassword,\r\n resetCode: null,\r\n userReference: null\r\n }\r\n \r\n try {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseAuthEndpoint}/password/change`, 'POST', request)\r\n \r\n ApiTokens.accessToken = tokenResponse.accessToken\r\n ApiTokens.refreshToken = tokenResponse.refreshToken\r\n \r\n return Promise.resolve(tokenResponse)\r\n }\r\n catch (loginError) {\r\n // Change the access token if there is a response property for a new token. This may clear the token which is also expected.\r\n if (loginError.result) {\r\n ApiTokens.accessToken = loginError.result.changePasswordAccessToken || loginError.result.validatePhoneNumberAccessToken || loginError.result.resendEmailVerificationToken\r\n }\r\n \r\n throw loginError\r\n }\r\n }\r\n\r\n async forgotPassword(username: string): Promise<void> {\r\n const request: ForgotPasswordRequest = {\r\n username: username\r\n }\r\n\r\n return this.request<void>(`${baseAuthEndpoint}/password/forgot`, 'POST', request)\r\n }\r\n\r\n async validateOtp(otpValue: string): Promise<void> {\r\n const request: OtpVerificationRequest = {\r\n otpValue: otpValue\r\n }\r\n\r\n return this.request<void>(`${baseAuthEndpoint}/otp/validate`, 'POST', request)\r\n }\r\n\r\n async resendOtp(): Promise<void> {\r\n return this.request<void>(`${baseAuthEndpoint}/otp/resend`, 'POST')\r\n }\r\n\r\n async resendEmailAddressVerification(): Promise<void> {\r\n return this.request<void>(`${baseAuthEndpoint}/email/verify/resend`, 'POST', null)\r\n }\r\n\r\n getCurrentConsumerReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).consumer_reference || null\r\n }\r\n\r\n getCurrentMerchantReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).merchant_reference || null\r\n }\r\n\r\n getCurrentBusinessReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).business_reference || null\r\n }\r\n \r\n getCurrentTerminalReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).terminal_reference || null\r\n }\r\n\r\n getCurrentUserReference(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).reference || null\r\n }\r\n\r\n getCurrentUserName(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).user_name || null\r\n }\r\n\r\n getRedirectAction(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).redirect_action || null\r\n }\r\n\r\n getMobileNumber(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).mobile_number || null\r\n }\r\n \r\n getEmailAddress(token?: string): string {\r\n return ApiTokens.decodeToken(token || ApiTokens.accessToken || ApiTokens.refreshToken).email_address || null\r\n }\r\n}\r\n","export enum Bank {\r\n\tNone = \"None\",\r\n\tABD = \"ABD\",\r\n\tABL = \"ABL\",\r\n\tABG = \"ABG\",\r\n\tABN = \"ABN\",\r\n\tADB = \"ADB\",\r\n\tADS = \"ADS\",\r\n\tALM = \"ALM\",\r\n\tANS = \"ANS\",\r\n\tAPX = \"APX\",\r\n\tASL = \"ASL\",\r\n\tBSL = \"BSL\",\r\n\tBOA = \"BOA\",\r\n\tBOG = \"BOG\",\r\n\tBSP = \"BSP\",\r\n\tBPS = \"BPS\",\r\n\tBLM = \"BLM\",\r\n\tBSI = \"BSI\",\r\n\tCAL = \"CAL\",\r\n\tCBG = \"CBG\",\r\n\tCBN = \"CBN\",\r\n\tDFL = \"DFL\",\r\n\tECN = \"ECN\",\r\n\tECO = \"ECO\",\r\n\tEPG = \"EPG\",\r\n\tETZ = \"ETZ\",\r\n\tEXP = \"EXP\",\r\n\tFPL = \"FPL\",\r\n\tFAB = \"FAB\",\r\n\tFBL = \"FBL\",\r\n\tFBO = \"FBO\",\r\n\tFBN = \"FBN\",\r\n\tFCM = \"FCM\",\r\n\tFIN = \"FIN\",\r\n\tFNB = \"FNB\",\r\n\tGCB = \"GCB\",\r\n\tGPB = \"GPB\",\r\n\tGPG = \"GPG\",\r\n\tGMY = \"GMY\",\r\n\tGTB = \"GTB\",\r\n\tGTN = \"GTN\",\r\n\tHBN = \"HBN\",\r\n\tHBT = \"HBT\",\r\n\tITC = \"ITC\",\r\n\tJBN = \"JBN\",\r\n\tJUN = \"JUN\",\r\n\tKOR = \"KOR\",\r\n\tKSB = \"KSB\",\r\n\tMBN = \"MBN\",\r\n\tMLU = \"MLU\",\r\n\tMOL = \"MOL\",\r\n\tNGL = \"NGL\",\r\n\tNIB = \"NIB\",\r\n\tOPI = \"OPI\",\r\n\tNSL = \"NSL\",\r\n\tPSW = \"PSW\",\r\n\tPBL = \"PBL\",\r\n\tPBN = \"PBN\",\r\n\tRBG = \"RBG\",\r\n\tRBL = \"RBL\",\r\n\tSAS = \"SAS\",\r\n\tSBN = \"SBN\",\r\n\tSCB = \"SCB\",\r\n\tSCN = \"SCN\",\r\n\tSIS = \"SIS\",\r\n\tSOG = \"SOG\",\r\n\tSTB = \"STB\",\r\n\tSTN = \"STN\",\r\n\tTIT = \"TIT\",\r\n\tTRB = \"TRB\",\r\n\tUAN = \"UAN\",\r\n\tUBA = \"UBA\",\r\n\tUBN = \"UBN\",\r\n\tUMB = \"UMB\",\r\n\tUNB = \"UNB\",\r\n\tUNI = \"UNI\",\r\n\tUNL = \"UNL\",\r\n\tUSL = \"USL\",\r\n\tWBN = \"WBN\",\r\n\tZEN = \"ZEN\",\r\n\tZNI = \"ZNI\"\r\n}\r\nexport class BankData\r\n{\r\n\tpublic isAvailable: boolean;\r\n\tpublic bank: Bank;\r\n\tpublic bankCode: string;\r\n\tpublic bankName: string;\r\n\tpublic country: Country;\r\n}\r\nexport enum Channel {\r\n\tUnknown = \"Unknown\",\r\n\tWeb = \"Web\",\r\n\tUSSD = \"USSD\",\r\n\tCallback = \"Callback\",\r\n\tGenerated = \"Generated\",\r\n\tSettlement = \"Settlement\",\r\n\tScheduled = \"Scheduled\",\r\n\tMobileApplication = \"MobileApplication\",\r\n\tSDK = \"SDK\",\r\n\tPOS = \"POS\",\r\n\tSuperPOS = \"SuperPOS\"\r\n}\r\nexport enum ConsumerFileType {\r\n\tUnspecified = \"Unspecified\",\r\n\tFaceImage = \"FaceImage\",\r\n\tIdentityDocumentFront = \"IdentityDocumentFront\",\r\n\tIdentityDocumentBack = \"IdentityDocumentBack\",\r\n\tLiveness = \"Liveness\",\r\n\tProfileImage = \"ProfileImage\",\r\n\tSignature = \"Signature\"\r\n}\r\nexport enum Country {\r\n\tNone = \"None\",\r\n\tAFG = \"AFG\",\r\n\tALB = \"ALB\",\r\n\tDZA = \"DZA\",\r\n\tASM = \"ASM\",\r\n\tAND = \"AND\",\r\n\tAGO = \"AGO\",\r\n\tAIA = \"AIA\",\r\n\tATA = \"ATA\",\r\n\tATG = \"ATG\",\r\n\tARG = \"ARG\",\r\n\tARM = \"ARM\",\r\n\tABW = \"ABW\",\r\n\tAUS = \"AUS\",\r\n\tAUT = \"AUT\",\r\n\tAZE = \"AZE\",\r\n\tBHS = \"BHS\",\r\n\tBHR = \"BHR\",\r\n\tBGD = \"BGD\",\r\n\tBRB = \"BRB\",\r\n\tBLR = \"BLR\",\r\n\tBEL = \"BEL\",\r\n\tBLZ = \"BLZ\",\r\n\tBEN = \"BEN\",\r\n\tBMU = \"BMU\",\r\n\tBTN = \"BTN\",\r\n\tBOL = \"BOL\",\r\n\tBES = \"BES\",\r\n\tBIH = \"BIH\",\r\n\tBWA = \"BWA\",\r\n\tBVT = \"BVT\",\r\n\tBRA = \"BRA\",\r\n\tIOT = \"IOT\",\r\n\tVGB = \"VGB\",\r\n\tBRN = \"BRN\",\r\n\tBGR = \"BGR\",\r\n\tBFA = \"BFA\",\r\n\tBDI = \"BDI\",\r\n\tKHM = \"KHM\",\r\n\tCMR = \"CMR\",\r\n\tCAN = \"CAN\",\r\n\tCPV = \"CPV\",\r\n\tCYM = \"CYM\",\r\n\tCAF = \"CAF\",\r\n\tTCD = \"TCD\",\r\n\tCHL = \"CHL\",\r\n\tCHN = \"CHN\",\r\n\tCXR = \"CXR\",\r\n\tCCK = \"CCK\",\r\n\tCOL = \"COL\",\r\n\tCOM = \"COM\",\r\n\tCOG = \"COG\",\r\n\tCOK = \"COK\",\r\n\tCRI = \"CRI\",\r\n\tCIV = \"CIV\",\r\n\tHRV = \"HRV\",\r\n\tCUB = \"CUB\",\r\n\tCUW = \"CUW\",\r\n\tCYP = \"CYP\",\r\n\tCZE = \"CZE\",\r\n\tCOD = \"COD\",\r\n\tDNK = \"DNK\",\r\n\tDJI = \"DJI\",\r\n\tDMA = \"DMA\",\r\n\tDOM = \"DOM\",\r\n\tECU = \"ECU\",\r\n\tEGY = \"EGY\",\r\n\tSLV = \"SLV\",\r\n\tGNQ = \"GNQ\",\r\n\tERI = \"ERI\",\r\n\tEST = \"EST\",\r\n\tETH = \"ETH\",\r\n\tFLK = \"FLK\",\r\n\tFRO = \"FRO\",\r\n\tFJI = \"FJI\",\r\n\tFIN = \"FIN\",\r\n\tFRA = \"FRA\",\r\n\tFXX = \"FXX\",\r\n\tGUF = \"GUF\",\r\n\tPYF = \"PYF\",\r\n\tATF = \"ATF\",\r\n\tGAB = \"GAB\",\r\n\tGMB = \"GMB\",\r\n\tGEO = \"GEO\",\r\n\tDEU = \"DEU\",\r\n\tGHA = \"GHA\",\r\n\tGIB = \"GIB\",\r\n\tGRC = \"GRC\",\r\n\tGRL = \"GRL\",\r\n\tGRD = \"GRD\",\r\n\tGLP = \"GLP\",\r\n\tGUM = \"GUM\",\r\n\tGTM = \"GTM\",\r\n\tGIN = \"GIN\",\r\n\tGNB = \"GNB\",\r\n\tGUY = \"GUY\",\r\n\tHTI = \"HTI\",\r\n\tHMD = \"HMD\",\r\n\tVAT = \"VAT\",\r\n\tHND = \"HND\",\r\n\tHKG = \"HKG\",\r\n\tHUN = \"HUN\",\r\n\tISL = \"ISL\",\r\n\tIND = \"IND\",\r\n\tIDN = \"IDN\",\r\n\tIRN = \"IRN\",\r\n\tIRQ = \"IRQ\",\r\n\tIRL = \"IRL\",\r\n\tIMN = \"IMN\",\r\n\tISR = \"ISR\",\r\n\tITA = \"ITA\",\r\n\tJAM = \"JAM\",\r\n\tJPN = \"JPN\",\r\n\tJOR = \"JOR\",\r\n\tKAZ = \"KAZ\",\r\n\tKEN = \"KEN\",\r\n\tKIR = \"KIR\",\r\n\tKOR = \"KOR\",\r\n\tPRK = \"PRK\",\r\n\tKWT = \"KWT\",\r\n\tKGZ = \"KGZ\",\r\n\tLAO = \"LAO\",\r\n\tLVA = \"LVA\",\r\n\tLBN = \"LBN\",\r\n\tLSO = \"LSO\",\r\n\tLBR = \"LBR\",\r\n\tLBY = \"LBY\",\r\n\tLIE = \"LIE\",\r\n\tLTU = \"LTU\",\r\n\tLUX = \"LUX\",\r\n\tMAC = \"MAC\",\r\n\tMKD = \"MKD\",\r\n\tMDG = \"MDG\",\r\n\tMWI = \"MWI\",\r\n\tMYS = \"MYS\",\r\n\tMDV = \"MDV\",\r\n\tMLI = \"MLI\",\r\n\tMLT = \"MLT\",\r\n\tMHL = \"MHL\",\r\n\tMTQ = \"MTQ\",\r\n\tMRT = \"MRT\",\r\n\tMUS = \"MUS\",\r\n\tMYT = \"MYT\",\r\n\tMEX = \"MEX\",\r\n\tFSM = \"FSM\",\r\n\tMDA = \"MDA\",\r\n\tMCO = \"MCO\",\r\n\tMNG = \"MNG\",\r\n\tMSR = \"MSR\",\r\n\tMNE = \"MNE\",\r\n\tMAR = \"MAR\",\r\n\tMOZ = \"MOZ\",\r\n\tMMR = \"MMR\",\r\n\tNAM = \"NAM\",\r\n\tNRU = \"NRU\",\r\n\tNPL = \"NPL\",\r\n\tNLD = \"NLD\",\r\n\tNCL = \"NCL\",\r\n\tNZL = \"NZL\",\r\n\tNIC = \"NIC\",\r\n\tNER = \"NER\",\r\n\tNGA = \"NGA\",\r\n\tNIU = \"NIU\",\r\n\tNFK = \"NFK\",\r\n\tMNP = \"MNP\",\r\n\tNOR = \"NOR\",\r\n\tOMN = \"OMN\",\r\n\tPAK = \"PAK\",\r\n\tPLW = \"PLW\",\r\n\tPSE = \"PSE\",\r\n\tPAN = \"PAN\",\r\n\tPNG = \"PNG\",\r\n\tPRY = \"PRY\",\r\n\tPER = \"PER\",\r\n\tPHL = \"PHL\",\r\n\tPCN = \"PCN\",\r\n\tPOL = \"POL\",\r\n\tPRT = \"PRT\",\r\n\tPRI = \"PRI\",\r\n\tQAT = \"QAT\",\r\n\tREU = \"REU\",\r\n\tROU = \"ROU\",\r\n\tRUS = \"RUS\",\r\n\tRWA = \"RWA\",\r\n\tWSM = \"WSM\",\r\n\tSMR = \"SMR\",\r\n\tSTP = \"STP\",\r\n\tSAU = \"SAU\",\r\n\tSEN = \"SEN\",\r\n\tSRB = \"SRB\",\r\n\tSYC = \"SYC\",\r\n\tSLE = \"SLE\",\r\n\tSGP = \"SGP\",\r\n\tSXM = \"SXM\",\r\n\tSVK = \"SVK\",\r\n\tSVN = \"SVN\",\r\n\tSLB = \"SLB\",\r\n\tSOM = \"SOM\",\r\n\tZAF = \"ZAF\",\r\n\tSGS = \"SGS\",\r\n\tSSD = \"SSD\",\r\n\tESP = \"ESP\",\r\n\tLKA = \"LKA\",\r\n\tSHN = \"SHN\",\r\n\tKNA = \"KNA\",\r\n\tLCA = \"LCA\",\r\n\tMAF = \"MAF\",\r\n\tSPM = \"SPM\",\r\n\tVCT = \"VCT\",\r\n\tSDN = \"SDN\",\r\n\tSUR = \"SUR\",\r\n\tSJM = \"SJM\",\r\n\tSWZ = \"SWZ\",\r\n\tSWE = \"SWE\",\r\n\tCHE = \"CHE\",\r\n\tSYR = \"SYR\",\r\n\tTWN = \"TWN\",\r\n\tTJK = \"TJK\",\r\n\tTZA = \"TZA\",\r\n\tTHA = \"THA\",\r\n\tTLS = \"TLS\",\r\n\tTGO = \"TGO\",\r\n\tTKL = \"TKL\",\r\n\tTON = \"TON\",\r\n\tTTO = \"TTO\",\r\n\tTUN = \"TUN\",\r\n\tTUR = \"TUR\",\r\n\tTKM = \"TKM\",\r\n\tTCA = \"TCA\",\r\n\tTUV = \"TUV\",\r\n\tUGA = \"UGA\",\r\n\tUKR = \"UKR\",\r\n\tARE = \"ARE\",\r\n\tGBR = \"GBR\",\r\n\tQZZ = \"QZZ\",\r\n\tUSA = \"USA\",\r\n\tUMI = \"UMI\",\r\n\tVIR = \"VIR\",\r\n\tURY = \"URY\",\r\n\tUZB = \"UZB\",\r\n\tVUT = \"VUT\",\r\n\tVEN = \"VEN\",\r\n\tVNM = \"VNM\",\r\n\tWLF = \"WLF\",\r\n\tESH = \"ESH\",\r\n\tYEM = \"YEM\",\r\n\tZMB = \"ZMB\",\r\n\tZWE = \"ZWE\"\r\n}\r\nexport class CountryData\r\n{\r\n\tpublic isAvailable: boolean;\r\n\tpublic country: Country;\r\n\tpublic countryName: string;\r\n\tpublic longIsoCode: string;\r\n\tpublic shortIsoCode: string;\r\n\tpublic numericIsoCode: number;\r\n\tpublic dialingCode: string;\r\n}\r\nexport enum Currency {\r\n\tNone = \"None\",\r\n\tAFN = \"AFN\",\r\n\tALL = \"ALL\",\r\n\tANG = \"ANG\",\r\n\tARS = \"ARS\",\r\n\tAUD = \"AUD\",\r\n\tAWG = \"AWG\",\r\n\tAZN = \"AZN\",\r\n\tBAM = \"BAM\",\r\n\tBBD = \"BBD\",\r\n\tBGN = \"BGN\",\r\n\tBMD = \"BMD\",\r\n\tBND = \"BND\",\r\n\tBOB = \"BOB\",\r\n\tBRL = \"BRL\",\r\n\tBSD = \"BSD\",\r\n\tBWP = \"BWP\",\r\n\tBYN = \"BYN\",\r\n\tBZD = \"BZD\",\r\n\tCAD = \"CAD\",\r\n\tCHF = \"CHF\",\r\n\tCLP = \"CLP\",\r\n\tCNY = \"CNY\",\r\n\tCOP = \"COP\",\r\n\tCRC = \"CRC\",\r\n\tCUP = \"CUP\",\r\n\tCZK = \"CZK\",\r\n\tDKK = \"DKK\",\r\n\tDOP = \"DOP\",\r\n\tEGP = \"EGP\",\r\n\tEUR = \"EUR\",\r\n\tFJD = \"FJD\",\r\n\tFKP = \"FKP\",\r\n\tGBP = \"GBP\",\r\n\tGHS = \"GHS\",\r\n\tGIP = \"GIP\",\r\n\tGTQ = \"GTQ\",\r\n\tGYD = \"GYD\",\r\n\tHKD = \"HKD\",\r\n\tHNL = \"HNL\",\r\n\tHRK = \"HRK\",\r\n\tHUF = \"HUF\",\r\n\tIDR = \"IDR\",\r\n\tILS = \"ILS\",\r\n\tINR = \"INR\",\r\n\tIRR = \"IRR\",\r\n\tISK = \"ISK\",\r\n\tJMD = \"JMD\",\r\n\tJPY = \"JPY\",\r\n\tKGS = \"KGS\",\r\n\tKHR = \"KHR\",\r\n\tKPW = \"KPW\",\r\n\tKRW = \"KRW\",\r\n\tKYD = \"KYD\",\r\n\tKZT = \"KZT\",\r\n\tLAK = \"LAK\",\r\n\tLBP = \"LBP\",\r\n\tLKR = \"LKR\",\r\n\tLRD = \"LRD\",\r\n\tMKD = \"MKD\",\r\n\tMNT = \"MNT\",\r\n\tMUR = \"MUR\",\r\n\tMXN = \"MXN\",\r\n\tMYR = \"MYR\",\r\n\tMZN = \"MZN\",\r\n\tNAD = \"NAD\",\r\n\tNGN = \"NGN\",\r\n\tNIO = \"NIO\",\r\n\tNOK = \"NOK\",\r\n\tNPR = \"NPR\",\r\n\tNZD = \"NZD\",\r\n\tOMR = \"OMR\",\r\n\tPAB = \"PAB\",\r\n\tPEN = \"PEN\",\r\n\tPHP = \"PHP\",\r\n\tPKR = \"PKR\",\r\n\tPLN = \"PLN\",\r\n\tPYG = \"PYG\",\r\n\tQAR = \"QAR\",\r\n\tRON = \"RON\",\r\n\tRSD = \"RSD\",\r\n\tRUB = \"RUB\",\r\n\tSAR = \"SAR\",\r\n\tSBD = \"SBD\",\r\n\tSCR = \"SCR\",\r\n\tSEK = \"SEK\",\r\n\tSGD = \"SGD\",\r\n\tSHP = \"SHP\",\r\n\tSOS = \"SOS\",\r\n\tSRD = \"SRD\",\r\n\tSVC = \"SVC\",\r\n\tSYP = \"SYP\",\r\n\tTHB = \"THB\",\r\n\tTRY = \"TRY\",\r\n\tTTD = \"TTD\",\r\n\tTWD = \"TWD\",\r\n\tUAH = \"UAH\",\r\n\tUSD = \"USD\",\r\n\tUYU = \"UYU\",\r\n\tUZS = \"UZS\",\r\n\tVES = \"VES\",\r\n\tVND = \"VND\",\r\n\tXCD = \"XCD\",\r\n\tYER = \"YER\",\r\n\tZAR = \"ZAR\",\r\n\tZWD = \"ZWD\"\r\n}\r\nexport class CurrencyData\r\n{\r\n\tpublic isAvailable: boolean;\r\n\tpublic currency: Currency;\r\n\tpublic currencyName: string;\r\n\tpublic currencyCode: string;\r\n\tpublic symbol: string;\r\n\tpublic numericIsoCode: number;\r\n}\r\nexport enum DayOfWeek {\r\n\tSunday = \"Sunday\",\r\n\tMonday = \"Monday\",\r\n\tTuesday = \"Tuesday\",\r\n\tWednesday = \"Wednesday\",\r\n\tThursday = \"Thursday\",\r\n\tFriday = \"Friday\",\r\n\tSaturday = \"Saturday\"\r\n}\r\nexport enum FaceMovementDetectionLevel {\r\n\tNone = \"None\",\r\n\tOneRangeOfMotion = \"OneRangeOfMotion\",\r\n\tMultipleRangesOfMotion = \"MultipleRangesOfMotion\",\r\n\tAllRangesOfMotion = \"AllRangesOfMotion\"\r\n}\r\nexport enum Gender {\r\n\tMale = \"Male\",\r\n\tFemale = \"Female\"\r\n}\r\nexport class IdAndDescription\r\n{\r\n\tpublic id: number;\r\n\tpublic description: string;\r\n}\r\nexport enum IdentityDocumentType {\r\n\tNone = \"None\",\r\n\tNational = \"National\",\r\n\tPassport = \"Passport\",\r\n\tDrivers = \"Drivers\",\r\n\tOther = \"Other\",\r\n\tGhanaCard = \"GhanaCard\",\r\n\tSocialSecurity = \"SocialSecurity\",\r\n\tVoter = \"Voter\",\r\n\tIdCard = \"IdCard\"\r\n}\r\nexport enum KybProvider {\r\n\tNone = \"None\",\r\n\tManual = \"Manual\"\r\n}\r\nexport enum KybStatus {\r\n\tNotRequired = \"NotRequired\",\r\n\tUnverified = \"Unverified\",\r\n\tVerified = \"Verified\",\r\n\tRejected = \"Rejected\"\r\n}\r\n/** The KYC service provider identifier. */\r\nexport enum KycProvider {\r\n\tNone = \"None\",\r\n\tSmileIdentity = \"SmileIdentity\",\r\n\tGMoney = \"GMoney\",\r\n\tNIA = \"NIA\",\r\n\tManual = \"Manual\"\r\n}\r\n/** The KYC verification status. */\r\nexport enum KycStatus {\r\n\tNone = \"None\",\r\n\tUnverified = \"Unverified\",\r\n\tVerified = \"Verified\",\r\n\tRejected = \"Rejected\",\r\n\tReview = \"Review\"\r\n}\r\n/** The KYC verification type. */\r\nexport enum KycVerificationType {\r\n\tIdentity = \"Identity\",\r\n\tLiveness = \"Liveness\",\r\n\tFacial = \"Facial\"\r\n}\r\nexport enum Language {\r\n\tNone = \"None\",\r\n\tAAR = \"AAR\",\r\n\tAFR = \"AFR\",\r\n\tAGQ = \"AGQ\",\r\n\tAKA = \"AKA\",\r\n\tAMH = \"AMH\",\r\n\tARA = \"ARA\",\r\n\tARN = \"ARN\",\r\n\tASM = \"ASM\",\r\n\tASA = \"ASA\",\r\n\tAST = \"AST\",\r\n\tAZE = \"AZE\",\r\n\tBAK = \"BAK\",\r\n\tBAS = \"BAS\",\r\n\tBEL = \"BEL\",\r\n\tBEM = \"BEM\",\r\n\tBEZ = \"BEZ\",\r\n\tBUL = \"BUL\",\r\n\tBIN = \"BIN\",\r\n\tBAM = \"BAM\",\r\n\tBEN = \"BEN\",\r\n\tBOD = \"BOD\",\r\n\tBRE = \"BRE\",\r\n\tBRX = \"BRX\",\r\n\tBOS = \"BOS\",\r\n\tBYN = \"BYN\",\r\n\tCAT = \"CAT\",\r\n\tCHE = \"CHE\",\r\n\tCGG = \"CGG\",\r\n\tCHR = \"CHR\",\r\n\tCOS = \"COS\",\r\n\tCES = \"CES\",\r\n\tCHU = \"CHU\",\r\n\tCYM = \"CYM\",\r\n\tDAN = \"DAN\",\r\n\tDAV = \"DAV\",\r\n\tDEU = \"DEU\",\r\n\tDJE = \"DJE\",\r\n\tDSB = \"DSB\",\r\n\tDUA = \"DUA\",\r\n\tDIV = \"DIV\",\r\n\tDYO = \"DYO\",\r\n\tDZO = \"DZO\",\r\n\tEBU = \"EBU\",\r\n\tEWE = \"EWE\",\r\n\tELL = \"ELL\",\r\n\tENG = \"ENG\",\r\n\tEPO = \"EPO\",\r\n\tSPA = \"SPA\",\r\n\tEST = \"EST\",\r\n\tEUS = \"EUS\",\r\n\tEWO = \"EWO\",\r\n\tFAS = \"FAS\",\r\n\tFUL = \"FUL\",\r\n\tFIN = \"FIN\",\r\n\tFIL = \"FIL\",\r\n\tFAO = \"FAO\",\r\n\tFRA = \"FRA\",\r\n\tFUR = \"FUR\",\r\n\tFRY = \"FRY\",\r\n\tGLE = \"GLE\",\r\n\tGLA = \"GLA\",\r\n\tGLG = \"GLG\",\r\n\tGRN = \"GRN\",\r\n\tGSW = \"GSW\",\r\n\tGUJ = \"GUJ\",\r\n\tGUZ = \"GUZ\",\r\n\tGLV = \"GLV\",\r\n\tHAU = \"HAU\",\r\n\tHAW = \"HAW\",\r\n\tHEB = \"HEB\",\r\n\tHIN = \"HIN\",\r\n\tHRV = \"HRV\",\r\n\tHSB = \"HSB\",\r\n\tHUN = \"HUN\",\r\n\tHYE = \"HYE\",\r\n\tINA = \"INA\",\r\n\tIBB = \"IBB\",\r\n\tIND = \"IND\",\r\n\tIBO = \"IBO\",\r\n\tIII = \"III\",\r\n\tISL = \"ISL\",\r\n\tITA = \"ITA\",\r\n\tIKU = \"IKU\",\r\n\tJPN = \"JPN\",\r\n\tJGO = \"JGO\",\r\n\tJMC = \"JMC\",\r\n\tJAV = \"JAV\",\r\n\tKAT = \"KAT\",\r\n\tKAB = \"KAB\",\r\n\tKAM = \"KAM\",\r\n\tKDE = \"KDE\",\r\n\tKEA = \"KEA\",\r\n\tKHQ = \"KHQ\",\r\n\tKIK = \"KIK\",\r\n\tKAZ = \"KAZ\",\r\n\tKKJ = \"KKJ\",\r\n\tKAL = \"KAL\",\r\n\tKLN = \"KLN\",\r\n\tKHM = \"KHM\",\r\n\tKAN = \"KAN\",\r\n\tKOR = \"KOR\",\r\n\tKOK = \"KOK\",\r\n\tKAU = \"KAU\",\r\n\tKAS = \"KAS\",\r\n\tKSB = \"KSB\",\r\n\tKSF = \"KSF\",\r\n\tKSH = \"KSH\",\r\n\tKUR = \"KUR\",\r\n\tCOR = \"COR\",\r\n\tKIR = \"KIR\",\r\n\tLAT = \"LAT\",\r\n\tLAG = \"LAG\",\r\n\tLTZ = \"LTZ\",\r\n\tLUG = \"LUG\",\r\n\tLKT = \"LKT\",\r\n\tLIN = \"LIN\",\r\n\tLAO = \"LAO\",\r\n\tLRC = \"LRC\",\r\n\tLIT = \"LIT\",\r\n\tLUB = \"LUB\",\r\n\tLUO = \"LUO\",\r\n\tLUY = \"LUY\",\r\n\tLAV = \"LAV\",\r\n\tMAS = \"MAS\",\r\n\tMER = \"MER\",\r\n\tMFE = \"MFE\",\r\n\tMLG = \"MLG\",\r\n\tMGH = \"MGH\",\r\n\tMGO = \"MGO\",\r\n\tMRI = \"MRI\",\r\n\tMKD = \"MKD\",\r\n\tMAL = \"MAL\",\r\n\tMON = \"MON\",\r\n\tMNI = \"MNI\",\r\n\tMOH = \"MOH\",\r\n\tMAR = \"MAR\",\r\n\tMSA = \"MSA\",\r\n\tMLT = \"MLT\",\r\n\tMUA = \"MUA\",\r\n\tMYA = \"MYA\",\r\n\tMZN = \"MZN\",\r\n\tNAQ = \"NAQ\",\r\n\tNDE = \"NDE\",\r\n\tNDS = \"NDS\",\r\n\tNEP = \"NEP\",\r\n\tNLD = \"NLD\",\r\n\tNMG = \"NMG\",\r\n\tNNO = \"NNO\",\r\n\tNNH = \"NNH\",\r\n\tNOB = \"NOB\",\r\n\tNQO = \"NQO\",\r\n\tNBL = \"NBL\",\r\n\tNSO = \"NSO\",\r\n\tNUS = \"NUS\",\r\n\tNYN = \"NYN\",\r\n\tOCI = \"OCI\",\r\n\tORM = \"ORM\",\r\n\tORI = \"ORI\",\r\n\tOSS = \"OSS\",\r\n\tPAN = \"PAN\",\r\n\tPAP = \"PAP\",\r\n\tPOL = \"POL\",\r\n\tPRG = \"PRG\",\r\n\tPRS = \"PRS\",\r\n\tPUS = \"PUS\",\r\n\tPOR = \"POR\",\r\n\tQUC = \"QUC\",\r\n\tQUB = \"QUB\",\r\n\tROH = \"ROH\",\r\n\tRUN = \"RUN\",\r\n\tRON = \"RON\",\r\n\tROF = \"ROF\",\r\n\tRUS = \"RUS\",\r\n\tKIN = \"KIN\",\r\n\tRWK = \"RWK\",\r\n\tSAN = \"SAN\",\r\n\tSAH = \"SAH\",\r\n\tSAQ = \"SAQ\",\r\n\tSBP = \"SBP\",\r\n\tSND = \"SND\",\r\n\tSME = \"SME\",\r\n\tSEH = \"SEH\",\r\n\tSES = \"SES\",\r\n\tSAG = \"SAG\",\r\n\tSHI = \"SHI\",\r\n\tSIN = \"SIN\",\r\n\tSLK = \"SLK\",\r\n\tSLV = \"SLV\",\r\n\tSMA = \"SMA\",\r\n\tSMJ = \"SMJ\",\r\n\tSMN = \"SMN\",\r\n\tSMS = \"SMS\",\r\n\tSNA = \"SNA\",\r\n\tSOM = \"SOM\",\r\n\tSQI = \"SQI\",\r\n\tSRP = \"SRP\",\r\n\tSSW = \"SSW\",\r\n\tSSY = \"SSY\",\r\n\tSOT = \"SOT\",\r\n\tSWE = \"SWE\",\r\n\tSWA = \"SWA\",\r\n\tSYR = \"SYR\",\r\n\tTAM = \"TAM\",\r\n\tTEL = \"TEL\",\r\n\tTEO = \"TEO\",\r\n\tTGK = \"TGK\",\r\n\tTHA = \"THA\",\r\n\tTIR = \"TIR\",\r\n\tTIG = \"TIG\",\r\n\tTUK = \"TUK\",\r\n\tTSN = \"TSN\",\r\n\tTON = \"TON\",\r\n\tTUR = \"TUR\",\r\n\tTSO = \"TSO\",\r\n\tTAT = \"TAT\",\r\n\tTWQ = \"TWQ\",\r\n\tTZM = \"TZM\",\r\n\tUIG = \"UIG\",\r\n\tUKR = \"UKR\",\r\n\tURD = \"URD\",\r\n\tUZB = \"UZB\",\r\n\tVAI = \"VAI\",\r\n\tVEN = \"VEN\",\r\n\tVIE = \"VIE\",\r\n\tVOL = \"VOL\",\r\n\tVUN = \"VUN\",\r\n\tWAE = \"WAE\",\r\n\tWAL = \"WAL\",\r\n\tWOL = \"WOL\",\r\n\tXHO = \"XHO\",\r\n\tXOG = \"XOG\",\r\n\tYAV = \"YAV\",\r\n\tYID = \"YID\",\r\n\tYOR = \"YOR\",\r\n\tZGH = \"ZGH\",\r\n\tZHO = \"ZHO\",\r\n\tZUL = \"ZUL\"\r\n}\r\nexport class LanguageData\r\n{\r\n\tpublic isAvailable: boolean;\r\n\tpublic languageCode: string;\r\n\tpublic languageName: string;\r\n}\r\nexport enum MerchantCategory {\r\n\tNone = 0,\r\n\tCommerceBankODP = 11,\r\n\tPostageTransactionCharge = 701,\r\n\tVeterinaryServices = 742,\r\n\tAgriculturalCooperatives = 763,\r\n\tLandscapingAndHorticulturalServices = 780,\r\n\tGeneralContractorsResidentialAndCommercial = 1520,\r\n\tHeatingPlumbingAndAirConditioningContractors = 1711,\r\n\tElectricalContractors = 1731,\r\n\tMasonryStoneworkTileSettingPlasteringAndInsulationContractors = 1740,\r\n\tCarpentryContractors = 1750,\r\n\tRoofingSidingAndSheetMetalWorkContractors = 1761,\r\n\tAsphaltCementAndConcreteWorkContractors = 1771,\r\n\tSpecialTradeContractors = 1799,\r\n\tMiscellaneousPublishingAndPrinting = 2741,\r\n\tTypesettingPlateMakingAndRelatedServices = 2791,\r\n\tSpecialtyCleaningPolishingAndSanitationPreparations = 2842,\r\n\tUnitedAirlines = 3000,\r\n\tAmericanAirlines = 3001,\r\n\tPanAmerican = 3002,\r\n\tEuroflyAirlines = 3003,\r\n\tDragonair = 3004,\r\n\tBritishAirways = 3005,\r\n\tJapanAirlines = 3006,\r\n\tAirFrance = 3007,\r\n\tLufthansa = 3008,\r\n\tAirCanada = 3009,\r\n\tKLMRoyalDutchAirlines = 3010,\r\n\tAeroflot = 3011,\r\n\tQantas = 3012,\r\n\tAlitalia = 3013,\r\n\tSaudiArabianAirlines = 3014,\r\n\tSwissInternationalAirlines = 3015,\r\n\tSAS = 3016,\r\n\tSouthAfricanAirways = 3017,\r\n\tVarigAirBrazil = 3018,\r\n\tGermanwings = 3019,\r\n\tAirIndia = 3020,\r\n\tAirAlgerie = 3021,\r\n\tPALAir = 3022,\r\n\tMexicana = 3023,\r\n\tPakistanInternational = 3024,\r\n\tAirNewZealand = 3025,\r\n\tEmiratesAirlines = 3026,\r\n\tUTAInterair = 3027,\r\n\tAirMalta = 3028,\r\n\tSNBrusselsAirlines = 3029,\r\n\tAerolineasArgentinas = 3030,\r\n\tOlympicAirways = 3031,\r\n\tElAl = 3032,\r\n\tAnsettAirlines = 3033,\r\n\tTransAustralianAirways = 3034,\r\n\tTAPPortugal = 3035,\r\n\tVASPBrazil = 3036,\r\n\tEgyptair = 3037,\r\n\tKuwaitAirways = 3038,\r\n\tAvianca = 3039,\r\n\tGulfAirBahrain = 3040,\r\n\tBalkanBulgarianAirlines = 3041,\r\n\tFinnair = 3042,\r\n\tAerLingus = 3043,\r\n\tAirLanka = 3044,\r\n\tNigeriaAirways = 3045,\r\n\tCruzeiroDoSulBrazil = 3046,\r\n\tTHYTurkey = 3047,\r\n\tAirmaro = 3048,\r\n\tTunisAir = 3049,\r\n\tIcelandair = 3050,\r\n\tAustrianAirlines = 3051,\r\n\tLANAirlinesLanair = 3052,\r\n\tAviacoSpain = 3053,\r\n\tLadecoChile = 3054,\r\n\tLABBolivia = 3055,\r\n\tQuebecaire = 3056,\r\n\tEastWestAirlinesAustralia = 3057,\r\n\tDelta = 3058,\r\n\tDLAAirlinesRepublic = 3059,\r\n\tNorthwest = 3060,\r\n\tContinental = 3061,\r\n\tWesternAirlinesHapagLloydExpress = 3062,\r\n\tUSAir = 3063,\r\n\tAdriaAirways = 3064,\r\n\tAirinter = 3065,\r\n\tSouthwest = 3066,\r\n\tVanguardAirlines = 3067,\r\n\tAirAstana = 3068,\r\n\tAirEurope = 3069,\r\n\tPacificSouthwestAirline = 3070,\r\n\tAirBritishColumbia = 3071,\r\n\tCebuPac = 3072,\r\n\tAirCal = 3073,\r\n\tSingaporeAirlines = 3075,\r\n\tAeromexico = 3076,\r\n\tThaiAirways = 3077,\r\n\tChinaAirlines = 3078,\r\n\tJetstarAirlines = 3079,\r\n\tNordair = 3081,\r\n\tKoreanAirlines = 3082,\r\n\tAirAfriqueAirAfriq = 3083,\r\n\tEVAAirways = 3084,\r\n\tMidwestExpress = 3085,\r\n\tCarnivalAirlines = 3086,\r\n\tMetroAirlines = 3087,\r\n\tCroatiaAirlines = 3088,\r\n\tTransaero = 3089,\r\n\tUniAirways = 3090,\r\n\tMidwayAirlines = 3092,\r\n\tZambiaAirways = 3094,\r\n\tWardair = 3095,\r\n\tAirZimbabwe = 3096,\r\n\tSpanair = 3097,\r\n\tAsiannaAirlines = 3098,\r\n\tCathayPacific = 3099,\r\n\tMalaysianAirlineSystem = 3100,\r\n\tUTA = 3101,\r\n\tIberia = 3102,\r\n\tGarudaIndonesia = 3103,\r\n\tPiedmont = 3105,\r\n\tBraathensSAFENorway = 3106,\r\n\tWorldAirways = 3108,\r\n\tWingsAirways = 3110,\r\n\tBritishMidland = 3111,\r\n\tWindwardIsland = 3112,\r\n\tTowerAir = 3115,\r\n\tVenezolanaInternationalDeAviacion = 3117,\r\n\tValleyAirlines = 3118,\r\n\tTAN = 3125,\r\n\tTalair = 3126,\r\n\tTACAInternational = 3127,\r\n\tSurinamAirways = 3129,\r\n\tSunWorldInternational = 3130,\r\n\tVLMAirlines = 3131,\r\n\tFrontierAirlines = 3132,\r\n\tSunbeltAirlines = 3133,\r\n\tSudanAirways = 3135,\r\n\tQatarAirways = 3136,\r\n\tSingletonAir = 3137,\r\n\tSimmonsAirlines = 3138,\r\n\tSeairAlaska = 3141,\r\n\tScenicAirlines = 3143,\r\n\tVirginAtlantic = 3144,\r\n\tSanJuanAirlines = 3145,\r\n\tLuxair = 3146,\r\n\tAirLittoralSA = 3148,\r\n\tAirZaire = 3151,\r\n\tPrinceville = 3154,\r\n\tGoFlyLtd = 3156,\r\n\tProvincetownBostonAirways = 3159,\r\n\tAllNipponAirways = 3161,\r\n\tNortonair = 3164,\r\n\tNewYorkHelicopter = 3165,\r\n\tAeroContinente = 3167,\r\n\tMountCook = 3170,\r\n\tCanadianAirlinesInternational = 3171,\r\n\tNationair = 3172,\r\n\tJetblueAirlines = 3174,\r\n\tMiddleEastAir = 3175,\r\n\tMetroflightAirlines = 3176,\r\n\tAirtranAirways = 3177,\r\n\tMesaAir = 3178,\r\n\tWestjetair = 3180,\r\n\tMalev = 3181,\r\n\tLOTPoland = 3182,\r\n\tOmanair = 3183,\r\n\tLIAT = 3184,\r\n\tLAVVenezuela = 3185,\r\n\tLineasAereasParaguayas = 3186,\r\n\tLACSACostaRica = 3187,\r\n\tVirginexpair = 3188,\r\n\tJugoslavAir = 3190,\r\n\tIslandAirlines = 3191,\r\n\tIranAir = 3192,\r\n\tIndianAirlines = 3193,\r\n\tHolidayAirlines = 3195,\r\n\tHawaiianAir = 3196,\r\n\tHavasuAirlines = 3197,\r\n\tHarborAirlines = 3198,\r\n\tServiciosAereosMilitares = 3199,\r\n\tGuyanaAirways = 3200,\r\n\tGoldenPacificAir = 3203,\r\n\tFreedomAir = 3204,\r\n\tChinaEasternAirlines = 3206,\r\n\tEmpresaEcuatorinana = 3207,\r\n\tNorwegianAirShuttle = 3211,\r\n\tDominicana = 3212,\r\n\tMalmoAviation = 3213,\r\n\tDanAirServices = 3215,\r\n\tCumberlandAirlines = 3216,\r\n\tCSA = 3217,\r\n\tCrownAir = 3218,\r\n\tCopa = 3219,\r\n\tCompaniaFaucett = 3220,\r\n\tTransportesAerosMilitaresEcuatorianos = 3221,\r\n\tCommandAirways = 3222,\r\n\tComair = 3223,\r\n\tSkywaysAir = 3226,\r\n\tCaymanAirways = 3228,\r\n\tSAETASociedadEcuatorianosDeTransportesAereos = 3229,\r\n\tSAHSAServicioAeroDeHonduras = 3231,\r\n\tCapitolAir = 3233,\r\n\tCaribbeanAirlines = 3234,\r\n\tBrockwayAir = 3235,\r\n\tAirArabia = 3236,\r\n\tBemidjiAviation = 3238,\r\n\tBarHarborAirlines = 3239,\r\n\tBahamasair = 3240,\r\n\tAviatecaGuatemala = 3241,\r\n\tCaribbeanAirlinesCaribbean = 3242,\r\n\tAustrianAirService = 3243,\r\n\tEasyjetAir = 3245,\r\n\tRyanair = 3246,\r\n\tGOLAir = 3247,\r\n\tTAMAir = 3248,\r\n\tAlohaAirlines = 3251,\r\n\tALM = 3252,\r\n\tAmericaWest = 3253,\r\n\tUSAirShuttle = 3254,\r\n\tAlaskaAirlines = 3256,\r\n\tAmericanTransAir = 3259,\r\n\tSpiritAirlines = 3260,\r\n\tAirChina = 3261,\r\n\tRenoAirInc = 3262,\r\n\tAeroServicioCaraboboASERCA = 3263,\r\n\tAirSeychelles = 3266,\r\n\tAirPanama = 3267,\r\n\tAirPacific = 3268,\r\n\tRicaHotels = 3273,\r\n\tInterNorHotels = 3274,\r\n\tAirNevada = 3275,\r\n\tAirMidwest = 3276,\r\n\tAirMadagascar = 3277,\r\n\tAirLA = 3279,\r\n\tAirJamaica = 3280,\r\n\tAirDjibouti = 3281,\r\n\tAirDjiboutiDuplicate = 3282,\r\n\tAeroVirginIslands = 3284,\r\n\tAeroperu = 3285,\r\n\tAerolineasNicaraguensis = 3286,\r\n\tAeroCoachAviation = 3287,\r\n\tArianaAfghan = 3291,\r\n\tCyprusAirways = 3292,\r\n\tEcuatoriana = 3293,\r\n\tEthiopianAirlines = 3294,\r\n\tKenyaAirways = 3295,\r\n\tAirBerlin = 3296,\r\n\tTarom = 3297,\r\n\tAirMauritius = 3298,\r\n\tWideroeFlyveselskap = 3299,\r\n\tAffiliatedAutoRental = 3351,\r\n\tAmericanInternational = 3352,\r\n\tBrooksRentACar = 3353,\r\n\tActionAutoRental = 3354,\r\n\tSixtCarRental = 3355,\r\n\tHertzRentACar = 3357,\r\n\tPaylessCarRental = 3359,\r\n\tSnappyCarRental = 3360,\r\n\tAirwaysRentACar = 3361,\r\n\tAltraAutoRental = 3362,\r\n\tAgencyRentACar = 3364,\r\n\tBudgetRentACar = 3366,\r\n\tHolidayRentACar = 3368,\r\n\tRentAWreck = 3370,\r\n\tAccentRentACar = 3374,\r\n\tAjaxRentACar = 3376,\r\n\tTriangleRentACar = 3380,\r\n\tEuropCar = 3381,\r\n\tTropicalRentACar = 3385,\r\n\tShowcaseRentalCars = 3386,\r\n\tAlamoRentACar = 3387,\r\n\tMerchantsRentACar = 3388,\r\n\tAvisRentACar = 3389,\r\n\tDollarRentACar = 3390,\r\n\tEuropeByCar = 3391,\r\n\tNationalCarRental = 3393,\r\n\tKemwellGroupRentACar = 3394,\r\n\tThriftyRentACar = 3395,\r\n\tTildenRentACar = 3396,\r\n\tEconoCarRentACar = 3398,\r\n\tAmerexRentACar = 3399,\r\n\tAutoHostCarRentals = 3400,\r\n\tEnterpriseRentACar = 3405,\r\n\tGeneralRentACar = 3409,\r\n\tAtlantaRentACar = 3411,\r\n\tA1RentACar = 3412,\r\n\tGodfreyNatlRentACar = 3414,\r\n\tAlphaRentACar = 3419,\r\n\tAnsaIntlRentACar = 3420,\r\n\tAllstateRentACar = 3421,\r\n\tAvcarRentACar = 3423,\r\n\tAutomateRentACar = 3425,\r\n\tAvonRentACar = 3427,\r\n\tCareyRentACar = 3428,\r\n\tInsuranceRentACar = 3429,\r\n\tMajorRentACar = 3430,\r\n\tReplacementRentACar = 3431,\r\n\tReserveRentACar = 3432,\r\n\tUglyDucklingRentACar = 3433,\r\n\tUSARentACar = 3434,\r\n\tValueRentACar = 3435,\r\n\tAutohansaRentACar = 3436,\r\n\tCiteRentACar = 3437,\r\n\tInterentRentACar = 3438,\r\n\tMillevilleRentACar = 3439,\r\n\tViaRouteRentACar = 3440,\r\n\tAdvantageRentACar = 3441,\r\n\tHolidayInns = 3501,\r\n\tBestWesternHotels = 3502,\r\n\tSheratonHotels = 3503,\r\n\tHiltonHotels = 3504,\r\n\tForteHotels = 3505,\r\n\tGoldenTulipHotels = 3506,\r\n\tFriendshipInns = 3507,\r\n\tQualityInnsQualitySuites = 3508,\r\n\tMarriottHotels = 3509,\r\n\tDaysInnsDaystop = 3510,\r\n\tArabellaHotels = 3511,\r\n\tInterContinentalHotels = 3512,\r\n\tWestinHotels = 3513,\r\n\tAmeriSuites = 3514,\r\n\tRodewayInns = 3515,\r\n\tLaQuintaMotorInns = 3516,\r\n\tAmericanaHotels = 3517,\r\n\tSolHotels = 3518,\r\n\tPullmanInternationalHotels = 3519,\r\n\tMeridienHotels = 3520,\r\n\tRoyalLahainaResorts = 3521,\r\n\tTokyoHotel = 3522,\r\n\tPeninsulaHotel = 3523,\r\n\tWelcomgroupHotels = 3524,\r\n\tDunfeyHotels = 3525,\r\n\tPrinceHotels = 3526,\r\n\tDowntownerPassportHotel = 3527,\r\n\tRedLionHotelsRedLionInns = 3528,\r\n\tCPHotels = 3529,\r\n\tRenaissanceHotels = 3530,\r\n\tKauaiCoconutBeachResort = 3531,\r\n\tRoyalKonaResort = 3532,\r\n\tHotelIbis = 3533,\r\n\tSouthernPacificHotels = 3534,\r\n\tHiltonInternational = 3535,\r\n\tAmfacHotels = 3536,\r\n\tANAHotel = 3537,\r\n\tConcordeHotels = 3538,\r\n\tSummerfieldSuitesHotel = 3539,\r\n\tIberotelHotels = 3540,\r\n\tHotelOkura = 3541,\r\n\tRoyalHotels = 3542,\r\n\tFourSeasonsHotels = 3543,\r\n\tCigaHotels = 3544,\r\n\tShangriLaInternational = 3545,\r\n\tSierraSuitesHotels = 3546,\r\n\tBreakersResort = 3547,\r\n\tHotelsMelia = 3548,\r\n\tAubergeDesGouverneurs = 3549,\r\n\tRegal8Inns = 3550,\r\n\tMirageHotelAndCasino = 3551,\r\n\tCoastHotels = 3552,\r\n\tParkInnsInternational = 3553,\r\n\tPinehurstResort = 3554,\r\n\tTreasureIslandHotelAndCasino = 3555,\r\n\tBartonCreekResort = 3556,\r\n\tManhattanEastSuiteHotels = 3557,\r\n\tJollyHotels = 3558,\r\n\tCandlewoodSuitesThistleHotels = 3559,\r\n\tAladdinResortAndCasino = 3560,\r\n\tGoldenNugget = 3561,\r\n\tComfortInns = 3562,\r\n\tJourneysEndMotels = 3563,\r\n\tSamsTownHotelAndCasino = 3564,\r\n\tRelaxInns = 3565,\r\n\tGardenPlaceHotel = 3566,\r\n\tSohoGrandHotel = 3567,\r\n\tLadbrokeHotels = 3568,\r\n\tTribecaGrandHotel = 3569,\r\n\tForumHotels = 3570,\r\n\tGrandWaileaResort = 3571,\r\n\tMiyakoHotels = 3572,\r\n\tSandmanHotels = 3573,\r\n\tVentureInns = 3574,\r\n\tVagabondHotels = 3575,\r\n\tLaQuintaResort = 3576,\r\n\tMandarinOrientalHotel = 3577,\r\n\tFrankenmuthBavarian = 3578,\r\n\tHotelMercure = 3579,\r\n\tHotelDelCoronado = 3580,\r\n\tDeltaHotel = 3581,\r\n\tCaliforniaHotelAndCasino = 3582,\r\n\tSasHotels = 3583,\r\n\tPrincessHotelsInternational = 3584,\r\n\tHungarHotels = 3585,\r\n\tSokosHotels = 3586,\r\n\tDoralHotels = 3587,\r\n\tHelmsleyHotels = 3588,\r\n\tDoralGolfResort = 3589,\r\n\tFairmontHotels = 3590,\r\n\tSonestaHotels = 3591,\r\n\tOmniHotels = 3592,\r\n\tCunardHotels = 3593,\r\n\tArizonaBiltmore = 3594,\r\n\tHospitalityInns = 3595,\r\n\tWynnLasVegas = 3596,\r\n\tRiversideResortAndCasino = 3597,\r\n\tRegentInternationalHotels = 3598,\r\n\tPannoniaHotels = 3599,\r\n\tSaddlebrookResort = 3600,\r\n\tTradeWindsResort = 3601,\r\n\tHudsonHotel = 3602,\r\n\tNoahsHotels = 3603,\r\n\tHiltonGardenResortInn = 3604,\r\n\tJurysDoyleHotelGroup = 3605,\r\n\tJeffersonHotel = 3606,\r\n\tFontainebleauResorts = 3607,\r\n\tGaylordOpryland = 3608,\r\n\tGaylordPalms = 3609,\r\n\tGaylordTexan = 3610,\r\n\tCMonInn = 3611,\r\n\tMovenpickHotels = 3612,\r\n\tMicrotelInnAndSuites = 3613,\r\n\tAmericInn = 3614,\r\n\tTravelodge = 3615,\r\n\tHermitageHotel = 3616,\r\n\tAmericasBestValueInn = 3617,\r\n\tGreatWolf = 3618,\r\n\tAloft = 3619,\r\n\tBinionsHorseshoeClub = 3620,\r\n\tExtendedStay = 3621,\r\n\tMerlinHotels = 3622,\r\n\tDorintHotels = 3623,\r\n\tLadyLuckHotelAndCasino = 3624,\r\n\tHotelUniversale = 3625,\r\n\tStudioPlus = 3626,\r\n\tExtendedStayAmerica = 3627,\r\n\tExcaliburHotelAndCasino = 3628,\r\n\tDanHotels = 3629,\r\n\tExtendedStayDeluxe = 3630,\r\n\tSleepInns = 3631,\r\n\tPhoenician = 3632,\r\n\tRankHotels = 3633,\r\n\tSwissotel = 3634,\r\n\tResoHotels = 3635,\r\n\tSarovaHotels = 3636,\r\n\tRamadaInnsRamadaLimited = 3637,\r\n\tHowardJohnson = 3638,\r\n\tMountCharlotteThistle = 3639,\r\n\tHyattHotels = 3640,\r\n\tSofitelHotels = 3641,\r\n\tNovotelHotels = 3642,\r\n\tSteigenbergerHotels = 3643,\r\n\tEconoLodges = 3644,\r\n\tQueensMoatHouses = 3645,\r\n\tSwallowHotels = 3646,\r\n\tHusaHotels = 3647,\r\n\tDeVereHotels = 3648,\r\n\tRadissonHotels = 3649,\r\n\tRedRoofInns = 3650,\r\n\tImperialLondonHotel = 3651,\r\n\tEmbassyHotels = 3652,\r\n\tPentaHotels = 3653,\r\n\tLoewsHotels = 3654,\r\n\tScandicHotels = 3655,\r\n\tSaraHotels = 3656,\r\n\tOberoiHotels = 3657,\r\n\tNewOtaniHotels = 3658,\r\n\tTajHotelsInternational = 3659,\r\n\tKnightsInns = 3660,\r\n\tMetropoleHotels = 3661,\r\n\tCircusCircusHotelAndCasino = 3662,\r\n\tHotelesElPresidente = 3663,\r\n\tFlagInn = 3664,\r\n\tHamptonInns = 3665,\r\n\tStakisHotels = 3666,\r\n\tLuxorHotelAndCasino = 3667,\r\n\tMaritimHotels = 3668,\r\n\tEldoradoHotelAndCasino = 3669,\r\n\tArcadeHotels = 3670,\r\n\tArctiaHotels = 3671,\r\n\tCampanileHotels = 3672,\r\n\tIbuszHotels = 3673,\r\n\tRantasipiHotels = 3674,\r\n\tInterhotelCedok = 3675,\r\n\tMonteCarloHotelAndCasino = 3676,\r\n\tClimatDeFranceHotels = 3677,\r\n\tCumulusHotels = 3678,\r\n\tSilverLegacyHotelAndCasino = 3679,\r\n\tHoteisOthan = 3680,\r\n\tAdamsMarkHotels = 3681,\r\n\tSaharaHotelAndCasino = 3682,\r\n\tBradburySuites = 3683,\r\n\tBudgetHostInns = 3684,\r\n\tBudgetelHotels = 3685,\r\n\tSusseChalet = 3686,\r\n\tClarionHotels = 3687,\r\n\tCompriHotels = 3688,\r\n\tConsortHotels = 3689,\r\n\tCourtyardByMarriott = 3690,\r\n\tDillonInns = 3691,\r\n\tDoubletreeHotels = 3692,\r\n\tDruryInns = 3693,\r\n\tEconomyInnsOfAmerica = 3694,\r\n\tEmbassySuites = 3695,\r\n\tExelInns = 3696,\r\n\tFairfieldHotels = 3697,\r\n\tHarleyHotels = 3698,\r\n\tMidwayMotorLodge = 3699,\r\n\tMotel6 = 3700,\r\n\tLaMansionDelRio = 3701,\r\n\tRegistryHotels = 3702,\r\n\tResidenceInns = 3703,\r\n\tRoyceHotels = 3704,\r\n\tSandmanInns = 3705,\r\n\tShiloInns = 3706,\r\n\tShoneysInns = 3707,\r\n\tVirginRiverHotelAndCasino = 3708,\r\n\tSuper8Motels = 3709,\r\n\tTheRitzCarltonHotels = 3710,\r\n\tFlagInnsAustralia = 3711,\r\n\tBuffaloBillsHotelAndCasino = 3712,\r\n\tQualityPacificHotel = 3713,\r\n\tFourSeasonsHotelAustralia = 3714,\r\n\tFairfieldInn = 3715,\r\n\tCarltonHotels = 3716,\r\n\tCityLodgeHotels = 3717,\r\n\tKarosHotels = 3718,\r\n\tProteaHotels = 3719,\r\n\tSouthernSunHotels = 3720,\r\n\tHiltonConrad = 3721,\r\n\tWyndhamHotelResorts = 3722,\r\n\tRicaHotelsDuplicate = 3723,\r\n\tInterNorHotelsDuplicate = 3724,\r\n\tSeapinesPlantation = 3725,\r\n\tRioSuites = 3726,\r\n\tBroadmoorHotel = 3727,\r\n\tBallysHotelAndCasino = 3728,\r\n\tJohnAscuagasNugget = 3729,\r\n\tMGMGrandHotel = 3730,\r\n\tHarrahsHotelsAndCasinos = 3731,\r\n\tOprylandHotel = 3732,\r\n\tBocaRatonResort = 3733,\r\n\tHarveyBristolHotel = 3734,\r\n\tMastersEconomyInns = 3735,\r\n\tColoradoBelleEdgewaterResort = 3736,\r\n\tRivieraHotelCasino = 3737,\r\n\tTropicanaResortCasino = 3738,\r\n\tWoodsideHotels = 3739,\r\n\tMarriottTownplaceSuites = 3740,\r\n\tMillenniumHotels = 3741,\r\n\tClubMed = 3742,\r\n\tBiltmoreHotelSuites = 3743,\r\n\tCarefreeResorts = 3744,\r\n\tStRegisHotel = 3745,\r\n\tTheEliotHotel = 3746,\r\n\tClubCorpClubResorts = 3747,\r\n\tWellesleyInns = 3748,\r\n\tTheBeverlyHillsHotel = 3749,\r\n\tCrownePlazaHotel = 3750,\r\n\tHomewoodSuites = 3751,\r\n\tPeabodyHotels = 3752,\r\n\tGreenbrierResorts = 3753,\r\n\tAmeliaIslandPlantation = 3754,\r\n\tTheHomestead = 3755,\r\n\tSouthSeasResorts = 3756,\r\n\tCanyonRanch = 3757,\r\n\tKahalaMandarinOrientalHotel = 3758,\r\n\tOrchidAtMaunaLani = 3759,\r\n\tHalekulaniHotelWaikikiParc = 3760,\r\n\tPrimadonnaHotelAndCasino = 3761,\r\n\tWhiskeyPetesHotelAndCasino = 3762,\r\n\tChateauElanWineryAndResort = 3763,\r\n\tBeauRivageHotelAndCasino = 3764,\r\n\tBellagio = 3765,\r\n\tFremontHotelAndCasino = 3766,\r\n\tMainStreetStationHotelAndCasino = 3767,\r\n\tSilverStarHotelAndCasino = 3768,\r\n\tStratosphereHotelAndCasino = 3769,\r\n\tSpringhillSuites = 3770,\r\n\tCaesarsHotelAndCasino = 3771,\r\n\tNemacolinWoodlands = 3772,\r\n\tVenetianResortHotelAndCasino = 3773,\r\n\tNewYorkNewYorkHotelCasino = 3774,\r\n\tSandsResort = 3775,\r\n\tNeveleGrandeResortAndCountryClub = 3776,\r\n\tMandalayBayResort = 3777,\r\n\tFourPointsHotels = 3778,\r\n\tWHotels = 3779,\r\n\tDisneyResorts = 3780,\r\n\tPatriciaGrandResortHotel = 3781,\r\n\tRosenHotelsResorts = 3782,\r\n\tTownAndCountryResort = 3783,\r\n\tFirstHospitalityHotels = 3784,\r\n\tOutriggerHotelsAndResorts = 3785,\r\n\tOhanaHotelsOfHawaii = 3786,\r\n\tCaribeRoyaleResortSuitesVillas = 3787,\r\n\tAlaMoanaHotel = 3788,\r\n\tSmugglersNotchResort = 3789,\r\n\tRafflesHotel = 3790,\r\n\tStaybridgeSuites = 3791,\r\n\tClaridgeCasinoHotel = 3792,\r\n\tFlamingoHotels = 3793,\r\n\tGrandCasinoHotel = 3794,\r\n\tParisLasVegasHotel = 3795,\r\n\tPeppermillHotelCasino = 3796,\r\n\tAtlanticCityHilton = 3797,\r\n\tEmbassyVacationResort = 3798,\r\n\tHaleKoaResort = 3799,\r\n\tHomesteadSuites = 3800,\r\n\tWildernessHotelAndResort = 3801,\r\n\tThePalaceHotel = 3802,\r\n\tTheWigwamGolfResortAndSpa = 3803,\r\n\tTheDiplomatCountryClubAndSpa = 3804,\r\n\tTheAtlantic = 3805,\r\n\tPrincevilleResort = 3806,\r\n\tElement = 3807,\r\n\tLXRLuxuryResorts = 3808,\r\n\tSettleInn = 3809,\r\n\tLaCostaResort = 3810,\r\n\tPremierTravelInn = 3811,\r\n\tHyattPlace = 3812,\r\n\tHotelIndigo = 3813,\r\n\tTheRooseveltHotelNY = 3814,\r\n\tHolidayInnNickelodeon = 3815,\r\n\tHome2Suites = 3816,\r\n\tAffinia = 3817,\r\n\tMainStaySuites = 3818,\r\n\tOxfordSuites = 3819,\r\n\tJumeirahEssexHotel = 3820,\r\n\tCaribeRoyale = 3821,\r\n\tCrossland = 3822,\r\n\tGrandSierraResort = 3823,\r\n\tAria = 3824,\r\n\tVdara = 3825,\r\n\tAutograph = 3826,\r\n\tGaltHouse = 3827,\r\n\tCosmopolitanOfLasVegas = 3828,\r\n\tCountryInnByCarlson = 3829,\r\n\tParkPlazaHotel = 3830,\r\n\tWaldorf = 3831,\r\n\tFreightRailways = 4011,\r\n\tLocalPassengerTransportation = 4111,\r\n\tPassengerRailways = 4112,\r\n\tAmbulanceServices = 4119,\r\n\tTaxicabsAndLimousines = 4121,\r\n\tBusLines = 4131,\r\n\tMotorFreightCarriersAndTrucking = 4214,\r\n\tCourierServices = 4215,\r\n\tPublicWarehousingAndStorage = 4225,\r\n\tSteamshipAndCruiseLines = 4411,\r\n\tBoatRentalsAndLeasing = 4457,\r\n\tMarinasMarineServiceAndSupplies = 4468,\r\n\tAirlinesAndAirCarriers = 4511,\r\n\tAirportsFlyingFieldsAndAirportTerminals = 4582,\r\n\tTravelAgenciesAndTourOperators = 4722,\r\n\tPackageTourOperatorsGermanyOnly = 4723,\r\n\tTransportationTravelRelatedArrangement = 4761,\r\n\tTollAndBridgeFees = 4784,\r\n\tTransportationServices = 4789,\r\n\tTelecommunicationEquipmentAndTelephoneSales = 4812,\r\n\tKeyEntryTelecomMerchants = 4813,\r\n\tTelecommunicationServices = 4814,\r\n\tMonthlySummaryTelephoneCharges = 4815,\r\n\tComputerNetworkAndInformationServices = 4816,\r\n\tTelegraphServices = 4821,\r\n\tMoneyOrdersWireTransfer = 4829,\r\n\tCableServices = 4899,\r\n\tElectricGasSanitaryAndWaterUtilities = 4900,\r\n\tMotorVehicleSuppliesAndNewParts = 5013,\r\n\tOfficeAndCommercialFurniture = 5021,\r\n\tConstructionMaterials = 5039,\r\n\tOfficePhotographicPhotocopyAndMicrofilmEquipment = 5044,\r\n\tComputersComputerPeripheralEquipmentSoftware = 5045,\r\n\tCommercialEquipment = 5046,\r\n\tMedicalDentalOphthalmicHospitalEquipmentAndSupplies = 5047,\r\n\tMetalServiceCentersAndOffices = 5051,\r\n\tElectricalPartsAndEquipment = 5065,\r\n\tHardwareEquipmentAndSupplies = 5072,\r\n\tPlumbingAndHeatingEquipmentAndSupplies = 5074,\r\n\tIndustrialSupplies = 5085,\r\n\tPreciousStonesAndMetalsWatchesAndJewelry = 5094,\r\n\tDurableGoods = 5099,\r\n\tStationeryOfficeSuppliesPrintingAndWritingPaper = 5111,\r\n\tDrugsDrugProprietorsAndDruggistSundries = 5122,\r\n\tPieceGoodsNotionsAndOtherDryGoods = 5131,\r\n\tMensWomensAndChildrensUniformsAndCommercialClothing = 5137,\r\n\tCommercialFootwear = 5139,\r\n\tChemicalsAndAlliedProducts = 5169,\r\n\tPetroleumAndPetroleumProducts = 5172,\r\n\tBooksPeriodicalsAndNewspapers = 5192,\r\n\tFloristsSuppliesNurseryStockAndFlowers = 5193,\r\n\tPaintsVarnishesAndSupplies = 5198,\r\n\tNonDurableGoods = 5199,\r\n\tHomeSupplyWarehouseStores = 5200,\r\n\tLumberAndBuildingMaterialsStores = 5211,\r\n\tGlassStoresPaintAndWallpaperStoresWallpaperStores = 5231,\r\n\tHardwareStores = 5251,\r\n\tNurseriesLawnAndGardenSupplyStore = 5261,\r\n\tOnlineMarketplaces = 5262,\r\n\tMobileHomeDealers = 5271,\r\n\tWarehouseClubGas = 5299,\r\n\tWholesaleClubs = 5300,\r\n\tDutyFreeStores = 5309,\r\n\tDiscountStores = 5310,\r\n\tDepartmentStores = 5311,\r\n\tVarietyStores = 5331,\r\n\tGeneralMerchandise = 5399,\r\n\tGroceryStoresSupermarkets = 5411,\r\n\tFreezerAndLockerMeatProvisioners = 5422,\r\n\tCandyStoresConfectioneryStoresNutStores = 5441,\r\n\tDairyProductsStores = 5451,\r\n\tBakeries = 5462,\r\n\tFoodStoresConvenienceStoresAndSpecialtyMarkets = 5499,\r\n\tCarAndTruckDealersNewAndUsedSalesServiceRepairsPartsAndLeasing = 5511,\r\n\tAutomobileAndTruckDealersUsedOnly = 5521,\r\n\tAutomobileSupplyStoresOrHomeSupplyStores = 5531,\r\n\tAutomotiveTireStores = 5532,\r\n\tAutomotivePartsAccessoriesStores = 5533,\r\n\tGasServiceStationsWithOrWithoutAncillaryServices = 5541,\r\n\tAutomatedFuelDispensers = 5542,\r\n\tBoatDealers = 5551,\r\n\tElectricVehicleCharging = 5552,\r\n\tRecreationalAndUtilityTrailersCampDealers = 5561,\r\n\tMotorcycleDealers = 5571,\r\n\tMotorHomeDealers = 5592,\r\n\tSnowmobileDealers = 5598,\r\n\tMiscellaneousAutomotiveAircraftAndFarmEquipmentDealers = 5599,\r\n\tMensAndBoysClothingAndAccessoriesStores = 5611,\r\n\tWomensReadyToWearStores = 5621,\r\n\tWomensAccessoryAndSpecialtyShops = 5631,\r\n\tChildrensAndInfantsWearStores = 5641,\r\n\tFamilyClothingStores = 5651,\r\n\tSportsApparelRidingApparelStores = 5655,\r\n\tShoeStores = 5661,\r\n\tFurriersAndFurShops = 5681,\r\n\tMensAndWomensClothingStores = 5691,\r\n\tTailorsSeamstressMendingAndAlterations = 5697,\r\n\tWigAndToupeeStores = 5698,\r\n\tMiscellaneousApparelAndAccessoryShops = 5699,\r\n\tFurnitureHomeFurnishingsAndEquipmentStoresExceptAppliances = 5712,\r\n\tFloorCoveringStores = 5713,\r\n\tDraperyWindowCoveringAndUpholsteryStores = 5714,\r\n\tAlcoholicBeverageWholesalers = 5715,\r\n\tFireplaceAndFireplaceScreensAndAccessoriesStores = 5718,\r\n\tMiscellaneousHomeFurnishingSpecialtyStores = 5719,\r\n\tHouseholdApplianceStores = 5722,\r\n\tElectronicStores = 5732,\r\n\tMusicStoresMusicalInstrumentsPianoSheetMusic = 5733,\r\n\tComputerSoftwareStores = 5734,\r\n\tRecordStores = 5735,\r\n\tCaterers = 5811,\r\n\tEatingPlacesAndRestaurants = 5812,\r\n\tDrinkingPlacesAlcoholicBeveragesBarsTavernsCocktailLoungesNightclubsAndDiscotheques = 5813,\r\n\tFastFoodRestaurants = 5814,\r\n\tDigitalGoodsBooksMoviesMusic = 5815,\r\n\tDigitalGoodsGames = 5816,\r\n\tDigitalGoodsApplicationsExcludingGames = 5817,\r\n\tDigitalGoodsLargeAndMultiCategory = 5818,\r\n\tDrugStoresAndPharmacies = 5912,\r\n\tPackageStoresBeerWineAndLiquor = 5921,\r\n\tUsedMerchandiseAndSecondhandStores = 5931,\r\n\tAntiqueShopsSalesRepairsAndRestorationServices = 5932,\r\n\tPawnShops = 5933,\r\n\tWreckingAndSalvageYards = 5935,\r\n\tAntiqueReproductionStores = 5937,\r\n\tBicycleShopsSalesAndService = 5940,\r\n\tSportingGoodsStores = 5941,\r\n\tBookStores = 5942,\r\n\tStationeryOfficeAndSchoolSupplyStores = 5943,\r\n\tWatchClockJewelryAndSilverwareStores = 5944,\r\n\tHobbyToyAndGameShops = 5945,\r\n\tCameraAndPhotographicSupplyStores = 5946,\r\n\tCardShopsGiftNoveltyAndSouvenirShops = 5947,\r\n\tLeatherFoodsStores = 5948,\r\n\tSewingNeedleFabricAndPriceGoodsStores = 5949,\r\n\tGlasswareCrystalStores = 5950,\r\n\tDirectMarketingInsuranceService = 5960,\r\n\tMailOrderHousesIncludingCatalogOrderStoresBookRecordClub = 5961,\r\n\tDirectMarketingTravelRelatedArrangementsServices = 5962,\r\n\tDoorToDoorSales = 5963,\r\n\tDirectMarketingCatalogMerchant = 5964,\r\n\tDirectMarketingCatalogAndCatalogAndRetailMerchantDirectMarketingOutboundTelemarketingMerchant = 5965,\r\n\tDirectMarketingOutboundTelemarketingMerchant = 5966,\r\n\tDirectMarketingInboundTeleServicesMerchant = 5967,\r\n\tDirectMarketingContinuitySubscriptionMerchant = 5968,\r\n\tDirectMarketing = 5969,\r\n\tArtistsSupplyAndCraftShops = 5970,\r\n\tArtDealersAndGalleries = 5971,\r\n\tStampAndCoinStoresPhilatelicAndNumismaticSupplies = 5972,\r\n\tReligiousGoodsStores = 5973,\r\n\tRubberStampStoresReservedForNationalUse = 5974,\r\n\tHearingAidsSalesServiceAndSupplyStores = 5975,\r\n\tOrthopedicGoodsProstheticDevices = 5976,\r\n\tCosmeticStores = 5977,\r\n\tTypewriterStoresSalesRentalService = 5978,\r\n\tFuelFuelOilWoodCoalLiquefiedPetroleum = 5983,\r\n\tFlorists = 5992,\r\n\tCigarStoresAndStands = 5993,\r\n\tNewsDealersAndNewsStands = 5994,\r\n\tPetShopsPetFoodsAndSuppliesStores = 5995,\r\n\tSwimmingPoolsSalesServiceAndSupplies = 5996,\r\n\tElectricRazorStoresSalesAndService = 5997,\r\n\tTentAndAwningShops = 5998,\r\n\tMiscellaneousAndSpecialtyRetailStores = 5999,\r\n\tFinancialInstitutionsManualCashDisbursements = 6010,\r\n\tFinancialInstitutionsAutomatedCashDisbursements = 6011,\r\n\tFinancialInstitutionsMerchandiseAndServices = 6012,\r\n\tQuasiCashMemberFinancialInstitutions = 6050,\r\n\tNonFinancialInstitutionsForeignCurrencyMoneyOrdersAndTravelersCheques = 6051,\r\n\tSecurityBrokersDealers = 6211,\r\n\tInsuranceSalesUnderwriting = 6300,\r\n\tInsurancePremiums = 6381,\r\n\tInsurance = 6399,\r\n\tRealEstateAgentsAndManagersRentals = 6513,\r\n\tRemoteStoredValueLoadMemberFinancialInstitution = 6529,\r\n\tRemoteStoredValueLoad = 6530,\r\n\tPaymentServiceProviderMoneyTransfer = 6531,\r\n\tPaymentTransactionMemberFinancialInstitution = 6532,\r\n\tPaymentTransactionMerchant = 6533,\r\n\tMoneyTransferMemberFinancialInstitution = 6534,\r\n\tValuePurchaseMemberFinancialInstitution = 6535,\r\n\tMoneySendIntracountry = 6536,\r\n\tMoneySendIntercountry = 6537,\r\n\tMoneySendFundingTransaction = 6538,\r\n\tPOIFundingTransaction = 6540,\r\n\tMastercardInitiatedRebateRewards = 6555,\r\n\tOverpayments = 6611,\r\n\tSavingsBonds = 6760,\r\n\tLodgingHotelsMotelsResortsCentralReservationServices = 7011,\r\n\tTimeshares = 7012,\r\n\tSportingAndRecreationalCamps = 7032,\r\n\tTrailerParksAndCampGrounds = 7033,\r\n\tLaundryCleaningAndGarmentServices = 7210,\r\n\tDiaperServicesOrLaundromats = 7211,\r\n\tDryCleaners = 7216,\r\n\tCarpetAndUpholsteryCleaning = 7217,\r\n\tPhotographicStudios = 7221,\r\n\tBarberAndBeautyShops = 7230,\r\n\tShopRepairShopsAndShoeShineParlorsAndHatCleaningShops = 7251,\r\n\tFuneralServiceAndCrematories = 7261,\r\n\tEscortServices = 7272,\r\n\tDatingAndEscortServices = 7273,\r\n\tTaxPreparationService = 7276,\r\n\tCounselingServiceDebtMarriagePersonal = 7277,\r\n\tBuyingShoppingServicesAndClubs = 7278,\r\n\tHospitalPatientPersonalFundsWithdrawal = 7280,\r\n\tBabysittingServices = 7295,\r\n\tClothingRentalCostumesFormalWearUniforms = 7296,\r\n\tMassageParlors = 7297,\r\n\tHealthAndBeautyShops = 7298,\r\n\tMiscellaneousPersonalServices = 7299,\r\n\tAdvertisingServices = 7311,\r\n\tConsumerCreditReportingAgencies = 7321,\r\n\tDebtCollectionAgencies = 7322,\r\n\tBlueprintingAndPhotocopyingServices = 7332,\r\n\tCommercialPhotographyArtAndGraphics = 7333,\r\n\tQuickCopyReproductionAndBlueprintingServices = 7338,\r\n\tStenographicAndSecretarialSupportServices = 7339,\r\n\tWindowCleaningServices = 7341,\r\n\tExterminatingAndDisinfectingServices = 7342,\r\n\tCleaningAndMaintenanceJanitorialServices = 7349,\r\n\tEmploymentAgenciesTemporaryHelpServices = 7361,\r\n\tComputerProgrammingIntegratedSystemsDesignAndDataProcessingServices = 7372,\r\n\tInformationRetrievalServices = 7375,\r\n\tComputerMaintenanceAndRepairServices = 7379,\r\n\tManagementConsultingAndPublicRelationsServices = 7392,\r\n\tProtectiveAndSecurityServicesIncludingArmoredCarsAndGuardDogs = 7393,\r\n\tEquipmentRentalAndLeasingServicesToolRentalFurnitureRentalAndApplianceRental = 7394,\r\n\tPhotofinishingLaboratoriesPhotoDeveloping = 7395,\r\n\tBusinessServices = 7399,\r\n\tTruckStopTransactions = 7511,\r\n\tCarRentalCompanies = 7512,\r\n\tTruckAndUtilityTrailerRentals = 7513,\r\n\tMotorHomeAndRecreationalVehicleRentals = 7519,\r\n\tAutomobileParkingLotsAndGarages = 7523,\r\n\tExpressPaymentServicesParkingGarage = 7524,\r\n\tAutomotiveBodyRepairShops = 7531,\r\n\tTireRetreadingAndRepairShops = 7534,\r\n\tPaintShopsAutomotive = 7535,\r\n\tAutomotiveServiceShops = 7538,\r\n\tCarWashes = 7542,\r\n\tTowingServices = 7549,\r\n\tElectronicsRepairShops = 7622,\r\n\tAirConditioningAndRefrigerationRepairShops = 7623,\r\n\tElectricalAndSmallApplianceRepairShops = 7629,\r\n\tWatchClockAndJewelryRepair = 7631,\r\n\tFurnitureFurnitureRepairAndFurnitureRefinishing = 7641,\r\n\tWeldingServices = 7692,\r\n\tRepairShopsAndRelatedServicesMiscellaneous = 7699,\r\n\tGovernmentOwnedLotteriesUSA = 7800,\r\n\tInternetGamblingUSA = 7801,\r\n\tGovernmentLicensedHorseAndDogRacingUSA = 7802,\r\n\tMotionPicturesAndVideoTapeProductionAndDistribution = 7829,\r\n\tMotionPictureTheaters = 7832,\r\n\tExpressPaymentServicesMotionPicture = 7833,\r\n\tVideoTapeRentalStores = 7841,\r\n\tDanceHallsStudiosAndSchools = 7911,\r\n\tTheatricalProducersExceptMotionPicturesTicketAgencies = 7922,\r\n\tBandsOrchestrasAndMiscellaneousEntertainers = 7929,\r\n\tBilliardAndPoolEstablishments = 7932,\r\n\tBowlingAlleys = 7933,\r\n\tCommercialSportsAthleticFieldsProfessionalSportClubsAndSportPromoters = 7941,\r\n\tTouristAttractionsAndExhibits = 7991,\r\n\tGolfCoursesPublic = 7992,\r\n\tVideoAmusementGameSupplies = 7993,\r\n\tVideoGameArcadesEstablishments = 7994,\r\n\tBettingIncludingLotteryTicketsCasinoGamingChipsOfftrackBettingAndWagers = 7995,\r\n\tAmusementParksCarnivalsCircusesFortuneTellers = 7996,\r\n\tMembershipClubsSportsRecreationAthleticCountryClubsAndPrivateGolfCourses = 7997,\r\n\tAquariumsSeaAquariumsDolphinariumsZoos = 7998,\r\n\tRecreationServices = 7999,\r\n\tDoctorsAndPhysicians = 8011,\r\n\tDentistsOrOrthodontists = 8021,\r\n\tOsteopaths = 8031,\r\n\tChiropractors = 8041,\r\n\tOptometristsAndOphthalmologists = 8042,\r\n\tOpticiansOpticiansGoodsAndEyeglasses = 8043,\r\n\tEyeglassesStoresOrOpticalGoods = 8044,\r\n\tPodiatristsAndChiropodists = 8049,\r\n\tNursingAndPersonalCareFacilities = 8050,\r\n\tHospitals = 8062,\r\n\tMedicalAndDentalLaboratories = 8071,\r\n\tMedicalServicesAndHealthPractitioners = 8099,\r\n\tLegalServicesAndAttorneys = 8111,\r\n\tElementaryAndSecondarySchools = 8211,\r\n\tCollegesJuniorCollegesUniversitiesAndProfessionalSchools = 8220,\r\n\tCorrespondenceSchools = 8241,\r\n\tBusinessAndSecretarialSchools = 8244,\r\n\tVocationalSchoolsAndTradeSchools = 8249,\r\n\tSchoolsAndEducationalServices = 8299,\r\n\tChildCareServices = 8351,\r\n\tCharitableAndSocialServiceOrganizations = 8398,\r\n\tCivicFraternalAndSocialAssociations = 8641,\r\n\tPoliticalOrganizations = 8651,\r\n\tReligiousOrganizations = 8661,\r\n\tAutomobileAssociations = 8675,\r\n\tMembershipOrganizations = 8699,\r\n\tTestingLaboratoriesNonMedical = 8734,\r\n\tArchitecturalEngineeringAndSurveyingServices = 8911,\r\n\tAccountingAuditingAndBookkeepingServices = 8931,\r\n\tProfessionalServicesNotElsewhereDefined = 8999,\r\n\tCourtCostsIncludingAlimonyAndChildSupport = 9211,\r\n\tFines = 9222,\r\n\tBailAndBondPayments = 9223,\r\n\tTaxPayments = 9311,\r\n\tGovernmentServices = 9399,\r\n\tIPurchasingPilot = 9401,\r\n\tPostalServicesGovernmentOnly = 9402,\r\n\tIntraGovernmentTransactions = 9405,\r\n\tGovernmentLoanPayments = 9411,\r\n\tAutomatedReferralService = 9700,\r\n\tVisaCredentialServices = 9701,\r\n\tGCASEmergencyServices = 9702,\r\n\tUKSupermarketsElectronicHotFile = 9751,\r\n\tUKPetrolStationsElectronicHotFile = 9752,\r\n\tGamblingHorseDogRacingStLottery = 9754,\r\n\tIntraCompanyPurchases = 9950,\r\n\tClientDefinedMCC = 9999\r\n}\r\nexport enum MerchantFileType {\r\n\tUnspecified = \"Unspecified\",\r\n\tAgentAgreement = \"AgentAgreement\",\r\n\tMerchantAgreement = \"MerchantAgreement\",\r\n\tBusinessCertificate = \"BusinessCertificate\",\r\n\tProofOfAddress = \"ProofOfAddress\",\r\n\tProofOfBankAccount = \"ProofOfBankAccount\",\r\n\tIdentityDocumentFront = \"IdentityDocumentFront\",\r\n\tIdentityDocumentBack = \"IdentityDocumentBack\",\r\n\tSignature = \"Signature\",\r\n\tLogoImage = \"LogoImage\",\r\n\tStorefrontImage = \"StorefrontImage\",\r\n\tPrimaryImage = \"PrimaryImage\",\r\n\tGhanaCardId = \"GhanaCardId\",\r\n\tRegisteredConstitutionOfTheCompany = \"RegisteredConstitutionOfTheCompany\",\r\n\tCertificateOfIncorporation = \"CertificateOfIncorporation\",\r\n\tCertifiedTrueCopyOfForm3A = \"CertifiedTrueCopyOfForm3A\",\r\n\tMonthlyStatement = \"MonthlyStatement\"\r\n}\r\nexport enum MobileWalletOperator {\r\n\tNone = \"None\",\r\n\tMTN = \"MTN\",\r\n\tVDF = \"VDF\",\r\n\tATL = \"ATL\",\r\n\tTGO = \"TGO\",\r\n\tATG = \"ATG\",\r\n\tGMY = \"GMY\",\r\n\tZPY = \"ZPY\",\r\n\tGHP = \"GHP\",\r\n\tTCG = \"TCG\"\r\n}\r\nexport class MobileWalletOperatorData\r\n{\r\n\tpublic isAvailable: boolean;\r\n\tpublic operatorCode: string;\r\n\tpublic operatorName: string;\r\n}\r\nexport enum Month {\r\n\tJAN = 1,\r\n\tFEB = 2,\r\n\tMAR = 3,\r\n\tAPR = 4,\r\n\tMAY = 5,\r\n\tJUN = 6,\r\n\tJUL = 7,\r\n\tAUG = 8,\r\n\tSEP = 9,\r\n\tOCT = 10,\r\n\tNOV = 11,\r\n\tDEC = 12\r\n}\r\nexport enum ProductType {\r\n\tAirtime = \"Airtime\",\r\n\tInternet = \"Internet\",\r\n\tTelevision = \"Television\",\r\n\tUtilities = \"Utilities\",\r\n\tChurches = \"Churches\",\r\n\tEducation = \"Education\",\r\n\tMedical = \"Medical\",\r\n\tTransport = \"Transport\",\r\n\tFinance = \"Finance\",\r\n\tInsurance = \"Insurance\",\r\n\tLoans = \"Loans\",\r\n\tPensions = \"Pensions\",\r\n\tGeneral = \"General\",\r\n\tOther = \"Other\",\r\n\tDataBundle = \"DataBundle\",\r\n\tVoiceBundle = \"VoiceBundle\",\r\n\tCharity = \"Charity\",\r\n\tRent = \"Rent\",\r\n\tMobileMoneyTransfer = \"MobileMoneyTransfer\",\r\n\tPostPaidBills = \"PostPaidBills\",\r\n\tSmsBundle = \"SmsBundle\",\r\n\tFuel = \"Fuel\",\r\n\tOil = \"Oil\",\r\n\tGas = \"Gas\"\r\n}\r\nexport enum QrCodeType {\r\n\tNONE = \"NONE\",\r\n\tV2QR = \"V2QR\",\r\n\tGHQR = \"GHQR\",\r\n\tNIBSSQR = \"NIBSSQR\"\r\n}\r\nexport enum RepeatInterval {\r\n\tWeekly = \"Weekly\",\r\n\tMonthly = \"Monthly\"\r\n}\r\n","import { BaseApi } from '../baseApi'\r\nimport {\r\n Country,\r\n CurrencyData,\r\n CountryData,\r\n LanguageData,\r\n MobileWalletOperatorData,\r\n BankData,\r\n IdAndDescription\r\n} from './types'\r\nimport { Address } from '../common/types'\r\nimport { ApiError } from '../apiError'\r\n\r\nconst baseEndpoint = '/v1/lookup'\r\n\r\nexport class Lookups extends BaseApi {\r\n private readonly cardIssuerCountryCache = new Map<string, CountryData>()\r\n private readonly addressLocationCache = new Map<string, Address>()\r\n private readonly digitalAddressCache = new Map<string, Address>()\r\n private readonly bankCache = new Map<Country, BankData[]>()\r\n private currencyCache: CurrencyData[]\r\n private countryCache: CountryData[]\r\n private languageCache: LanguageData[]\r\n private mobileWalletOperatorCache: MobileWalletOperatorData[]\r\n private productTypeCache: IdAndDescription[]\r\n private merchantCategoryCache: IdAndDescription[]\r\n\r\n async getProductTypes(): Promise<IdAndDescription[]> {\r\n if (!this.productTypeCache) {\r\n this.productTypeCache = await this.request<IdAndDescription[]>(`${baseEndpoint}/product-type`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.productTypeCache || [])\r\n } \r\n \r\n async getMerchantCategories(): Promise<IdAndDescription[]> {\r\n if (!this.merchantCategoryCache) {\r\n this.merchantCategoryCache = await this.request<IdAndDescription[]>(`${baseEndpoint}/merchant-category`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.merchantCategoryCache || [])\r\n }\r\n\r\n async getCurrencies(): Promise<CurrencyData[]> {\r\n if (!this.currencyCache) {\r\n this.currencyCache = await this.request<CurrencyData[]>(`${baseEndpoint}/currency`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.currencyCache || [])\r\n }\r\n\r\n async getCountries(): Promise<CountryData[]> {\r\n if (!this.currencyCache) {\r\n this.countryCache = await this.request<CountryData[]>(`${baseEndpoint}/country`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.countryCache || [])\r\n }\r\n\r\n async getLanguages(): Promise<LanguageData[]> {\r\n if (!this.languageCache) {\r\n this.languageCache = await this.request<LanguageData[]>(`${baseEndpoint}/language`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.languageCache || [])\r\n }\r\n\r\n async getAllCurrencies(): Promise<CurrencyData[]> {\r\n if (!this.currencyCache) {\r\n this.currencyCache = await this.request<CurrencyData[]>(`${baseEndpoint}/currency/all`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.currencyCache || [])\r\n }\r\n\r\n async getAllCountries(): Promise<CountryData[]> {\r\n if (!this.currencyCache) {\r\n this.countryCache = await this.request<CountryData[]>(`${baseEndpoint}/country/all`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.countryCache || [])\r\n }\r\n\r\n async getAllLanguages(): Promise<LanguageData[]> {\r\n if (!this.languageCache) {\r\n this.languageCache = await this.request<LanguageData[]>(`${baseEndpoint}/language/all`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.languageCache || [])\r\n }\r\n\r\n async getMobileWalletOperators(): Promise<MobileWalletOperatorData[]> {\r\n if (!this.mobileWalletOperatorCache) {\r\n this.mobileWalletOperatorCache = await this.request<MobileWalletOperatorData[]>(`${baseEndpoint}/mobile-wallet-operator`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.mobileWalletOperatorCache || [])\r\n }\r\n\r\n async getBanks(country? : Country): Promise<BankData[]> {\r\n if (!this.bankCache.has(country || Country.None)) {\r\n if (country == null || country === Country.None) {\r\n this.bankCache.set(Country.None, await this.request<BankData[]>(`${baseEndpoint}/bank`, 'GET'))\r\n }\r\n else {\r\n this.bankCache.set(country, await this.request<BankData[]>(`${baseEndpoint}/bank?country=${country}`, 'GET'))\r\n } \r\n }\r\n\r\n return Promise.resolve(this.bankCache.get(country || Country.None) || [])\r\n }\r\n\r\n async getCardIssuerCountry(cardBin : string): Promise<CountryData> {\r\n if (!this.cardIssuerCountryCache.has(cardBin)) {\r\n this.cardIssuerCountryCache.set(cardBin, await this.request<CountryData>(`${baseEndpoint}/card-issuer-country?cardBin=${cardBin}`, 'GET'))\r\n }\r\n\r\n return Promise.resolve(this.cardIssuerCountryCache.get(cardBin) || null)\r\n }\r\n\r\n async getAddressFromLocation(latitude: number, longitude: number): Promise<Address> {\r\n if (latitude >= -90 && latitude <= 90 && longitude >= -180 && longitude <= 180) {\r\n const cacheKey = `${latitude}|${longitude}`\r\n\r\n if (!this.addressLocationCache.has(cacheKey)) {\r\n this.addressLocationCache.set(cacheKey, await this.request<Address>(`${baseEndpoint}/address?latitude=${latitude}&longitude=${longitude}`, 'GET'))\r\n }\r\n\r\n return Promise.resolve(this.addressLocationCache.get(cacheKey) || null)\r\n }\r\n\r\n return Promise.reject(new ApiError(400, null, 'Invalid location coordinates.'))\r\n }\r\n\r\n async getAddressFromDigitalAddress(digitalAddress: string): Promise<Address> {\r\n if (/(\\w{2,3}-\\d{3,4}-\\d{4})|(\\w{2,3}\\d{7,8})/g.exec(digitalAddress)) {\r\n if (!this.digitalAddressCache.has(digitalAddress)) {\r\n this.digitalAddressCache.set(digitalAddress, await this.request<Address>(`${baseEndpoint}/address/${digitalAddress}`, 'GET'))\r\n }\r\n \r\n return Promise.resolve(this.digitalAddressCache.get(digitalAddress) || null)\r\n }\r\n\r\n return Promise.reject(new ApiError(400, null, 'Invalid digital address format.'))\r\n }\r\n}","import { Currency } from '../lookups/types';\r\nimport { Country } from '../lookups/types';\r\nimport { Address } from '../common/types';\r\nimport { BasicConsumer } from '../consumers/types';\r\nimport { Location } from '../common/types';\r\nimport { Bank } from '../lookups/types';\r\nimport { MobileWalletOperator } from '../lookups/types';\r\nimport { Channel } from '../lookups/types';\r\nimport { RepeatInterval } from '../lookups/types';\r\nimport { Month } from '../lookups/types';\r\nimport { BasicMerchant } from '../merchants/types';\r\n\r\nexport abstract class AccountHolderTransactionResult\r\n{\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class AmountTotals\r\n{\r\n\tpublic totalAmountRequestedInCents: number;\r\n\tpublic totalAmountAttemptedInCents: number;\r\n\tpublic totalAmountProcessedInCents: number;\r\n\tpublic totalAmountProcessedLessFeesAndCommissionsInCents: number;\r\n\tpublic totalInternalFeesInCents: number;\r\n\tpublic totalExternalFeesInCents: number;\r\n\tpublic totalFeesInCents: number;\r\n\tpublic totalElevyInCents: number;\r\n\tpublic totalUserFeesInCents: number;\r\n\tpublic totalCommissionsInCents: number;\r\n\tpublic totalRefundsInCents: number;\r\n\tpublic totalCashbackAmountAttemptedInCents: number;\r\n\tpublic totalCashbackAmountProcessedInCents: number;\r\n\tpublic totalTipAmountAttemptedInCents: number;\r\n\tpublic totalTipAmountProcessedInCents: number;\r\n\tpublic grandTotalProcessedInCents: number;\r\n\tpublic grandTotalToBePaidByUserInCents: number;\r\n}\r\n/** Model to hold card holder details. */\r\nexport class CardHolder\r\n{\r\n\t/** The card holder's first name (required). */\r\n\tpublic firstName: string;\r\n\t/** The card holder's last name/surname (required). */\r\n\tpublic lastName: string;\r\n\t/** Gets or sets the card holder's email address (required). */\r\n\tpublic emailAddress: string;\r\n\t/** Gets or sets the card holder's phone number (required - digits only). */\r\n\tpublic phoneNumber: string;\r\n\t/** Gets or sets 3 character ISO country code the card holder resides in. */\r\n\tpublic countryIsoCode: Country;\r\n\t/** The customers shipping address. */\r\n\tpublic shippingAddress?: Address;\r\n}\r\nexport enum CardIssuer {\r\n\tAmericanExpress = \"AmericanExpress\",\r\n\tDinersClub = \"DinersClub\",\r\n\tDiscover = \"Discover\",\r\n\tJCB = \"JCB\",\r\n\tMaestro = \"Maestro\",\r\n\tMasterCard = \"MasterCard\",\r\n\tSwitch = \"Switch\",\r\n\tVisa = \"Visa\",\r\n\tUnknown = \"Unknown\"\r\n}\r\n/** A model to hold the details of a request to verify a card. */\r\nexport class CardVerificationPaymentRequest\r\n{\r\n\t/** An external reference supplied by the caller. */\r\n\tpublic yourReference?: string;\r\n\t/** Information about the consumer who owns the card. */\r\n\tpublic consumer?: BasicConsumer;\r\n\t/** A card token. */\r\n\tpublic token: string;\r\n\t/** The CVV for the card. */\r\n\tpublic cvv?: string;\r\n\t/** The card holders billing address. */\r\n\tpublic billingAddress?: Address;\r\n\t/** Additional information about the owner of the card to facilitate the card payment. */\r\n\tpublic cardHolder?: CardHolder;\r\n\t/** The location from which the payment request was submitted. */\r\n\tpublic location?: Location;\r\n\t/** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n\tpublic paymentStatusWebhook?: Webhook;\r\n}\r\n/** Contains the details of the bank account you would like to pay money into. */\r\nexport class BankAccountDestination\r\n{\r\n\t/**\r\n\t* A token that can be used instead of a bank account number.\r\n\t* If a token is present a bank account does not need to be provided.\r\n\t*/\r\n\tpublic token?: string;\r\n\t/** The bank account number of the recipient. */\r\n\tpublic accountNumber: string;\r\n\t/** The bank code of the bank that the account belongs to. */\r\n\tpublic bank: Bank;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\n/** A model to hold the details of the result of an attempt to pay money into a bank account. */\r\nexport class BankAccountDestinationResult\r\n{\r\n\t/** The bank account number of the recipient. */\r\n\tpublic accountNumber: string;\r\n\t/** The bank that the recipient banks with as a 3 digit bank code. */\r\n\tpublic bank: Bank;\r\n\tpublic bankName: string;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** A model to hold the details of a bill payment. */\r\nexport class BillDestination\r\n{\r\n\t/** A globally unique product reference (UUID) that uniquely identifies a product that the system knows how to pay. */\r\n\tpublic productReference: string;\r\n\t/** A dictionary of information related to the product referenced by <see cref=\"P:ZGA.Core.Models.Payments.BillDestination.ProductReference\" />. */\r\n\tpublic productFields: { [key:string]: string };\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\n/** A model to hold the result of an attempt to pay a bill. */\r\nexport class BillDestinationResult\r\n{\r\n\t/** The name of the product that the system attempted to pay. */\r\n\tpublic productName?: string;\r\n\t/** A globally unique product reference (UUID) that uniquely identifies a product that the system knows how to pay. */\r\n\tpublic productReference?: string;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** Model to hold details of a card into which a payment should be made. */\r\nexport class CardDestination\r\n{\r\n\t/**\r\n\t* A token that can be used instead of a card number.\r\n\t* If a token is present a card does not need to be provided.\r\n\t*/\r\n\tpublic token?: string;\r\n\t/** The full card number. */\r\n\tpublic cardNumber: string;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class CardDestinationResult\r\n{\r\n\tpublic cardIssuer: string;\r\n\tpublic cardIssuerCountryIsoCode?: Country;\r\n\tpublic cardNumber: string;\r\n\tpublic threeDSecureUrl?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class CashDestination\r\n{\r\n\tpublic doNotProcess: boolean;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class CashDestinationResult\r\n{\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class GenericDestination\r\n{\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\n/** Model to hold the details of a merchant who should be paid. */\r\nexport class MerchantDestination\r\n{\r\n\t/** A unique merchant identifier. */\r\n\tpublic merchantReference?: string;\r\n\tpublic merchantSource?: string;\r\n\tpublic terminalReference?: string;\r\n\tpublic qrCodeReference?: string;\r\n\tpublic paymentType: MerchantPaymentType;\r\n\tpublic tipAmountInCents: number;\r\n\tpublic tipEmployeeReference?: string;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class MerchantDestinationResult\r\n{\r\n\tpublic merchantReference: string;\r\n\tpublic terminalReference?: string;\r\n\tpublic qrCodeReference?: string;\r\n\tpublic tipAmountInCents: number;\r\n\tpublic tipEmployeeReference?: string;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** Contains the details of the mobile money account you would like to make a payment into. */\r\nexport class MobileWalletDestination\r\n{\r\n\t/**\r\n\t* Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n\t* This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n\t*/\r\n\tpublic msisdn: string;\r\n\t/** The mobile wallet operator that owns the mobile money account. */\r\n\tpublic mobileWalletOperator: MobileWalletOperator;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class MobileWalletDestinationResult\r\n{\r\n\tpublic mobileWalletOperator: MobileWalletOperator;\r\n\tpublic mobileWalletOperatorName: string;\r\n\tpublic msisdn: string;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class PaymentDestinationResults\r\n{\r\n\tpublic merchants: MerchantDestinationResult[];\r\n\tpublic mobileWallets: MobileWalletDestinationResult[];\r\n\tpublic bankAccounts: BankAccountDestinationResult[];\r\n\tpublic qrCodes: QrCodeDestinationResult[];\r\n\tpublic cards: CardDestinationResult[];\r\n\tpublic wallets: WalletDestinationResult[];\r\n\tpublic bills: BillDestinationResult[];\r\n\tpublic cash?: CashDestinationResult;\r\n}\r\n/** Model to hold lists of Merchants who must be paid. */\r\nexport class PaymentDestinations\r\n{\r\n\tpublic generic?: GenericDestination;\r\n\t/** A list of merchants who must be paid. */\r\n\tpublic merchants?: MerchantDestination[];\r\n\t/** A list of mobile money/wallet accounts to be paid. */\r\n\tpublic mobileWallets?: MobileWalletDestination[];\r\n\t/** A list of bank accounts to be paid. */\r\n\tpublic bankAccounts?: BankAccountDestination[];\r\n\t/** A list of QR Codes containing payment destination details and any additional information related to each QR Code. */\r\n\tpublic qrCodes?: QrCodeDestination[];\r\n\t/** A list of credit cards to be paid. */\r\n\tpublic cards?: CardDestination[];\r\n\t/** A list of generic digital wallets to be paid. */\r\n\tpublic wallets?: WalletDestination[];\r\n\t/** A list of bills/products to pay. */\r\n\tpublic bills?: BillDestination[];\r\n\t/** Details of a payment that will be made as cash. */\r\n\tpublic cash?: CashDestination;\r\n}\r\n/** Model to hold details of a payment being made with a QR Code providing the destination details. */\r\nexport class QrCodeDestination\r\n{\r\n\t/** The QR Code data as a string. */\r\n\tpublic qrCode: string;\r\n\t/** An optional list of values that the client prompted the user for because the QR Code instructed it to. The values that could be provided are defined in the relevant QR Code specifications. */\r\n\tpublic additionalInfo?: { [key:string]: string };\r\n\tpublic tipAmountInCents: number;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class QrCodeDestinationResult\r\n{\r\n\t/** The QR Code data as a string. */\r\n\tpublic qrCode: string;\r\n\tpublic merchantReference: string;\r\n\tpublic billReference?: string;\r\n\tpublic tipAmountInCents: number;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** Model to hold the details of a generic digital wallet. */\r\nexport class WalletDestination\r\n{\r\n\t/** A unique wallet identifier. */\r\n\tpublic walletReference: string;\r\n\t/** The wallet provider that created and manages the wallet. */\r\n\tpublic walletProvider: string;\r\n\t/** The wallet provider that created and manages the wallet. */\r\n\tpublic walletSource: string;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class WalletDestinationResult\r\n{\r\n\tpublic walletReference: string;\r\n\tpublic walletProvider: string;\r\n\tpublic walletSource: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport enum FeeType {\r\n\tNone = \"None\",\r\n\t/**\r\n\t* A real-time commission that is deducted from the amount we are instructed to debit from a source account so that the amount we actually\r\n\t* debit is less the commission to be paid to the account holder being debited and the commission is therefore effectively paid in real-time.\r\n\t*/\r\n\tFeeTakenFromSourceByMerchant = \"FeeTakenFromSourceByMerchant\",\r\n\tElevy = \"Elevy\",\r\n\t/** A processing fee charged by the external payment processor that we used to process the payment, that is charged to us, and is not charged to the end user. */\r\n\tExternalPaymentProcessorFee = \"ExternalPaymentProcessorFee\",\r\n\tExternallyProcessedElevy = \"ExternallyProcessedElevy\",\r\n\tInternalUserTransactionFee = \"InternalUserTransactionFee\",\r\n\tExternalUserTransactionFee = \"ExternalUserTransactionFee\",\r\n\t/** A processing fee charged by us for processing a transaction, that is charged to the 3rd party using our payment engine to process transactions, and is not charged to the end user. */\r\n\tInternalPaymentProcessorFee = \"InternalPaymentProcessorFee\"\r\n}\r\nexport class LineItem\r\n{\r\n\tpublic reference: string;\r\n\tpublic name: string;\r\n\tpublic description?: string;\r\n\tpublic quantity: number;\r\n\tpublic currency: Currency;\r\n\tpublic unitAmountInCents: number;\r\n\tpublic totalAmountInCents: number;\r\n}\r\nexport class MerchantPaymentResponse\r\n{\r\n\t/** An optional access token that can be used to check the status of the transaction or perform any action required to unblock transaction processing. */\r\n\tpublic accessToken?: string;\r\n\t/** A globally unique payment reference (UUID) that can be used to check the status of the payment. */\r\n\tpublic reference: string;\r\n\t/** A set of URLs that can be used to check the status of a payment either via polling or SignalR. */\r\n\tpublic paymentStatusUrls: StatusUrls;\r\n}\r\nexport enum MerchantPaymentType {\r\n\tUnspecified = \"Unspecified\",\r\n\tCashOut = \"CashOut\",\r\n\tBuyingGoods = \"BuyingGoods\",\r\n\tBillPayment = \"BillPayment\",\r\n\tGhIPSSQrCode = \"GhIPSSQrCode\"\r\n}\r\nexport class MerchantRefundRequest\r\n{\r\n\tpublic language?: string;\r\n\tpublic timeZone?: string;\r\n\tpublic description?: string;\r\n\tpublic transactionBatchReference?: string;\r\n\tpublic refundCategory: TransactionCategory;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\tpublic refundAmountInCents: number;\r\n}\r\nexport class PaymentReceiptResponse\r\n{\r\n\tpublic lineItems: LineItem[];\r\n\tpublic isComplete: boolean;\r\n\t/** The percentage of transactions that have been completed so far, expressed as a percentage of the total number of both source and destination transactions associated with the payment. */\r\n\tpublic percentageComplete: number;\r\n\t/** The date the payment was started. */\r\n\tpublic paymentStartedDate: Date;\r\n\t/** The date the payment was completed. */\r\n\tpublic paymentCompletedDate?: Date;\r\n\t/** The optional external reference that was supplied in the initial payment request, if it was supplied. */\r\n\tpublic yourReference?: string;\r\n\t/** The transaction batch description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/**\r\n\t* A globally unique payment reference (UUID) that was generated when the initial payment request was submitted.\r\n\t* <para>\r\n\t* This reference is returned in the response to that initial payment request.\r\n\t* </para>\r\n\t*/\r\n\tpublic paymentReference: string;\r\n\t/** A short unique payment reference based on the payment ID. */\r\n\tpublic shortPaymentReference: string;\r\n\t/**\r\n\t* An optional reference that is associated with every transaction batch that participates in a split payment.\r\n\t* This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n\t* The client processing the split payment is responsible for generating this reference and ensuring that\r\n\t* all transaction batches that are part of the split payment are associated with the same split reference.\r\n\t*/\r\n\tpublic splitReference?: string;\r\n\t/** A verification code that can be used to validate that an external payment was triggered by a trusted device (used for offline payments for example). */\r\n\tpublic verificationCode: string;\r\n\t/** Specify the channel that this payment originated from. */\r\n\tpublic channel: Channel;\r\n\t/** The consumer reference of the consumer who made the payment. */\r\n\tpublic consumerReference?: string;\r\n\t/** Optional details of the consumer who made the payment. */\r\n\tpublic consumer?: BasicConsumer;\r\n\t/** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentSourceResults\" /> object containing all of the payment sources associated with the payment and several aggregated values related to those sources. */\r\n\tpublic paymentSources?: PaymentSourceResults;\r\n\t/** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentDestinationResults\" /> object containing all of the payment destinations associated with the payment and several aggregated values related to those sources. */\r\n\tpublic paymentDestinations?: PaymentDestinationResults;\r\n\t/** Transaction amount totals that summarize the overall payment amounts, fees and commissions associated with the payment. */\r\n\tpublic amountTotals: AmountTotals;\r\n\tpublic timeZone?: string;\r\n}\r\nexport class PaymentRecurrenceSchedule\r\n{\r\n\tpublic reference: string;\r\n\tpublic createdDate: Date;\r\n\tpublic repeatInterval: RepeatInterval;\r\n\tpublic scheduleEndDate?: Date;\r\n\tpublic repeatCount?: number;\r\n\tpublic entries: PaymentRecurrenceScheduleEntry[];\r\n}\r\nexport class PaymentRecurrenceScheduleEntry\r\n{\r\n\tpublic scheduledDate: Date;\r\n\tpublic isCancelled: boolean;\r\n\tpublic transactionBatchReference?: string;\r\n\tpublic isProcessed: boolean;\r\n}\r\n/** Model to hold details of a response to a payment request. */\r\nexport class PaymentResponse\r\n{\r\n\t/** A globally unique payment reference (UUID) that can be used to check the status of the payment. */\r\n\tpublic reference: string;\r\n\t/** A set of URLs that can be used to check the status of a payment either via polling or SignalR. */\r\n\tpublic paymentStatusUrls: StatusUrls;\r\n}\r\n/** A model to hold the details of a payment request, including the current status of all associated transactions and the overall payment itself. */\r\nexport class PaymentStatusResponse\r\n{\r\n\tpublic isComplete: boolean;\r\n\t/** The percentage of transactions that have been completed so far, expressed as a percentage of the total number of both source and destination transactions associated with the payment. */\r\n\tpublic percentageComplete: number;\r\n\t/** The date the payment was started. */\r\n\tpublic paymentStartedDate: Date;\r\n\t/** The date the payment was completed. */\r\n\tpublic paymentCompletedDate?: Date;\r\n\t/** The optional external reference that was supplied in the initial payment request, if it was supplied. */\r\n\tpublic yourReference?: string;\r\n\t/** The transaction batch description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/**\r\n\t* A globally unique payment reference (UUID) that was generated when the initial payment request was submitted.\r\n\t* <para>\r\n\t* This reference is returned in the response to that initial payment request.\r\n\t* </para>\r\n\t*/\r\n\tpublic paymentReference: string;\r\n\t/** A short unique payment reference based on the payment ID. */\r\n\tpublic shortPaymentReference: string;\r\n\t/**\r\n\t* An optional reference that is associated with every transaction batch that participates in a split payment.\r\n\t* This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n\t* The client processing the split payment is responsible for generating this reference and ensuring that\r\n\t* all transaction batches that are part of the split payment are associated with the same split reference.\r\n\t*/\r\n\tpublic splitReference?: string;\r\n\t/** A verification code that can be used to validate that an external payment was triggered by a trusted device (used for offline payments for example). */\r\n\tpublic verificationCode: string;\r\n\t/** Specify the channel that this payment originated from. */\r\n\tpublic channel: Channel;\r\n\t/** The consumer reference of the consumer who made the payment. */\r\n\tpublic consumerReference?: string;\r\n\t/** Optional details of the consumer who made the payment. */\r\n\tpublic consumer?: BasicConsumer;\r\n\t/** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentSourceResults\" /> object containing all of the payment sources associated with the payment and several aggregated values related to those sources. */\r\n\tpublic paymentSources?: PaymentSourceResults;\r\n\t/** A <see cref=\"T:ZGA.Core.Models.Payments.PaymentDestinationResults\" /> object containing all of the payment destinations associated with the payment and several aggregated values related to those sources. */\r\n\tpublic paymentDestinations?: PaymentDestinationResults;\r\n\t/** Transaction amount totals that summarize the overall payment amounts, fees and commissions associated with the payment. */\r\n\tpublic amountTotals: AmountTotals;\r\n\tpublic timeZone?: string;\r\n}\r\nexport class PaymentTransaction\r\n{\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport abstract class PaymentTransactionResult\r\n{\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** Model to hold the details of a request for validation of a QR code. */\r\nexport class QrCodeValidationRequest\r\n{\r\n\t/** A QR Code string that you would like validated. */\r\n\tpublic qrCode: string;\r\n}\r\n/** A model to hold the details of a QR Code validation response. */\r\nexport class QrCodeValidationResponse\r\n{\r\n\t/** A boolean value indicating whether the current environment is capable of processing the QR Code that was submitted for validation. */\r\n\tpublic canProcess: boolean;\r\n\t/** A comma delimited list of every type of QR Code that the current environment is capable of processing. */\r\n\tpublic supportedQrCodes: string;\r\n}\r\nexport enum ReceiptType {\r\n\tConsumer = \"Consumer\",\r\n\tMerchant = \"Merchant\"\r\n}\r\n/** A model to hold the details of the current status of a refund transaction. */\r\nexport class RefundReceiptResponse\r\n{\r\n\t/** The optional external reference that was supplied in the initial refund request, if it was supplied. */\r\n\tpublic yourReference?: string;\r\n\t/** The full payment receipt for the original payment that was refunded when available. */\r\n\tpublic originalPaymentReceipt?: PaymentReceiptResponse;\r\n\t/** The date the refund was completed. */\r\n\tpublic refundCompletedDate?: Date;\r\n\tpublic timeZone?: string;\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** A model to hold the details of a request to refund money to a source of funds. */\r\nexport class RefundRequest\r\n{\r\n\tpublic language?: string;\r\n\tpublic timeZone?: string;\r\n\t/** A globally unique transaction reference (UUID) that identifies the original transaction that sourced the funds that you want to refund. */\r\n\tpublic sourceTransactionReference: string;\r\n\t/** A globally unique transaction reference (UUID) that identifies the destination transaction that the refund request is associated with. */\r\n\tpublic destinationTransactionReference: string;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/**\r\n\t* The amount to refund.\r\n\t* <para>This value cannot be larger than the amount that was originally sourced by the transaction referenced by <see cref=\"P:ZGA.Core.Models.Payments.RefundRequest.SourceTransactionReference\" />.</para>\r\n\t*/\r\n\tpublic refundAmountInCents: number;\r\n}\r\n/** A model to hold the details of a response to a refund request. */\r\nexport class RefundResponse\r\n{\r\n\t/**\r\n\t* A globally unique refund transaction reference (UUID) generated by the system internally to identify a specific refund transaction.\r\n\t* <para>Can be used to check the status of a refund.</para>\r\n\t*/\r\n\tpublic reference: string;\r\n\t/** A set of URLs that can be used to check the status of a refund either via polling or SignalR. */\r\n\tpublic refundStatusUrls: StatusUrls;\r\n}\r\n/** A model to hold the details of the current status of a refund transaction. */\r\nexport class RefundStatusResponse\r\n{\r\n\t/** The date the refund was completed. */\r\n\tpublic refundCompletedDate?: Date;\r\n\tpublic timeZone?: string;\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** A model to hold the details of a refund transaction. */\r\nexport class RefundTransaction\r\n{\r\n\t/** The amount to refund. */\r\n\tpublic refundAmountInCents: number;\r\n\tpublic description?: string;\r\n}\r\n/** A model to hold the details of the result of a transaction refund attempt. */\r\nexport class RefundTransactionResult\r\n{\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport enum RefundType {\r\n\tManual = 1,\r\n\tAuto = 2\r\n}\r\nexport class ApplePaySource\r\n{\r\n\tpublic webPaymentResponse: ApplePayWebPaymentResponse;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class BankAccountSource\r\n{\r\n\t/**\r\n\t* A token that can be used instead of a bank account number.\r\n\t* If a token is present a bank account does not need to be provided.\r\n\t*/\r\n\tpublic token?: string;\r\n\t/** The bank account number from which funds will be withdrawn. */\r\n\tpublic accountNumber: string;\r\n\t/** The bank code of the bank that the account belongs to. */\r\n\tpublic bank: Bank;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class BankAccountSourceResult\r\n{\r\n\tpublic accountNumber: string;\r\n\tpublic bank: Bank;\r\n\tpublic bankName: string;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** Model to hold the details of a card from which a payment should be made. */\r\nexport class CardSource\r\n{\r\n\t/**\r\n\t* A token that can be used instead of a card number.\r\n\t* If a token is present a card does not need to be provided.\r\n\t*/\r\n\tpublic token?: string;\r\n\t/** The name of the card company that issued this card: VISA, MasterCard, AMEX etc. */\r\n\tpublic cardIssuer: CardIssuer;\r\n\tpublic cardIssuerCountryIsoCode?: Country;\r\n\t/** The full card number. */\r\n\tpublic cardNumber: string;\r\n\t/**\r\n\t* The Card Verification Value found on the back of the card.\r\n\t* This is either 3 or 4 digits long.\r\n\t*/\r\n\tpublic cvv?: string;\r\n\t/** The name of the card holder as printed on the card. */\r\n\tpublic nameOnCard: string;\r\n\t/** The month in which the card expires. */\r\n\tpublic expiryMonth: Month;\r\n\t/** The year in which the card expires. */\r\n\tpublic expiryYear: number;\r\n\t/** The card holders billing address. */\r\n\tpublic billingAddress?: Address;\r\n\t/** Additional customer information to facilitate the card payment. */\r\n\tpublic cardHolder?: CardHolder;\r\n\tpublic disableThreeDSecure: boolean;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class CardSourceResult\r\n{\r\n\tpublic cardIssuer: string;\r\n\tpublic cardIssuerCountryIsoCode?: Country;\r\n\tpublic cardNumber: string;\r\n\tpublic threeDSecureUrl?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class CashSource\r\n{\r\n\tpublic doNotProcess: boolean;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class CashSourceResult\r\n{\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class GenericSource\r\n{\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class GooglePaySource\r\n{\r\n\tpublic webPaymentResponse: GooglePayWebPaymentResponse;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\n/** Model to hold the details of a mobile money payment source. */\r\nexport class MobileWalletSource\r\n{\r\n\t/** The mobile wallet operator that owns the mobile money account. */\r\n\tpublic mobileWalletOperator: MobileWalletOperator;\r\n\t/**\r\n\t* Mobile Station International Subscriber Directory Number (MSISDN) is a number used to identify a mobile phone number internationally.\r\n\t* This number includes a country code and a National Destination Code which identifies the subscriber's operator.\r\n\t*/\r\n\tpublic msisdn: string;\r\n\t/**\r\n\t* A voucher code issued by your network provider (currently Vodafone/Telecel or GMoney) in order to verify your payment.\r\n\t* This can also actually be a One Time Pin code, despite being referred to as a VoucherCode, that is generated by the MNO but needs to be submitted via the payment engine.\r\n\t*/\r\n\tpublic voucherCode?: string;\r\n\t/**\r\n\t* A PIN issued to the subscriber.\r\n\t* This is usually a static PIN code and is currently only applicable for Zeepay.\r\n\t*/\r\n\tpublic subscriberPin?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class MobileWalletSourceResult\r\n{\r\n\tpublic mobileWalletOperator: MobileWalletOperator;\r\n\tpublic mobileWalletOperatorName: string;\r\n\tpublic msisdn: string;\r\n\tpublic accountHolder?: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\nexport class PaymentSourceResults\r\n{\r\n\tpublic cards: CardSourceResult[];\r\n\tpublic mobileWallets: MobileWalletSourceResult[];\r\n\tpublic bankAccounts: BankAccountSourceResult[];\r\n\tpublic wallets: WalletSourceResult[];\r\n\tpublic cash?: CashSourceResult;\r\n}\r\n/** Model to hold lists of Cards and Mobile Money accounts from which a payment must be made. */\r\nexport class PaymentSources\r\n{\r\n\tpublic generic?: GenericSource;\r\n\t/** A list of cards that must be used to fund the payment. */\r\n\tpublic cards?: CardSource[];\r\n\t/** A list of mobile money/wallets which must be used to fund the payment. */\r\n\tpublic mobileWallets?: MobileWalletSource[];\r\n\t/** A list of bank accounts which must be used to fund the payment. */\r\n\tpublic bankAccounts?: BankAccountSource[];\r\n\t/** A list of generic digital wallet which must be used to fund the payment. */\r\n\tpublic wallets?: WalletSource[];\r\n\t/** Details of cash received to fund the payment. */\r\n\tpublic cash?: CashSource;\r\n\t/** Web Payments API response data for Apple Pay transactions. */\r\n\tpublic applePay?: ApplePaySource;\r\n\t/** Web Payments API response data for Google Pay transactions. */\r\n\tpublic googlePay?: GooglePaySource;\r\n}\r\nexport class WalletSource\r\n{\r\n\t/** A unique wallet identifier. */\r\n\tpublic walletReference: string;\r\n\t/** The wallet provider that created and manages the wallet. */\r\n\tpublic walletProvider: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The transaction amount, in cents. */\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** Set this optional flag to avoid actually processing a transaction. */\r\n\tpublic doNotProcess: boolean;\r\n\t/**\r\n\t* Set this optional flag to avoid confirmation steps for the transaction such as confirming additional fees or target account verification.\r\n\t* The details of the payment will be stored but the transaction will not pause to request confirmation of the destination from the client.\r\n\t* This flag can only be used with server integrations and will be ignored for any other calls.\r\n\t* This flag is optional and if it is omitted from the payment request it will default to FALSE and confirmation will be requested.\r\n\t*/\r\n\tpublic disableConfirmation: boolean;\r\n\t/** A collection of public data that can be associated with the transaction. */\r\n\tpublic clientData: { [key:string]: string };\r\n\t/** A collection of all refund transaction requests that are associated with this transaction. */\r\n\tpublic refunds?: RefundTransaction[];\r\n\tpublic fees: TransactionFee[];\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n}\r\nexport class WalletSourceResult\r\n{\r\n\tpublic walletReference: string;\r\n\tpublic walletProvider: string;\r\n\t/** A collection of the results of all refund transactions that are associated with the transaction that this result object refers to. */\r\n\tpublic refunds: RefundTransactionResult[];\r\n\t/** The date and time this transaction record was created. */\r\n\tpublic createdDate: Date;\r\n\t/** A globally unique transaction reference (UUID) generated by the system internally to identify a specific transaction. */\r\n\tpublic reference?: string;\r\n\t/** A globally unique hashed short transaction reference generated by the system internally and derived from the transaction Id to identify a specific transaction. */\r\n\tpublic shortReference?: string;\r\n\t/** The transaction description/reference that can appear in notifications and statements. */\r\n\tpublic description?: string;\r\n\t/** The original amount of the transaction, in cents, as submitted to the payment engine over the wire before Fees and Commissions are factored in. */\r\n\tpublic originalAmountInCents: number;\r\n\t/** The amount that the payment engine attempted to process, in cents, inclusive of fees and exclusive of real time commissions. */\r\n\tpublic amountAttemptedInCents: number;\r\n\t/**\r\n\t* The amount that the payment engine actually processed, in cents, inclusive of fees and exclusive of real time commissions.\r\n\t* This amount, as stored in the database, is already adjusted for Fees and Commissions, so we do not need to adjust it here.\r\n\t*/\r\n\tpublic amountInCents: number;\r\n\t/** The cashback amount, in cents. */\r\n\tpublic cashbackAmountInCents: number;\r\n\t/** A collection of all fees applied to the transaction. */\r\n\tpublic fees: TransactionFee[];\r\n\t/** A collection of metadata linked to this transaction. */\r\n\tpublic data: TransactionData[];\r\n\t/** A 3 character ISO currency code. */\r\n\tpublic currency: Currency;\r\n\t/** The current status of the transaction. */\r\n\tpublic status: TransactionStatus;\r\n\t/** The category of the transaction. */\r\n\tpublic category: TransactionCategory;\r\n\t/** A derived summary transaction status that groups transaction statuses into less granular sets to make it easier to quickly determine the general status of a transaction. */\r\n\tpublic summaryStatus: TransactionStatus;\r\n\tpublic isComplete: boolean;\r\n\tpublic isCashWithdrawal: boolean;\r\n\t/** A message detailing the current status of the transaction. */\r\n\tpublic message: string;\r\n}\r\n/** A model to hold a set of URLs that can be used to check the status of various types of transactions using various different web technologies. */\r\nexport class StatusUrls\r\n{\r\n\t/** A URL that can be used to repeatedly poll for a status update on a timer. */\r\n\tpublic polling?: string;\r\n\t/** A URL that can be used to connect to a SignalR endpoint in order to have updates pushed to you so that you do not have to poll. */\r\n\tpublic signalR?: string;\r\n\t/** Not available at this time. */\r\n\tpublic serverSentEvents?: string;\r\n\t/** Not available at this time. */\r\n\tpublic webSockets?: string;\r\n}\r\nexport enum TransactionCategory {\r\n\tUnknown = 0,\r\n\tGeneric = 1,\r\n\tBankAccount = 2,\r\n\tCard = 3,\r\n\tMobileWallet = 4,\r\n\tCash = 5,\r\n\tMerchant = 6,\r\n\tQrCode = 7,\r\n\tDigitalWallet = 8,\r\n\tWallet = 8,\r\n\tBill = 9\r\n}\r\n/** A model that holds the details of a transaction confirmation. */\r\nexport class TransactionConfirmation\r\n{\r\n\t/** A boolean value indicating whether the transaction has been confirmed or not. */\r\n\tpublic confirm: boolean;\r\n}\r\nexport class TransactionData\r\n{\r\n\tpublic key: string;\r\n\tpublic data: string;\r\n\tpublic isPublic: boolean;\r\n\tpublic static none: TransactionData[];\r\n}\r\nexport class TransactionFee\r\n{\r\n\tpublic name: string;\r\n\tpublic feeType: FeeType;\r\n\tpublic feeAmountInCents: number;\r\n\tpublic currency: Currency;\r\n}\r\nexport enum TransactionIconType {\r\n\tBank = 0,\r\n\tMobileWallet = 1,\r\n\tCard = 2,\r\n\tCash = 3,\r\n\tMerchant = 4,\r\n\tQrCode = 5,\r\n\tDigitalWallet = 6,\r\n\tMTN = 7,\r\n\tVodafone = 8,\r\n\tAirtelTigo = 9,\r\n\tGhanaPay = 10,\r\n\tZeepay = 11,\r\n\tGlo = 12,\r\n\tSurfline = 13,\r\n\tBusy4G = 14,\r\n\tDSTV = 15,\r\n\tGoTV = 16,\r\n\tStarTimesTV = 17,\r\n\tECG = 18,\r\n\tGhanaWater = 19,\r\n\tTelecel = 20\r\n}\r\n/** A model to hold the details of a pin or voucher code submission. */\r\nexport class TransactionPin\r\n{\r\n\t/** A PIN or voucher code provided by an end user. */\r\n\tpublic pin: string;\r\n}\r\nexport enum TransactionStatus {\r\n\tNotStarted = 0,\r\n\tSuccess = 1,\r\n\tFailed = 2,\r\n\tProcessing = 3,\r\n\tPending = 4,\r\n\tAuthorized = 5,\r\n\tDeclined = 6,\r\n\tValidationError = 7,\r\n\tRequires3DSecure = 8,\r\n\tRequiresPin = 9,\r\n\tExpired = 10,\r\n\tInsufficientFunds = 11,\r\n\tAddressVerificationFailed = 12,\r\n\tIgnored = 13,\r\n\tExternallyFunded = 14,\r\n\tProcessorUnavailable = 15,\r\n\tTimedOut = 16,\r\n\tIndeterminate = 17,\r\n\tRequiresConfirmation = 18,\r\n\tRequiresAddress = 19,\r\n\tDelayed = 20,\r\n\tRequiresInitialConfirmation = 21,\r\n\tUnrecoverable = 22,\r\n\tReversed = 23\r\n}\r\nexport enum TransactionType {\r\n\tSource = 1,\r\n\tDestination = 2\r\n}\r\n/** A model to hold the details of a web hook that a caller of this API would like to be called back on. */\r\nexport class Webhook\r\n{\r\n\t/** The URL to call back on. */\r\n\tpublic callbackUrl: string;\r\n\t/** A boolean value indicating whether callbacks should be sent every time there is a status change on any transaction associated with a payment, or only when the payment completes or any status change occurs that requires user intervention to allow the payment to progress. */\r\n\tpublic onPaymentCompleteOnly: boolean;\r\n}\r\nexport class EmailNotificationRequest\r\n{\r\n\tpublic toEmailAddress: string;\r\n\tpublic templateName?: string;\r\n\tpublic receiptType: ReceiptType;\r\n}\r\n/** Model to hold the details of a merchant payment request. */\r\nexport class MerchantPaymentRequest\r\n{\r\n\t/** A collection of all of the payment sources that must be used to make this payment. */\r\n\tpublic paymentSources?: PaymentSources;\r\n\t/** The optional terminal reference if this payment is being made from a merchant controlled device. */\r\n\tpublic terminalReference?: string;\r\n\t/** The optional QR code reference if this payment is being made from a scanned QR code. */\r\n\tpublic qrCodeReference?: string;\r\n\t/** The optional timestamp from the client used to calculate an offline verification code. */\r\n\tpublic timestamp?: number;\r\n\tpublic notificationEmailAddress?: string;\r\n\tpublic notificationMobileNumber?: string;\r\n\tpublic tipAmountInCents: number;\r\n\tpublic tipEmployeeReference?: string;\r\n\tpublic language?: string;\r\n\tpublic timeZone?: string;\r\n\t/** Specify the channel that this payment originated from. */\r\n\tpublic channel: Channel;\r\n\t/**\r\n\t* A unique client reference for this payment.\r\n\t* This is optional to detect duplicate calls and also allow you to associate payments with your own internal reference numbers.\r\n\t*/\r\n\tpublic yourReference?: string;\r\n\t/**\r\n\t* An optional reference that is associated with every transaction batch that participates in a split payment.\r\n\t* This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n\t* The client processing the split payment is responsible for generating this reference and ensuring that\r\n\t* all transaction batches that are part of the split payment are associated with the same split reference.\r\n\t*/\r\n\tpublic splitReference?: string;\r\n\t/** Optional consumer information of the person making the payment. */\r\n\tpublic consumer?: BasicConsumer;\r\n\t/** Optional merchant information of the business making the payment. */\r\n\tpublic merchant?: BasicMerchant;\r\n\t/** The location from which the payment request was submitted. */\r\n\tpublic location?: Location;\r\n\t/** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n\tpublic paymentStatusWebhook?: Webhook;\r\n\t/** A text description of the payment. Sometimes also referred to as a Narration. */\r\n\tpublic description?: string;\r\n\t/**\r\n\t* A schedule definition to use to schedule payments to recur in the future.\r\n\t* If a schedule is supplied it must include either an end date or a repeat count and it must specify what repeat interval to use.\r\n\t*/\r\n\tpublic recurrenceSchedule?: PaymentRecurrenceSchedule;\r\n\t/**\r\n\t* When a payment request instance is spawned by a recurrence schedule this property will be populated so that it is possible to lookup the specific schedule entry in the database\r\n\t* that is associated with payment request instance in question.\r\n\t*/\r\n\tpublic scheduledSequenceNumber?: number;\r\n\t/**\r\n\t* In certain scenarios a confirmation may be requested from the client before transaction processing starts (confirming fees for example).\r\n\t* Use this flag to indicate that you want to automatically confirm any initial confirmations.\r\n\t*/\r\n\tpublic disableInitialConfirmation: boolean;\r\n\t/** A list of line items associated with this payment. */\r\n\tpublic lineItems: LineItem[];\r\n}\r\n/** Model to hold the details of a payment request. */\r\nexport class PaymentRequest\r\n{\r\n\t/** A collection of all of the payment sources that must be used to make this payment. */\r\n\tpublic paymentSources?: PaymentSources;\r\n\t/** A collection of all the payment destinations that must be paid as a result of processing this payment. */\r\n\tpublic paymentDestinations?: PaymentDestinations;\r\n\tpublic language?: string;\r\n\tpublic timeZone?: string;\r\n\t/** Specify the channel that this payment originated from. */\r\n\tpublic channel: Channel;\r\n\t/**\r\n\t* A unique client reference for this payment.\r\n\t* This is optional to detect duplicate calls and also allow you to associate payments with your own internal reference numbers.\r\n\t*/\r\n\tpublic yourReference?: string;\r\n\t/**\r\n\t* An optional reference that is associated with every transaction batch that participates in a split payment.\r\n\t* This is used for split payments in environments like restaurants where multiple transaction batches contribute to one common bill.\r\n\t* The client processing the split payment is responsible for generating this reference and ensuring that\r\n\t* all transaction batches that are part of the split payment are associated with the same split reference.\r\n\t*/\r\n\tpublic splitReference?: string;\r\n\t/** Optional consumer information of the person making the payment. */\r\n\tpublic consumer?: BasicConsumer;\r\n\t/** Optional merchant information of the business making the payment. */\r\n\tpublic merchant?: BasicMerchant;\r\n\t/** The location from which the payment request was submitted. */\r\n\tpublic location?: Location;\r\n\t/** Web hook details to be used to call back to the initiator of the payment with progress updates. */\r\n\tpublic paymentStatusWebhook?: Webhook;\r\n\t/** A text description of the payment. Sometimes also referred to as a Narration. */\r\n\tpublic description?: string;\r\n\t/**\r\n\t* A schedule definition to use to schedule payments to recur in the future.\r\n\t* If a schedule is supplied it must include either an end date or a repeat count and it must specify what repeat interval to use.\r\n\t*/\r\n\tpublic recurrenceSchedule?: PaymentRecurrenceSchedule;\r\n\t/**\r\n\t* When a payment request instance is spawned by a recurrence schedule this property will be populated so that it is possible to lookup the specific schedule entry in the database\r\n\t* that is associated with payment request instance in question.\r\n\t*/\r\n\tpublic scheduledSequenceNumber?: number;\r\n\t/**\r\n\t* In certain scenarios a confirmation may be requested from the client before transaction processing starts (confirming fees for example).\r\n\t* Use this flag to indicate that you want to automatically confirm any initial confirmations.\r\n\t*/\r\n\tpublic disableInitialConfirmation: boolean;\r\n\t/** A list of line items associated with this payment. */\r\n\tpublic lineItems: LineItem[];\r\n}\r\nexport class SmsNotificationRequest\r\n{\r\n\tpublic toNumber: string;\r\n\tpublic receiptType: ReceiptType;\r\n}\r\nexport class GooglePayWebPaymentResponse\r\n{\r\n\tpublic requestId: string;\r\n\tpublic methodName: string;\r\n\tpublic details: any;\r\n\tpublic payerEmail?: string;\r\n\tpublic payerName: string;\r\n\tpublic payerPhone?: string;\r\n}\r\nexport class ApplePayWebPaymentResponse\r\n{\r\n\tpublic requestId: string;\r\n\tpublic methodName: string;\r\n\tpublic details: any;\r\n\tpublic payerEmail?: string;\r\n\tpublic payerName: string;\r\n\tpublic payerPhone?: string;\r\n}\r\n","import { ApiTokens, BaseApi } from '../baseApi'\r\nimport { Address } from '../common/types'\r\nimport { MobileWalletOperator } from '../lookups/types'\r\nimport { MerchantQrCodeOptions } from '../merchants/types'\r\nimport {\r\n PaymentRequest,\r\n PaymentResponse,\r\n PaymentStatusResponse,\r\n TransactionPin,\r\n TransactionConfirmation,\r\n QrCodeValidationRequest,\r\n QrCodeValidationResponse,\r\n CardVerificationPaymentRequest,\r\n EmailNotificationRequest,\r\n SmsNotificationRequest,\r\n TransactionStatus,\r\n PaymentTransactionResult,\r\n MobileWalletSourceResult,\r\n MerchantPaymentResponse,\r\n MerchantPaymentRequest,\r\n PaymentReceiptResponse,\r\n ReceiptType,\r\n} from './types'\r\nimport { \r\n OnPaymentStatusUpdate,\r\n OnPaymentComplete,\r\n OnRequires3DSecure,\r\n OnRequiresPin,\r\n OnRequiresConfirmation,\r\n OnRequiresAddress,\r\n OnComplete3DSecure\r\n} from '../eventTypes'\r\nimport {\r\n CardRequest,\r\n CardResponse,\r\n BankAccountRequest,\r\n BankAccountResponse,\r\n VerifyCardRequest\r\n} from '../tokens/types'\r\nimport * as signalR from '@microsoft/signalr'\r\nimport { AxiosInstance } from 'axios'\r\n\r\nconst baseEndpointPay = '/v1/pay'\r\nconst baseEndpointToken = '/v2/token'\r\nconst baseEndpointTransaction = '/v1/transaction'\r\nconst baseEndpointValidate = '/v1/validate'\r\nconst baseEndpointNotification = '/v1/notification'\r\n\r\nexport class Payments extends BaseApi { \r\n private readonly hubConnection: signalR.HubConnection\r\n private readonly baseUrl: string\r\n\r\n private activeTransactions = new Map<string, { lastJsonResponse: string, isProcessing3dSecure: boolean, statusCheckTimer: NodeJS.Timer }>()\r\n\r\n private manuallyStartedPaymentStatusChecking = false\r\n \r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false) {\r\n super(axiosInstance, consoleLogging)\r\n\r\n this.baseUrl = axiosInstance.defaults.baseURL\r\n\r\n this.hubConnection = new signalR.HubConnectionBuilder()\r\n .withUrl(`${this.baseUrl}${baseEndpointPay}/hub`, { accessTokenFactory: () => ApiTokens.accessToken })\r\n .withAutomaticReconnect()\r\n .withStatefulReconnect()\r\n .configureLogging(this.consoleLogging ? signalR.LogLevel.Debug : signalR.LogLevel.None)\r\n .build()\r\n }\r\n\r\n async pay(request: PaymentRequest): Promise<PaymentStatusResponse> {\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\r\n const response = await this.request<PaymentResponse>(baseEndpointPay, 'POST', request)\r\n\r\n return this.startPaymentStatusChecking(response.reference)\r\n }\r\n\r\n async payMerchant(merchantReference: string, request: MerchantPaymentRequest): Promise<PaymentStatusResponse> {\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone\r\n const response = await this.request<MerchantPaymentResponse>(`${baseEndpointPay}/merchant/${merchantReference}`, 'POST', request)\r\n\r\n // Use token from the response if it was not set before.\r\n ApiTokens.accessToken = ApiTokens.accessToken || response.accessToken \r\n\r\n return this.startPaymentStatusChecking(response.reference)\r\n }\r\n\r\n async paymentStatusCheck(paymentReference: string): Promise<PaymentStatusResponse> {\r\n return this.request<PaymentStatusResponse>(`${baseEndpointPay}/status/${paymentReference}`, 'GET')\r\n }\r\n\r\n async paymentReceipt(paymentReference: string): Promise<PaymentReceiptResponse> {\r\n return this.request<PaymentReceiptResponse>(`${baseEndpointPay}/receipt/${paymentReference}`, 'GET')\r\n }\r\n\r\n async createCardToken(request: CardRequest): Promise<CardResponse> {\r\n return this.request<CardResponse>(`${baseEndpointToken}/card`, 'POST', request)\r\n }\r\n\r\n async createBankAccountToken(request: BankAccountRequest): Promise<BankAccountResponse> {\r\n return this.request<BankAccountResponse>(`${baseEndpointToken}/bankAccount`, 'POST', request)\r\n }\r\n\r\n async verifyCardToken(request: VerifyCardRequest): Promise<CardResponse> {\r\n return this.request<CardResponse>(`${baseEndpointToken}/card/verify`, 'POST', request)\r\n }\r\n\r\n async createCardVerificationPayment(request: CardVerificationPaymentRequest): Promise<PaymentStatusResponse> {\r\n const response = await this.request<PaymentResponse>(`${baseEndpointToken}/card/verify/payment`, 'POST', request)\r\n\r\n return this.startPaymentStatusChecking(response.reference)\r\n }\r\n\r\n async submitPinCode(transactionReference: string, pin: string): Promise<void> {\r\n const request: TransactionPin = {\r\n pin: pin\r\n }\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/pin/${transactionReference}`, 'POST', request)\r\n }\r\n\r\n async rejectPinCode(transactionReference: string): Promise<void> {\r\n const request: TransactionPin = {\r\n pin: ''\r\n }\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/pin/${transactionReference}`, 'POST', request)\r\n }\r\n\r\n async submitConfirmation(transactionReference: string, confirm: boolean): Promise<void> { \r\n const request: TransactionConfirmation = {\r\n confirm: confirm\r\n }\r\n\r\n return this.request<void>(`${baseEndpointTransaction}/confirm/${transactionReference}`, 'POST', request)\r\n }\r\n\r\n async submitAddress(transactionReference: string, request: Address): Promise<void> {\r\n return this.request<void>(`${baseEndpointTransaction}/address/${transactionReference}`, 'POST', request)\r\n }\r\n\r\n async validateQrCode(request: QrCodeValidationRequest): Promise<QrCodeValidationResponse> {\r\n return this.request<QrCodeValidationResponse>(`${baseEndpointValidate}/qr`, 'POST', request)\r\n }\r\n\r\n async sendEmailPaymentNotification(paymentReference: string, emailAddress: string, templateName?: string): Promise<void> {\r\n const request: EmailNotificationRequest = {\r\n toEmailAddress: emailAddress,\r\n templateName: templateName,\r\n receiptType: ReceiptType.Consumer\r\n }\r\n\r\n return this.request<void>(`${baseEndpointNotification}/email/${paymentReference}`, 'POST', request)\r\n }\r\n\r\n async sendSmsPaymentNotification(paymentReference: string, msisdn: string): Promise<void> {\r\n const request: SmsNotificationRequest = {\r\n toNumber: msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, ''),\r\n receiptType: ReceiptType.Consumer\r\n }\r\n\r\n return this.request<void>(`${baseEndpointNotification}/sms/${paymentReference}`, 'POST', request)\r\n }\r\n\r\n async stopPaymentStatusChecking(paymentReference?: string): Promise<void> {\r\n if (paymentReference) {\r\n this.removePaymentStatusCheckInterval(paymentReference)\r\n this.activeTransactions.delete(paymentReference)\r\n }\r\n else {\r\n this.manuallyStartedPaymentStatusChecking = false\r\n\r\n for (let tran of this.activeTransactions.values()) {\r\n clearInterval(tran.statusCheckTimer)\r\n }\r\n\r\n this.activeTransactions.clear()\r\n }\r\n\r\n if (!this.manuallyStartedPaymentStatusChecking && this.hubConnection.state !== signalR.HubConnectionState.Disconnected) {\r\n this.hubConnection.off('OnPaymentStatusChanged')\r\n return this.hubConnection.stop()\r\n }\r\n\r\n return Promise.resolve()\r\n }\r\n\r\n async startPaymentStatusChecking(paymentReference?: string): Promise<PaymentStatusResponse> {\r\n // Check if we can use SignalR but even if it fails then it will fallback to polling.\r\n const start = async () => {\r\n try {\r\n if (paymentReference) {\r\n // Enable a backup poll if things are taking a bit long.\r\n this.addPaymentStatusCheckInterval(paymentReference, 10000)\r\n }\r\n\r\n if (this.hubConnection.state !== signalR.HubConnectionState.Connected) {\r\n return await this.hubConnection.start()\r\n }\r\n\r\n return Promise.resolve()\r\n } catch (error) {\r\n if (paymentReference) {\r\n this.removePaymentStatusCheckInterval(paymentReference)\r\n\r\n console.error('Could not connect via SignalR, falling back to polling end-point...')\r\n this.addPaymentStatusCheckInterval(paymentReference, 1500)\r\n\r\n return Promise.resolve()\r\n }\r\n \r\n return Promise.reject(error)\r\n }\r\n }\r\n\r\n if (paymentReference) {\r\n this.activeTransactions.set(paymentReference, {\r\n lastJsonResponse: '',\r\n isProcessing3dSecure: false,\r\n statusCheckTimer: null,\r\n })\r\n }\r\n\r\n this.hubConnection.off('OnPaymentStatusChanged')\r\n this.hubConnection.on('OnPaymentStatusChanged', async (statusResponse: PaymentStatusResponse) => {\r\n this.removePaymentStatusCheckInterval(statusResponse.paymentReference)\r\n\r\n // An active transaction is not found but the checker was manually started so we need to add it.\r\n // This is necessary because starting the status checker manually implied you are waiting for an external payment to start.\r\n if (!this.activeTransactions.has(statusResponse.paymentReference) && this.manuallyStartedPaymentStatusChecking) {\r\n this.activeTransactions.set(statusResponse.paymentReference, {\r\n lastJsonResponse: '',\r\n isProcessing3dSecure: false,\r\n statusCheckTimer: null,\r\n })\r\n }\r\n\r\n if (this.activeTransactions.has(statusResponse.paymentReference)) {\r\n this.checkPaymentUpdateStatus(statusResponse)\r\n\r\n if (statusResponse.isComplete) {\r\n this.activeTransactions.delete(statusResponse.paymentReference)\r\n\r\n if (!this.manuallyStartedPaymentStatusChecking) {\r\n // If this was not manually started then disconnect from the hub.\r\n this.hubConnection.off('OnPaymentStatusChanged')\r\n return await this.stopPaymentStatusChecking(statusResponse.paymentReference)\r\n }\r\n }\r\n else {\r\n // Enable the backup poll again as a fallback if the connection gets lost.\r\n this.addPaymentStatusCheckInterval(statusResponse.paymentReference, 5000)\r\n }\r\n }\r\n \r\n return Promise.resolve()\r\n })\r\n\r\n await start()\r\n\r\n if (paymentReference) {\r\n // Since the payment is already processing, we should check the status after connecting to see if it's in a waiting state that could have been missed.\r\n const initialStatusResponse = await this.paymentStatusCheck(paymentReference)\r\n this.checkPaymentUpdateStatus(initialStatusResponse)\r\n\r\n return Promise.resolve(initialStatusResponse)\r\n }\r\n else {\r\n this.manuallyStartedPaymentStatusChecking = true\r\n }\r\n\r\n return Promise.resolve(null)\r\n }\r\n\r\n getOfflinePaymentFormUrl(timestamp: number, merchantId: number, terminalId: number, batchNumber: string, options: MerchantQrCodeOptions): string {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'\r\n let optionsBase64 = ''\r\n if (isBrowser) {\r\n // Browser compatible version.\r\n optionsBase64 = btoa(JSON.stringify(options || {}))\r\n }\r\n else {\r\n optionsBase64 = Buffer.from(JSON.stringify(options || {}), 'base64').toString()\r\n }\r\n\r\n // /mp is URL rewritten to v1/merchant/payment/form/offline to keep it short for QR codes.\r\n return `${this.baseUrl}/mp?x=${timestamp}|${merchantId}|${terminalId}|${batchNumber || ''}|${optionsBase64}`\r\n }\r\n\r\n getRequiredPinLength(mobileWalletOperator: MobileWalletOperator): number {\r\n if (mobileWalletOperator === MobileWalletOperator.VDF || mobileWalletOperator.toString() === 'VDF' ||\r\n mobileWalletOperator === MobileWalletOperator.TCG || mobileWalletOperator.toString() === 'TCG') {\r\n return 6\r\n }\r\n\r\n return 4\r\n }\r\n\r\n luhnCheck(creditCardNumber: string): boolean {\r\n if (!creditCardNumber) {\r\n return false\r\n }\r\n\r\n creditCardNumber = creditCardNumber.replace(/[\\s]/g, '')\r\n\r\n if (!/^[0-9]+$/.test(creditCardNumber)) {\r\n return false\r\n }\r\n\r\n const array = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]\r\n let length = creditCardNumber.length\r\n let bit = 1\r\n let sum = 0\r\n let value = 0\r\n\r\n while (length) {\r\n value = parseInt(creditCardNumber.charAt(--length), 10)\r\n bit ^= 1\r\n sum += bit ? array[value] : value\r\n }\r\n\r\n return sum % 10 === 0\r\n }\r\n\r\n private checkPaymentUpdateStatus(statusResponse: PaymentStatusResponse) {\r\n\r\n const checkRequiredStatuses = (statusResponse: PaymentStatusResponse) => {\r\n let isWaiting = false\r\n\r\n // Check for specific wait/required statuses and signal the client to show a dialog.\r\n const checkGenericRequiredStatuses = (transactionResult: PaymentTransactionResult) => {\r\n // Short circuit here to avoid signalling for multiple waiting transactions to the client can deal with one at a time.\r\n if (!isWaiting) {\r\n const signalData: Record<string, any> = { message: transactionResult.message, transactionReference: transactionResult.reference, paymentStatusResponse: statusResponse }\r\n\r\n if (transactionResult.status === TransactionStatus.RequiresConfirmation || transactionResult.status === TransactionStatus.RequiresInitialConfirmation) {\r\n isWaiting = true\r\n\r\n // Attach the account holders and the fees.\r\n const destinationWithAccountHolder = statusResponse.paymentDestinations.mobileWallets.find(transactionResult => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.bankAccounts.find(transactionResult => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.merchants.find(transactionResult => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.qrCodes.find(transactionResult => transactionResult.accountHolder) ||\r\n statusResponse.paymentDestinations.bills.find(transactionResult => transactionResult.accountHolder) || null\r\n\r\n signalData.confirmationData = {\r\n amountInCents: transactionResult.amountInCents,\r\n sourceAccountHolder: transactionResult['accountHolder'] || null,\r\n destinationAccountHolder: destinationWithAccountHolder !== null ? destinationWithAccountHolder.accountHolder : null,\r\n fees: transactionResult.fees,\r\n }\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresConfirmation --')\r\n console.dir(signalData, { depth: null })\r\n }\r\n\r\n this.events.publish(OnRequiresConfirmation, signalData)\r\n }\r\n else if (transactionResult.status === TransactionStatus.RequiresPin) {\r\n isWaiting = true\r\n\r\n // We can try indicate to a client to render PIN limits if that's what they want to do.\r\n // Typically a PIN will be 4 digits in length, one well-known outlier is a Vodafone voucher which is 6.\r\n signalData.pinLength = this.getRequiredPinLength(MobileWalletOperator.None)\r\n \r\n const mobileWalletSourceResult = transactionResult as MobileWalletSourceResult\r\n if (mobileWalletSourceResult && mobileWalletSourceResult.mobileWalletOperator) {\r\n signalData.pinLength = this.getRequiredPinLength(mobileWalletSourceResult.mobileWalletOperator)\r\n }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresPin --')\r\n console.dir(signalData, { depth: null })\r\n }\r\n\r\n this.events.publish(OnRequiresPin, signalData)\r\n }\r\n else if (transactionResult.status === TransactionStatus.RequiresAddress) {\r\n isWaiting = true\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequiresAddress --')\r\n console.dir(signalData, { depth: null })\r\n }\r\n\r\n this.events.publish(OnRequiresAddress, signalData)\r\n }\r\n }\r\n }\r\n\r\n // Sources\r\n statusResponse.paymentSources.cards.forEach(transactionResult => {\r\n if (!isWaiting && transactionResult.status === TransactionStatus.Requires3DSecure && transactionResult.threeDSecureUrl) {\r\n isWaiting = true\r\n this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure = true\r\n\r\n const signalData = { url: transactionResult.threeDSecureUrl }\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnRequires3DSecure --')\r\n console.dir(signalData, { depth: null })\r\n }\r\n\r\n this.events.publish(OnRequires3DSecure, signalData)\r\n }\r\n else { \r\n checkGenericRequiredStatuses(transactionResult)\r\n }\r\n })\r\n\r\n if (!isWaiting && this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure) {\r\n this.activeTransactions.get(statusResponse.paymentReference).isProcessing3dSecure = false\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnComplete3DSecure --')\r\n }\r\n\r\n this.events.publish(OnComplete3DSecure)\r\n }\r\n\r\n statusResponse.paymentSources.mobileWallets.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentSources.bankAccounts.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n\r\n // Destinations\r\n statusResponse.paymentDestinations.bankAccounts.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentDestinations.merchants.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentDestinations.mobileWallets.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentDestinations.qrCodes.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentDestinations.cards.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentDestinations.wallets.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n statusResponse.paymentDestinations.bills.forEach(transactionResult => checkGenericRequiredStatuses(transactionResult))\r\n }\r\n\r\n const activeTransaction = this.activeTransactions.get(statusResponse.paymentReference)\r\n\r\n if (activeTransaction && JSON.stringify(statusResponse) !== activeTransaction.lastJsonResponse) {\r\n // To reduce spamming the client we'll only publish changes.\r\n activeTransaction.lastJsonResponse = JSON.stringify(statusResponse)\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnPaymentStatusUpdate --')\r\n console.dir(statusResponse, { depth: null })\r\n }\r\n\r\n this.events.publish(OnPaymentStatusUpdate, statusResponse)\r\n\r\n checkRequiredStatuses(statusResponse)\r\n\r\n if (statusResponse.isComplete) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnPaymentComplete --')\r\n console.dir(statusResponse, { depth: null })\r\n }\r\n\r\n this.events.publish(OnPaymentComplete, statusResponse)\r\n\r\n this.removePaymentStatusCheckInterval(statusResponse.paymentReference)\r\n this.activeTransactions.delete(statusResponse.paymentReference)\r\n }\r\n }\r\n else if (this.consoleLogging) {\r\n console.warn('!! OnPaymentStatusUpdate will not be fired because the status response has not changed !!')\r\n }\r\n }\r\n\r\n private async onStatusPollingInterval(paymentReference: string): Promise<void> {\r\n this.removePaymentStatusCheckInterval(paymentReference)\r\n\r\n if (this.activeTransactions.has(paymentReference)) {\r\n const statusResponse = await this.paymentStatusCheck(paymentReference)\r\n\r\n if (statusResponse) {\r\n this.checkPaymentUpdateStatus(statusResponse)\r\n\r\n if (!statusResponse.isComplete) {\r\n this.addPaymentStatusCheckInterval(paymentReference)\r\n }\r\n else {\r\n if (!this.manuallyStartedPaymentStatusChecking) {\r\n // If this was not manually started then disconnect from the hub.\r\n this.hubConnection.off('OnPaymentStatusChanged')\r\n await this.stopPaymentStatusChecking(paymentReference)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return Promise.resolve()\r\n }\r\n\r\n private addPaymentStatusCheckInterval(paymentReference?: string, interval: number = 1500): void {\r\n if (this.activeTransactions.has(paymentReference)) {\r\n const activeTransaction = this.activeTransactions.get(paymentReference)\r\n clearInterval(activeTransaction.statusCheckTimer)\r\n activeTransaction.statusCheckTimer = setInterval(() => this.onStatusPollingInterval(paymentReference), interval)\r\n }\r\n }\r\n\r\n private removePaymentStatusCheckInterval(paymentReference?: string): void {\r\n if (this.activeTransactions.has(paymentReference)) {\r\n clearInterval(this.activeTransactions.get(paymentReference).statusCheckTimer)\r\n }\r\n }\r\n}\r\n","export enum LogLevel {\r\n Trace = 0,\r\n Debug = 1,\r\n Information = 2,\r\n Warning = 3,\r\n Error = 4,\r\n Critical = 5,\r\n}\r\nexport interface LogMessage {\r\n timestamp: string,\r\n level: LogLevel;\r\n template: string;\r\n properties?: any[]\r\n}\r\nexport interface Token {\r\n name?: string;\r\n text?: string;\r\n destructure?: boolean;\r\n raw?: string;\r\n }","import { BaseApi } from '../baseApi'\r\nimport { OnSessionExpired } from '../eventTypes'\r\nimport {\r\n BasicConsumer,\r\n Consumer,\r\n Feedback,\r\n Message,\r\n} from './types'\r\n\r\nconst baseConsumerEndpoint = '/v1/consumer'\r\nconst baseFeedbackEndpoint = '/v1/consumer/feedback'\r\nconst baseMessageEndpoint = '/v1/consumer/messages'\r\n\r\nexport class Consumers extends BaseApi {\r\n\r\n // Consumer\r\n async createConsumer(request: BasicConsumer): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'POST', request)\r\n }\r\n\r\n async updateConsumer(request: Consumer): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'PUT', request)\r\n }\r\n\r\n async deleteConsumer(): Promise<void> {\r\n await this.request<Consumer>(baseConsumerEndpoint, 'DELETE')\r\n \r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --')\r\n }\r\n\r\n this.events.publish(OnSessionExpired)\r\n \r\n return Promise.resolve()\r\n }\r\n\r\n async getConsumer(): Promise<Consumer> {\r\n return this.request<Consumer>(baseConsumerEndpoint, 'GET')\r\n }\r\n\r\n // Feedback\r\n async submitFeedback(description: string): Promise<void> {\r\n const request: Feedback = {\r\n description: description\r\n }\r\n\r\n return this.request<void>(`${baseFeedbackEndpoint}/send`, 'POST', request)\r\n }\r\n\r\n // Messages\r\n async getMessage(messageReference: string): Promise<Message> {\r\n return this.request<Message>(`${baseMessageEndpoint}/${messageReference}`, 'GET')\r\n }\r\n\r\n async deleteMessage(messageReference: string): Promise<void> {\r\n return this.request<void>(`${baseMessageEndpoint}/${messageReference}`, 'DELETE')\r\n }\r\n}","import { BaseApi } from '../baseApi'\r\nimport QRCode from 'qrcode'\r\n\r\nconst baseEndpoint = '/v1/qr'\r\n\r\nexport class QrCodes extends BaseApi {\r\n private readonly qrCache = new Map<string, any>()\r\n\r\n async decode(qrCode: string): Promise<any> {\r\n if (!this.qrCache.has(qrCode)) {\r\n this.qrCache.set(qrCode, await this.request<any>(`${baseEndpoint}/decode?qrCodeData=${qrCode}`, 'GET'))\r\n }\r\n \r\n return Promise.resolve(this.qrCache.get(qrCode) || null)\r\n }\r\n\r\n async generate(text: string, width: number = 500): Promise<string> {\r\n if (text) {\r\n return QRCode.toDataURL(text, { errorCorrectionLevel: 'H', margin: 0.5, width: width })\r\n }\r\n\r\n return Promise.reject()\r\n }\r\n}","import { OtpVerificationRequest, OtpVerificationResponse, TokenResponse } from '../authentication/types'\r\nimport { ApiTokens, BaseApi } from '../baseApi'\r\nimport { Device } from '../devices/types'\r\nimport { Currency } from '../lookups/types'\r\nimport { BasicMerchant, Merchant, MerchantFile, MerchantLoginCredentials, MerchantNameVerificationRequest, MerchantNameVerificationResponse, MerchantProduct, TerminalConfiguration, TerminalPaymentQrCodeUrls, TerminalPaymentQrCodes, TerminalSetup } from './types'\r\n\r\nconst baseMerchantEndpoint = '/v1/merchant'\r\nconst baseOtpEndpoint = '/v1/merchant/otp'\r\nconst basePosEndpoint = '/v1/merchant/pos'\r\nconst baseProductEndpoint = '/v1/merchant/product'\r\nconst baseUserEndpoint = '/v1/merchant/user'\r\n\r\nexport class Merchants extends BaseApi {\r\n private readonly productDetailCache = new Map<string, MerchantProduct>()\r\n private productsCache: any[] = []\r\n\r\n private createMerchantProductProxy(product: MerchantProduct): MerchantProduct {\r\n const copy = {...product}\r\n \r\n return new Proxy(copy, {\r\n get(target, prop) {\r\n if (prop === 'amountInCents') {\r\n if (target.futureAmountEffectiveFromDate && \r\n new Date(target.futureAmountEffectiveFromDate) <= new Date()) {\r\n return target.futureAmountInCents || 0\r\n }\r\n return target.amountInCents\r\n }\r\n return (target as any)[prop]\r\n },\r\n\r\n set(target, prop, value) {\r\n (target as any)[prop] = value\r\n return true\r\n }\r\n }) as MerchantProduct\r\n }\r\n\r\n // Products\r\n private async getAllProducts(): Promise<any> {\r\n if (this.productsCache.length === 0) {\r\n const products = await this.request<any>(`${baseProductEndpoint}/lookup`, 'GET')\r\n this.productsCache = products || []\r\n }\r\n\r\n return Promise.resolve(this.productsCache)\r\n }\r\n\r\n async getActiveProductTypes(): Promise<string[]> {\r\n const allProducts = await this.getAllProducts()\r\n \r\n return Promise.resolve(allProducts.map(p => p.type).sort())\r\n }\r\n\r\n async getMerchantNamesFromProductType(productType: string): Promise<string[]> {\r\n const allProducts = await this.getAllProducts()\r\n\r\n const el = allProducts.find(p => p.type === productType)\r\n if (el) {\r\n return Promise.resolve(el.merchants.map(m => m.name).filter((value, index, self) => self.indexOf(value) === index).sort())\r\n }\r\n\r\n return Promise.resolve([])\r\n }\r\n\r\n async getProductTypesForMerchant(merchantName: string) : Promise<string[]> {\r\n const allProducts = await this.getAllProducts()\r\n const typesWithMatchingMerchant = []\r\n\r\n allProducts.forEach(product => {\r\n if (product.merchants.find(m => m.name === merchantName)) {\r\n typesWithMatchingMerchant.push(product.type)\r\n }\r\n })\r\n\r\n return Promise.resolve(typesWithMatchingMerchant.filter((value, index, self) => self.indexOf(value) === index).sort())\r\n }\r\n\r\n async getProductsForMerchantAndProductType(productType: string, merchantName: string): Promise<any[]> {\r\n const allProducts = await this.getAllProducts()\r\n\r\n const pel = allProducts.find(p => p.type === productType)\r\n if (pel) {\r\n const mel = pel.merchants.find(m => m.name === merchantName)\r\n if (mel) {\r\n return Promise.resolve(mel.products.sort((a, b) => a.name.localeCompare(b.name)))\r\n }\r\n }\r\n\r\n return Promise.resolve([])\r\n }\r\n\r\n async getProductDetails(productReference: string): Promise<MerchantProduct> {\r\n if (!this.productDetailCache.has(productReference)) {\r\n this.productDetailCache.set(productReference, await this.request<MerchantProduct>(`${baseProductEndpoint}/details/${productReference}`, 'GET'))\r\n }\r\n\r\n const productDetails = this.productDetailCache.get(productReference) || null\r\n if (productDetails) {\r\n return Promise.resolve(this.createMerchantProductProxy(productDetails))\r\n }\r\n\r\n return Promise.resolve(null)\r\n }\r\n\r\n async getProducts(): Promise<MerchantProduct[]> {\r\n const products = await this.request<MerchantProduct[]>(`${baseProductEndpoint}`, 'GET')\r\n return products.map(product => this.createMerchantProductProxy(product))\r\n }\r\n\r\n\r\n async createProduct(product: MerchantProduct): Promise<MerchantProduct> {\r\n const newProduct = await this.request<MerchantProduct>(`${baseProductEndpoint}`, 'POST', product)\r\n return this.createMerchantProductProxy(newProduct)\r\n }\r\n\r\n async updateProduct(product: MerchantProduct): Promise<MerchantProduct> {\r\n const updatedProduct = await this.request<MerchantProduct>(`${baseProductEndpoint}`, 'PUT', product)\r\n return this.createMerchantProductProxy(updatedProduct)\r\n }\r\n\r\n async deleteProduct(productReference: string): Promise<void> {\r\n return this.request<void>(`${baseProductEndpoint}/${productReference}`, 'DELETE')\r\n }\r\n\r\n // Merchant\r\n async getMerchant(): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'GET')\r\n }\r\n\r\n async createMerchant(request: Merchant): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'POST', request)\r\n }\r\n \r\n async updateMerchant(request: Merchant): Promise<Merchant> {\r\n return this.request<Merchant>(baseMerchantEndpoint, 'PUT', request)\r\n }\r\n\r\n async getMerchantAgreement(): Promise<string> {\r\n return this.request<string>(`${baseMerchantEndpoint}/agreement`, 'GET')\r\n }\r\n\r\n async acceptMerchantAgreement(): Promise<void> {\r\n return this.request<void>(`${baseMerchantEndpoint}/agreement/accept`, 'POST')\r\n }\r\n \r\n // Verification\r\n async verifyMobileNumber(msisdn?: string): Promise<void> {\r\n let cleanMsisdn = ''\r\n if (msisdn) {\r\n cleanMsisdn = msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, '')\r\n }\r\n\r\n return this.request<void>(`${baseOtpEndpoint}/${cleanMsisdn}`, 'POST')\r\n }\r\n\r\n async validateOtp(otpValue: string, msisdn?: string): Promise<OtpVerificationResponse> { \r\n const request: OtpVerificationRequest = {\r\n otpValue: otpValue\r\n }\r\n\r\n let cleanMsisdn = ''\r\n if (msisdn) {\r\n cleanMsisdn = msisdn.replace(/ /g, '').replace(/\\+/g, '').replace(/-/g, '')\r\n }\r\n\r\n const verificationResponse = await this.request<OtpVerificationResponse>(`${baseOtpEndpoint}/validate/${cleanMsisdn}`, 'POST', request)\r\n \r\n ApiTokens.accessToken = verificationResponse.accessToken || ApiTokens.accessToken\r\n\r\n return Promise.resolve(verificationResponse)\r\n }\r\n\r\n async validateMerchantName(name: string): Promise<boolean> {\r\n const request: MerchantNameVerificationRequest = {\r\n merchantName: name\r\n }\r\n\r\n const response = await this.request<MerchantNameVerificationResponse>(`${baseMerchantEndpoint}/validate/name`, 'POST', request)\r\n\r\n if (response.accessToken) {\r\n ApiTokens.accessToken = response.accessToken\r\n return Promise.resolve(true)\r\n }\r\n\r\n return Promise.resolve(false)\r\n }\r\n\r\n // User\r\n async createUser(username: string, password: string, mobileNumber?: string, emailAddress?: string): Promise<TokenResponse> {\r\n const request: MerchantLoginCredentials = {\r\n username: username,\r\n password: password,\r\n mobileNumber: mobileNumber,\r\n emailAddress: emailAddress,\r\n }\r\n\r\n const tokenResponse = await this.request<TokenResponse>(baseUserEndpoint, 'POST', request)\r\n \r\n ApiTokens.accessToken = tokenResponse.accessToken\r\n ApiTokens.refreshToken = tokenResponse.refreshToken\r\n\r\n return Promise.resolve(tokenResponse)\r\n }\r\n\r\n async switchToMerchant(merchantReference: string): Promise<TokenResponse> {\r\n const tokenResponse = await this.request<TokenResponse>(`${baseUserEndpoint}/switch/${merchantReference}`, 'POST')\r\n \r\n ApiTokens.accessToken = tokenResponse.accessToken\r\n ApiTokens.refreshToken = tokenResponse.refreshToken\r\n\r\n return Promise.resolve(tokenResponse)\r\n } \r\n \r\n async getUserMerchants(): Promise<BasicMerchant[]> {\r\n return this.request<BasicMerchant[]>(baseUserEndpoint, 'GET')\r\n }\r\n\r\n // Terminal / POS\r\n async setupPosTerminal(terminalReference: string, merchantSource?: string, deviceInformation?: Device): Promise<TerminalSetup> {\r\n const response = await this.request<TerminalSetup>(`${basePosEndpoint}/setup/${terminalReference}/${merchantSource}`, 'POST', deviceInformation)\r\n \r\n ApiTokens.accessToken = response.checkAccessToken || ApiTokens.accessToken\r\n\r\n return Promise.resolve(response)\r\n }\r\n\r\n async getPosTerminalConfiguration(terminalReference: string, merchantSource?: string): Promise<TerminalConfiguration> {\r\n const configResponse = await this.request<TerminalConfiguration>(`${basePosEndpoint}/config/${terminalReference}/${merchantSource}`, 'GET')\r\n \r\n ApiTokens.accessToken = configResponse.accessToken || ApiTokens.accessToken\r\n\r\n return Promise.resolve(configResponse)\r\n }\r\n \r\n async getTerminalPaymentQrCodes(amountInCents: number, currency: Currency): Promise<TerminalPaymentQrCodes> {\r\n let currencyIsoCode = currency.toString()\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency]\r\n }\r\n\r\n return this.request<TerminalPaymentQrCodes>(`${basePosEndpoint}/qr?amount=${amountInCents}¤cy=${currencyIsoCode}`, 'GET')\r\n }\r\n\r\n async getTerminalPaymentQrCodeUrls(amountInCents: number, currency: Currency): Promise<TerminalPaymentQrCodeUrls> {\r\n let currencyIsoCode = currency.toString()\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency]\r\n }\r\n\r\n return this.request<TerminalPaymentQrCodeUrls>(`${basePosEndpoint}/qr-urls?amount=${amountInCents}¤cy=${currencyIsoCode}`, 'GET')\r\n }\r\n\r\n // Files\r\n async uploadFile(request: MerchantFile): Promise<void> {\r\n return this.request<void>(`${baseMerchantEndpoint}/file/upload`, 'POST', request)\r\n }\r\n}","import { Token } from \"./types\"\r\n\r\n// https://github.com/structured-log/structured-log/blob/7c05f737316f62f32775b2fd2f0d69fb207978bd/src/messageTemplate.ts\r\nconst tokenizer = /\\{@?\\w+}/g\r\n\r\nexport class MessageTemplate {\r\n raw: string\r\n private tokens: Token[]\r\n \r\n constructor(messageTemplate: string) {\r\n if (messageTemplate === null || !messageTemplate.length) {\r\n throw new Error('Argument \"messageTemplate\" is required.')\r\n }\r\n\r\n this.raw = messageTemplate\r\n this.tokens = this.tokenize(messageTemplate)\r\n }\r\n \r\n render(properties?: Object): string {\r\n if (!this.tokens.length) {\r\n return this.raw\r\n }\r\n\r\n properties = properties || {}\r\n const result = []\r\n\r\n for (var i = 0; i < this.tokens.length; ++i) {\r\n const token = this.tokens[i]\r\n if (typeof token.name === 'string') {\r\n if (properties.hasOwnProperty(token.name)) {\r\n result.push(this.toText(properties[token.name]))\r\n } else {\r\n result.push(token.raw)\r\n }\r\n } else {\r\n result.push(token.text)\r\n }\r\n }\r\n\r\n return result.join('')\r\n }\r\n\r\n bindProperties(positionalArgs: any): Object {\r\n const result = {}\r\n let nextArg = 0\r\n\r\n for (var i = 0; i < this.tokens.length && nextArg < positionalArgs.length; ++i) {\r\n const token = this.tokens[i]\r\n if (typeof token.name === 'string') {\r\n let p = positionalArgs[nextArg]\r\n result[token.name] = this.capture(p, token.destructure)\r\n nextArg++\r\n }\r\n }\r\n\r\n while (nextArg < positionalArgs.length) {\r\n const arg = positionalArgs[nextArg]\r\n if (typeof arg !== 'undefined') {\r\n result['a' + nextArg] = this.capture(arg)\r\n }\r\n nextArg++\r\n }\r\n\r\n return result\r\n }\r\n\r\n private tokenize(template: string): Token[] {\r\n const tokens = []\r\n\r\n let result\r\n let textStart\r\n\r\n while ((result = tokenizer.exec(template)) !== null) {\r\n if (result.index !== textStart) {\r\n tokens.push({ text: template.slice(textStart, result.index) })\r\n }\r\n\r\n let destructure = false\r\n\r\n let token = result[0].slice(1, -1)\r\n if (token.indexOf('@') === 0) {\r\n token = token.slice(1)\r\n destructure = true\r\n }\r\n\r\n tokens.push({\r\n name: token,\r\n destructure,\r\n raw: result[0]\r\n })\r\n\r\n textStart = tokenizer.lastIndex\r\n }\r\n\r\n if (textStart >= 0 && textStart < template.length) {\r\n tokens.push({ text: template.slice(textStart) })\r\n }\r\n\r\n return tokens\r\n }\r\n\r\n private toText(property: any): string {\r\n if (typeof property === 'undefined') {\r\n return 'undefined'\r\n }\r\n\r\n if (property === null) {\r\n return 'null'\r\n }\r\n\r\n if (typeof property === 'string') {\r\n return property\r\n }\r\n\r\n if (typeof property === 'number') {\r\n return property.toString()\r\n }\r\n\r\n if (typeof property === 'boolean') {\r\n return property.toString()\r\n }\r\n\r\n if (typeof property.toISOString === 'function') {\r\n return property.toISOString()\r\n }\r\n\r\n if (typeof property === 'object') {\r\n let s = JSON.stringify(property)\r\n if (s.length > 70) {\r\n s = s.slice(0, 67) + '...'\r\n }\r\n\r\n return s\r\n }\r\n\r\n return property.toString()\r\n }\r\n\r\n private capture(property: any, destructure?: boolean): Object {\r\n if (typeof property === 'function') {\r\n return property()\r\n }\r\n\r\n if (typeof property === 'object') {\r\n // null value will be automatically stringified as \"null\", in properties it will be as null\r\n // otherwise it will throw an error\r\n if (property === null) {\r\n return property\r\n }\r\n\r\n // Could use instanceof Date, but this way will be kinder\r\n // to values passed from other contexts...\r\n if (destructure || typeof property.toISOString === 'function') {\r\n return property\r\n }\r\n\r\n return property.toString()\r\n }\r\n\r\n return property\r\n }\r\n}","import { AxiosInstance } from 'axios'\r\nimport { ApiTokens, BaseApi } from '../baseApi'\r\nimport { MessageTemplate } from './messageTemplate'\r\nimport { LogLevel, LogMessage } from './types'\r\n\r\nconst baseLogEndpoint = '/v1/logging'\r\n\r\nexport class Log extends BaseApi {\r\n private readonly messageBatch: LogMessage[]\r\n private readonly batchSize: number\r\n private readonly batchInterval: number\r\n private readonly maxQueueSize: number\r\n\r\n private batchTimeout = null\r\n\r\n constructor(axiosInstance: AxiosInstance, consoleLogging: boolean = false, logBatchSize: number = 100, logBatchInterval: number = 60000) {\r\n super(axiosInstance, consoleLogging)\r\n\r\n this.messageBatch = []\r\n this.batchSize = logBatchSize\r\n this.batchInterval = logBatchInterval\r\n this.maxQueueSize = Math.min(logBatchSize * 10, 1000)\r\n\r\n if (this.batchInterval > 0) {\r\n this.submitMessageBatch(true)\r\n }\r\n }\r\n\r\n flush(): Promise<void> {\r\n return this.submitMessageBatch(false)\r\n }\r\n\r\n fatal(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Critical, template, properties)\r\n\r\n }\r\n\r\n error(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Error, template, properties)\r\n }\r\n\r\n warn(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Warning, template, properties)\r\n }\r\n\r\n info(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Information, template, properties)\r\n }\r\n\r\n debug(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Debug, template, properties)\r\n }\r\n\r\n trace(template: string, ...properties: any[]): string {\r\n return this.log(LogLevel.Trace, template, properties)\r\n }\r\n\r\n private log(level: LogLevel, template: string, properties: any[]): string {\r\n const msg: LogMessage = {\r\n timestamp: new Date().toJSON(),\r\n level: level,\r\n template: template,\r\n properties: properties\r\n }\r\n\r\n const messageTemplate = new MessageTemplate(msg.template)\r\n const output = messageTemplate.render(messageTemplate.bindProperties(msg.properties))\r\n\r\n if (this.consoleLogging) {\r\n switch (level) {\r\n case LogLevel.Critical:\r\n console.error(output)\r\n break\r\n\r\n case LogLevel.Error:\r\n console.error(output)\r\n break\r\n\r\n case LogLevel.Warning:\r\n console.warn(output)\r\n break\r\n\r\n case LogLevel.Information:\r\n console.info(output)\r\n break\r\n\r\n case LogLevel.Debug:\r\n console.debug(output)\r\n break\r\n\r\n case LogLevel.Trace:\r\n console.debug(output)\r\n break\r\n\r\n default:\r\n console.log(output)\r\n break\r\n }\r\n }\r\n\r\n if (this.batchSize > 0 || this.batchInterval > 0) {\r\n this.messageBatch.push(msg)\r\n\r\n if (this.batchSize > 0 && this.messageBatch.length >= this.batchSize) {\r\n this.submitMessageBatch(true)\r\n }\r\n }\r\n\r\n return new Date().toISOString() + (' [' + LogLevel[level].toUpperCase() + '] ') + output\r\n }\r\n\r\n private submitMessageBatch(loop: boolean): Promise<void> {\r\n clearTimeout(this.batchTimeout)\r\n\r\n let promise = Promise.resolve()\r\n\r\n if (this.messageBatch.length) {\r\n const messages = this.messageBatch.splice(0, this.batchSize)\r\n\r\n if (messages.length > 0) {\r\n if (this.consoleLogging) {\r\n console.info('Sending %d log messages in a batch', messages.length)\r\n }\r\n\r\n promise = this.request<void>(baseLogEndpoint, 'POST', messages).catch(_ => {\r\n this.messageBatch.unshift(...messages)\r\n\r\n // Keep the total in the batch small to keep memory low.\r\n if (this.messageBatch.length > this.maxQueueSize) {\r\n this.messageBatch.splice(0, this.messageBatch.length - this.maxQueueSize)\r\n }\r\n \r\n if (this.consoleLogging) {\r\n console.warn('Failed to send log messages, the batch size is %d', this.messageBatch.length)\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (loop && this.batchInterval > 0)\r\n {\r\n this.batchTimeout = setTimeout(() => this.submitMessageBatch(true), this.batchInterval)\r\n }\r\n\r\n return promise;\r\n }\r\n}\r\n","import { BaseApi } from '../baseApi'\r\n\r\nconst basePingEndpoint = '/v1/ping'\r\n\r\nexport class System extends BaseApi {\r\n async ping(): Promise<void> {\r\n return this.request<void>(basePingEndpoint, 'GET')\r\n }\r\n}","import { BaseApi } from '../baseApi'\r\n\r\nconst baseContentEndpoint = '/v1/content'\r\n\r\nexport class Content extends BaseApi {\r\n private clientContentCache: any\r\n private contactDetailsCache: any\r\n\r\n async getClientContent(): Promise<any> {\r\n if (!this.clientContentCache) {\r\n this.clientContentCache = await this.request<any>(baseContentEndpoint, 'GET') \r\n }\r\n\r\n return Promise.resolve(this.clientContentCache || null)\r\n }\r\n \r\n async getContactDetails(): Promise<any> {\r\n if (!this.contactDetailsCache) {\r\n this.contactDetailsCache = await this.request<any>(`${baseContentEndpoint}/contact-details`, 'GET')\r\n }\r\n\r\n return Promise.resolve(this.contactDetailsCache || null)\r\n }\r\n}","import { BaseApi } from '../baseApi'\r\nimport { Currency } from '../lookups/types'\r\nimport { SalesDetailsByDayResponse, SalesDetailsResponse, SalesMonthSummaryResponse } from './types'\r\n\r\nconst baseSalesReportsEndpoint = '/v1/reports/sales'\r\n\r\nexport class Reports extends BaseApi {\r\n\r\n async getRecentSales(limit: number = 5, successfulOnly: boolean = false): Promise<SalesDetailsResponse[]> {\r\n return this.request<SalesDetailsResponse[]>(`${baseSalesReportsEndpoint}/recent?limit=${limit}&successfulOnly=${successfulOnly}`, 'GET')\r\n }\r\n\r\n async getDailySales(currency: Currency, dateFrom?: string, dateTo?: string): Promise<SalesDetailsByDayResponse[]> {\r\n let currencyIsoCode = currency.toString()\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency]\r\n }\r\n\r\n return this.request<SalesDetailsByDayResponse[]>(`${baseSalesReportsEndpoint}/daily?currency=${currencyIsoCode}&dateFrom=${dateFrom}&dateTo=${dateTo}`, 'GET')\r\n }\r\n\r\n async getSalesSummary(currency: Currency): Promise<SalesMonthSummaryResponse> {\r\n let currencyIsoCode = currency.toString()\r\n if (Number.isInteger(currency)) {\r\n currencyIsoCode = Currency[currency]\r\n }\r\n\r\n return this.request<SalesMonthSummaryResponse>(`${baseSalesReportsEndpoint}/summary?currency=${currencyIsoCode}`, 'GET')\r\n }\r\n}","import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\r\nimport axiosRetry from 'axios-retry'\r\nimport axiosAuthRefresh from 'axios-auth-refresh'\r\nimport PubSub from 'pubsub-js'\r\nimport ApiTokens from './apiTokens'\r\nimport { OnApiRetry, OnAutomaticRefresh, OnSessionExpired } from './eventTypes'\r\nimport { ApiConfig } from './apiConfig'\r\nimport { Authentication } from './authentication'\r\nimport { Lookups } from './lookups'\r\nimport { Payments } from './payments'\r\nimport { Consumers } from './consumers'\r\nimport { QrCodes } from './qr'\r\nimport { Merchants } from './merchants'\r\nimport { Log } from './log'\r\nimport { System } from './system'\r\nimport { Content } from './content/index'\r\nimport { Reports } from './reports/index'\r\n\r\nconst DevelopmentApi = 'http://localhost:5000'\r\nconst LogSeparator = '-'.repeat(120)\r\n \r\nexport * from './eventTypes'\r\nexport * from './apiError'\r\nexport * from './apiConfig'\r\nexport { default as ApiTokens } from './apiTokens'\r\n\r\nexport class VantagePay {\r\n private readonly baseUrl: string\r\n private readonly consoleLogging: boolean\r\n private readonly logBatchSize: number\r\n private readonly logBatchInterval: number\r\n private readonly axiosInstance: AxiosInstance \r\n private readonly abortController: AbortController\r\n \r\n public readonly events = PubSub\r\n public readonly system: System\r\n public readonly content: Content\r\n public readonly log: Log\r\n public readonly auth: Authentication\r\n public readonly consumers: Consumers\r\n public readonly merchants: Merchants\r\n public readonly lookups: Lookups\r\n public readonly payments: Payments\r\n public readonly qrCodes: QrCodes\r\n public readonly reports: Reports\r\n\r\n constructor(config : ApiConfig) {\r\n this.baseUrl = (config.baseUrl || DevelopmentApi).replace(/\\/+$/, '')\r\n\r\n this.abortController = new AbortController()\r\n\r\n this.axiosInstance = axios.create({ \r\n baseURL: this.baseUrl,\r\n timeout: 0,\r\n signal: this.abortController.signal,\r\n headers: {\r\n ...config.headers,\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Accept-Language': config.language || 'en',\r\n }\r\n })\r\n\r\n axiosAuthRefresh(this.axiosInstance, async failedRequest => {\r\n const refreshUrl = '/v1/auth/refresh'\r\n \r\n if (failedRequest.request.path === refreshUrl) {\r\n return Promise.reject(failedRequest)\r\n }\r\n\r\n if (ApiTokens.refreshToken) {\r\n try {\r\n let config: AxiosRequestConfig<any> = { \r\n method: 'POST',\r\n url: refreshUrl ,\r\n headers: { 'Authorization': 'Bearer ' + ApiTokens.refreshToken }\r\n }\r\n \r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n' + LogSeparator)\r\n console.debug('-- AUTO REFRESH --')\r\n console.debug(LogSeparator)\r\n console.debug(`${config.method}: ${this.baseUrl}${config.url}`)\r\n console.debug(LogSeparator)\r\n \r\n if (config.headers) {\r\n console.debug('-- HEADERS --')\r\n console.dir(config.headers)\r\n }\r\n \r\n if (config.data) {\r\n console.debug('-- REQUEST --')\r\n console.dir(config.data, { depth: null })\r\n }\r\n }\r\n \r\n const refreshResponse = await this.axiosInstance(config)\r\n \r\n if (this.consoleLogging) {\r\n console.debug('\\r\\n-- RESPONSE --')\r\n console.dir(refreshResponse.data, { depth: null })\r\n console.debug(LogSeparator)\r\n }\r\n \r\n if (refreshResponse.data && refreshResponse.data.success) {\r\n ApiTokens.accessToken = refreshResponse.data.result.accessToken\r\n ApiTokens.refreshToken = refreshResponse.data.result.refreshToken\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnAutomaticRefresh --')\r\n console.dir(refreshResponse.data.result, { depth: null })\r\n }\r\n \r\n this.events.publish(OnAutomaticRefresh, refreshResponse.data.result)\r\n\r\n if (failedRequest) {\r\n failedRequest.response.config.headers['Authorization'] = 'Bearer ' + ApiTokens.accessToken\r\n }\r\n\r\n return Promise.resolve(failedRequest)\r\n }\r\n else {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --')\r\n }\r\n\r\n this.events.publish(OnSessionExpired)\r\n }\r\n }\r\n catch (error) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --')\r\n }\r\n\r\n this.events.publish(OnSessionExpired)\r\n throw error\r\n }\r\n }\r\n else if (ApiTokens.accessToken) {\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnSessionExpired --')\r\n }\r\n\r\n this.events.publish(OnSessionExpired)\r\n }\r\n\r\n return Promise.reject(failedRequest)\r\n })\r\n\r\n axiosRetry(this.axiosInstance, {\r\n retries: config.retries || 3,\r\n retryDelay: axiosRetry.exponentialDelay,\r\n onRetry: (retryCount, error, _) => {\r\n if (this.consoleLogging) {\r\n console.error('-- RETRY ' + retryCount + ' --\\r\\n', error)\r\n }\r\n\r\n const signalData = { retryCount: retryCount }\r\n\r\n if (this.consoleLogging) {\r\n console.debug('-- SIGNAL OnApiRetry --')\r\n console.dir(signalData, { depth: null })\r\n }\r\n\r\n this.events.publish(OnApiRetry, signalData)\r\n }\r\n })\r\n\r\n this.consoleLogging = config.consoleLogging || false\r\n this.logBatchSize = config.logBatchSize || 100\r\n this.logBatchInterval = config.logBatchInterval || 60000\r\n\r\n this.system = new System(this.axiosInstance, this.consoleLogging)\r\n this.content = new Content(this.axiosInstance, this.consoleLogging)\r\n this.log = new Log(this.axiosInstance, this.consoleLogging, this.logBatchSize, this.logBatchInterval)\r\n this.auth = new Authentication(this.axiosInstance, this.consoleLogging)\r\n this.consumers = new Consumers(this.axiosInstance, this.consoleLogging)\r\n this.merchants = new Merchants(this.axiosInstance, this.consoleLogging)\r\n this.lookups = new Lookups(this.axiosInstance, this.consoleLogging)\r\n this.payments = new Payments(this.axiosInstance, this.consoleLogging)\r\n this.qrCodes = new QrCodes(this.axiosInstance, this.consoleLogging)\r\n this.reports = new Reports(this.axiosInstance, this.consoleLogging)\r\n\r\n if (this.consoleLogging) {\r\n // console.dir is not functional in certain environments so reaplce it with a general JSON logger.\r\n if (console.dir === undefined || (typeof navigator !== 'undefined' && navigator.product === 'ReactNative')) {\r\n console.dir = (json: any) => console.debug(JSON.stringify(json, null, 2))\r\n }\r\n }\r\n }\r\n\r\n public async close(): Promise<void> {\r\n if (this.consoleLogging) {\r\n console.info('Flush and clear the logs...')\r\n }\r\n await this.log.flush()\r\n\r\n if (this.consoleLogging) {\r\n console.info('Stopping payment status checks...')\r\n }\r\n await this.payments.stopPaymentStatusChecking()\r\n\r\n if (this.consoleLogging) {\r\n console.info('Unsubscribing from all events...')\r\n }\r\n this.events.clearAllSubscriptions()\r\n\r\n if (this.consoleLogging) {\r\n console.info('Cancel all API requests...')\r\n }\r\n this.abortController.abort()\r\n \r\n return Promise.resolve()\r\n }\r\n}\r\n"],"names":["ApiTokens$1","ApiTokens","this","accessToken","refreshToken","prototype","decodeToken","token","window","document","base64","split","replace","jsonPayload","decodeURIComponent","atob","map","c","charCodeAt","toString","slice","join","JSON","parse","Buffer","from","OnSessionExpired","Symbol","OnAutomaticRefresh","OnApiRetry","OnPaymentStatusUpdate","OnPaymentComplete","OnRequires3DSecure","OnRequiresPin","OnRequiresConfirmation","OnRequiresAddress","OnComplete3DSecure","ApiError","_Error","statusCode","result","message","_this","newMessage","Array","isArray","length","String","call","Object","setPrototypeOf","_assertThisInitialized","_inheritsLoose","_wrapNativeSuper","Error","LogSeparator","repeat","BaseApi","axiosInstance","consoleLogging","events","PubSub","request","endpoint","method","body","_temp2","response","_result","console","debug","data","success","status","_temp","_catch","config","url","headers","Authorization","defaults","baseURL","dir","depth","Promise","resolve","then","_this$axiosInstance","error","errno","code","e","reject","Bank","Channel","ConsumerFileType","Country","Currency","DayOfWeek","FaceMovementDetectionLevel","Gender","IdentityDocumentType","KybProvider","KybStatus","KycProvider","KycStatus","KycVerificationType","Language","MerchantCategory","MerchantFileType","MobileWalletOperator","Month","ProductType","QrCodeType","RepeatInterval","baseAuthEndpoint","Authentication","_BaseApi","apply","arguments","_proto","isLoggedIn","Date","getTime","exp","_unused","login","username","password","tokenResponse","loginError","changePasswordAccessToken","validatePhoneNumberAccessToken","resendEmailVerificationToken","logout","_this2","publish","refresh","changePassword","oldPassword","newPassword","_this4","resetCode","userReference","forgotPassword","validateOtp","otpValue","resendOtp","resendEmailAddressVerification","getCurrentConsumerReference","consumer_reference","getCurrentMerchantReference","merchant_reference","getCurrentBusinessReference","business_reference","getCurrentTerminalReference","terminal_reference","getCurrentUserReference","reference","getCurrentUserName","user_name","getRedirectAction","redirect_action","getMobileNumber","mobile_number","getEmailAddress","email_address","CardIssuer","FeeType","MerchantPaymentType","ReceiptType","RefundType","TransactionCategory","TransactionIconType","TransactionStatus","TransactionType","baseEndpoint","Lookups","_len","args","_key","concat","cardIssuerCountryCache","Map","addressLocationCache","digitalAddressCache","bankCache","currencyCache","countryCache","languageCache","mobileWalletOperatorCache","productTypeCache","merchantCategoryCache","getProductTypes","_this2$request","getMerchantCategories","_temp4","_this3","_temp3","_this3$request","getCurrencies","_temp6","_temp5","_this4$request","getCountries","_temp8","_this5","_temp7","_this5$request","getLanguages","_temp0","_this6","_temp9","_this6$request","getAllCurrencies","_temp10","_this7","_temp1","_this7$request","getAllCountries","_temp12","_this8","_temp11","_this8$request","getAllLanguages","_temp14","_this9","_temp13","_this9$request","getMobileWalletOperators","_temp16","_this0","_temp15","_this0$request","getBanks","country","_temp19","_this1","get","None","_temp18","has","_temp17","_this1$bankCache","_set","set","_Country$None","_this1$request","_this1$bankCache2","_set2","_this1$request2","getCardIssuerCountry","cardBin","_temp21","_this10","_temp20","_this10$cardIssuerCou","_set3","_this10$request","getAddressFromLocation","latitude","longitude","_exit","_temp25","_this11","_temp24","_temp23","_Promise$resolve","cacheKey","_temp22","_this11$addressLocati","_set4","_this11$request","getAddressFromDigitalAddress","digitalAddress","_temp29","_exit2","_result2","_this12","_temp28","exec","_temp27","_Promise$resolve2","_temp26","_this12$digitalAddres","_set5","_this12$request","LogLevel","baseEndpointPay","baseEndpointToken","baseEndpointTransaction","baseEndpointNotification","Payments","hubConnection","baseUrl","activeTransactions","manuallyStartedPaymentStatusChecking","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","withStatefulReconnect","configureLogging","Debug","build","pay","timeZone","Intl","DateTimeFormat","resolvedOptions","startPaymentStatusChecking","payMerchant","merchantReference","paymentStatusCheck","paymentReference","paymentReceipt","createCardToken","createBankAccountToken","verifyCardToken","createCardVerificationPayment","submitPinCode","transactionReference","pin","rejectPinCode","submitConfirmation","confirm","submitAddress","validateQrCode","baseEndpointValidate","sendEmailPaymentNotification","emailAddress","templateName","toEmailAddress","receiptType","Consumer","sendSmsPaymentNotification","msisdn","toNumber","stopPaymentStatusChecking","_this15","removePaymentStatusCheckInterval","_step","_iterator","_createForOfIteratorHelperLoose","values","done","clearInterval","value","statusCheckTimer","clear","state","HubConnectionState","Disconnected","off","stop","_this16","lastJsonResponse","isProcessing3dSecure","on","statusResponse","_exit3","_result5","checkPaymentUpdateStatus","isComplete","_await$_this16$stopPa","addPaymentStatusCheckInterval","Connected","start","_await$_this16$hubCon","initialStatusResponse","getOfflinePaymentFormUrl","timestamp","merchantId","terminalId","batchNumber","options","optionsBase64","btoa","stringify","getRequiredPinLength","mobileWalletOperator","VDF","TCG","luhnCheck","creditCardNumber","test","array","bit","sum","parseInt","charAt","_this17","activeTransaction","isWaiting","checkGenericRequiredStatuses","transactionResult","signalData","paymentStatusResponse","RequiresConfirmation","RequiresInitialConfirmation","destinationWithAccountHolder","paymentDestinations","mobileWallets","find","accountHolder","bankAccounts","merchants","qrCodes","bills","confirmationData","amountInCents","sourceAccountHolder","destinationAccountHolder","fees","RequiresPin","pinLength","RequiresAddress","paymentSources","cards","forEach","Requires3DSecure","threeDSecureUrl","wallets","checkRequiredStatuses","warn","onStatusPollingInterval","_this18","interval","_this19","setInterval","baseConsumerEndpoint","baseMessageEndpoint","Consumers","createConsumer","updateConsumer","deleteConsumer","getConsumer","submitFeedback","description","baseFeedbackEndpoint","getMessage","messageReference","deleteMessage","QrCodes","qrCache","decode","qrCode","_this2$qrCache","generate","text","width","QRCode","toDataURL","errorCorrectionLevel","margin","baseMerchantEndpoint","baseOtpEndpoint","basePosEndpoint","baseProductEndpoint","baseUserEndpoint","Merchants","productDetailCache","productsCache","createMerchantProductProxy","product","copy","_extends","Proxy","target","prop","futureAmountEffectiveFromDate","futureAmountInCents","getAllProducts","products","getActiveProductTypes","allProducts","p","type","sort","getMerchantNamesFromProductType","productType","el","m","name","filter","index","self","indexOf","getProductTypesForMerchant","merchantName","typesWithMatchingMerchant","push","getProductsForMerchantAndProductType","pel","mel","a","b","localeCompare","getProductDetails","productReference","productDetails","_this7$productDetailC","getProducts","createProduct","newProduct","updateProduct","updatedProduct","deleteProduct","getMerchant","createMerchant","updateMerchant","getMerchantAgreement","acceptMerchantAgreement","verifyMobileNumber","cleanMsisdn","verificationResponse","validateMerchantName","createUser","mobileNumber","switchToMerchant","getUserMerchants","setupPosTerminal","terminalReference","merchantSource","deviceInformation","checkAccessToken","getPosTerminalConfiguration","configResponse","getTerminalPaymentQrCodes","currency","_this23","currencyIsoCode","Number","isInteger","getTerminalPaymentQrCodeUrls","uploadFile","tokenizer","MessageTemplate","messageTemplate","raw","tokens","tokenize","render","properties","i","hasOwnProperty","toText","bindProperties","positionalArgs","nextArg","capture","destructure","arg","template","textStart","lastIndex","property","toISOString","s","Log","logBatchSize","logBatchInterval","messageBatch","batchSize","batchInterval","maxQueueSize","batchTimeout","Math","min","submitMessageBatch","flush","fatal","log","Critical","Warning","info","Information","trace","Trace","level","msg","toJSON","output","toUpperCase","loop","clearTimeout","promise","messages","splice","_","_this2$messageBatch","unshift","setTimeout","System","ping","baseContentEndpoint","Content","clientContentCache","contactDetailsCache","getClientContent","getContactDetails","baseSalesReportsEndpoint","Reports","getRecentSales","limit","successfulOnly","getDailySales","dateFrom","dateTo","getSalesSummary","VantagePay","abortController","system","content","auth","consumers","lookups","payments","reports","AbortController","axios","create","timeout","signal","Accept","language","axiosAuthRefresh","failedRequest","refreshUrl","path","refreshResponse","axiosRetry","retries","retryDelay","exponentialDelay","onRetry","retryCount","undefined","navigator","json","close","clearAllSubscriptions","abort"],"mappings":"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AAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,I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AAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,IAAA,MACAA,EAAA,I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"}
|