@wirexapp/wpay-baas-sdk 0.1.7 → 0.1.8
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 +32 -2
- package/dist/{chunk-Y7TGKAUA.js → chunk-D2YHFKQI.js} +3 -3
- package/dist/{chunk-Y7TGKAUA.js.map → chunk-D2YHFKQI.js.map} +1 -1
- package/dist/{chunk-BN5Q2YHP.js → chunk-ITBPDXHK.js} +132 -13
- package/dist/chunk-ITBPDXHK.js.map +1 -0
- package/dist/{chunk-C4OR7ZVY.js → chunk-YXNNTBO5.js} +3 -2
- package/dist/chunk-YXNNTBO5.js.map +1 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +1 -1
- package/dist/{types-_VJ4UPM4.d.ts → crypto.module-BsI4pLhf.d.ts} +70 -52
- package/dist/{index-DETvmzdr.d.ts → index-3P-X9tLg.d.ts} +2 -2
- package/dist/index.d.ts +7 -7
- package/dist/index.js +6 -6
- package/dist/modules/api/index.d.ts +3 -3
- package/dist/modules/api/index.js +2 -2
- package/dist/modules/crypto/index.d.ts +32 -10
- package/dist/modules/crypto/index.js +3 -3
- package/dist/{types-IKGr4nyf.d.ts → types-_RME4STd.d.ts} +1 -1
- package/dist/{withdrawal.api-DsvQPbRN.d.ts → withdrawal.api-CmRHIoyc.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-BN5Q2YHP.js.map +0 -1
- package/dist/chunk-C4OR7ZVY.js.map +0 -1
package/README.md
CHANGED
|
@@ -64,6 +64,20 @@ if (!isPolicyInstalled || !isExecutorInstalled) {
|
|
|
64
64
|
}
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
**Single-signature alternative (steps 3 + 5 combined).** For a wallet with neither the
|
|
68
|
+
executor nor the policy installed, `sdk.crypto.onboarding.allInOneStepOnboarding()` batches
|
|
69
|
+
the executor install, the root-validator switch and the Accounts registration into one
|
|
70
|
+
UserOperation, so the user signs once instead of three times:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
if (!isPolicyInstalled && !isExecutorInstalled) {
|
|
74
|
+
const receipt = await sdk.crypto.onboarding.allInOneStepOnboarding();
|
|
75
|
+
console.log('Transaction hash:', receipt.receipt.transactionHash);
|
|
76
|
+
} else {
|
|
77
|
+
// fall back to the per-step calls below
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
67
81
|
### 4: If you use Privy as auth — Link Smart Wallet to Privy (SIWE)
|
|
68
82
|
|
|
69
83
|
```typescript
|
|
@@ -208,10 +222,17 @@ interface RegisterCompanyParams {
|
|
|
208
222
|
| `getSmartWalletClientWithoutPolicy()` | Get Kernel client without Policy |
|
|
209
223
|
| `getSmartAccountSigner()` | Get signer for Smart Account |
|
|
210
224
|
| `getMainWalletClient()` | Get main wallet client |
|
|
211
|
-
| `sendUserOperationsAndWaitReceipt(callData, smartWalletClient?)` | Send user operations and wait for receipt |
|
|
212
|
-
| `sendUserOperationsWithNonceAndWaitReceipt(callData, nonce)` | Send user operations with specific nonce |
|
|
225
|
+
| `sendUserOperationsAndWaitReceipt(callData, smartWalletClient?, config?)` | Send user operations and wait for receipt |
|
|
226
|
+
| `sendUserOperationsWithNonceAndWaitReceipt(callData, nonce, config?)` | Send user operations with specific nonce |
|
|
213
227
|
| `invalidateLocalCache()` | Clear cached wallet clients |
|
|
214
228
|
|
|
229
|
+
`config` on both send methods is `{ waitOnChainBlocks?: number; applyUnwrapGasFloor?: boolean }`.
|
|
230
|
+
`applyUnwrapGasFloor` estimates the UserOperation first and raises `callGasLimit` to a 1_500_000
|
|
231
|
+
floor when the estimate comes back lower. The transfer service sets it for the batches that unwrap
|
|
232
|
+
a synthetic token before transferring (`makeErc20TransferFull` execution step,
|
|
233
|
+
`makeErc20TransferFinal`, `makeTransferWithoutDelayPolicy`); plain transfers, policy installs and
|
|
234
|
+
batch transfers keep the bundler estimate.
|
|
235
|
+
|
|
215
236
|
### `sdk.crypto.accountAbstraction` — Account Abstraction Service
|
|
216
237
|
|
|
217
238
|
| Method | Description |
|
|
@@ -221,6 +242,8 @@ interface RegisterCompanyParams {
|
|
|
221
242
|
| `signInPolicyAndExecutor()` | Install Policy and Executor together |
|
|
222
243
|
| `signInPolicy()` | Install Policy only |
|
|
223
244
|
| `signInExecutor()` | Install Executor only |
|
|
245
|
+
| `getExecutorInstallCall()` | Executor install as a batchable call (used by onboarding) |
|
|
246
|
+
| `getPolicyInstallCall()` | Policy install as a batchable call (used by onboarding) |
|
|
224
247
|
|
|
225
248
|
### `sdk.crypto.accountContract` — Account Contract Service
|
|
226
249
|
|
|
@@ -230,6 +253,13 @@ interface RegisterCompanyParams {
|
|
|
230
253
|
| `registerInAccounts()` | Register wallet in Accounts contract (retail) |
|
|
231
254
|
| `isWalletInCorporateAccounts()` | Check if wallet is registered in Corporate Accounts contract |
|
|
232
255
|
| `registerInCorporateAccounts()` | Register wallet in Corporate Accounts contract (B2B) |
|
|
256
|
+
| `getAccountRegistrationCall()` | Accounts registration as a batchable call (used by onboarding) |
|
|
257
|
+
|
|
258
|
+
### `sdk.crypto.onboarding` — Onboarding Service
|
|
259
|
+
|
|
260
|
+
| Method | Description |
|
|
261
|
+
|--------|-------------|
|
|
262
|
+
| `allInOneStepOnboarding()` | Executor install + policy switch + Accounts registration in a single UserOperation, signed by the pre-policy client. Use only when neither the executor nor the policy is installed; otherwise run the per-step methods. |
|
|
233
263
|
|
|
234
264
|
### `sdk.crypto.transfer` — Transfer Service
|
|
235
265
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuthenticationError, ValidationError } from './chunk-
|
|
1
|
+
import { AuthenticationError, ValidationError } from './chunk-YXNNTBO5.js';
|
|
2
2
|
|
|
3
3
|
// src/modules/api/baas/activity/activity.service.ts
|
|
4
4
|
var ActivityService = class {
|
|
@@ -1360,5 +1360,5 @@ var ApiModule = class {
|
|
|
1360
1360
|
};
|
|
1361
1361
|
|
|
1362
1362
|
export { ActivityService, ApiModule, AuthService, BaasModule, BankService, CardsService, ConfigService, ConfirmationService, RatesService, RecipientsService, SwapService, TokenService, UserService, WalletService, WithdrawalApi };
|
|
1363
|
-
//# sourceMappingURL=chunk-
|
|
1364
|
-
//# sourceMappingURL=chunk-
|
|
1363
|
+
//# sourceMappingURL=chunk-D2YHFKQI.js.map
|
|
1364
|
+
//# sourceMappingURL=chunk-D2YHFKQI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/api/baas/activity/activity.service.ts","../src/modules/api/baas/bank/bank.service.ts","../src/modules/api/baas/cards/cards.service.ts","../src/modules/api/baas/config/config.service.ts","../src/modules/api/baas/confirmation/confirmation.service.ts","../src/modules/api/baas/recipients/recipients.service.ts","../src/modules/api/baas/rates/rates.service.ts","../src/modules/api/baas/swap/swap.service.ts","../src/modules/api/baas/token/token.service.ts","../src/modules/auth/auth.service.ts","../src/modules/api/baas/user/user.service.ts","../src/modules/api/baas/wallet/wallet.service.ts","../src/modules/api/baas/baas.module.ts","../src/modules/api/internal/endpoints/withdrawal.api.ts","../src/modules/api/api.module.ts"],"names":[],"mappings":"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","file":"chunk-Y7TGKAUA.js","sourcesContent":["import type {\n GetActivityFeedRequest,\n GetActivityByIdRequest,\n GetFullStatementRequest,\n ActivityFeedResponse,\n ActivityItem,\n ActivityFullStatementResponse,\n RequestedErcWithdrawalsResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Activity Service – activity feed and statement endpoints.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class ActivityService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves activity feed with optional pagination and filters.\n */\n async getFeed(request?: GetActivityFeedRequest): Promise<ActivityFeedResponse> {\n this.logger?.info('Fetching activity feed...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n if (request?.subject) params.subject = request.subject;\n if (request?.types?.length) params.types = request.types;\n\n const response = await this.httpClient.get<ActivityFeedResponse>('api/v1/activity/feed', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Activity feed fetched successfully');\n return response;\n }\n\n /**\n * Retrieves a single activity item by id.\n */\n async getById(request: GetActivityByIdRequest): Promise<ActivityItem> {\n this.logger?.info('Fetching activity by id...');\n\n const response = await this.httpClient.get<ActivityItem>(\n `api/v1/activity/single/${encodeURIComponent(request.id)}`,\n );\n\n this.logger?.info('Activity fetched successfully');\n return response;\n }\n\n /**\n * Retrieves full statement for the given date range (Unix timestamps).\n */\n async getFullStatement(request: GetFullStatementRequest): Promise<ActivityFullStatementResponse> {\n this.logger?.info('Fetching full statement...');\n\n const response = await this.httpClient.post<ActivityFullStatementResponse>(\n 'api/v1/activity/statement/full',\n request,\n );\n\n this.logger?.info('Full statement fetched successfully');\n return response;\n }\n\n /**\n * Retrieves requested ERC withdrawals for the authenticated account.\n */\n async getRequestedErcWithdrawals(): Promise<RequestedErcWithdrawalsResponse> {\n this.logger?.info('Fetching requested ERC withdrawals...');\n\n const response = await this.httpClient.get<RequestedErcWithdrawalsResponse>('api/v1/withdrawal/requests');\n\n this.logger?.info('Requested ERC withdrawals fetched successfully');\n return response;\n }\n}\n","import type {\n GetBankAccountsRequest,\n ActivateBankAccountRequest,\n EstimateTransferRequest,\n ExecuteTransferRequest,\n CorridorEstimateRequest,\n CorridorTransferRequest,\n BankAccountsResponse,\n ActivateBankAccountResponse,\n EstimateTransferResponse,\n ExecuteTransferResponse,\n BankCorridorEstimateResponse,\n BankCorridorExecuteResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Bank Service – bank accounts and transfer endpoints.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class BankService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves a list of bank accounts that belong to the user.\n */\n async getAccounts(request?: GetBankAccountsRequest): Promise<BankAccountsResponse> {\n this.logger?.info('Fetching bank accounts...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<BankAccountsResponse>('api/v1/bank/accounts', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Bank accounts fetched successfully');\n return response;\n }\n\n /**\n * Activates bank account details for the specified account type.\n */\n async activateAccount(request: ActivateBankAccountRequest): Promise<ActivateBankAccountResponse> {\n this.logger?.info('Activating bank account...');\n\n const response = await this.httpClient.post<ActivateBankAccountResponse>(\n 'api/v1/bank/accounts',\n request,\n );\n\n this.logger?.info('Bank account activated successfully');\n return response;\n }\n\n /**\n * Estimates the amounts that would be charged for a bank transfer according to the current market rates.\n */\n async estimateTransfer(request: EstimateTransferRequest): Promise<EstimateTransferResponse> {\n this.logger?.info('Estimating bank transfer...');\n\n const response = await this.httpClient.post<EstimateTransferResponse>(\n 'api/v1/bank/transfer/estimate',\n request,\n );\n\n this.logger?.info('Bank transfer estimated successfully');\n return response;\n }\n\n /**\n * Executes the bank transfer either according to the estimation made previously or using current market rates.\n */\n async executeTransfer(request: ExecuteTransferRequest): Promise<ExecuteTransferResponse> {\n this.logger?.info('Executing bank transfer...');\n\n const response = await this.httpClient.post<ExecuteTransferResponse>(\n 'api/v1/bank/transfer',\n request,\n );\n\n this.logger?.info('Bank transfer executed successfully');\n return response;\n }\n\n /**\n * Estimates the amounts for a bank transfer via specified corridor.\n */\n async estimateCorridorTransferV2(\n corridor: string,\n request: CorridorEstimateRequest,\n ): Promise<BankCorridorEstimateResponse> {\n this.logger?.info('Estimating corridor transfer...');\n\n const response = await this.httpClient.post<BankCorridorEstimateResponse>(\n `api/v2/bank/${encodeURIComponent(corridor)}/estimate`,\n request,\n );\n\n this.logger?.info('Corridor transfer estimated successfully');\n return response;\n }\n\n /**\n * Executes transfer using estimation_id. All recipient details resolved from stored estimation.\n */\n async executeCorridorTransferV2(\n corridor: string,\n request: CorridorTransferRequest,\n ): Promise<BankCorridorExecuteResponse> {\n this.logger?.info('Executing corridor transfer...');\n\n const response = await this.httpClient.post<BankCorridorExecuteResponse>(\n `api/v2/bank/${encodeURIComponent(corridor)}`,\n request,\n );\n\n this.logger?.info('Corridor transfer executed successfully');\n return response;\n }\n}\n","import type {\n CardActivateRequestBody,\n CardDetailsGetCvvRequestBody,\n CardDetailsGetDetailsRequestBody,\n CardDetailsGetPinRequestBody,\n CardFeesCreateInvoiceRequestBody,\n CardIssuePlasticRequest,\n CardIssueVirtualRequest,\n CardLimitChangeRequestBody,\n CardNameChangeRequestBody,\n CardTransferEstimateRequest,\n CardTransferExecuteRequest,\n CardWithdrawalEstimateRequestBody,\n CardWithdrawalExecuteRequestBody,\n CardFormat,\n CardDeliveryMethod,\n CardDetailsCvvResponse,\n CardDetailsPanExpiryResponse,\n CardDetailsPinResponse,\n CardFeesInvoiceResponse,\n CardFeesOrderResponse,\n CardIssueResponse,\n CardResponse,\n CardTransactionConfirmationResponse,\n CardTransferEstimateResponse,\n CardTransferExecuteResponse,\n CardWithdrawalEstimateResponse,\n CardWithdrawalExecuteResponse,\n CardsResponse,\n CardTransactionsResponse,\n GetCardTransactionsRequest,\n GetCardsRequest,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\nimport type { EmptyResponse } from '../../types/common.types';\n\n/**\n * Cards Service – card issuance, management, and transfers.\n */\nexport class CardsService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves list of cards that belong to the user.\n */\n async getCards(request?: GetCardsRequest): Promise<CardsResponse> {\n this.logger?.info('Fetching cards...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<CardsResponse>('api/v1/cards', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Cards fetched successfully');\n return response;\n }\n\n /**\n * Retrieves a page of card transactions associated with the user.\n */\n async getCardTransactions(request?: GetCardTransactionsRequest): Promise<CardTransactionsResponse> {\n this.logger?.info('Fetching card transactions...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<CardTransactionsResponse>('api/v1/transactions/card', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Card transactions fetched successfully');\n return response;\n }\n\n /**\n * Retrieves single card by its id.\n */\n async getCard(cardId: string): Promise<CardResponse> {\n this.logger?.info('Fetching card...');\n\n const response = await this.httpClient.get<CardResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}`,\n );\n\n this.logger?.info('Card fetched successfully');\n return response;\n }\n\n /**\n * Retrieves active 3DS requests that need to be either approved or declined.\n */\n async getActive3dsRequests(): Promise<CardTransactionConfirmationResponse[]> {\n this.logger?.info('Fetching active 3DS requests...');\n\n const response = await this.httpClient.get<CardTransactionConfirmationResponse[]>(\n 'api/v1/cards/3ds/requests',\n );\n\n this.logger?.info('Active 3DS requests fetched successfully');\n return response;\n }\n\n /**\n * Approves 3DS request allowing the transaction to proceed.\n */\n async approve3dsRequest(transactionId: string): Promise<EmptyResponse> {\n this.logger?.info('Approving 3DS request...');\n\n const response = await this.httpClient.post<EmptyResponse>(\n `api/v1/cards/3ds/requests/${encodeURIComponent(transactionId)}/approve`,\n );\n\n this.logger?.info('3DS request approved successfully');\n return response;\n }\n\n /**\n * Declines 3DS request blocking the transaction from proceeding.\n */\n async decline3dsRequest(transactionId: string): Promise<EmptyResponse> {\n this.logger?.info('Declining 3DS request...');\n\n const response = await this.httpClient.post<EmptyResponse>(\n `api/v1/cards/3ds/requests/${encodeURIComponent(transactionId)}/decline`,\n );\n\n this.logger?.info('3DS request declined successfully');\n return response;\n }\n\n /**\n * Retrieves list of countries where the card can be delivered for the current corporation.\n */\n async getDeliveryCountries(): Promise<string[]> {\n this.logger?.info('Fetching delivery countries...');\n\n const response = await this.httpClient.get<string[]>('api/v1/cards/delivery/countries');\n\n this.logger?.info('Delivery countries fetched successfully');\n return response;\n }\n\n /**\n * Retrieves list of courier providers that can deliver the card to the specified country.\n */\n async getDeliveryMethods(country: string): Promise<CardDeliveryMethod[]> {\n this.logger?.info('Fetching delivery methods...');\n\n const response = await this.httpClient.get<CardDeliveryMethod[]>(\n `api/v1/cards/delivery/methods/${encodeURIComponent(country)}`,\n );\n\n this.logger?.info('Delivery methods fetched successfully');\n return response;\n }\n\n /**\n * Issues a plastic card for the specified user and sends it to the provided address.\n */\n async issuePlasticCard(request: CardIssuePlasticRequest): Promise<CardIssueResponse> {\n this.logger?.info('Issuing plastic card...');\n\n const response = await this.httpClient.post<CardIssueResponse>('api/v1/cards/plastic', request);\n\n this.logger?.info('Plastic card issued successfully');\n return response;\n }\n\n /**\n * Issues a virtual card for the specified user.\n */\n async issueVirtualCard(request: CardIssueVirtualRequest): Promise<CardIssueResponse> {\n this.logger?.info('Issuing virtual card...');\n\n const response = await this.httpClient.post<CardIssueResponse>('api/v1/cards/virtual', request);\n\n this.logger?.info('Virtual card issued successfully');\n return response;\n }\n\n /**\n * Activates a card that has been issued to a user and is currently in NotActivated state.\n */\n async activateCard(cardId: string, request: CardActivateRequestBody): Promise<EmptyResponse> {\n this.logger?.info('Activating card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/activate`,\n request,\n );\n\n this.logger?.info('Card activated successfully');\n return response;\n }\n\n /**\n * Blocks selected card making it impossible to use it for any transactions.\n */\n async blockCard(cardId: string): Promise<EmptyResponse> {\n this.logger?.info('Blocking card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/block`,\n );\n\n this.logger?.info('Card blocked successfully');\n return response;\n }\n\n /**\n * Unblocks selected card allowing it to be used for transactions once again.\n */\n async unblockCard(cardId: string): Promise<EmptyResponse> {\n this.logger?.info('Unblocking card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/unblock`,\n );\n\n this.logger?.info('Card unblocked successfully');\n return response;\n }\n\n /**\n * Closes the card. This action cannot be undone and the card will be permanently closed.\n */\n async closeCard(cardId: string): Promise<EmptyResponse> {\n this.logger?.info('Closing card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/close`,\n );\n\n this.logger?.info('Card closed successfully');\n return response;\n }\n\n /**\n * Retrieves card PAN and expiry date using the action confirmation token.\n */\n async getCardDetails(\n cardId: string,\n request: CardDetailsGetDetailsRequestBody,\n ): Promise<CardDetailsPanExpiryResponse> {\n this.logger?.info('Fetching card details...');\n\n const response = await this.httpClient.post<CardDetailsPanExpiryResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/details`,\n request,\n );\n\n this.logger?.info('Card details fetched successfully');\n return response;\n }\n\n /**\n * Retrieves CVV code for the card using the action confirmation token.\n */\n async getCardCvv(\n cardId: string,\n request: CardDetailsGetCvvRequestBody,\n ): Promise<CardDetailsCvvResponse> {\n this.logger?.info('Fetching card CVV...');\n\n const response = await this.httpClient.post<CardDetailsCvvResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/cvv`,\n request,\n );\n\n this.logger?.info('Card CVV fetched successfully');\n return response;\n }\n\n /**\n * Retrieves card Pin code using the action confirmation token.\n */\n async getCardPin(\n cardId: string,\n request: CardDetailsGetPinRequestBody,\n ): Promise<CardDetailsPinResponse> {\n this.logger?.info('Fetching card PIN...');\n\n const response = await this.httpClient.post<CardDetailsPinResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/pin`,\n request,\n );\n\n this.logger?.info('Card PIN fetched successfully');\n return response;\n }\n\n /**\n * Updates maximum amount that can be spent using the card within a day.\n */\n async changeCardLimit(\n cardId: string,\n request: CardLimitChangeRequestBody,\n ): Promise<EmptyResponse> {\n this.logger?.info('Changing card limit...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/limit`,\n request,\n );\n\n this.logger?.info('Card limit changed successfully');\n return response;\n }\n\n /**\n * Updates the display name of the card.\n */\n async changeCardName(cardId: string, request: CardNameChangeRequestBody): Promise<EmptyResponse> {\n this.logger?.info('Changing card name...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/name`,\n request,\n );\n\n this.logger?.info('Card name changed successfully');\n return response;\n }\n\n /**\n * Creates a new card transfer estimation.\n */\n async estimateCardTransfer(\n request: CardTransferEstimateRequest,\n ): Promise<CardTransferEstimateResponse> {\n this.logger?.info('Estimating card transfer...');\n\n const response = await this.httpClient.post<CardTransferEstimateResponse>(\n 'api/v1/cards/transfer/estimate',\n request,\n );\n\n this.logger?.info('Card transfer estimated successfully');\n return response;\n }\n\n /**\n * Executes the estimated card transfer request.\n */\n async executeCardTransfer(\n request: CardTransferExecuteRequest,\n ): Promise<CardTransferExecuteResponse> {\n this.logger?.info('Executing card transfer...');\n\n const response = await this.httpClient.post<CardTransferExecuteResponse>(\n 'api/v1/cards/transfer',\n request,\n );\n\n this.logger?.info('Card transfer executed successfully');\n return response;\n }\n\n /**\n * Creates a new withdrawal estimation for the card.\n */\n async estimateCardWithdrawal(\n cardId: string,\n request: CardWithdrawalEstimateRequestBody,\n ): Promise<CardWithdrawalEstimateResponse> {\n this.logger?.info('Estimating card withdrawal...');\n\n const response = await this.httpClient.post<CardWithdrawalEstimateResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/withdraw/estimate`,\n request,\n );\n\n this.logger?.info('Card withdrawal estimated successfully');\n return response;\n }\n\n /**\n * Executes the estimated withdrawal request for the card.\n */\n async executeCardWithdrawal(\n cardId: string,\n request: CardWithdrawalExecuteRequestBody,\n ): Promise<CardWithdrawalExecuteResponse> {\n this.logger?.info('Executing card withdrawal...');\n\n const response = await this.httpClient.post<CardWithdrawalExecuteResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/withdraw/execute`,\n request,\n );\n\n this.logger?.info('Card withdrawal executed successfully');\n return response;\n }\n\n /**\n * Retrieves estimation of fees that should be paid for the card order.\n */\n async getOrderFees(type: CardFormat, country: string): Promise<CardFeesOrderResponse> {\n this.logger?.info('Fetching card order fees...');\n\n const response = await this.httpClient.get<CardFeesOrderResponse>(\n `api/v1/cards/${encodeURIComponent(type)}/fees/${encodeURIComponent(country)}`,\n );\n\n this.logger?.info('Card order fees fetched successfully');\n return response;\n }\n\n /**\n * Creates an invoice for payment of the card order fees.\n */\n async createOrderFeesInvoice(\n type: CardFormat,\n country: string,\n request: CardFeesCreateInvoiceRequestBody,\n ): Promise<CardFeesInvoiceResponse> {\n this.logger?.info('Creating card order fees invoice...');\n\n const response = await this.httpClient.post<CardFeesInvoiceResponse>(\n `api/v1/cards/${encodeURIComponent(type)}/fees/${encodeURIComponent(country)}/payment`,\n request,\n );\n\n this.logger?.info('Card order fees invoice created successfully');\n return response;\n }\n}\n","import type { ClientAppConfig } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Config Service - application configuration endpoints.\n */\nexport class ConfigService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves application configuration values for a partner application.\n */\n async getConfig(): Promise<ClientAppConfig> {\n this.logger?.info('Fetching application configuration...');\n\n const response = await this.httpClient.get<ClientAppConfig>('api/v1/config', {\n requireAuth: false,\n });\n\n this.logger?.info('Application configuration fetched successfully');\n return response;\n }\n}\n","import type {\n ActionConfirmationCreateTokenRequest,\n ActionConfirmationCreateSmsRequest,\n ActionConfirmationVerifySmsRequest,\n ActionConfirmationSmsSessionResponse,\n ActionTokenResponse,\n TokenResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Confirmation Service - action confirmation endpoints.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class ConfirmationService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Exchanges wallet signature for an action token.\n */\n async verifySignature(request: ActionConfirmationCreateTokenRequest): Promise<ActionTokenResponse> {\n this.logger?.info('Verifying wallet signature...');\n\n const response = await this.httpClient.post<ActionTokenResponse>(\n 'api/v1/confirmation/signature/verify',\n request,\n );\n\n this.logger?.info('Wallet signature verified successfully');\n return response;\n }\n\n /**\n * Sends SMS with OTP code to the user.\n */\n async requestSms(request: ActionConfirmationCreateSmsRequest): Promise<ActionConfirmationSmsSessionResponse> {\n this.logger?.info('Requesting SMS confirmation...');\n\n const response = await this.httpClient.post<ActionConfirmationSmsSessionResponse>(\n 'api/v1/confirmation/sms',\n request,\n );\n\n this.logger?.info('SMS confirmation requested successfully');\n return response;\n }\n\n /**\n * Exchanges SMS OTP code for an action token.\n */\n async verifySms(request: ActionConfirmationVerifySmsRequest): Promise<TokenResponse> {\n this.logger?.info('Verifying SMS code...');\n\n const response = await this.httpClient.post<TokenResponse>('api/v1/confirmation/sms/verify', request);\n\n this.logger?.info('SMS code verified successfully');\n return response;\n }\n}\n","import type {\n GetRecipientsRequest,\n GetRecipientsByCatalogRequest,\n GetRecipientsByCurrencyRequest,\n GetRecipientsByNameRequest,\n GetRecipientsByTypeRequest,\n RecipientCreateRequest,\n RecipientCreateRequestV2,\n RecipientUpdateRequestBody,\n RecipientCreateDetailsRequestBody,\n RecipientUpdateDetailsRequestBody,\n RecipientResponse,\n RecipientsResponse,\n RecipientPaymentDetailsResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\nimport type { EmptyResponse } from '../../types/common.types';\n\n/**\n * Recipients Service – recipients and payment details endpoints.\n */\nexport class RecipientsService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves all recipients with optional pagination and sorting.\n */\n async getRecipients(request?: GetRecipientsRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Recipients fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by catalog index (first letter of full name).\n */\n async getRecipientsByCatalog(request: GetRecipientsByCatalogRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by catalog...');\n\n const params: Record<string, unknown> = {\n catalog_index: request.catalog_index,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/catalog', {\n params,\n });\n\n this.logger?.info('Recipients by catalog fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by currency.\n */\n async getRecipientsByCurrency(request: GetRecipientsByCurrencyRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by currency...');\n\n const params: Record<string, unknown> = {\n currency: request.currency,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/currency', {\n params,\n });\n\n this.logger?.info('Recipients by currency fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by name substring.\n */\n async getRecipientsByName(request: GetRecipientsByNameRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by name...');\n\n const params: Record<string, unknown> = {\n name: request.name,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/name', {\n params,\n });\n\n this.logger?.info('Recipients by name fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by payment details type.\n */\n async getRecipientsByType(request: GetRecipientsByTypeRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by type...');\n\n const params: Record<string, unknown> = {\n type: request.type,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/type', {\n params,\n });\n\n this.logger?.info('Recipients by type fetched successfully');\n return response;\n }\n\n /**\n * Creates a new recipient with provided personal information.\n */\n async createRecipient(request: RecipientCreateRequest): Promise<RecipientResponse> {\n this.logger?.info('Creating recipient...');\n\n const response = await this.httpClient.post<RecipientResponse>('api/v1/recipients', request);\n\n this.logger?.info('Recipient created successfully');\n return response;\n }\n\n /**\n * Creates a recipient with personal info and payment details in a single call.\n */\n async createRecipientV2(request: RecipientCreateRequestV2): Promise<RecipientResponse> {\n this.logger?.info('Creating recipient (v2)...');\n\n const response = await this.httpClient.post<RecipientResponse>('api/v2/recipients', request);\n\n this.logger?.info('Recipient (v2) created successfully');\n return response;\n }\n\n /**\n * Retrieves a single recipient by its ID.\n */\n async getRecipientById(recipientId: string): Promise<RecipientResponse> {\n this.logger?.info('Fetching recipient by id...');\n\n const response = await this.httpClient.get<RecipientResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}`,\n );\n\n this.logger?.info('Recipient fetched successfully');\n return response;\n }\n\n /**\n * Updates recipient with provided personal information.\n */\n async updateRecipient(recipientId: string, request: RecipientUpdateRequestBody): Promise<EmptyResponse> {\n this.logger?.info('Updating recipient...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}`,\n request,\n );\n\n this.logger?.info('Recipient updated successfully');\n return response;\n }\n\n /**\n * Deletes selected recipient.\n */\n async deleteRecipient(recipientId: string): Promise<EmptyResponse> {\n this.logger?.info('Deleting recipient...');\n\n const response = await this.httpClient.delete<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}`,\n );\n\n this.logger?.info('Recipient deleted successfully');\n return response;\n }\n\n /**\n * Creates new payment details for existing recipient.\n */\n async createRecipientPaymentDetails(\n recipientId: string,\n request: RecipientCreateDetailsRequestBody,\n ): Promise<RecipientPaymentDetailsResponse> {\n this.logger?.info('Creating recipient payment details...');\n\n const response = await this.httpClient.post<RecipientPaymentDetailsResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/payment_details`,\n request,\n );\n\n this.logger?.info('Recipient payment details created successfully');\n return response;\n }\n\n /**\n * Updates existing payment details for existing recipient.\n */\n async updateRecipientPaymentDetails(\n recipientId: string,\n paymentDetailsId: string,\n request: RecipientUpdateDetailsRequestBody,\n ): Promise<EmptyResponse> {\n this.logger?.info('Updating recipient payment details...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/payment_details/${encodeURIComponent(\n paymentDetailsId,\n )}`,\n request,\n );\n\n this.logger?.info('Recipient payment details updated successfully');\n return response;\n }\n\n /**\n * Deletes payment details from existing recipient.\n */\n async deleteRecipientPaymentDetails(\n recipientId: string,\n paymentDetailsId: string,\n ): Promise<EmptyResponse> {\n this.logger?.info('Deleting recipient payment details...');\n\n const response = await this.httpClient.delete<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/payment_details/${encodeURIComponent(\n paymentDetailsId,\n )}`,\n );\n\n this.logger?.info('Recipient payment details deleted successfully');\n return response;\n }\n\n /**\n * Increments usage index on specified recipient.\n */\n async incrementRecipientUsage(recipientId: string): Promise<EmptyResponse> {\n this.logger?.info('Incrementing recipient usage...');\n\n const response = await this.httpClient.post<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/usage`,\n );\n\n this.logger?.info('Recipient usage incremented successfully');\n return response;\n }\n}\n","import type { GetRatesRequest, RatesResponse } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Rates Service - exchange rates endpoints.\n */\nexport class RatesService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves real-time exchange rates for a list of provided tickers.\n */\n async getRates(request: GetRatesRequest): Promise<RatesResponse> {\n this.logger?.info('Fetching exchange rates...');\n\n const query = new URLSearchParams();\n if (request?.tickers?.length) {\n request.tickers.forEach((ticker) => query.append('tickers', ticker));\n }\n\n const url = query.toString() ? `api/v1/rates?${query.toString()}` : 'api/v1/rates';\n const response = await this.httpClient.get<RatesResponse>(url);\n\n this.logger?.info('Exchange rates fetched successfully');\n return response;\n }\n}\n","import type { HttpClient, Logger } from '../../../../core/index';\nimport type { AuthService } from '../../../auth/index';\nimport type {\n SwapEstimateRequest,\n SwapEstimateResponse,\n SwapExecuteRequest,\n SwapExecuteResponse,\n} from './types';\n\n/**\n * Swap Service – Circle FX stablecoin swaps.\n * Two-step flow: estimate (issues a deposit address) → on-chain payment → execute.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class SwapService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Creates a swap estimation with a deposit address for a Circle FX stablecoin swap.\n * Send exactly one of source_asset_amount / destination_asset_amount.\n */\n async estimate(request: SwapEstimateRequest): Promise<SwapEstimateResponse> {\n this.logger?.info('Estimating FX swap...');\n\n const response = await this.httpClient.post<SwapEstimateResponse>('api/v1/fx/estimate', request);\n\n this.logger?.info('FX swap estimated successfully');\n return response;\n }\n\n /**\n * Executes the swap after the source tokens have been sent to the deposit address.\n */\n async execute(request: SwapExecuteRequest): Promise<SwapExecuteResponse> {\n this.logger?.info('Executing FX swap...');\n\n const response = await this.httpClient.post<SwapExecuteResponse>('api/v1/fx', request);\n\n this.logger?.info('FX swap executed successfully');\n return response;\n }\n}\n","import type { OAuth2TokenRequest, OAuth2TokenResponse } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Token Service - OAuth2 token endpoint.\n */\nexport class TokenService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Exchanges client credentials for a Wirex Partner access token.\n */\n async getToken(request: OAuth2TokenRequest): Promise<OAuth2TokenResponse> {\n this.logger?.info('Requesting OAuth2 token...');\n\n const response = await this.httpClient.post<OAuth2TokenResponse>('api/v1/token', request, {\n requireAuth: false,\n });\n\n this.logger?.info('OAuth2 token obtained successfully');\n return response;\n }\n}\n","import type {\n LoginCompanyParams,\n RegisterUserParams,\n RegisterCompanyParams,\n AuthResponse,\n RegisterUserResponse,\n AuthState,\n LoginUserParams,\n} from './types';\nimport type { HttpClient, Logger } from '../../core/index';\n\nimport { AuthenticationError, ValidationError } from '../../core/index';\n\nexport class AuthService {\n private static instance: AuthService | null = null;\n\n private readonly httpClient: HttpClient;\n private readonly logger?: Logger;\n private readonly chainId: number;\n\n private state: AuthState = {\n accessToken: null,\n expiresAt: null,\n userWallet: null,\n };\n\n private constructor(config: { httpClient: HttpClient; chainId: number; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.chainId = config.chainId;\n this.logger = config.logger;\n }\n\n static initialize(config: {\n httpClient: HttpClient;\n chainId: number;\n logger?: Logger;\n }): AuthService {\n if (!AuthService.instance) {\n AuthService.instance = new AuthService(config);\n }\n return AuthService.instance;\n }\n\n static getInstance(): AuthService {\n if (!AuthService.instance) {\n throw new AuthenticationError('AuthService not initialized. Call initialize() first.');\n }\n return AuthService.instance;\n }\n\n static resetInstance(): void {\n AuthService.instance = null;\n }\n\n static buildAuthHeaders(params: LoginUserParams): Record<string, string> {\n if (params.privy) {\n return {\n Authorization: `Bearer ${params.privy.accessToken}`,\n Identity: `Bearer ${params.privy.identityToken}`,\n };\n }\n\n if (params.authorizationToken) {\n return {\n Authorization: `Bearer ${params.authorizationToken}`,\n };\n }\n\n throw new ValidationError('Either privy or authorizationToken must be provided');\n }\n\n async login(params: LoginUserParams): Promise<AuthResponse> {\n this.logger?.info('Logging in user...');\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n if (params.userWallet) {\n authHeaders['X-User-Wallet'] = params.userWallet;\n this.state.userWallet = params.userWallet;\n }\n\n authHeaders['X-Chain-Id'] = String(this.chainId);\n\n try {\n const response = await this.httpClient.post<AuthResponse>(\n 'api/v1/user/authorize',\n {},\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.setAuthState(response);\n this.logger?.info('User logged in successfully');\n\n return response;\n } catch (error: any) {\n this.logger?.error('Login failed:', error?.message);\n throw error;\n }\n }\n\n async loginCompany(params: LoginCompanyParams): Promise<AuthResponse> {\n this.logger?.info('Logging in company...', { companyAddress: params.companyAddress });\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n const body = params.companyAddress ? { corporation_address: params.companyAddress } : undefined;\n\n const response = await this.httpClient.post<AuthResponse>(\n 'api/v1/corporations/login',\n body,\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.setAuthState(response);\n this.logger?.info('Company logged in successfully');\n\n return response;\n }\n\n async registerUser(params: RegisterUserParams): Promise<RegisterUserResponse> {\n this.logger?.info('Registering user...');\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n authHeaders['X-Chain-Id'] = String(this.chainId);\n\n if (params.privy) {\n if (params.userWallet) {\n authHeaders['X-User-Wallet'] = params.userWallet;\n }\n const response = await this.httpClient.post<RegisterUserResponse>(\n 'api/v1/user/retail',\n { country: params.country },\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.logger?.info('User registered successfully', { userId: response.id });\n return response;\n }\n\n try {\n const body: Record<string, unknown> = { wallet_address: params.userWallet };\n if (params.initialData) {\n body.initial_data = params.initialData;\n }\n\n const response = await this.httpClient.post<RegisterUserResponse>(\n 'api/v2/user',\n body,\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.logger?.info('User registered successfully', { userId: response.id });\n return response;\n } catch (error: any) {\n this.logger?.error('User registration failed:', error?.message);\n throw error;\n }\n }\n\n async registerCompany(params: RegisterCompanyParams): Promise<void> {\n this.logger?.info('Registering company...', { companyName: params.companyName });\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n await this.httpClient.post(\n 'api/v1/corporations/register',\n {\n corporation_address: params.companyAddress,\n corporation_name: params.companyName,\n corporation_registration_country: params.registrationCountry,\n corporation_registration_number: params.registrationNumber,\n },\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.logger?.info('Company registered successfully');\n }\n\n setAuthState(response: AuthResponse, userWallet?: string): void {\n this.state.accessToken = response.access_token;\n this.state.expiresAt = response.expires_at;\n if (userWallet) {\n this.state.userWallet = userWallet;\n }\n }\n\n setUserWallet(wallet: string): void {\n this.state.userWallet = wallet;\n }\n\n getAccessToken(): string | null {\n if (!this.state.accessToken) {\n return null;\n }\n\n if (this.isTokenExpired()) {\n this.logger?.warn('Access token has expired');\n this.clearAuth();\n return null;\n }\n\n return this.state.accessToken;\n }\n\n isAuthenticated(): boolean {\n return this.getAccessToken() !== null;\n }\n\n getUserWallet(): string | null {\n return this.state.userWallet;\n }\n\n private isTokenExpired(): boolean {\n if (!this.state.expiresAt) {\n return true;\n }\n const now = Math.floor(Date.now() / 1000);\n return this.state.expiresAt < now;\n }\n\n clearAuth(): void {\n this.state = {\n accessToken: null,\n expiresAt: null,\n userWallet: null,\n };\n this.logger?.info('Auth state cleared');\n }\n\n ensureAuthenticated(): void {\n if (!this.isAuthenticated()) {\n throw new AuthenticationError('User is not authenticated. Please login first.');\n }\n }\n\n getAuthHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n\n const token = this.getAccessToken();\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n if (this.state.userWallet) {\n headers['X-User-Wallet'] = this.state.userWallet;\n }\n\n return headers;\n }\n}\n","import type {\n UpdatePhoneNumberRequest,\n ConfirmPhoneNumberRequest,\n GetSharingTokenRequest,\n GetSharingTokenResponse,\n UpdateFreshdeskIdRequest,\n GetVerificationTokenResponse,\n CreateUserRequest,\n CreateUserResponse,\n SetSharingTokenRequest,\n SetSharingTokenResponse,\n CreateRetailUserRequest,\n CreateRetailUserResponse,\n ValidateRetailUserResponse,\n GetVerificationLinkResponse,\n AuthorizeUserResponse,\n UserV2,\n User,\n} from './types';\nimport type { LoginUserParams } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\nimport { AuthService } from '../../../auth/index';\n\n/**\n * User Service - User Management\n *\n * Handles user management operations with automatic authentication\n */\nexport class UserService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Initiates a phone number update for the authenticated user.\n */\n async updatePhoneNumber(request: UpdatePhoneNumberRequest): Promise<void> {\n this.logger?.info('Updating phone number...');\n\n await this.httpClient.put('api/v1/user/phone-number', request);\n\n this.logger?.info('Phone number updated successfully');\n }\n\n /**\n * Confirms and completes the phone number update with SMS verification code.\n */\n async confirmPhoneNumber(request: ConfirmPhoneNumberRequest): Promise<void> {\n this.logger?.info('Confirming phone number...');\n\n await this.httpClient.put('api/v1/user/phone-number/confirm', request);\n\n this.logger?.info('Phone number confirmed successfully');\n }\n\n /**\n * Uploads a KYC verification document using multipart/form-data.\n */\n async uploadDocument(formData: FormData): Promise<void> {\n this.logger?.info('Uploading document...');\n\n await this.httpClient.post('api/v1/user/documents', formData, {\n headers: { 'Content-Type': undefined },\n });\n\n this.logger?.info('Document uploaded successfully');\n }\n\n /**\n * Fetches the complete profile for the authenticated user (V1).\n */\n async getUser(): Promise<User> {\n this.logger?.info('Fetching user details...');\n\n const response = await this.httpClient.get<User>('api/v1/user');\n\n this.logger?.info('User details fetched successfully');\n return response;\n }\n\n /**\n * Associates a Freshdesk customer ID with the user's account.\n */\n async updateFreshdeskId(request: UpdateFreshdeskIdRequest): Promise<void> {\n this.logger?.info('Updating Freshdesk ID...');\n\n await this.httpClient.put('api/v1/user/freshdesk-id', request);\n\n this.logger?.info('Freshdesk ID updated successfully');\n }\n\n /**\n * Generates a temporary token for secure user data sharing with SumSub.\n */\n async getSharingToken(request: GetSharingTokenRequest): Promise<GetSharingTokenResponse> {\n this.logger?.info('Generating sharing token...');\n\n const response = await this.httpClient.get<GetSharingTokenResponse>(\n `api/v1/user/sharing-token?sumsub_client_id=${encodeURIComponent(request.sumsub_client_id)}`,\n );\n\n this.logger?.info('Sharing token generated successfully');\n return response;\n }\n\n /**\n * Generates an access token for SumSub KYC identity verification.\n */\n async getVerificationToken(): Promise<GetVerificationTokenResponse> {\n this.logger?.info('Getting verification token...');\n\n const response = await this.httpClient.post<GetVerificationTokenResponse>(\n 'api/v1/user/verification-token',\n {},\n );\n\n this.logger?.info('Verification token retrieved successfully');\n return response;\n }\n\n async createUser(request: CreateUserRequest): Promise<CreateUserResponse> {\n this.logger?.info('Creating user...');\n\n const response = await this.httpClient.post<CreateUserResponse>('api/v1/user', request);\n\n this.logger?.info('User created successfully');\n return response;\n }\n\n /**\n * Sets a KYC sharing token to ingest user data from SumSub.\n */\n async setSharingToken(request: SetSharingTokenRequest): Promise<SetSharingTokenResponse> {\n this.logger?.info('Setting sharing token...');\n\n const response = await this.httpClient.post<SetSharingTokenResponse>(\n 'api/v1/user/sharing-token',\n request,\n );\n\n this.logger?.info('Sharing token set successfully');\n return response;\n }\n\n /**\n * Creates a new retail user in the Wirex system using client-side Privy SDK authorization.\n */\n async createRetailUser(request: CreateRetailUserRequest): Promise<CreateRetailUserResponse> {\n this.logger?.info('Creating retail user...');\n\n const response = await this.httpClient.post<CreateRetailUserResponse>(\n 'api/v1/user/retail',\n request,\n );\n\n this.logger?.info('Retail user created successfully');\n return response;\n }\n\n /**\n * Validates a retail user in the Wirex system using client-side Privy SDK authorization.\n */\n async validateRetailUser(): Promise<ValidateRetailUserResponse> {\n this.logger?.info('Validating retail user...');\n\n const response = await this.httpClient.post<ValidateRetailUserResponse>(\n 'api/v1/user/retail/validate',\n {},\n );\n\n this.logger?.info('Retail user validated successfully');\n return response;\n }\n\n /**\n * Generates a verification link for the user to complete KYC via SumSub.\n */\n async getVerificationLink(): Promise<GetVerificationLinkResponse> {\n this.logger?.info('Getting verification link...');\n\n const response = await this.httpClient.post<GetVerificationLinkResponse>(\n 'api/v1/user/verification-link',\n {},\n );\n\n this.logger?.info('Verification link retrieved successfully');\n return response;\n }\n\n /**\n * Retrieves an access token for a specific user to interact with all other APIs on their behalf.\n */\n async authorizeUser(params: LoginUserParams): Promise<AuthorizeUserResponse> {\n this.logger?.info('Authorizing user...');\n\n const headers = AuthService.buildAuthHeaders(params);\n\n const response = await this.httpClient.post<AuthorizeUserResponse>(\n 'api/v1/user/authorize',\n {},\n {\n headers,\n requireAuth: false,\n },\n );\n\n this.authService.setAuthState(response);\n\n this.logger?.info('User authorized successfully');\n return response;\n }\n\n /**\n * Retrieves extended user account information (V2).\n */\n async getUserV2(): Promise<UserV2> {\n this.logger?.info('Fetching user details (v2)...');\n\n const response = await this.httpClient.get<UserV2>('api/v2/user');\n\n this.logger?.info('User details (v2) fetched successfully');\n return response;\n }\n}\n","import type { GetWalletRequest, WalletCreateGlobalRequest, WalletResponse } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\nimport type { EmptyResponse } from '../../types/common.types';\n\n/**\n * Wallet Service – wallet endpoints.\n */\nexport class WalletService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves a wallet and its balances. Optionally filtered by wallet address.\n */\n async getWallet(request?: GetWalletRequest): Promise<WalletResponse> {\n this.logger?.info('Fetching wallet...');\n\n const params: Record<string, unknown> = {};\n if (request?.wallet_address !== undefined) params.wallet_address = request.wallet_address;\n\n const response = await this.httpClient.get<WalletResponse>('api/v1/wallet', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Wallet fetched successfully');\n return response;\n }\n\n /**\n * Retrieves user wallets and their balances.\n */\n async getWallets(): Promise<WalletResponse> {\n this.logger?.info('Fetching wallets...');\n\n const response = await this.httpClient.get<WalletResponse>('api/v1/wallets');\n\n this.logger?.info('Wallets fetched successfully');\n return response;\n }\n\n /**\n * Creates a global wallet for the user account.\n */\n async createGlobalWallet(request: WalletCreateGlobalRequest): Promise<EmptyResponse> {\n this.logger?.info('Creating global wallet...');\n\n const response = await this.httpClient.post<EmptyResponse>('api/v1/wallets/global', request);\n\n this.logger?.info('Global wallet created successfully');\n return response;\n }\n}\n","import { ActivityService } from './activity/activity.service';\nimport { BankService } from './bank/bank.service';\nimport { CardsService } from './cards/cards.service';\nimport { ConfigService } from './config/config.service';\nimport { ConfirmationService } from './confirmation/confirmation.service';\nimport { RecipientsService } from './recipients/recipients.service';\nimport { RatesService } from './rates/rates.service';\nimport { SwapService } from './swap/swap.service';\nimport { TokenService } from './token/token.service';\nimport { UserService } from './user/user.service';\nimport { WalletService } from './wallet/wallet.service';\n\nimport type { SDKModule, ModuleContext } from '../../../core/index';\n\nimport { AuthService } from '../../auth/index';\n\nexport class BaasModule implements SDKModule {\n readonly name = 'baas';\n\n private readonly context: ModuleContext;\n private readonly logger;\n private _userService?: UserService;\n private _activityService?: ActivityService;\n private _bankService?: BankService;\n private _cardsService?: CardsService;\n private _configService?: ConfigService;\n private _confirmationService?: ConfirmationService;\n private _recipientsService?: RecipientsService;\n private _ratesService?: RatesService;\n private _swapService?: SwapService;\n private _tokenService?: TokenService;\n private _walletService?: WalletService;\n private _initialized = false;\n\n constructor(context: ModuleContext) {\n this.context = context;\n this.logger = context.logger;\n }\n\n async initialize(): Promise<void> {\n if (this._initialized) {\n this.logger.warn('BaasModule already initialized');\n return;\n }\n\n this.logger.info('Initializing BaasModule...');\n\n const httpClient = this.context.httpClient;\n\n const authService = AuthService.getInstance();\n\n this._userService = new UserService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._activityService = new ActivityService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._bankService = new BankService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._cardsService = new CardsService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._configService = new ConfigService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._confirmationService = new ConfirmationService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._recipientsService = new RecipientsService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._ratesService = new RatesService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._swapService = new SwapService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._tokenService = new TokenService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._walletService = new WalletService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._initialized = true;\n this.logger.info('BaasModule initialized successfully');\n }\n\n isInitialized(): boolean {\n return this._initialized;\n }\n\n get user(): UserService {\n if (!this._userService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._userService;\n }\n\n get activity(): ActivityService {\n if (!this._activityService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._activityService;\n }\n\n get bank(): BankService {\n if (!this._bankService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._bankService;\n }\n\n get cards(): CardsService {\n if (!this._cardsService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._cardsService;\n }\n\n get config(): ConfigService {\n if (!this._configService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._configService;\n }\n\n get confirmation(): ConfirmationService {\n if (!this._confirmationService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._confirmationService;\n }\n\n get recipients(): RecipientsService {\n if (!this._recipientsService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._recipientsService;\n }\n\n get rates(): RatesService {\n if (!this._ratesService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._ratesService;\n }\n\n get swap(): SwapService {\n if (!this._swapService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._swapService;\n }\n\n get token(): TokenService {\n if (!this._tokenService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._tokenService;\n }\n\n get wallet(): WalletService {\n if (!this._walletService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._walletService;\n }\n}\n","import type { HttpClient } from '../../../../core/index';\nimport type { WithdrawalRequest } from '../../../crypto/interfaces/index';\n\ninterface WithdrawalRequestsResponse {\n data: WithdrawalRequest[];\n}\n\nexport class WithdrawalApi {\n constructor(private readonly httpClient: HttpClient) {}\n\n async getWithdrawalRequests(): Promise<WithdrawalRequest[]> {\n const response = await this.httpClient.get<WithdrawalRequestsResponse>(\n 'api/v1/withdrawal/requests',\n );\n\n return response.data ?? [];\n }\n}\n","import { BaasModule } from './baas/baas.module';\nimport { WithdrawalApi } from './internal/endpoints/withdrawal.api';\n\nimport type { SDKModule, ModuleContext, Logger, HttpClient } from '../../core/index';\n\nexport class ApiModule implements SDKModule {\n readonly name = 'api';\n\n private readonly context: ModuleContext;\n private readonly logger: Logger;\n private readonly httpClient: HttpClient;\n\n private _withdrawal?: WithdrawalApi;\n private _baas?: BaasModule;\n private _initialized = false;\n\n constructor(context: ModuleContext) {\n this.context = context;\n this.logger = context.logger;\n\n this.httpClient = context.httpClient;\n }\n\n async initialize(): Promise<void> {\n if (this._initialized) {\n this.logger.warn('API module already initialized');\n return;\n }\n\n this.logger.info('Initializing API module...');\n\n this._withdrawal = new WithdrawalApi(this.httpClient);\n\n this._baas = new BaasModule(this.context);\n await this._baas.initialize();\n\n this._initialized = true;\n this.logger.info('API module initialized successfully');\n }\n\n isInitialized(): boolean {\n return this._initialized;\n }\n\n get baas(): BaasModule {\n if (!this._baas) {\n throw new Error('API module not initialized');\n }\n return this._baas;\n }\n\n get withdrawal(): WithdrawalApi {\n if (!this._withdrawal) {\n throw new Error('API module not initialized');\n }\n return this._withdrawal;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/modules/api/baas/activity/activity.service.ts","../src/modules/api/baas/bank/bank.service.ts","../src/modules/api/baas/cards/cards.service.ts","../src/modules/api/baas/config/config.service.ts","../src/modules/api/baas/confirmation/confirmation.service.ts","../src/modules/api/baas/recipients/recipients.service.ts","../src/modules/api/baas/rates/rates.service.ts","../src/modules/api/baas/swap/swap.service.ts","../src/modules/api/baas/token/token.service.ts","../src/modules/auth/auth.service.ts","../src/modules/api/baas/user/user.service.ts","../src/modules/api/baas/wallet/wallet.service.ts","../src/modules/api/baas/baas.module.ts","../src/modules/api/internal/endpoints/withdrawal.api.ts","../src/modules/api/api.module.ts"],"names":[],"mappings":"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","file":"chunk-D2YHFKQI.js","sourcesContent":["import type {\n GetActivityFeedRequest,\n GetActivityByIdRequest,\n GetFullStatementRequest,\n ActivityFeedResponse,\n ActivityItem,\n ActivityFullStatementResponse,\n RequestedErcWithdrawalsResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Activity Service – activity feed and statement endpoints.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class ActivityService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves activity feed with optional pagination and filters.\n */\n async getFeed(request?: GetActivityFeedRequest): Promise<ActivityFeedResponse> {\n this.logger?.info('Fetching activity feed...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n if (request?.subject) params.subject = request.subject;\n if (request?.types?.length) params.types = request.types;\n\n const response = await this.httpClient.get<ActivityFeedResponse>('api/v1/activity/feed', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Activity feed fetched successfully');\n return response;\n }\n\n /**\n * Retrieves a single activity item by id.\n */\n async getById(request: GetActivityByIdRequest): Promise<ActivityItem> {\n this.logger?.info('Fetching activity by id...');\n\n const response = await this.httpClient.get<ActivityItem>(\n `api/v1/activity/single/${encodeURIComponent(request.id)}`,\n );\n\n this.logger?.info('Activity fetched successfully');\n return response;\n }\n\n /**\n * Retrieves full statement for the given date range (Unix timestamps).\n */\n async getFullStatement(request: GetFullStatementRequest): Promise<ActivityFullStatementResponse> {\n this.logger?.info('Fetching full statement...');\n\n const response = await this.httpClient.post<ActivityFullStatementResponse>(\n 'api/v1/activity/statement/full',\n request,\n );\n\n this.logger?.info('Full statement fetched successfully');\n return response;\n }\n\n /**\n * Retrieves requested ERC withdrawals for the authenticated account.\n */\n async getRequestedErcWithdrawals(): Promise<RequestedErcWithdrawalsResponse> {\n this.logger?.info('Fetching requested ERC withdrawals...');\n\n const response = await this.httpClient.get<RequestedErcWithdrawalsResponse>('api/v1/withdrawal/requests');\n\n this.logger?.info('Requested ERC withdrawals fetched successfully');\n return response;\n }\n}\n","import type {\n GetBankAccountsRequest,\n ActivateBankAccountRequest,\n EstimateTransferRequest,\n ExecuteTransferRequest,\n CorridorEstimateRequest,\n CorridorTransferRequest,\n BankAccountsResponse,\n ActivateBankAccountResponse,\n EstimateTransferResponse,\n ExecuteTransferResponse,\n BankCorridorEstimateResponse,\n BankCorridorExecuteResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Bank Service – bank accounts and transfer endpoints.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class BankService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves a list of bank accounts that belong to the user.\n */\n async getAccounts(request?: GetBankAccountsRequest): Promise<BankAccountsResponse> {\n this.logger?.info('Fetching bank accounts...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<BankAccountsResponse>('api/v1/bank/accounts', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Bank accounts fetched successfully');\n return response;\n }\n\n /**\n * Activates bank account details for the specified account type.\n */\n async activateAccount(request: ActivateBankAccountRequest): Promise<ActivateBankAccountResponse> {\n this.logger?.info('Activating bank account...');\n\n const response = await this.httpClient.post<ActivateBankAccountResponse>(\n 'api/v1/bank/accounts',\n request,\n );\n\n this.logger?.info('Bank account activated successfully');\n return response;\n }\n\n /**\n * Estimates the amounts that would be charged for a bank transfer according to the current market rates.\n */\n async estimateTransfer(request: EstimateTransferRequest): Promise<EstimateTransferResponse> {\n this.logger?.info('Estimating bank transfer...');\n\n const response = await this.httpClient.post<EstimateTransferResponse>(\n 'api/v1/bank/transfer/estimate',\n request,\n );\n\n this.logger?.info('Bank transfer estimated successfully');\n return response;\n }\n\n /**\n * Executes the bank transfer either according to the estimation made previously or using current market rates.\n */\n async executeTransfer(request: ExecuteTransferRequest): Promise<ExecuteTransferResponse> {\n this.logger?.info('Executing bank transfer...');\n\n const response = await this.httpClient.post<ExecuteTransferResponse>(\n 'api/v1/bank/transfer',\n request,\n );\n\n this.logger?.info('Bank transfer executed successfully');\n return response;\n }\n\n /**\n * Estimates the amounts for a bank transfer via specified corridor.\n */\n async estimateCorridorTransferV2(\n corridor: string,\n request: CorridorEstimateRequest,\n ): Promise<BankCorridorEstimateResponse> {\n this.logger?.info('Estimating corridor transfer...');\n\n const response = await this.httpClient.post<BankCorridorEstimateResponse>(\n `api/v2/bank/${encodeURIComponent(corridor)}/estimate`,\n request,\n );\n\n this.logger?.info('Corridor transfer estimated successfully');\n return response;\n }\n\n /**\n * Executes transfer using estimation_id. All recipient details resolved from stored estimation.\n */\n async executeCorridorTransferV2(\n corridor: string,\n request: CorridorTransferRequest,\n ): Promise<BankCorridorExecuteResponse> {\n this.logger?.info('Executing corridor transfer...');\n\n const response = await this.httpClient.post<BankCorridorExecuteResponse>(\n `api/v2/bank/${encodeURIComponent(corridor)}`,\n request,\n );\n\n this.logger?.info('Corridor transfer executed successfully');\n return response;\n }\n}\n","import type {\n CardActivateRequestBody,\n CardDetailsGetCvvRequestBody,\n CardDetailsGetDetailsRequestBody,\n CardDetailsGetPinRequestBody,\n CardFeesCreateInvoiceRequestBody,\n CardIssuePlasticRequest,\n CardIssueVirtualRequest,\n CardLimitChangeRequestBody,\n CardNameChangeRequestBody,\n CardTransferEstimateRequest,\n CardTransferExecuteRequest,\n CardWithdrawalEstimateRequestBody,\n CardWithdrawalExecuteRequestBody,\n CardFormat,\n CardDeliveryMethod,\n CardDetailsCvvResponse,\n CardDetailsPanExpiryResponse,\n CardDetailsPinResponse,\n CardFeesInvoiceResponse,\n CardFeesOrderResponse,\n CardIssueResponse,\n CardResponse,\n CardTransactionConfirmationResponse,\n CardTransferEstimateResponse,\n CardTransferExecuteResponse,\n CardWithdrawalEstimateResponse,\n CardWithdrawalExecuteResponse,\n CardsResponse,\n CardTransactionsResponse,\n GetCardTransactionsRequest,\n GetCardsRequest,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\nimport type { EmptyResponse } from '../../types/common.types';\n\n/**\n * Cards Service – card issuance, management, and transfers.\n */\nexport class CardsService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves list of cards that belong to the user.\n */\n async getCards(request?: GetCardsRequest): Promise<CardsResponse> {\n this.logger?.info('Fetching cards...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<CardsResponse>('api/v1/cards', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Cards fetched successfully');\n return response;\n }\n\n /**\n * Retrieves a page of card transactions associated with the user.\n */\n async getCardTransactions(request?: GetCardTransactionsRequest): Promise<CardTransactionsResponse> {\n this.logger?.info('Fetching card transactions...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<CardTransactionsResponse>('api/v1/transactions/card', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Card transactions fetched successfully');\n return response;\n }\n\n /**\n * Retrieves single card by its id.\n */\n async getCard(cardId: string): Promise<CardResponse> {\n this.logger?.info('Fetching card...');\n\n const response = await this.httpClient.get<CardResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}`,\n );\n\n this.logger?.info('Card fetched successfully');\n return response;\n }\n\n /**\n * Retrieves active 3DS requests that need to be either approved or declined.\n */\n async getActive3dsRequests(): Promise<CardTransactionConfirmationResponse[]> {\n this.logger?.info('Fetching active 3DS requests...');\n\n const response = await this.httpClient.get<CardTransactionConfirmationResponse[]>(\n 'api/v1/cards/3ds/requests',\n );\n\n this.logger?.info('Active 3DS requests fetched successfully');\n return response;\n }\n\n /**\n * Approves 3DS request allowing the transaction to proceed.\n */\n async approve3dsRequest(transactionId: string): Promise<EmptyResponse> {\n this.logger?.info('Approving 3DS request...');\n\n const response = await this.httpClient.post<EmptyResponse>(\n `api/v1/cards/3ds/requests/${encodeURIComponent(transactionId)}/approve`,\n );\n\n this.logger?.info('3DS request approved successfully');\n return response;\n }\n\n /**\n * Declines 3DS request blocking the transaction from proceeding.\n */\n async decline3dsRequest(transactionId: string): Promise<EmptyResponse> {\n this.logger?.info('Declining 3DS request...');\n\n const response = await this.httpClient.post<EmptyResponse>(\n `api/v1/cards/3ds/requests/${encodeURIComponent(transactionId)}/decline`,\n );\n\n this.logger?.info('3DS request declined successfully');\n return response;\n }\n\n /**\n * Retrieves list of countries where the card can be delivered for the current corporation.\n */\n async getDeliveryCountries(): Promise<string[]> {\n this.logger?.info('Fetching delivery countries...');\n\n const response = await this.httpClient.get<string[]>('api/v1/cards/delivery/countries');\n\n this.logger?.info('Delivery countries fetched successfully');\n return response;\n }\n\n /**\n * Retrieves list of courier providers that can deliver the card to the specified country.\n */\n async getDeliveryMethods(country: string): Promise<CardDeliveryMethod[]> {\n this.logger?.info('Fetching delivery methods...');\n\n const response = await this.httpClient.get<CardDeliveryMethod[]>(\n `api/v1/cards/delivery/methods/${encodeURIComponent(country)}`,\n );\n\n this.logger?.info('Delivery methods fetched successfully');\n return response;\n }\n\n /**\n * Issues a plastic card for the specified user and sends it to the provided address.\n */\n async issuePlasticCard(request: CardIssuePlasticRequest): Promise<CardIssueResponse> {\n this.logger?.info('Issuing plastic card...');\n\n const response = await this.httpClient.post<CardIssueResponse>('api/v1/cards/plastic', request);\n\n this.logger?.info('Plastic card issued successfully');\n return response;\n }\n\n /**\n * Issues a virtual card for the specified user.\n */\n async issueVirtualCard(request: CardIssueVirtualRequest): Promise<CardIssueResponse> {\n this.logger?.info('Issuing virtual card...');\n\n const response = await this.httpClient.post<CardIssueResponse>('api/v1/cards/virtual', request);\n\n this.logger?.info('Virtual card issued successfully');\n return response;\n }\n\n /**\n * Activates a card that has been issued to a user and is currently in NotActivated state.\n */\n async activateCard(cardId: string, request: CardActivateRequestBody): Promise<EmptyResponse> {\n this.logger?.info('Activating card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/activate`,\n request,\n );\n\n this.logger?.info('Card activated successfully');\n return response;\n }\n\n /**\n * Blocks selected card making it impossible to use it for any transactions.\n */\n async blockCard(cardId: string): Promise<EmptyResponse> {\n this.logger?.info('Blocking card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/block`,\n );\n\n this.logger?.info('Card blocked successfully');\n return response;\n }\n\n /**\n * Unblocks selected card allowing it to be used for transactions once again.\n */\n async unblockCard(cardId: string): Promise<EmptyResponse> {\n this.logger?.info('Unblocking card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/unblock`,\n );\n\n this.logger?.info('Card unblocked successfully');\n return response;\n }\n\n /**\n * Closes the card. This action cannot be undone and the card will be permanently closed.\n */\n async closeCard(cardId: string): Promise<EmptyResponse> {\n this.logger?.info('Closing card...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/close`,\n );\n\n this.logger?.info('Card closed successfully');\n return response;\n }\n\n /**\n * Retrieves card PAN and expiry date using the action confirmation token.\n */\n async getCardDetails(\n cardId: string,\n request: CardDetailsGetDetailsRequestBody,\n ): Promise<CardDetailsPanExpiryResponse> {\n this.logger?.info('Fetching card details...');\n\n const response = await this.httpClient.post<CardDetailsPanExpiryResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/details`,\n request,\n );\n\n this.logger?.info('Card details fetched successfully');\n return response;\n }\n\n /**\n * Retrieves CVV code for the card using the action confirmation token.\n */\n async getCardCvv(\n cardId: string,\n request: CardDetailsGetCvvRequestBody,\n ): Promise<CardDetailsCvvResponse> {\n this.logger?.info('Fetching card CVV...');\n\n const response = await this.httpClient.post<CardDetailsCvvResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/cvv`,\n request,\n );\n\n this.logger?.info('Card CVV fetched successfully');\n return response;\n }\n\n /**\n * Retrieves card Pin code using the action confirmation token.\n */\n async getCardPin(\n cardId: string,\n request: CardDetailsGetPinRequestBody,\n ): Promise<CardDetailsPinResponse> {\n this.logger?.info('Fetching card PIN...');\n\n const response = await this.httpClient.post<CardDetailsPinResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/pin`,\n request,\n );\n\n this.logger?.info('Card PIN fetched successfully');\n return response;\n }\n\n /**\n * Updates maximum amount that can be spent using the card within a day.\n */\n async changeCardLimit(\n cardId: string,\n request: CardLimitChangeRequestBody,\n ): Promise<EmptyResponse> {\n this.logger?.info('Changing card limit...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/limit`,\n request,\n );\n\n this.logger?.info('Card limit changed successfully');\n return response;\n }\n\n /**\n * Updates the display name of the card.\n */\n async changeCardName(cardId: string, request: CardNameChangeRequestBody): Promise<EmptyResponse> {\n this.logger?.info('Changing card name...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/name`,\n request,\n );\n\n this.logger?.info('Card name changed successfully');\n return response;\n }\n\n /**\n * Creates a new card transfer estimation.\n */\n async estimateCardTransfer(\n request: CardTransferEstimateRequest,\n ): Promise<CardTransferEstimateResponse> {\n this.logger?.info('Estimating card transfer...');\n\n const response = await this.httpClient.post<CardTransferEstimateResponse>(\n 'api/v1/cards/transfer/estimate',\n request,\n );\n\n this.logger?.info('Card transfer estimated successfully');\n return response;\n }\n\n /**\n * Executes the estimated card transfer request.\n */\n async executeCardTransfer(\n request: CardTransferExecuteRequest,\n ): Promise<CardTransferExecuteResponse> {\n this.logger?.info('Executing card transfer...');\n\n const response = await this.httpClient.post<CardTransferExecuteResponse>(\n 'api/v1/cards/transfer',\n request,\n );\n\n this.logger?.info('Card transfer executed successfully');\n return response;\n }\n\n /**\n * Creates a new withdrawal estimation for the card.\n */\n async estimateCardWithdrawal(\n cardId: string,\n request: CardWithdrawalEstimateRequestBody,\n ): Promise<CardWithdrawalEstimateResponse> {\n this.logger?.info('Estimating card withdrawal...');\n\n const response = await this.httpClient.post<CardWithdrawalEstimateResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/withdraw/estimate`,\n request,\n );\n\n this.logger?.info('Card withdrawal estimated successfully');\n return response;\n }\n\n /**\n * Executes the estimated withdrawal request for the card.\n */\n async executeCardWithdrawal(\n cardId: string,\n request: CardWithdrawalExecuteRequestBody,\n ): Promise<CardWithdrawalExecuteResponse> {\n this.logger?.info('Executing card withdrawal...');\n\n const response = await this.httpClient.post<CardWithdrawalExecuteResponse>(\n `api/v1/cards/${encodeURIComponent(cardId)}/withdraw/execute`,\n request,\n );\n\n this.logger?.info('Card withdrawal executed successfully');\n return response;\n }\n\n /**\n * Retrieves estimation of fees that should be paid for the card order.\n */\n async getOrderFees(type: CardFormat, country: string): Promise<CardFeesOrderResponse> {\n this.logger?.info('Fetching card order fees...');\n\n const response = await this.httpClient.get<CardFeesOrderResponse>(\n `api/v1/cards/${encodeURIComponent(type)}/fees/${encodeURIComponent(country)}`,\n );\n\n this.logger?.info('Card order fees fetched successfully');\n return response;\n }\n\n /**\n * Creates an invoice for payment of the card order fees.\n */\n async createOrderFeesInvoice(\n type: CardFormat,\n country: string,\n request: CardFeesCreateInvoiceRequestBody,\n ): Promise<CardFeesInvoiceResponse> {\n this.logger?.info('Creating card order fees invoice...');\n\n const response = await this.httpClient.post<CardFeesInvoiceResponse>(\n `api/v1/cards/${encodeURIComponent(type)}/fees/${encodeURIComponent(country)}/payment`,\n request,\n );\n\n this.logger?.info('Card order fees invoice created successfully');\n return response;\n }\n}\n","import type { ClientAppConfig } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Config Service - application configuration endpoints.\n */\nexport class ConfigService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves application configuration values for a partner application.\n */\n async getConfig(): Promise<ClientAppConfig> {\n this.logger?.info('Fetching application configuration...');\n\n const response = await this.httpClient.get<ClientAppConfig>('api/v1/config', {\n requireAuth: false,\n });\n\n this.logger?.info('Application configuration fetched successfully');\n return response;\n }\n}\n","import type {\n ActionConfirmationCreateTokenRequest,\n ActionConfirmationCreateSmsRequest,\n ActionConfirmationVerifySmsRequest,\n ActionConfirmationSmsSessionResponse,\n ActionTokenResponse,\n TokenResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Confirmation Service - action confirmation endpoints.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class ConfirmationService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Exchanges wallet signature for an action token.\n */\n async verifySignature(request: ActionConfirmationCreateTokenRequest): Promise<ActionTokenResponse> {\n this.logger?.info('Verifying wallet signature...');\n\n const response = await this.httpClient.post<ActionTokenResponse>(\n 'api/v1/confirmation/signature/verify',\n request,\n );\n\n this.logger?.info('Wallet signature verified successfully');\n return response;\n }\n\n /**\n * Sends SMS with OTP code to the user.\n */\n async requestSms(request: ActionConfirmationCreateSmsRequest): Promise<ActionConfirmationSmsSessionResponse> {\n this.logger?.info('Requesting SMS confirmation...');\n\n const response = await this.httpClient.post<ActionConfirmationSmsSessionResponse>(\n 'api/v1/confirmation/sms',\n request,\n );\n\n this.logger?.info('SMS confirmation requested successfully');\n return response;\n }\n\n /**\n * Exchanges SMS OTP code for an action token.\n */\n async verifySms(request: ActionConfirmationVerifySmsRequest): Promise<TokenResponse> {\n this.logger?.info('Verifying SMS code...');\n\n const response = await this.httpClient.post<TokenResponse>('api/v1/confirmation/sms/verify', request);\n\n this.logger?.info('SMS code verified successfully');\n return response;\n }\n}\n","import type {\n GetRecipientsRequest,\n GetRecipientsByCatalogRequest,\n GetRecipientsByCurrencyRequest,\n GetRecipientsByNameRequest,\n GetRecipientsByTypeRequest,\n RecipientCreateRequest,\n RecipientCreateRequestV2,\n RecipientUpdateRequestBody,\n RecipientCreateDetailsRequestBody,\n RecipientUpdateDetailsRequestBody,\n RecipientResponse,\n RecipientsResponse,\n RecipientPaymentDetailsResponse,\n} from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\nimport type { EmptyResponse } from '../../types/common.types';\n\n/**\n * Recipients Service – recipients and payment details endpoints.\n */\nexport class RecipientsService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves all recipients with optional pagination and sorting.\n */\n async getRecipients(request?: GetRecipientsRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients...');\n\n const params: Record<string, unknown> = {};\n if (request?.page_number !== undefined) params.page_number = request.page_number;\n if (request?.page_size !== undefined) params.page_size = request.page_size;\n if (request?.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Recipients fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by catalog index (first letter of full name).\n */\n async getRecipientsByCatalog(request: GetRecipientsByCatalogRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by catalog...');\n\n const params: Record<string, unknown> = {\n catalog_index: request.catalog_index,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/catalog', {\n params,\n });\n\n this.logger?.info('Recipients by catalog fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by currency.\n */\n async getRecipientsByCurrency(request: GetRecipientsByCurrencyRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by currency...');\n\n const params: Record<string, unknown> = {\n currency: request.currency,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/currency', {\n params,\n });\n\n this.logger?.info('Recipients by currency fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by name substring.\n */\n async getRecipientsByName(request: GetRecipientsByNameRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by name...');\n\n const params: Record<string, unknown> = {\n name: request.name,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/name', {\n params,\n });\n\n this.logger?.info('Recipients by name fetched successfully');\n return response;\n }\n\n /**\n * Retrieves recipients filtered by payment details type.\n */\n async getRecipientsByType(request: GetRecipientsByTypeRequest): Promise<RecipientsResponse> {\n this.logger?.info('Fetching recipients by type...');\n\n const params: Record<string, unknown> = {\n type: request.type,\n };\n if (request.page_number !== undefined) params.page_number = request.page_number;\n if (request.page_size !== undefined) params.page_size = request.page_size;\n if (request.sort) params.sort = request.sort;\n\n const response = await this.httpClient.get<RecipientsResponse>('api/v1/recipients/filter/type', {\n params,\n });\n\n this.logger?.info('Recipients by type fetched successfully');\n return response;\n }\n\n /**\n * Creates a new recipient with provided personal information.\n */\n async createRecipient(request: RecipientCreateRequest): Promise<RecipientResponse> {\n this.logger?.info('Creating recipient...');\n\n const response = await this.httpClient.post<RecipientResponse>('api/v1/recipients', request);\n\n this.logger?.info('Recipient created successfully');\n return response;\n }\n\n /**\n * Creates a recipient with personal info and payment details in a single call.\n */\n async createRecipientV2(request: RecipientCreateRequestV2): Promise<RecipientResponse> {\n this.logger?.info('Creating recipient (v2)...');\n\n const response = await this.httpClient.post<RecipientResponse>('api/v2/recipients', request);\n\n this.logger?.info('Recipient (v2) created successfully');\n return response;\n }\n\n /**\n * Retrieves a single recipient by its ID.\n */\n async getRecipientById(recipientId: string): Promise<RecipientResponse> {\n this.logger?.info('Fetching recipient by id...');\n\n const response = await this.httpClient.get<RecipientResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}`,\n );\n\n this.logger?.info('Recipient fetched successfully');\n return response;\n }\n\n /**\n * Updates recipient with provided personal information.\n */\n async updateRecipient(recipientId: string, request: RecipientUpdateRequestBody): Promise<EmptyResponse> {\n this.logger?.info('Updating recipient...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}`,\n request,\n );\n\n this.logger?.info('Recipient updated successfully');\n return response;\n }\n\n /**\n * Deletes selected recipient.\n */\n async deleteRecipient(recipientId: string): Promise<EmptyResponse> {\n this.logger?.info('Deleting recipient...');\n\n const response = await this.httpClient.delete<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}`,\n );\n\n this.logger?.info('Recipient deleted successfully');\n return response;\n }\n\n /**\n * Creates new payment details for existing recipient.\n */\n async createRecipientPaymentDetails(\n recipientId: string,\n request: RecipientCreateDetailsRequestBody,\n ): Promise<RecipientPaymentDetailsResponse> {\n this.logger?.info('Creating recipient payment details...');\n\n const response = await this.httpClient.post<RecipientPaymentDetailsResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/payment_details`,\n request,\n );\n\n this.logger?.info('Recipient payment details created successfully');\n return response;\n }\n\n /**\n * Updates existing payment details for existing recipient.\n */\n async updateRecipientPaymentDetails(\n recipientId: string,\n paymentDetailsId: string,\n request: RecipientUpdateDetailsRequestBody,\n ): Promise<EmptyResponse> {\n this.logger?.info('Updating recipient payment details...');\n\n const response = await this.httpClient.put<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/payment_details/${encodeURIComponent(\n paymentDetailsId,\n )}`,\n request,\n );\n\n this.logger?.info('Recipient payment details updated successfully');\n return response;\n }\n\n /**\n * Deletes payment details from existing recipient.\n */\n async deleteRecipientPaymentDetails(\n recipientId: string,\n paymentDetailsId: string,\n ): Promise<EmptyResponse> {\n this.logger?.info('Deleting recipient payment details...');\n\n const response = await this.httpClient.delete<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/payment_details/${encodeURIComponent(\n paymentDetailsId,\n )}`,\n );\n\n this.logger?.info('Recipient payment details deleted successfully');\n return response;\n }\n\n /**\n * Increments usage index on specified recipient.\n */\n async incrementRecipientUsage(recipientId: string): Promise<EmptyResponse> {\n this.logger?.info('Incrementing recipient usage...');\n\n const response = await this.httpClient.post<EmptyResponse>(\n `api/v1/recipients/${encodeURIComponent(recipientId)}/usage`,\n );\n\n this.logger?.info('Recipient usage incremented successfully');\n return response;\n }\n}\n","import type { GetRatesRequest, RatesResponse } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Rates Service - exchange rates endpoints.\n */\nexport class RatesService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves real-time exchange rates for a list of provided tickers.\n */\n async getRates(request: GetRatesRequest): Promise<RatesResponse> {\n this.logger?.info('Fetching exchange rates...');\n\n const query = new URLSearchParams();\n if (request?.tickers?.length) {\n request.tickers.forEach((ticker) => query.append('tickers', ticker));\n }\n\n const url = query.toString() ? `api/v1/rates?${query.toString()}` : 'api/v1/rates';\n const response = await this.httpClient.get<RatesResponse>(url);\n\n this.logger?.info('Exchange rates fetched successfully');\n return response;\n }\n}\n","import type { HttpClient, Logger } from '../../../../core/index';\nimport type { AuthService } from '../../../auth/index';\nimport type {\n SwapEstimateRequest,\n SwapEstimateResponse,\n SwapExecuteRequest,\n SwapExecuteResponse,\n} from './types';\n\n/**\n * Swap Service – Circle FX stablecoin swaps.\n * Two-step flow: estimate (issues a deposit address) → on-chain payment → execute.\n * Auth is handled by HttpClient (no per-call auth or headers).\n */\nexport class SwapService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Creates a swap estimation with a deposit address for a Circle FX stablecoin swap.\n * Send exactly one of source_asset_amount / destination_asset_amount.\n */\n async estimate(request: SwapEstimateRequest): Promise<SwapEstimateResponse> {\n this.logger?.info('Estimating FX swap...');\n\n const response = await this.httpClient.post<SwapEstimateResponse>('api/v1/fx/estimate', request);\n\n this.logger?.info('FX swap estimated successfully');\n return response;\n }\n\n /**\n * Executes the swap after the source tokens have been sent to the deposit address.\n */\n async execute(request: SwapExecuteRequest): Promise<SwapExecuteResponse> {\n this.logger?.info('Executing FX swap...');\n\n const response = await this.httpClient.post<SwapExecuteResponse>('api/v1/fx', request);\n\n this.logger?.info('FX swap executed successfully');\n return response;\n }\n}\n","import type { OAuth2TokenRequest, OAuth2TokenResponse } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\n/**\n * Token Service - OAuth2 token endpoint.\n */\nexport class TokenService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Exchanges client credentials for a Wirex Partner access token.\n */\n async getToken(request: OAuth2TokenRequest): Promise<OAuth2TokenResponse> {\n this.logger?.info('Requesting OAuth2 token...');\n\n const response = await this.httpClient.post<OAuth2TokenResponse>('api/v1/token', request, {\n requireAuth: false,\n });\n\n this.logger?.info('OAuth2 token obtained successfully');\n return response;\n }\n}\n","import type {\n LoginCompanyParams,\n RegisterUserParams,\n RegisterCompanyParams,\n AuthResponse,\n RegisterUserResponse,\n AuthState,\n LoginUserParams,\n} from './types';\nimport type { HttpClient, Logger } from '../../core/index';\n\nimport { AuthenticationError, ValidationError } from '../../core/index';\n\nexport class AuthService {\n private static instance: AuthService | null = null;\n\n private readonly httpClient: HttpClient;\n private readonly logger?: Logger;\n private readonly chainId: number;\n\n private state: AuthState = {\n accessToken: null,\n expiresAt: null,\n userWallet: null,\n };\n\n private constructor(config: { httpClient: HttpClient; chainId: number; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.chainId = config.chainId;\n this.logger = config.logger;\n }\n\n static initialize(config: {\n httpClient: HttpClient;\n chainId: number;\n logger?: Logger;\n }): AuthService {\n if (!AuthService.instance) {\n AuthService.instance = new AuthService(config);\n }\n return AuthService.instance;\n }\n\n static getInstance(): AuthService {\n if (!AuthService.instance) {\n throw new AuthenticationError('AuthService not initialized. Call initialize() first.');\n }\n return AuthService.instance;\n }\n\n static resetInstance(): void {\n AuthService.instance = null;\n }\n\n static buildAuthHeaders(params: LoginUserParams): Record<string, string> {\n if (params.privy) {\n return {\n Authorization: `Bearer ${params.privy.accessToken}`,\n Identity: `Bearer ${params.privy.identityToken}`,\n };\n }\n\n if (params.authorizationToken) {\n return {\n Authorization: `Bearer ${params.authorizationToken}`,\n };\n }\n\n throw new ValidationError('Either privy or authorizationToken must be provided');\n }\n\n async login(params: LoginUserParams): Promise<AuthResponse> {\n this.logger?.info('Logging in user...');\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n if (params.userWallet) {\n authHeaders['X-User-Wallet'] = params.userWallet;\n this.state.userWallet = params.userWallet;\n }\n\n authHeaders['X-Chain-Id'] = String(this.chainId);\n\n try {\n const response = await this.httpClient.post<AuthResponse>(\n 'api/v1/user/authorize',\n {},\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.setAuthState(response);\n this.logger?.info('User logged in successfully');\n\n return response;\n } catch (error: any) {\n this.logger?.error('Login failed:', error?.message);\n throw error;\n }\n }\n\n async loginCompany(params: LoginCompanyParams): Promise<AuthResponse> {\n this.logger?.info('Logging in company...', { companyAddress: params.companyAddress });\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n const body = params.companyAddress ? { corporation_address: params.companyAddress } : undefined;\n\n const response = await this.httpClient.post<AuthResponse>(\n 'api/v1/corporations/login',\n body,\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.setAuthState(response);\n this.logger?.info('Company logged in successfully');\n\n return response;\n }\n\n async registerUser(params: RegisterUserParams): Promise<RegisterUserResponse> {\n this.logger?.info('Registering user...');\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n authHeaders['X-Chain-Id'] = String(this.chainId);\n\n if (params.privy) {\n if (params.userWallet) {\n authHeaders['X-User-Wallet'] = params.userWallet;\n }\n const response = await this.httpClient.post<RegisterUserResponse>(\n 'api/v1/user/retail',\n { country: params.country },\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.logger?.info('User registered successfully', { userId: response.id });\n return response;\n }\n\n try {\n const body: Record<string, unknown> = { wallet_address: params.userWallet };\n if (params.initialData) {\n body.initial_data = params.initialData;\n }\n\n const response = await this.httpClient.post<RegisterUserResponse>(\n 'api/v2/user',\n body,\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.logger?.info('User registered successfully', { userId: response.id });\n return response;\n } catch (error: any) {\n this.logger?.error('User registration failed:', error?.message);\n throw error;\n }\n }\n\n async registerCompany(params: RegisterCompanyParams): Promise<void> {\n this.logger?.info('Registering company...', { companyName: params.companyName });\n\n const authHeaders = AuthService.buildAuthHeaders(params);\n\n await this.httpClient.post(\n 'api/v1/corporations/register',\n {\n corporation_address: params.companyAddress,\n corporation_name: params.companyName,\n corporation_registration_country: params.registrationCountry,\n corporation_registration_number: params.registrationNumber,\n },\n {\n headers: authHeaders,\n requireAuth: false,\n },\n );\n\n this.logger?.info('Company registered successfully');\n }\n\n setAuthState(response: AuthResponse, userWallet?: string): void {\n this.state.accessToken = response.access_token;\n this.state.expiresAt = response.expires_at;\n if (userWallet) {\n this.state.userWallet = userWallet;\n }\n }\n\n setUserWallet(wallet: string): void {\n this.state.userWallet = wallet;\n }\n\n getAccessToken(): string | null {\n if (!this.state.accessToken) {\n return null;\n }\n\n if (this.isTokenExpired()) {\n this.logger?.warn('Access token has expired');\n this.clearAuth();\n return null;\n }\n\n return this.state.accessToken;\n }\n\n isAuthenticated(): boolean {\n return this.getAccessToken() !== null;\n }\n\n getUserWallet(): string | null {\n return this.state.userWallet;\n }\n\n private isTokenExpired(): boolean {\n if (!this.state.expiresAt) {\n return true;\n }\n const now = Math.floor(Date.now() / 1000);\n return this.state.expiresAt < now;\n }\n\n clearAuth(): void {\n this.state = {\n accessToken: null,\n expiresAt: null,\n userWallet: null,\n };\n this.logger?.info('Auth state cleared');\n }\n\n ensureAuthenticated(): void {\n if (!this.isAuthenticated()) {\n throw new AuthenticationError('User is not authenticated. Please login first.');\n }\n }\n\n getAuthHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n\n const token = this.getAccessToken();\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n if (this.state.userWallet) {\n headers['X-User-Wallet'] = this.state.userWallet;\n }\n\n return headers;\n }\n}\n","import type {\n UpdatePhoneNumberRequest,\n ConfirmPhoneNumberRequest,\n GetSharingTokenRequest,\n GetSharingTokenResponse,\n UpdateFreshdeskIdRequest,\n GetVerificationTokenResponse,\n CreateUserRequest,\n CreateUserResponse,\n SetSharingTokenRequest,\n SetSharingTokenResponse,\n CreateRetailUserRequest,\n CreateRetailUserResponse,\n ValidateRetailUserResponse,\n GetVerificationLinkResponse,\n AuthorizeUserResponse,\n UserV2,\n User,\n} from './types';\nimport type { LoginUserParams } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\n\nimport { AuthService } from '../../../auth/index';\n\n/**\n * User Service - User Management\n *\n * Handles user management operations with automatic authentication\n */\nexport class UserService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Initiates a phone number update for the authenticated user.\n */\n async updatePhoneNumber(request: UpdatePhoneNumberRequest): Promise<void> {\n this.logger?.info('Updating phone number...');\n\n await this.httpClient.put('api/v1/user/phone-number', request);\n\n this.logger?.info('Phone number updated successfully');\n }\n\n /**\n * Confirms and completes the phone number update with SMS verification code.\n */\n async confirmPhoneNumber(request: ConfirmPhoneNumberRequest): Promise<void> {\n this.logger?.info('Confirming phone number...');\n\n await this.httpClient.put('api/v1/user/phone-number/confirm', request);\n\n this.logger?.info('Phone number confirmed successfully');\n }\n\n /**\n * Uploads a KYC verification document using multipart/form-data.\n */\n async uploadDocument(formData: FormData): Promise<void> {\n this.logger?.info('Uploading document...');\n\n await this.httpClient.post('api/v1/user/documents', formData, {\n headers: { 'Content-Type': undefined },\n });\n\n this.logger?.info('Document uploaded successfully');\n }\n\n /**\n * Fetches the complete profile for the authenticated user (V1).\n */\n async getUser(): Promise<User> {\n this.logger?.info('Fetching user details...');\n\n const response = await this.httpClient.get<User>('api/v1/user');\n\n this.logger?.info('User details fetched successfully');\n return response;\n }\n\n /**\n * Associates a Freshdesk customer ID with the user's account.\n */\n async updateFreshdeskId(request: UpdateFreshdeskIdRequest): Promise<void> {\n this.logger?.info('Updating Freshdesk ID...');\n\n await this.httpClient.put('api/v1/user/freshdesk-id', request);\n\n this.logger?.info('Freshdesk ID updated successfully');\n }\n\n /**\n * Generates a temporary token for secure user data sharing with SumSub.\n */\n async getSharingToken(request: GetSharingTokenRequest): Promise<GetSharingTokenResponse> {\n this.logger?.info('Generating sharing token...');\n\n const response = await this.httpClient.get<GetSharingTokenResponse>(\n `api/v1/user/sharing-token?sumsub_client_id=${encodeURIComponent(request.sumsub_client_id)}`,\n );\n\n this.logger?.info('Sharing token generated successfully');\n return response;\n }\n\n /**\n * Generates an access token for SumSub KYC identity verification.\n */\n async getVerificationToken(): Promise<GetVerificationTokenResponse> {\n this.logger?.info('Getting verification token...');\n\n const response = await this.httpClient.post<GetVerificationTokenResponse>(\n 'api/v1/user/verification-token',\n {},\n );\n\n this.logger?.info('Verification token retrieved successfully');\n return response;\n }\n\n async createUser(request: CreateUserRequest): Promise<CreateUserResponse> {\n this.logger?.info('Creating user...');\n\n const response = await this.httpClient.post<CreateUserResponse>('api/v1/user', request);\n\n this.logger?.info('User created successfully');\n return response;\n }\n\n /**\n * Sets a KYC sharing token to ingest user data from SumSub.\n */\n async setSharingToken(request: SetSharingTokenRequest): Promise<SetSharingTokenResponse> {\n this.logger?.info('Setting sharing token...');\n\n const response = await this.httpClient.post<SetSharingTokenResponse>(\n 'api/v1/user/sharing-token',\n request,\n );\n\n this.logger?.info('Sharing token set successfully');\n return response;\n }\n\n /**\n * Creates a new retail user in the Wirex system using client-side Privy SDK authorization.\n */\n async createRetailUser(request: CreateRetailUserRequest): Promise<CreateRetailUserResponse> {\n this.logger?.info('Creating retail user...');\n\n const response = await this.httpClient.post<CreateRetailUserResponse>(\n 'api/v1/user/retail',\n request,\n );\n\n this.logger?.info('Retail user created successfully');\n return response;\n }\n\n /**\n * Validates a retail user in the Wirex system using client-side Privy SDK authorization.\n */\n async validateRetailUser(): Promise<ValidateRetailUserResponse> {\n this.logger?.info('Validating retail user...');\n\n const response = await this.httpClient.post<ValidateRetailUserResponse>(\n 'api/v1/user/retail/validate',\n {},\n );\n\n this.logger?.info('Retail user validated successfully');\n return response;\n }\n\n /**\n * Generates a verification link for the user to complete KYC via SumSub.\n */\n async getVerificationLink(): Promise<GetVerificationLinkResponse> {\n this.logger?.info('Getting verification link...');\n\n const response = await this.httpClient.post<GetVerificationLinkResponse>(\n 'api/v1/user/verification-link',\n {},\n );\n\n this.logger?.info('Verification link retrieved successfully');\n return response;\n }\n\n /**\n * Retrieves an access token for a specific user to interact with all other APIs on their behalf.\n */\n async authorizeUser(params: LoginUserParams): Promise<AuthorizeUserResponse> {\n this.logger?.info('Authorizing user...');\n\n const headers = AuthService.buildAuthHeaders(params);\n\n const response = await this.httpClient.post<AuthorizeUserResponse>(\n 'api/v1/user/authorize',\n {},\n {\n headers,\n requireAuth: false,\n },\n );\n\n this.authService.setAuthState(response);\n\n this.logger?.info('User authorized successfully');\n return response;\n }\n\n /**\n * Retrieves extended user account information (V2).\n */\n async getUserV2(): Promise<UserV2> {\n this.logger?.info('Fetching user details (v2)...');\n\n const response = await this.httpClient.get<UserV2>('api/v2/user');\n\n this.logger?.info('User details (v2) fetched successfully');\n return response;\n }\n}\n","import type { GetWalletRequest, WalletCreateGlobalRequest, WalletResponse } from './types';\nimport type { AuthService } from '../../../auth/index';\nimport type { HttpClient, Logger } from '../../../../core/index';\nimport type { EmptyResponse } from '../../types/common.types';\n\n/**\n * Wallet Service – wallet endpoints.\n */\nexport class WalletService {\n private readonly httpClient: HttpClient;\n private readonly authService: AuthService;\n private readonly logger?: Logger;\n\n constructor(config: { httpClient: HttpClient; authService: AuthService; logger?: Logger }) {\n this.httpClient = config.httpClient;\n this.authService = config.authService;\n this.logger = config.logger;\n }\n\n /**\n * Retrieves a wallet and its balances. Optionally filtered by wallet address.\n */\n async getWallet(request?: GetWalletRequest): Promise<WalletResponse> {\n this.logger?.info('Fetching wallet...');\n\n const params: Record<string, unknown> = {};\n if (request?.wallet_address !== undefined) params.wallet_address = request.wallet_address;\n\n const response = await this.httpClient.get<WalletResponse>('api/v1/wallet', {\n params: Object.keys(params).length ? params : undefined,\n });\n\n this.logger?.info('Wallet fetched successfully');\n return response;\n }\n\n /**\n * Retrieves user wallets and their balances.\n */\n async getWallets(): Promise<WalletResponse> {\n this.logger?.info('Fetching wallets...');\n\n const response = await this.httpClient.get<WalletResponse>('api/v1/wallets');\n\n this.logger?.info('Wallets fetched successfully');\n return response;\n }\n\n /**\n * Creates a global wallet for the user account.\n */\n async createGlobalWallet(request: WalletCreateGlobalRequest): Promise<EmptyResponse> {\n this.logger?.info('Creating global wallet...');\n\n const response = await this.httpClient.post<EmptyResponse>('api/v1/wallets/global', request);\n\n this.logger?.info('Global wallet created successfully');\n return response;\n }\n}\n","import { ActivityService } from './activity/activity.service';\nimport { BankService } from './bank/bank.service';\nimport { CardsService } from './cards/cards.service';\nimport { ConfigService } from './config/config.service';\nimport { ConfirmationService } from './confirmation/confirmation.service';\nimport { RecipientsService } from './recipients/recipients.service';\nimport { RatesService } from './rates/rates.service';\nimport { SwapService } from './swap/swap.service';\nimport { TokenService } from './token/token.service';\nimport { UserService } from './user/user.service';\nimport { WalletService } from './wallet/wallet.service';\n\nimport type { SDKModule, ModuleContext } from '../../../core/index';\n\nimport { AuthService } from '../../auth/index';\n\nexport class BaasModule implements SDKModule {\n readonly name = 'baas';\n\n private readonly context: ModuleContext;\n private readonly logger;\n private _userService?: UserService;\n private _activityService?: ActivityService;\n private _bankService?: BankService;\n private _cardsService?: CardsService;\n private _configService?: ConfigService;\n private _confirmationService?: ConfirmationService;\n private _recipientsService?: RecipientsService;\n private _ratesService?: RatesService;\n private _swapService?: SwapService;\n private _tokenService?: TokenService;\n private _walletService?: WalletService;\n private _initialized = false;\n\n constructor(context: ModuleContext) {\n this.context = context;\n this.logger = context.logger;\n }\n\n async initialize(): Promise<void> {\n if (this._initialized) {\n this.logger.warn('BaasModule already initialized');\n return;\n }\n\n this.logger.info('Initializing BaasModule...');\n\n const httpClient = this.context.httpClient;\n\n const authService = AuthService.getInstance();\n\n this._userService = new UserService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._activityService = new ActivityService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._bankService = new BankService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._cardsService = new CardsService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._configService = new ConfigService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._confirmationService = new ConfirmationService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._recipientsService = new RecipientsService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._ratesService = new RatesService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._swapService = new SwapService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._tokenService = new TokenService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._walletService = new WalletService({\n httpClient,\n authService,\n logger: this.logger,\n });\n\n this._initialized = true;\n this.logger.info('BaasModule initialized successfully');\n }\n\n isInitialized(): boolean {\n return this._initialized;\n }\n\n get user(): UserService {\n if (!this._userService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._userService;\n }\n\n get activity(): ActivityService {\n if (!this._activityService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._activityService;\n }\n\n get bank(): BankService {\n if (!this._bankService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._bankService;\n }\n\n get cards(): CardsService {\n if (!this._cardsService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._cardsService;\n }\n\n get config(): ConfigService {\n if (!this._configService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._configService;\n }\n\n get confirmation(): ConfirmationService {\n if (!this._confirmationService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._confirmationService;\n }\n\n get recipients(): RecipientsService {\n if (!this._recipientsService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._recipientsService;\n }\n\n get rates(): RatesService {\n if (!this._ratesService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._ratesService;\n }\n\n get swap(): SwapService {\n if (!this._swapService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._swapService;\n }\n\n get token(): TokenService {\n if (!this._tokenService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._tokenService;\n }\n\n get wallet(): WalletService {\n if (!this._walletService) {\n throw new Error('BaasModule not initialized. Call initialize() first.');\n }\n return this._walletService;\n }\n}\n","import type { HttpClient } from '../../../../core/index';\nimport type { WithdrawalRequest } from '../../../crypto/interfaces/index';\n\ninterface WithdrawalRequestsResponse {\n data: WithdrawalRequest[];\n}\n\nexport class WithdrawalApi {\n constructor(private readonly httpClient: HttpClient) {}\n\n async getWithdrawalRequests(): Promise<WithdrawalRequest[]> {\n const response = await this.httpClient.get<WithdrawalRequestsResponse>(\n 'api/v1/withdrawal/requests',\n );\n\n return response.data ?? [];\n }\n}\n","import { BaasModule } from './baas/baas.module';\nimport { WithdrawalApi } from './internal/endpoints/withdrawal.api';\n\nimport type { SDKModule, ModuleContext, Logger, HttpClient } from '../../core/index';\n\nexport class ApiModule implements SDKModule {\n readonly name = 'api';\n\n private readonly context: ModuleContext;\n private readonly logger: Logger;\n private readonly httpClient: HttpClient;\n\n private _withdrawal?: WithdrawalApi;\n private _baas?: BaasModule;\n private _initialized = false;\n\n constructor(context: ModuleContext) {\n this.context = context;\n this.logger = context.logger;\n\n this.httpClient = context.httpClient;\n }\n\n async initialize(): Promise<void> {\n if (this._initialized) {\n this.logger.warn('API module already initialized');\n return;\n }\n\n this.logger.info('Initializing API module...');\n\n this._withdrawal = new WithdrawalApi(this.httpClient);\n\n this._baas = new BaasModule(this.context);\n await this._baas.initialize();\n\n this._initialized = true;\n this.logger.info('API module initialized successfully');\n }\n\n isInitialized(): boolean {\n return this._initialized;\n }\n\n get baas(): BaasModule {\n if (!this._baas) {\n throw new Error('API module not initialized');\n }\n return this._baas;\n }\n\n get withdrawal(): WithdrawalApi {\n if (!this._withdrawal) {\n throw new Error('API module not initialized');\n }\n return this._withdrawal;\n }\n}\n"]}
|