kotanipay-sdk 1.0.3 → 1.0.5

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.
Files changed (164) hide show
  1. package/README.md +277 -22
  2. package/dist/cjs/client/kotani-pay.client.d.ts +3 -0
  3. package/dist/cjs/client/kotani-pay.client.d.ts.map +1 -1
  4. package/dist/cjs/client/kotani-pay.client.js +3 -0
  5. package/dist/cjs/client/kotani-pay.client.js.map +1 -1
  6. package/dist/cjs/modules/index.d.ts +3 -0
  7. package/dist/cjs/modules/index.d.ts.map +1 -1
  8. package/dist/cjs/modules/index.js +3 -0
  9. package/dist/cjs/modules/index.js.map +1 -1
  10. package/dist/cjs/modules/integrator/integrator.service.d.ts +1 -0
  11. package/dist/cjs/modules/integrator/integrator.service.d.ts.map +1 -1
  12. package/dist/cjs/modules/integrator/integrator.service.js +4 -0
  13. package/dist/cjs/modules/integrator/integrator.service.js.map +1 -1
  14. package/dist/cjs/modules/mobile-money/index.d.ts +2 -0
  15. package/dist/cjs/modules/mobile-money/index.d.ts.map +1 -0
  16. package/dist/cjs/modules/mobile-money/index.js +18 -0
  17. package/dist/cjs/modules/mobile-money/index.js.map +1 -0
  18. package/dist/cjs/modules/mobile-money/mobile-money.service.d.ts +10 -0
  19. package/dist/cjs/modules/mobile-money/mobile-money.service.d.ts.map +1 -1
  20. package/dist/cjs/modules/mobile-money/mobile-money.service.js +22 -0
  21. package/dist/cjs/modules/mobile-money/mobile-money.service.js.map +1 -1
  22. package/dist/cjs/modules/mobile-money-deposit/deposit.service.d.ts +10 -0
  23. package/dist/cjs/modules/mobile-money-deposit/deposit.service.d.ts.map +1 -0
  24. package/dist/cjs/modules/mobile-money-deposit/deposit.service.js +26 -0
  25. package/dist/cjs/modules/mobile-money-deposit/deposit.service.js.map +1 -0
  26. package/dist/cjs/modules/mobile-money-deposit/index.d.ts +2 -0
  27. package/dist/cjs/modules/mobile-money-deposit/index.d.ts.map +1 -0
  28. package/dist/cjs/modules/mobile-money-deposit/index.js +18 -0
  29. package/dist/cjs/modules/mobile-money-deposit/index.js.map +1 -0
  30. package/dist/cjs/modules/onramp/create-onramp.service.d.ts +10 -0
  31. package/dist/cjs/modules/onramp/create-onramp.service.d.ts.map +1 -0
  32. package/dist/cjs/modules/onramp/create-onramp.service.js +26 -0
  33. package/dist/cjs/modules/onramp/create-onramp.service.js.map +1 -0
  34. package/dist/cjs/modules/onramp/index.d.ts +2 -0
  35. package/dist/cjs/modules/onramp/index.d.ts.map +1 -0
  36. package/dist/cjs/modules/onramp/index.js +18 -0
  37. package/dist/cjs/modules/onramp/index.js.map +1 -0
  38. package/dist/cjs/modules/wallet/index.d.ts +2 -0
  39. package/dist/cjs/modules/wallet/index.d.ts.map +1 -0
  40. package/dist/cjs/modules/wallet/index.js +18 -0
  41. package/dist/cjs/modules/wallet/index.js.map +1 -0
  42. package/dist/cjs/modules/wallet/wallet.service.d.ts +12 -0
  43. package/dist/cjs/modules/wallet/wallet.service.d.ts.map +1 -0
  44. package/dist/cjs/modules/wallet/wallet.service.js +50 -0
  45. package/dist/cjs/modules/wallet/wallet.service.js.map +1 -0
  46. package/dist/cjs/types/deposit.types.d.ts +40 -0
  47. package/dist/cjs/types/deposit.types.d.ts.map +1 -0
  48. package/dist/cjs/types/deposit.types.js +3 -0
  49. package/dist/cjs/types/deposit.types.js.map +1 -0
  50. package/dist/cjs/types/index.d.ts +3 -0
  51. package/dist/cjs/types/index.d.ts.map +1 -1
  52. package/dist/cjs/types/index.js +3 -0
  53. package/dist/cjs/types/index.js.map +1 -1
  54. package/dist/cjs/types/mobile-money.types.d.ts.map +1 -1
  55. package/dist/cjs/types/mobile-money.types.js +0 -1
  56. package/dist/cjs/types/mobile-money.types.js.map +1 -1
  57. package/dist/cjs/types/onramp.types.d.ts +28 -0
  58. package/dist/cjs/types/onramp.types.d.ts.map +1 -0
  59. package/dist/cjs/types/onramp.types.js +3 -0
  60. package/dist/cjs/types/onramp.types.js.map +1 -0
  61. package/dist/cjs/types/wallet.types.d.ts +19 -0
  62. package/dist/cjs/types/wallet.types.d.ts.map +1 -0
  63. package/dist/cjs/types/wallet.types.js +4 -0
  64. package/dist/cjs/types/wallet.types.js.map +1 -0
  65. package/dist/cjs/utils/validation.util.d.ts.map +1 -1
  66. package/dist/cjs/utils/validation.util.js.map +1 -1
  67. package/dist/esm/client/kotani-pay.client.d.ts +3 -0
  68. package/dist/esm/client/kotani-pay.client.d.ts.map +1 -1
  69. package/dist/esm/client/kotani-pay.client.js +3 -0
  70. package/dist/esm/client/kotani-pay.client.js.map +1 -1
  71. package/dist/esm/modules/index.d.ts +3 -0
  72. package/dist/esm/modules/index.d.ts.map +1 -1
  73. package/dist/esm/modules/index.js +3 -0
  74. package/dist/esm/modules/index.js.map +1 -1
  75. package/dist/esm/modules/integrator/integrator.service.d.ts +1 -0
  76. package/dist/esm/modules/integrator/integrator.service.d.ts.map +1 -1
  77. package/dist/esm/modules/integrator/integrator.service.js +4 -0
  78. package/dist/esm/modules/integrator/integrator.service.js.map +1 -1
  79. package/dist/esm/modules/mobile-money/index.d.ts +2 -0
  80. package/dist/esm/modules/mobile-money/index.d.ts.map +1 -0
  81. package/dist/esm/modules/mobile-money/index.js +2 -0
  82. package/dist/esm/modules/mobile-money/index.js.map +1 -0
  83. package/dist/esm/modules/mobile-money/mobile-money.service.d.ts +10 -0
  84. package/dist/esm/modules/mobile-money/mobile-money.service.d.ts.map +1 -1
  85. package/dist/esm/modules/mobile-money/mobile-money.service.js +22 -0
  86. package/dist/esm/modules/mobile-money/mobile-money.service.js.map +1 -1
  87. package/dist/esm/modules/mobile-money-deposit/deposit.service.d.ts +10 -0
  88. package/dist/esm/modules/mobile-money-deposit/deposit.service.d.ts.map +1 -0
  89. package/dist/esm/modules/mobile-money-deposit/deposit.service.js +22 -0
  90. package/dist/esm/modules/mobile-money-deposit/deposit.service.js.map +1 -0
  91. package/dist/esm/modules/mobile-money-deposit/index.d.ts +2 -0
  92. package/dist/esm/modules/mobile-money-deposit/index.d.ts.map +1 -0
  93. package/dist/esm/modules/mobile-money-deposit/index.js +2 -0
  94. package/dist/esm/modules/mobile-money-deposit/index.js.map +1 -0
  95. package/dist/esm/modules/onramp/create-onramp.service.d.ts +10 -0
  96. package/dist/esm/modules/onramp/create-onramp.service.d.ts.map +1 -0
  97. package/dist/esm/modules/onramp/create-onramp.service.js +22 -0
  98. package/dist/esm/modules/onramp/create-onramp.service.js.map +1 -0
  99. package/dist/esm/modules/onramp/index.d.ts +2 -0
  100. package/dist/esm/modules/onramp/index.d.ts.map +1 -0
  101. package/dist/esm/modules/onramp/index.js +2 -0
  102. package/dist/esm/modules/onramp/index.js.map +1 -0
  103. package/dist/esm/modules/wallet/index.d.ts +2 -0
  104. package/dist/esm/modules/wallet/index.d.ts.map +1 -0
  105. package/dist/esm/modules/wallet/index.js +2 -0
  106. package/dist/esm/modules/wallet/index.js.map +1 -0
  107. package/dist/esm/modules/wallet/wallet.service.d.ts +12 -0
  108. package/dist/esm/modules/wallet/wallet.service.d.ts.map +1 -0
  109. package/dist/esm/modules/wallet/wallet.service.js +46 -0
  110. package/dist/esm/modules/wallet/wallet.service.js.map +1 -0
  111. package/dist/esm/types/deposit.types.d.ts +40 -0
  112. package/dist/esm/types/deposit.types.d.ts.map +1 -0
  113. package/dist/esm/types/deposit.types.js +2 -0
  114. package/dist/esm/types/deposit.types.js.map +1 -0
  115. package/dist/esm/types/index.d.ts +3 -0
  116. package/dist/esm/types/index.d.ts.map +1 -1
  117. package/dist/esm/types/index.js +3 -0
  118. package/dist/esm/types/index.js.map +1 -1
  119. package/dist/esm/types/mobile-money.types.d.ts.map +1 -1
  120. package/dist/esm/types/mobile-money.types.js +0 -1
  121. package/dist/esm/types/mobile-money.types.js.map +1 -1
  122. package/dist/esm/types/onramp.types.d.ts +28 -0
  123. package/dist/esm/types/onramp.types.d.ts.map +1 -0
  124. package/dist/esm/types/onramp.types.js +2 -0
  125. package/dist/esm/types/onramp.types.js.map +1 -0
  126. package/dist/esm/types/wallet.types.d.ts +19 -0
  127. package/dist/esm/types/wallet.types.d.ts.map +1 -0
  128. package/dist/esm/types/wallet.types.js +3 -0
  129. package/dist/esm/types/wallet.types.js.map +1 -0
  130. package/dist/esm/utils/validation.util.d.ts.map +1 -1
  131. package/dist/esm/utils/validation.util.js.map +1 -1
  132. package/dist/types/client/kotani-pay.client.d.ts +3 -0
  133. package/dist/types/client/kotani-pay.client.d.ts.map +1 -1
  134. package/dist/types/modules/index.d.ts +3 -0
  135. package/dist/types/modules/index.d.ts.map +1 -1
  136. package/dist/types/modules/integrator/integrator.service.d.ts +1 -0
  137. package/dist/types/modules/integrator/integrator.service.d.ts.map +1 -1
  138. package/dist/types/modules/mobile-money/index.d.ts +2 -0
  139. package/dist/types/modules/mobile-money/index.d.ts.map +1 -0
  140. package/dist/types/modules/mobile-money/mobile-money.service.d.ts +10 -0
  141. package/dist/types/modules/mobile-money/mobile-money.service.d.ts.map +1 -1
  142. package/dist/types/modules/mobile-money-deposit/deposit.service.d.ts +10 -0
  143. package/dist/types/modules/mobile-money-deposit/deposit.service.d.ts.map +1 -0
  144. package/dist/types/modules/mobile-money-deposit/index.d.ts +2 -0
  145. package/dist/types/modules/mobile-money-deposit/index.d.ts.map +1 -0
  146. package/dist/types/modules/onramp/create-onramp.service.d.ts +10 -0
  147. package/dist/types/modules/onramp/create-onramp.service.d.ts.map +1 -0
  148. package/dist/types/modules/onramp/index.d.ts +2 -0
  149. package/dist/types/modules/onramp/index.d.ts.map +1 -0
  150. package/dist/types/modules/wallet/index.d.ts +2 -0
  151. package/dist/types/modules/wallet/index.d.ts.map +1 -0
  152. package/dist/types/modules/wallet/wallet.service.d.ts +12 -0
  153. package/dist/types/modules/wallet/wallet.service.d.ts.map +1 -0
  154. package/dist/types/types/deposit.types.d.ts +40 -0
  155. package/dist/types/types/deposit.types.d.ts.map +1 -0
  156. package/dist/types/types/index.d.ts +3 -0
  157. package/dist/types/types/index.d.ts.map +1 -1
  158. package/dist/types/types/mobile-money.types.d.ts.map +1 -1
  159. package/dist/types/types/onramp.types.d.ts +28 -0
  160. package/dist/types/types/onramp.types.d.ts.map +1 -0
  161. package/dist/types/types/wallet.types.d.ts +19 -0
  162. package/dist/types/types/wallet.types.d.ts.map +1 -0
  163. package/dist/types/utils/validation.util.d.ts.map +1 -1
  164. package/package.json +5 -3
package/README.md CHANGED
@@ -5,8 +5,11 @@ Official TypeScript/JavaScript SDK for the KotaniPay API. Simplify crypto-to-mob
5
5
  ## Features
6
6
 
7
7
  - 🚀 **TypeScript Support** - Full type definitions included
8
- - 🔐 **Authentication Management** - Magic link login flow
9
- - 📱 **Mobile Money** - Create and manage mobile money customers
8
+ - 🔐 **Authentication Management** - Magic link login flow with JWT and API key support
9
+ - 📱 **Mobile Money** - Create and manage mobile money customers across 13+ African countries
10
+ - 💰 **Wallet Management** - Create and manage fiat wallets for multiple currencies
11
+ - 💸 **Deposits** - Handle mobile money deposits with real-time status tracking
12
+ - 🔄 **Onramp** - Convert fiat to cryptocurrency through mobile money
10
13
  - 🏢 **Integrator Management** - Create and manage integrator accounts
11
14
  - 🛡️ **Error Handling** - Comprehensive error types and validation
12
15
  - 🌍 **Multi-Environment** - Sandbox and production support
@@ -53,6 +56,12 @@ client.initializeWithSession(sessionData);
53
56
  const apiKey = await client.auth.generateApiKey();
54
57
  client.initializeWithApiKey(apiKey.key);
55
58
 
59
+ // Create fiat wallet
60
+ const wallet = await client.wallet.create({
61
+ name: 'My USD Wallet',
62
+ currency: 'USD'
63
+ });
64
+
56
65
  // Create mobile money customer
57
66
  const customer = await client.mobileMoney.createCustomer({
58
67
  phone_number: '+254700123456',
@@ -60,6 +69,13 @@ const customer = await client.mobileMoney.createCustomer({
60
69
  network: 'MPESA',
61
70
  account_name: 'John Doe'
62
71
  });
72
+
73
+ // Create deposit
74
+ const deposit = await client.mobileMoneyDeposit.createDeposit({
75
+ amount: 100.00,
76
+ wallet_id: wallet.data.id,
77
+ customer_key: customer.id
78
+ });
63
79
  ```
64
80
 
65
81
  ## Authentication Flow
@@ -101,8 +117,16 @@ Pass the `data` object to `initializeWithSession()`.
101
117
  const client = new KotaniPayClient({
102
118
  environment: 'sandbox' | 'production',
103
119
  timeout?: number,
104
- apiKey?: string // Optional: for direct API key usage
120
+ apiKey?: string, // Optional: for direct API key usage
121
+ baseUrl?: string // Optional: custom base URL
105
122
  });
123
+
124
+ // Utility methods
125
+ const health = await client.healthCheck();
126
+ const config = client.getConfig();
127
+ const version = client.getVersion();
128
+ const isAuth = client.isAuthenticated();
129
+ const authStatus = client.getAuthStatus();
106
130
  ```
107
131
 
108
132
  ### Integrator Management
@@ -119,7 +143,12 @@ await client.integrator.create({
119
143
  country_code: string
120
144
  });
121
145
 
146
+ // Get all integrators (requires auth)
147
+ // CLIENT HAS TO BE INITIALIZED WITH AN API KEY
148
+ await client.integrator.getIntegratorInfo();
122
149
 
150
+ // Get integrator by ID (requires auth)
151
+ await client.integrator.getById(id);
123
152
  ```
124
153
 
125
154
  ### Authentication
@@ -137,8 +166,20 @@ await client.auth.generateApiKey();
137
166
  // Set API key directly
138
167
  client.initializeWithApiKey(apiKey);
139
168
 
169
+ // Refresh JWT token
170
+ await client.auth.refreshToken();
171
+
172
+ // Get current session
173
+ client.auth.getSession();
174
+
175
+ // Get token info
176
+ client.auth.getTokenInfo();
177
+
140
178
  // Check authentication status
141
179
  client.isAuthenticated();
180
+
181
+ // Logout and clear session
182
+ client.auth.logout();
142
183
  ```
143
184
 
144
185
  ### Mobile Money
@@ -147,25 +188,100 @@ client.isAuthenticated();
147
188
  // Create customer (requires auth)
148
189
  await client.mobileMoney.createCustomer({
149
190
  phone_number: string,
150
- country_code: 'GHA' | 'KEN' | 'ZAC' | 'CIV' | ...,
151
- network?: 'MPESA' | 'MTN' | 'AIRTEL' | ...,
191
+ country_code: 'GHA' | 'KEN' | 'ZAC' | 'CIV' | 'ZMB' | 'CMR' | 'COD' | 'SEN' | 'TZM' | 'MWI' | 'UGA' | 'ETH' | 'GRW',
192
+ network?: 'MPESA' | 'MTN' | 'AIRTEL' | 'VODAFONE' | 'TIGO' | 'ORANGE' | 'VODACOM' | 'NOT_SUPPORTED' | 'ZAMTEL' | 'CHECKOUT' | 'BKTRX' | 'CRDTRX' | 'MOOV' | 'TMONEY' | 'FREE' | 'EXPRESSO' | 'HALOPESA',
152
193
  account_name?: string
153
194
  });
154
195
 
155
196
  // Get all customers (requires auth)
156
197
  await client.mobileMoney.getAllCustomers();
157
198
 
199
+ // Get customer by ID (requires auth)
200
+ await client.mobileMoney.getCustomerById(customerId);
201
+
202
+ // Get customers by customer key (requires auth)
203
+ await client.mobileMoney.getCustomersByKey(customerKey);
204
+
205
+ // Get customers by phone number (requires auth)
206
+ await client.mobileMoney.getCustomersByPhoneNumber(phoneNumber);
207
+ ```
208
+
209
+ ### Wallet Management
210
+
211
+ ```typescript
212
+ // Create fiat wallet (requires auth)
213
+ await client.wallet.create({
214
+ name: string,
215
+ currency: 'USD' | 'EUR' | 'GBP' | 'GHS' | 'KES' | 'ZAR' | 'NGN' | 'TZS' | 'UGX' | 'RWF' | 'MWK' | 'ZMW'
216
+ });
217
+
218
+ // Get all fiat wallets (requires auth)
219
+ await client.wallet.getIntegratorFiatWallets();
220
+
221
+ // Get wallet by ID (requires auth)
222
+ await client.wallet.getIntegratorFiatWalletById(walletId);
223
+
224
+ // Get wallets by currency (requires auth)
225
+ await client.wallet.getIntegratorFiatWalletsByCurrency(currency);
226
+ ```
227
+
228
+ ### Mobile Money Deposits
229
+
230
+ ```typescript
231
+ // Create deposit (requires auth)
232
+ await client.mobileMoneyDeposit.createDeposit({
233
+ amount: number,
234
+ wallet_id: string,
235
+ customer_key: string,
236
+ callback_url?: string,
237
+ reference_id?: string
238
+ });
239
+
240
+ // Get deposit transaction status (requires auth)
241
+ await client.mobileMoneyDeposit.getDepositTransactionStatus(reference_id);
242
+ ```
243
+
244
+ ### Onramp (Fiat to Crypto)
245
+
246
+ ```typescript
247
+ // Initiate onramp (requires auth)
248
+ await client.onramp.iniatiateOnramp({
249
+ mobileMoney: {
250
+ phoneNumber: string,
251
+ accountName: string,
252
+ providerNetwork: string
253
+ },
254
+ fiatAmount: number,
255
+ currency: string,
256
+ chain: string,
257
+ token: string,
258
+ receiverAddress: string,
259
+ referenceId: string,
260
+ callbackUrl: string,
261
+ rateId: string
262
+ });
263
+
264
+ // Get onramp transaction status (requires auth)
265
+ await client.onramp.getOnRampTransactionStatus(referenceId);
266
+ ```
158
267
 
159
268
  ## Supported Countries & Networks
160
269
 
161
270
  ### Countries
162
271
 
163
- - 🇬🇭 Ghana (GHA)
164
- - 🇰🇪 Kenya (KEN)
165
- - 🇿🇦 South Africa (ZAC)
166
- - 🇨🇮 Ivory Coast (CIV)
167
- - 🇿🇲 Zambia (ZMB)
168
- - And more...
272
+ - 🇬🇭 Ghana (GHA) - MTN, VODAFONE, AIRTEL
273
+ - 🇰🇪 Kenya (KEN) - MPESA, AIRTEL
274
+ - 🇿🇦 South Africa (ZAC) - MTN, VODACOM
275
+ - 🇨🇮 Ivory Coast (CIV) - MTN, ORANGE, MOOV
276
+ - 🇿🇲 Zambia (ZMB) - MTN, AIRTEL, ZAMTEL
277
+ - 🇨🇲 Cameroon (CMR) - MTN, ORANGE
278
+ - 🇨🇩 Congo DRC (COD) - VODACOM, AIRTEL
279
+ - 🇸🇳 Senegal (SEN) - ORANGE, FREE, EXPRESSO
280
+ - 🇹🇿 Tanzania (TZM) - VODACOM, AIRTEL, TIGO, HALOPESA
281
+ - 🇲🇼 Malawi (MWI) - AIRTEL
282
+ - 🇺🇬 Uganda (UGA) - MTN, AIRTEL
283
+ - 🇪🇹 Ethiopia (ETH)
284
+ - 🇬🇼 Guinea-Bissau (GRW)
169
285
 
170
286
  ### Networks
171
287
 
@@ -175,21 +291,33 @@ await client.mobileMoney.getAllCustomers();
175
291
  - Vodafone Cash
176
292
  - Tigo Pesa
177
293
  - Orange Money
294
+ - And more...
295
+
296
+ ### Supported Currencies
297
+
298
+ **Fiat Wallets**: USD, EUR, GBP, GHS, KES, ZAR, NGN, TZS, UGX, RWF, MWK, ZMW
299
+
300
+ ### Transaction Statuses
301
+
302
+ **Deposit/Onramp**: PENDING, INITIATED, SUCCESSFUL, FAILED, EXPIRED, CANCELLED, DECLINED, REVERSED, IN_PROGRESS, DUPLICATE, ERROR_OCCURRED, REQUIRE_REVIEW, SUCCESS, RETRY
178
303
 
179
304
  ## Error Handling
180
305
 
181
306
  ```typescript
182
- import { ValidationError, AuthenticationError, KotaniPayError } from '@kotanipay/sdk';
307
+ import { ValidationException, AuthenticationException, KotaniPayException } from 'kotanipay-sdk';
183
308
 
184
309
  try {
185
310
  await client.mobileMoney.createCustomer(customerData);
186
311
  } catch (error) {
187
- if (error instanceof ValidationError) {
312
+ if (error instanceof ValidationException) {
188
313
  console.log('Validation error:', error.message);
189
- } else if (error instanceof AuthenticationError) {
314
+ console.log('Details:', error.details);
315
+ } else if (error instanceof AuthenticationException) {
190
316
  console.log('Auth error:', error.message);
191
- } else if (error instanceof KotaniPayError) {
192
- console.log('API error:', error.message, error.statusCode);
317
+ } else if (error instanceof KotaniPayException) {
318
+ console.log('API error:', error.message);
319
+ console.log('Status:', error.status);
320
+ console.log('Error code:', error.errorCode);
193
321
  }
194
322
  }
195
323
  ```
@@ -205,6 +333,63 @@ KOTANIPAY_ENVIRONMENT=sandbox
205
333
 
206
334
  ## Examples
207
335
 
336
+ ### Complete Integration Flow
337
+
338
+ ```typescript
339
+ import { KotaniPayClient } from 'kotanipay-sdk';
340
+
341
+ async function completeFlow() {
342
+ const client = new KotaniPayClient({
343
+ environment: 'sandbox'
344
+ });
345
+
346
+ try {
347
+ // 1. Create integrator
348
+ const integrator = await client.integrator.create({
349
+ organization: 'My Company',
350
+ product_name: 'My App',
351
+ first_name: 'John',
352
+ last_name: 'Doe',
353
+ email: 'john@mycompany.com',
354
+ phone: '+1234567890',
355
+ country_code: 'US'
356
+ });
357
+
358
+ // 2. Login and authenticate
359
+ await client.auth.login('john@mycompany.com');
360
+ // User clicks email link, you get session data
361
+ client.initializeWithSession(sessionData);
362
+
363
+ // 3. Generate API key
364
+ const apiKey = await client.auth.generateApiKey();
365
+
366
+ // 4. Create a wallet
367
+ const wallet = await client.wallet.create({
368
+ name: 'My USD Wallet',
369
+ currency: 'USD'
370
+ });
371
+
372
+ // 5. Create mobile money customer
373
+ const customer = await client.mobileMoney.createCustomer({
374
+ phone_number: '+254712345678',
375
+ country_code: 'KEN',
376
+ network: 'MPESA'
377
+ });
378
+
379
+ // 6. Create deposit
380
+ const deposit = await client.mobileMoneyDeposit.createDeposit({
381
+ amount: 100.00,
382
+ wallet_id: wallet.data.id,
383
+ customer_key: customer.id
384
+ });
385
+
386
+ console.log('Integration flow completed successfully');
387
+ } catch (error) {
388
+ console.error('Integration flow failed:', error);
389
+ }
390
+ }
391
+ ```
392
+
208
393
  ### React Integration
209
394
 
210
395
  ```typescript
@@ -239,6 +424,25 @@ function PaymentComponent() {
239
424
  }
240
425
  };
241
426
 
427
+ const createWalletAndCustomer = async () => {
428
+ try {
429
+ const wallet = await client.wallet.create({
430
+ name: 'Payment Wallet',
431
+ currency: 'KES'
432
+ });
433
+
434
+ const customer = await client.mobileMoney.createCustomer({
435
+ phone_number: '+254700123456',
436
+ country_code: 'KEN',
437
+ network: 'MPESA'
438
+ });
439
+
440
+ console.log('Wallet and customer created successfully');
441
+ } catch (error) {
442
+ console.error('Creation failed:', error);
443
+ }
444
+ };
445
+
242
446
  return (
243
447
  <div>
244
448
  {authStatus === 'idle' && (
@@ -261,7 +465,12 @@ function PaymentComponent() {
261
465
  </div>
262
466
  )}
263
467
  {authStatus === 'authenticated' && (
264
- <p>Ready to make payments!</p>
468
+ <div>
469
+ <p>Ready to make payments!</p>
470
+ <button onClick={createWalletAndCustomer}>
471
+ Create Wallet & Customer
472
+ </button>
473
+ </div>
265
474
  )}
266
475
  </div>
267
476
  );
@@ -280,6 +489,12 @@ const client = new KotaniPayClient({
280
489
 
281
490
  async function processPayment() {
282
491
  try {
492
+ // Create wallet
493
+ const wallet = await client.wallet.create({
494
+ name: 'Business Wallet',
495
+ currency: 'KES'
496
+ });
497
+
283
498
  // Create customer
284
499
  const customer = await client.mobileMoney.createCustomer({
285
500
  phone_number: '+254700123456',
@@ -287,8 +502,16 @@ async function processPayment() {
287
502
  network: 'MPESA'
288
503
  });
289
504
 
290
- console.log('Customer created:', customer);
291
- return customer;
505
+ // Create deposit
506
+ const deposit = await client.mobileMoneyDeposit.createDeposit({
507
+ amount: 1000,
508
+ wallet_id: wallet.data.id,
509
+ customer_key: customer.id,
510
+ callback_url: 'https://myapp.com/webhook'
511
+ });
512
+
513
+ console.log('Payment initiated:', deposit);
514
+ return deposit;
292
515
  } catch (error) {
293
516
  console.error('Payment failed:', error);
294
517
  throw error;
@@ -296,6 +519,34 @@ async function processPayment() {
296
519
  }
297
520
  ```
298
521
 
522
+ ### Onramp Example
523
+
524
+ ```typescript
525
+ async function initiateOnramp() {
526
+ try {
527
+ const onramp = await client.onramp.iniatiateOnramp({
528
+ mobileMoney: {
529
+ phoneNumber: '+254700123456',
530
+ accountName: 'John Doe',
531
+ providerNetwork: 'MPESA'
532
+ },
533
+ fiatAmount: 100,
534
+ currency: 'KES',
535
+ chain: 'ethereum',
536
+ token: 'USDC',
537
+ receiverAddress: '0x1234567890123456789012345678901234567890',
538
+ referenceId: 'my-ref-' + Date.now(),
539
+ callbackUrl: 'https://myapp.com/webhook',
540
+ rateId: 'rate-id-from-quote'
541
+ });
542
+
543
+ console.log('Onramp initiated:', onramp);
544
+ } catch (error) {
545
+ console.error('Onramp failed:', error);
546
+ }
547
+ }
548
+ ```
549
+
299
550
  ## Contributing
300
551
 
301
552
  1. Fork the repository
@@ -319,7 +570,11 @@ This project is licensed under the MIT License - see the LICENSE file for detail
319
570
  ### v1.0.0
320
571
 
321
572
  - Initial release
322
- - Magic link authentication
573
+ - Magic link authentication with JWT and API key support
323
574
  - Integrator management
324
- - Mobile money customer management
325
- - TypeScript support
575
+ - Mobile money customer management across 13+ African countries
576
+ - Fiat wallet creation and management
577
+ - Mobile money deposit handling with status tracking
578
+ - Onramp functionality for fiat-to-crypto conversion
579
+ - Comprehensive error handling and validation
580
+ - TypeScript supportcd ..
@@ -2,11 +2,14 @@ import { IntegratorService } from '../modules/integrator';
2
2
  import { AuthService } from '../modules/auth';
3
3
  import { MobileMoneyService } from '../modules/mobile-money/mobile-money.service';
4
4
  import { KotaniPayConfig, AuthenticatedSession } from '../types';
5
+ import { MobileMoneyDepositService, WalletService } from '@/modules';
5
6
  export declare class KotaniPayClient {
6
7
  private httpClient;
7
8
  integrator: IntegratorService;
8
9
  auth: AuthService;
9
10
  mobileMoney: MobileMoneyService;
11
+ wallet: WalletService;
12
+ mobileMoneyDeposit: MobileMoneyDepositService;
10
13
  constructor(config: KotaniPayConfig);
11
14
  /**
12
15
  * Initialize client with session data after user login
@@ -1 +1 @@
1
- {"version":3,"file":"kotani-pay.client.d.ts","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEjE,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;gBAE3B,MAAM,EAAE,eAAe;IAUnC;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI;IAI9D;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAKnE,SAAS,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAIrD,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI;QACf,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB;CAYF"}
1
+ {"version":3,"file":"kotani-pay.client.d.ts","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAErE,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAiB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,kBAAkB,EAAE,yBAAyB,CAAC;gBAEzC,MAAM,EAAE,eAAe;IAYnC;;OAEG;IACH,qBAAqB,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI;IAI9D;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,WAAW,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAKnE,SAAS,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAIrD,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI;QACf,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB;CAYF"}
@@ -5,6 +5,7 @@ const http_client_util_1 = require("../utils/http-client.util");
5
5
  const integrator_1 = require("../modules/integrator");
6
6
  const auth_1 = require("../modules/auth");
7
7
  const mobile_money_service_1 = require("../modules/mobile-money/mobile-money.service");
8
+ const modules_1 = require("@/modules");
8
9
  class KotaniPayClient {
9
10
  constructor(config) {
10
11
  // Create HTTP client with config
@@ -13,6 +14,8 @@ class KotaniPayClient {
13
14
  this.integrator = new integrator_1.IntegratorService(this.httpClient);
14
15
  this.auth = new auth_1.AuthService(this.httpClient);
15
16
  this.mobileMoney = new mobile_money_service_1.MobileMoneyService(this.httpClient);
17
+ this.wallet = new modules_1.WalletService(this.httpClient);
18
+ this.mobileMoneyDeposit = new modules_1.MobileMoneyDepositService(this.httpClient);
16
19
  }
17
20
  /**
18
21
  * Initialize client with session data after user login
@@ -1 +1 @@
1
- {"version":3,"file":"kotani-pay.client.js","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":";;;AACA,gEAA2D;AAC3D,sDAA0D;AAC1D,0CAA8C;AAC9C,uFAAkF;AAGlF,MAAa,eAAe;IAM1B,YAAY,MAAuB;QACjC,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,iCAAc,CAAC,MAAM,CAAC,CAAC;QAE7C,sBAAsB;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,8BAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,yCAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,WAAiC;QACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAwC,SAAS,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,UAAU;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,aAAa;QAMX,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3E,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,UAAU;YACV,SAAS;YACT,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AAtED,0CAsEC"}
1
+ {"version":3,"file":"kotani-pay.client.js","sourceRoot":"","sources":["../../../src/client/kotani-pay.client.ts"],"names":[],"mappings":";;;AACA,gEAA2D;AAC3D,sDAA0D;AAC1D,0CAA8C;AAC9C,uFAAkF;AAElF,uCAAqE;AAErE,MAAa,eAAe;IAQ1B,YAAY,MAAuB;QACjC,iCAAiC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,iCAAc,CAAC,MAAM,CAAC,CAAC;QAE7C,sBAAsB;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,8BAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,yCAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,mCAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,WAAiC;QACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAwC,SAAS,CAAC,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,UAAU;QACR,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,aAAa;QAMX,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3E,OAAO;YACL,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,UAAU;YACV,SAAS;YACT,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AA1ED,0CA0EC"}
@@ -1,3 +1,6 @@
1
1
  export * from './integrator';
2
2
  export * from './auth';
3
+ export * from './mobile-money';
4
+ export * from './wallet';
5
+ export * from './mobile-money-deposit';
3
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC"}
@@ -16,4 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./integrator"), exports);
18
18
  __exportStar(require("./auth"), exports);
19
+ __exportStar(require("./mobile-money"), exports);
20
+ __exportStar(require("./wallet"), exports);
21
+ __exportStar(require("./mobile-money-deposit"), exports);
19
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,yCAAuB;AACvB,iDAA+B;AAC/B,2CAAyB;AACzB,yDAAuC"}
@@ -5,6 +5,7 @@ export declare class IntegratorService {
5
5
  constructor(httpClient: HttpClientUtil);
6
6
  private validateCreateIntegratorRequest;
7
7
  create(request: CreateIntegratorRequest): Promise<IntegratorResponse>;
8
+ getIntegratorInfo(): Promise<IntegratorResponse[]>;
8
9
  getById(id: string): Promise<IntegratorResponse>;
9
10
  }
10
11
  //# sourceMappingURL=integrator.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrator.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAEvF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,+BAA+B;IAYjC,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWrE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAWvD"}
1
+ {"version":3,"file":"integrator.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAe,MAAM,aAAa,CAAC;AAEvF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,+BAA+B;IAYjC,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWrE,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQlD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAWvD"}
@@ -21,6 +21,10 @@ class IntegratorService {
21
21
  const response = await this.httpClient.post('/api/v3/integrator', request);
22
22
  return response.data;
23
23
  }
24
+ async getIntegratorInfo() {
25
+ const response = await this.httpClient.get('/api/v3/integrator');
26
+ return response.data;
27
+ }
24
28
  async getById(id) {
25
29
  if (!id) {
26
30
  throw new Error('Integrator ID is required');
@@ -1 +1 @@
1
- {"version":3,"file":"integrator.service.js","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":";;;AACA,iEAA6D;AAG7D,MAAa,iBAAiB;IAC5B,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE1C,+BAA+B,CAAC,OAAgC;QACtE,MAAM,cAAc,GAAsC;YACxD,cAAc,EAAE,cAAc,EAAE,YAAY;YAC5C,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc;SAC9C,CAAC;QAEF,gCAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/D,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgC;QAC3C,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,EACpB,OAAO,CACR,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,sBAAsB,EAAE,EAAE,CAC3B,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AArCD,8CAqCC"}
1
+ {"version":3,"file":"integrator.service.js","sourceRoot":"","sources":["../../../../src/modules/integrator/integrator.service.ts"],"names":[],"mappings":";;;AACA,iEAA6D;AAG7D,MAAa,iBAAiB;IAC5B,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE1C,+BAA+B,CAAC,OAAgC;QACtE,MAAM,cAAc,GAAsC;YACxD,cAAc,EAAE,cAAc,EAAE,YAAY;YAC5C,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc;SAC9C,CAAC;QAEF,gCAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/D,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,gCAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgC;QAC3C,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,oBAAoB,EACpB,OAAO,CACR,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,oBAAoB,CACrB,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,sBAAsB,EAAE,EAAE,CAC3B,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AA7CD,8CA6CC"}
@@ -0,0 +1,2 @@
1
+ export * from './mobile-money.service';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mobile-money.service"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/mobile-money/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
@@ -17,5 +17,15 @@ export declare class MobileMoneyService {
17
17
  * Requires API key authentication
18
18
  */
19
19
  getCustomerById(customerId: string): Promise<MobileMoneyCustomerResponse['data']>;
20
+ /**
21
+ * Get mobile money customers by customer key
22
+ * Requires API key authentication
23
+ */
24
+ getCustomersByKey(customerKey: string): Promise<MobileMoneyCustomerResponse['data'][]>;
25
+ /**
26
+ * Get mobile money customers by phone number
27
+ * Requires API key authentication
28
+ */
29
+ getCustomersByPhoneNumber(phoneNumber: string): Promise<MobileMoneyCustomerResponse['data'][]>;
20
30
  }
21
31
  //# sourceMappingURL=mobile-money.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-money.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAG5B,MAAM,aAAa,CAAC;AAErB,qBAAa,kBAAkB;IACjB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,6BAA6B;IAcrC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,eAAe;IAajB,cAAc,CAAC,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAW7G;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAQvE;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;CAWxF"}
1
+ {"version":3,"file":"mobile-money.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,gCAAgC,EAChC,2BAA2B,EAG5B,MAAM,aAAa,CAAC;AAErB,qBAAa,kBAAkB;IACjB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,6BAA6B;IAcrC,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,eAAe;IAajB,cAAc,CAAC,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAW7G;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAQvE;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAavF;;;OAGG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;IAY1F;;;KAGC;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;CAWrG"}
@@ -60,6 +60,28 @@ class MobileMoneyService {
60
60
  const response = await this.httpClient.get(`/api/v3/customer/mobile-money/${customerId}`);
61
61
  return response.data;
62
62
  }
63
+ /**
64
+ * Get mobile money customers by customer key
65
+ * Requires API key authentication
66
+ */
67
+ async getCustomersByKey(customerKey) {
68
+ if (!customerKey) {
69
+ throw new Error('Customer key is required');
70
+ }
71
+ const response = await this.httpClient.get(`/api/v3/customer/mobile-money/${customerKey}`);
72
+ return response.data;
73
+ }
74
+ /**
75
+ * Get mobile money customers by phone number
76
+ * Requires API key authentication
77
+ */
78
+ async getCustomersByPhoneNumber(phoneNumber) {
79
+ if (!phoneNumber) {
80
+ throw new Error('Phone number is required');
81
+ }
82
+ const response = await this.httpClient.get(`/api/v3/customer/mobile-money/phone/${phoneNumber}`);
83
+ return response.data;
84
+ }
63
85
  }
64
86
  exports.MobileMoneyService = MobileMoneyService;
65
87
  //# sourceMappingURL=mobile-money.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-money.service.js","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":";;;AAEA,iEAA6D;AAQ7D,MAAa,kBAAkB;IAC7B,YAAoB,UAA0B;QAA1B,eAAU,GAAV,UAAU,CAAgB;IAAG,CAAC;IAE1C,6BAA6B,CAAC,OAAyC;QAC7E,MAAM,cAAc,GAA+C;YACjE,cAAc,EAAE,cAAc;SAC/B,CAAC;QAEF,gCAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/D,gCAAc,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,WAAmB;QAC7C,MAAM,iBAAiB,GAAG;YACxB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;YAC/C,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;SACzC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,yCAAyC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAe;QACrC,MAAM,aAAa,GAAG;YACpB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;YACtD,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;YACxD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;SAC5D,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,oCAAoC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,OAAyC;QAC5D,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CACzC,+BAA+B,EAC/B,OAAO,CACR,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,+BAA+B,CAChC,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB;QACtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CACxC,iCAAiC,UAAU,EAAE,CAC9C,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AA/ED,gDA+EC"}
1
+ {"version":3,"file":"mobile-money.service.js","sourceRoot":"","sources":["../../../../src/modules/mobile-money/mobile-money.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { HttpClientUtil } from '../../utils/http-client.util';
2
+ import { CreateMobileMoneyDepositRequest, MobileMoneyDepositResponse } from '../../types';
3
+ export declare class MobileMoneyDepositService {
4
+ private httpClient;
5
+ constructor(httpClient: HttpClientUtil);
6
+ private validateCreateCustomerRequest;
7
+ createDeposit(request: CreateMobileMoneyDepositRequest): Promise<MobileMoneyDepositResponse['data']>;
8
+ getDepositTransactionStatus(reference_id: string): Promise<MobileMoneyDepositResponse['data']>;
9
+ }
10
+ //# sourceMappingURL=deposit.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile-money-deposit/deposit.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AAErB,qBAAa,yBAAyB;IACxB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,cAAc;IAE9C,OAAO,CAAC,6BAA6B;IAQ7B,aAAa,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAWpG,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;CAOvG"}