@metamask-previews/ramps-controller 29.0.0-preview-dd61a447a → 29.0.0-preview-77efa7863
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/CHANGELOG.md +0 -8
- package/dist/TransakService.d.ts +5 -18
- package/dist/TransakService.d.ts.map +1 -1
- package/dist/TransakService.js +114 -293
- package/dist/TransakService.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,24 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
-
- Add `TransakServiceInvalidateQueriesAction`, `TransakServiceCacheUpdatedEvent` and `TransakServiceGranularCacheUpdatedEvent` types, and include them in `TransakServiceActions` and `TransakServiceEvents` ([#11216](https://github.com/MetaMask/core/pull/11216))
|
|
13
12
|
- Add `RampsServiceInvalidateQueriesAction`, `RampsServiceCacheUpdatedEvent` and `RampsServiceGranularCacheUpdatedEvent`, also included in `RampsServiceActions` and `RampsServiceEvents` ([#11214](https://github.com/MetaMask/core/pull/11214))
|
|
14
13
|
- Add `NeoBankServiceInvalidateQueriesAction`, `NeoBankServiceCacheUpdatedEvent` and `NeoBankServiceGranularCacheUpdatedEvent`, also included in `NeoBankServiceActions` and `NeoBankServiceEvents` ([#10882](https://github.com/MetaMask/core/pull/10882))
|
|
15
14
|
|
|
16
15
|
### Changed
|
|
17
16
|
|
|
18
|
-
- **BREAKING:** `TransakService` now extends `BaseDataService` ([#11216](https://github.com/MetaMask/core/pull/11216))
|
|
19
|
-
- This is breaking because `TransakServiceMessenger` has new required actions and events, writes are no longer retried, and `verifyUserOtp` now shares the circuit breaker with every other request (see below).
|
|
20
|
-
- `TransakServiceActions` now includes `TransakService:invalidateQueries`, and `TransakServiceEvents` now includes the `TransakService:cacheUpdated` events. A host messenger built from `MessengerActions<TransakServiceMessenger>` and `MessengerEvents<TransakServiceMessenger>` picks these up automatically.
|
|
21
17
|
- **BREAKING:** `RampsService` now extends `BaseDataService` from `@metamask/base-data-service` ([#11214](https://github.com/MetaMask/core/pull/11214))
|
|
22
18
|
- This is breaking because `RampsService` no longer has public `onRetry`, `onBreak` and `onDegraded` methods (see Removed), and `RampsServiceMessenger` has new required actions and events. Pass `policyOptions` to the constructor to configure retries and the circuit breaker.
|
|
23
19
|
- `RampsServiceMessenger` now includes the `RampsService:invalidateQueries` action and the `RampsService:cacheUpdated` events. Messengers built from `RampsServiceActions` and `RampsServiceEvents` pick these up automatically.
|
|
24
20
|
- **BREAKING:** `NeoBankService` now extends `BaseDataService` from `@metamask/base-data-service`, so reads and writes share one circuit breaker (previously each had its own) and repeated read failures can now block writes ([#10882](https://github.com/MetaMask/core/pull/10882))
|
|
25
21
|
- `NeoBankServiceMessenger` now includes the `NeoBankService:invalidateQueries` action and `NeoBankService:cacheUpdated` events. Messengers built from `NeoBankServiceActions` / `NeoBankServiceEvents` pick these up automatically.
|
|
26
|
-
- Concurrent identical `TransakService` reads are now deduplicated: while one request is in flight, identical calls reuse it instead of sending another. Reads still always hit the API ([#11216](https://github.com/MetaMask/core/pull/11216))
|
|
27
|
-
- Responses are now validated, and a malformed response throws `Query function for "TransakService:<method>" returned an unexpected response: ...` for reads or `Mutation function for "TransakService:<method>" returned an unexpected response: ...` for writes. Previously the response was returned unchecked ([#11216](https://github.com/MetaMask/core/pull/11216))
|
|
28
|
-
- Writes (every POST, PATCH and DELETE request) are no longer retried. Previously only `verifyUserOtp` was exempt from retries ([#11216](https://github.com/MetaMask/core/pull/11216))
|
|
29
|
-
- `verifyUserOtp` now shares the circuit breaker with every other `TransakService` request. Previously it had its own, so repeated failures on other requests can now block it ([#11216](https://github.com/MetaMask/core/pull/11216))
|
|
30
22
|
- Concurrent identical `RampsService` calls are now deduplicated: while one request is in flight, calls with the same method and arguments reuse it instead of sending another. Sequential calls still always hit the API ([#11214](https://github.com/MetaMask/core/pull/11214))
|
|
31
23
|
- Responses that do not match the expected shape now throw `Query function for "RampsService:<method>" returned an unexpected response: ...`, instead of `Malformed response received from <api name>` ([#11214](https://github.com/MetaMask/core/pull/11214))
|
|
32
24
|
- `NeoBankService.getAutorampQuote`, `getAutorampQuoteForAutoramp`, `getCustomerByExternalId`, `registerPixAddress` and `attachAutorampQuote` now return `Promise<Json>` instead of `Promise<unknown>` ([#10882](https://github.com/MetaMask/core/pull/10882))
|
package/dist/TransakService.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { CreateServicePolicyOptions, DataServiceCacheUpdatedEvent, DataServiceGranularCacheUpdatedEvent, DataServiceInvalidateQueriesAction } from '@metamask/base-data-service';
|
|
1
|
+
import type { CreateServicePolicyOptions } from '@metamask/controller-utils';
|
|
3
2
|
import { HttpError } from '@metamask/controller-utils';
|
|
4
3
|
import type { Messenger } from '@metamask/messenger';
|
|
5
4
|
import type { AuthenticationController } from '@metamask/profile-sync-controller';
|
|
@@ -275,25 +274,12 @@ export declare class TransakOrderIdTransformer {
|
|
|
275
274
|
static extractTransakOrderId(orderId: string): string;
|
|
276
275
|
}
|
|
277
276
|
declare const serviceName = "TransakService";
|
|
278
|
-
|
|
279
|
-
* Invalidates cached queries held by {@link TransakService}.
|
|
280
|
-
*/
|
|
281
|
-
export type TransakServiceInvalidateQueriesAction = DataServiceInvalidateQueriesAction<typeof serviceName>;
|
|
282
|
-
export type TransakServiceActions = TransakServiceMethodActions | TransakServiceInvalidateQueriesAction;
|
|
277
|
+
export type TransakServiceActions = TransakServiceMethodActions;
|
|
283
278
|
/**
|
|
284
279
|
* Actions from other messengers that {@link TransakService} calls.
|
|
285
280
|
*/
|
|
286
281
|
type AllowedActions = AuthenticationController.AuthenticationControllerGetBearerTokenAction;
|
|
287
|
-
|
|
288
|
-
* Published whenever a query or mutation in the service cache changes.
|
|
289
|
-
*/
|
|
290
|
-
export type TransakServiceCacheUpdatedEvent = DataServiceCacheUpdatedEvent<typeof serviceName>;
|
|
291
|
-
/**
|
|
292
|
-
* Published for a single query or mutation whenever it changes in the service
|
|
293
|
-
* cache.
|
|
294
|
-
*/
|
|
295
|
-
export type TransakServiceGranularCacheUpdatedEvent = DataServiceGranularCacheUpdatedEvent<typeof serviceName>;
|
|
296
|
-
export type TransakServiceEvents = TransakServiceCacheUpdatedEvent | TransakServiceGranularCacheUpdatedEvent;
|
|
282
|
+
export type TransakServiceEvents = never;
|
|
297
283
|
type AllowedEvents = never;
|
|
298
284
|
export type TransakServiceMessenger = Messenger<typeof serviceName, TransakServiceActions | AllowedActions, TransakServiceEvents | AllowedEvents>;
|
|
299
285
|
export declare class TransakApiError extends HttpError {
|
|
@@ -301,8 +287,9 @@ export declare class TransakApiError extends HttpError {
|
|
|
301
287
|
readonly apiMessage: string | undefined;
|
|
302
288
|
constructor(status: number, message: string, errorCode?: string, apiMessage?: string);
|
|
303
289
|
}
|
|
304
|
-
export declare class TransakService
|
|
290
|
+
export declare class TransakService {
|
|
305
291
|
#private;
|
|
292
|
+
readonly name: typeof serviceName;
|
|
306
293
|
constructor({ messenger, environment, context, fetch: fetchFunction, apiKey, policyOptions, orderRetryDelayMs, rampsApiBaseUrlOverride, referrerDomain, clientProduct, clientVersion, }: {
|
|
307
294
|
messenger: TransakServiceMessenger;
|
|
308
295
|
environment?: TransakEnvironment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransakService.d.ts","sourceRoot":"","sources":["../src/TransakService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TransakService.d.ts","sourceRoot":"","sources":["../src/TransakService.ts"],"names":[],"mappings":"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"}
|
package/dist/TransakService.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HttpError } from '@metamask/controller-utils';
|
|
3
|
-
import { any, array, boolean, nullable, number, optional, record, string, type as looseObject, } from '@metamask/superstruct';
|
|
1
|
+
import { createServicePolicy, HttpError } from '@metamask/controller-utils';
|
|
4
2
|
import packageJson from '../package.json';
|
|
5
3
|
import { addRampsClientIdentityParams } from './client-identity.js';
|
|
6
4
|
import { RAMPS_SDK_VERSION } from './RampsService.js';
|
|
@@ -161,131 +159,13 @@ export class TransakApiError extends HttpError {
|
|
|
161
159
|
this.apiMessage = apiMessage;
|
|
162
160
|
}
|
|
163
161
|
}
|
|
164
|
-
// === RESPONSE STRUCTS ===
|
|
165
|
-
/**
|
|
166
|
-
* The structs below are intentionally lenient: they require only the fields
|
|
167
|
-
* the service itself depends on, check the type of any other field that is
|
|
168
|
-
* present, and ignore extra fields the APIs return. The APIs omit fields for
|
|
169
|
-
* incomplete profiles and sparse responses, and responses were not validated
|
|
170
|
-
* before, so a missing field must not fail a call.
|
|
171
|
-
*/
|
|
172
|
-
const TransakPaymentDetailsStruct = array(looseObject({
|
|
173
|
-
fiatCurrency: string(),
|
|
174
|
-
paymentMethod: string(),
|
|
175
|
-
fields: array(looseObject({ name: string(), id: string(), value: string() })),
|
|
176
|
-
}));
|
|
177
|
-
const SendUserOtpResponseStruct = looseObject({
|
|
178
|
-
isTncAccepted: boolean(),
|
|
179
|
-
stateToken: string(),
|
|
180
|
-
email: string(),
|
|
181
|
-
expiresIn: number(),
|
|
182
|
-
});
|
|
183
|
-
const VerifyUserOtpResponseStruct = looseObject({
|
|
184
|
-
accessToken: string(),
|
|
185
|
-
ttl: number(),
|
|
186
|
-
created: string(),
|
|
187
|
-
});
|
|
188
|
-
const UserDetailsStruct = looseObject({
|
|
189
|
-
id: optional(string()),
|
|
190
|
-
firstName: optional(string()),
|
|
191
|
-
lastName: optional(string()),
|
|
192
|
-
email: optional(string()),
|
|
193
|
-
mobileNumber: optional(string()),
|
|
194
|
-
status: optional(string()),
|
|
195
|
-
dob: optional(string()),
|
|
196
|
-
kyc: optional(looseObject({
|
|
197
|
-
status: optional(string()),
|
|
198
|
-
type: optional(string()),
|
|
199
|
-
userId: optional(string()),
|
|
200
|
-
workFlowRunId: optional(string()),
|
|
201
|
-
})),
|
|
202
|
-
address: optional(looseObject({
|
|
203
|
-
addressLine1: optional(string()),
|
|
204
|
-
addressLine2: optional(string()),
|
|
205
|
-
state: optional(string()),
|
|
206
|
-
city: optional(string()),
|
|
207
|
-
postCode: optional(string()),
|
|
208
|
-
country: optional(string()),
|
|
209
|
-
countryCode: optional(string()),
|
|
210
|
-
})),
|
|
211
|
-
createdAt: optional(string()),
|
|
212
|
-
});
|
|
213
|
-
const BuyQuoteStruct = looseObject({
|
|
214
|
-
quoteId: string(),
|
|
215
|
-
conversionPrice: optional(number()),
|
|
216
|
-
marketConversionPrice: optional(number()),
|
|
217
|
-
slippage: optional(number()),
|
|
218
|
-
fiatCurrency: optional(string()),
|
|
219
|
-
cryptoCurrency: optional(string()),
|
|
220
|
-
paymentMethod: optional(string()),
|
|
221
|
-
fiatAmount: optional(number()),
|
|
222
|
-
cryptoAmount: optional(number()),
|
|
223
|
-
isBuyOrSell: optional(string()),
|
|
224
|
-
network: optional(string()),
|
|
225
|
-
feeDecimal: optional(number()),
|
|
226
|
-
totalFee: optional(number()),
|
|
227
|
-
feeBreakdown: optional(array(record(string(), any()))),
|
|
228
|
-
nonce: optional(number()),
|
|
229
|
-
cryptoLiquidityProvider: optional(string()),
|
|
230
|
-
notes: optional(array(record(string(), any()))),
|
|
231
|
-
});
|
|
232
|
-
const KycRequirementStruct = looseObject({
|
|
233
|
-
status: string(),
|
|
234
|
-
kycType: string(),
|
|
235
|
-
isAllowedToPlaceOrder: boolean(),
|
|
236
|
-
});
|
|
237
|
-
const AdditionalRequirementsStruct = looseObject({
|
|
238
|
-
formsRequired: array(looseObject({ type: string(), metadata: optional(any()) })),
|
|
239
|
-
});
|
|
240
|
-
const TransakOrderStruct = looseObject({
|
|
241
|
-
orderId: string(),
|
|
242
|
-
walletAddress: string(),
|
|
243
|
-
paymentDetails: optional(nullable(TransakPaymentDetailsStruct)),
|
|
244
|
-
});
|
|
245
|
-
const TransakOrderPaymentDetailsStruct = looseObject({
|
|
246
|
-
paymentDetails: optional(nullable(TransakPaymentDetailsStruct)),
|
|
247
|
-
});
|
|
248
|
-
const ActiveOrdersStruct = array(looseObject({ orderId: string(), status: string() }));
|
|
249
|
-
const DepositOrderStruct = looseObject({
|
|
250
|
-
providerOrderId: string(),
|
|
251
|
-
status: string(),
|
|
252
|
-
});
|
|
253
|
-
const UserLimitsStruct = looseObject({
|
|
254
|
-
limits: looseObject({ '1': number(), '30': number(), '365': number() }),
|
|
255
|
-
spent: looseObject({ '1': number(), '30': number(), '365': number() }),
|
|
256
|
-
remaining: looseObject({ '1': number(), '30': number(), '365': number() }),
|
|
257
|
-
exceeded: looseObject({ '1': boolean(), '30': boolean(), '365': boolean() }),
|
|
258
|
-
shortage: optional(record(string(), number())),
|
|
259
|
-
});
|
|
260
|
-
const OttStruct = looseObject({ ott: string() });
|
|
261
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
262
|
-
const TranslationStruct = looseObject({
|
|
263
|
-
region: optional(string()),
|
|
264
|
-
paymentMethod: optional(string()),
|
|
265
|
-
cryptoCurrency: string(),
|
|
266
|
-
network: string(),
|
|
267
|
-
fiatCurrency: string(),
|
|
268
|
-
});
|
|
269
|
-
const IdProofStatusStruct = looseObject({
|
|
270
|
-
status: string(),
|
|
271
|
-
kycType: string(),
|
|
272
|
-
randomLogIdentifier: optional(string()),
|
|
273
|
-
});
|
|
274
|
-
const PaymentConfirmationStruct = looseObject({ success: boolean() });
|
|
275
|
-
const WidgetUrlResponseStruct = looseObject({ widgetUrl: string() });
|
|
276
|
-
/**
|
|
277
|
-
* Wraps a struct in the `{ data }` envelope the Transak API gateway uses.
|
|
278
|
-
*
|
|
279
|
-
* @param dataStruct - The struct for the `data` property.
|
|
280
|
-
* @returns The envelope struct.
|
|
281
|
-
*/
|
|
282
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
283
|
-
function envelope(dataStruct) {
|
|
284
|
-
return looseObject({ data: dataStruct });
|
|
285
|
-
}
|
|
286
162
|
// === SERVICE DEFINITION ===
|
|
287
|
-
export class TransakService
|
|
163
|
+
export class TransakService {
|
|
164
|
+
name;
|
|
165
|
+
#messenger;
|
|
288
166
|
#fetch;
|
|
167
|
+
#policy;
|
|
168
|
+
#noRetryPolicy;
|
|
289
169
|
#environment;
|
|
290
170
|
#context;
|
|
291
171
|
#orderRetryDelayMs;
|
|
@@ -304,9 +184,15 @@ export class TransakService extends BaseDataService {
|
|
|
304
184
|
*/
|
|
305
185
|
#referrerDomain;
|
|
306
186
|
#clientIdentity;
|
|
307
|
-
constructor({ messenger, environment = TransakEnvironment.Staging, context, fetch: fetchFunction, apiKey, policyOptions, orderRetryDelayMs = 2000, rampsApiBaseUrlOverride, referrerDomain = TRANSAK_REFERRER_DOMAIN, clientProduct, clientVersion, }) {
|
|
308
|
-
|
|
187
|
+
constructor({ messenger, environment = TransakEnvironment.Staging, context, fetch: fetchFunction, apiKey, policyOptions = {}, orderRetryDelayMs = 2000, rampsApiBaseUrlOverride, referrerDomain = TRANSAK_REFERRER_DOMAIN, clientProduct, clientVersion, }) {
|
|
188
|
+
this.name = serviceName;
|
|
189
|
+
this.#messenger = messenger;
|
|
309
190
|
this.#fetch = fetchFunction;
|
|
191
|
+
this.#policy = createServicePolicy(policyOptions);
|
|
192
|
+
this.#noRetryPolicy = createServicePolicy({
|
|
193
|
+
...policyOptions,
|
|
194
|
+
maxRetries: 0,
|
|
195
|
+
});
|
|
310
196
|
this.#environment = environment;
|
|
311
197
|
this.#context = context;
|
|
312
198
|
this.#apiKey = apiKey ?? null;
|
|
@@ -317,7 +203,7 @@ export class TransakService extends BaseDataService {
|
|
|
317
203
|
clientProduct,
|
|
318
204
|
clientVersion,
|
|
319
205
|
};
|
|
320
|
-
this
|
|
206
|
+
this.#messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
321
207
|
}
|
|
322
208
|
setApiKey(apiKey) {
|
|
323
209
|
this.#apiKey = apiKey;
|
|
@@ -384,21 +270,7 @@ export class TransakService extends BaseDataService {
|
|
|
384
270
|
}
|
|
385
271
|
throw new TransakApiError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'${errorBody ? `: ${errorBody}` : ''}`, errorCode, apiMessage);
|
|
386
272
|
}
|
|
387
|
-
|
|
388
|
-
* Identifies the current login session without exposing the access token,
|
|
389
|
-
* so reads made under different sessions never share a request.
|
|
390
|
-
*
|
|
391
|
-
* @returns The access token creation time in milliseconds, or `null` when
|
|
392
|
-
* logged out.
|
|
393
|
-
*/
|
|
394
|
-
#getSessionId() {
|
|
395
|
-
return this.#accessToken
|
|
396
|
-
? new Date(this.#accessToken.created).getTime()
|
|
397
|
-
: null;
|
|
398
|
-
}
|
|
399
|
-
async #transakGet(queryName, path,
|
|
400
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
401
|
-
dataStruct, params) {
|
|
273
|
+
async #transakGet(path, params) {
|
|
402
274
|
const baseUrl = getTransakApiBaseUrl(this.#environment);
|
|
403
275
|
const url = new URL(path, baseUrl);
|
|
404
276
|
if (params) {
|
|
@@ -410,98 +282,59 @@ export class TransakService extends BaseDataService {
|
|
|
410
282
|
}
|
|
411
283
|
const apiKey = this.#ensureApiKey();
|
|
412
284
|
url.searchParams.set('apiKey', apiKey);
|
|
413
|
-
const response =
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
gcTime: 0,
|
|
424
|
-
responseStruct: envelope(dataStruct),
|
|
425
|
-
queryFn: async () => {
|
|
426
|
-
const fetchResponse = await this.#fetch(url.toString(), {
|
|
427
|
-
method: 'GET',
|
|
428
|
-
headers: this.#getHeaders(),
|
|
429
|
-
});
|
|
430
|
-
if (!fetchResponse.ok) {
|
|
431
|
-
await this.#throwTransakApiError(fetchResponse, url);
|
|
432
|
-
}
|
|
433
|
-
return (await fetchResponse.json());
|
|
434
|
-
},
|
|
435
|
-
}));
|
|
285
|
+
const response = await this.#policy.execute(async () => {
|
|
286
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
287
|
+
method: 'GET',
|
|
288
|
+
headers: this.#getHeaders(),
|
|
289
|
+
});
|
|
290
|
+
if (!fetchResponse.ok) {
|
|
291
|
+
await this.#throwTransakApiError(fetchResponse, url);
|
|
292
|
+
}
|
|
293
|
+
return fetchResponse.json();
|
|
294
|
+
});
|
|
436
295
|
return response.data;
|
|
437
296
|
}
|
|
438
|
-
|
|
439
|
-
* Sends a request that changes server side data. Mutations are never
|
|
440
|
-
* retried, and the mutation key holds only the method name, as keys appear
|
|
441
|
-
* in the names of published `cacheUpdated` events.
|
|
442
|
-
*
|
|
443
|
-
* @param options - The options.
|
|
444
|
-
* @param options.mutationName - The name of the public method.
|
|
445
|
-
* @param options.url - The request URL.
|
|
446
|
-
* @param options.init - The request method, headers and body.
|
|
447
|
-
* @param options.responseStruct - The struct for the response body. When
|
|
448
|
-
* omitted, the response body is ignored.
|
|
449
|
-
* @returns The validated response body, or `null` if it was ignored.
|
|
450
|
-
*/
|
|
451
|
-
async #sendMutation({ mutationName, url, init, responseStruct, }) {
|
|
452
|
-
return (await this.executeMutation({
|
|
453
|
-
mutationKey: [`${this.name}:${mutationName}`],
|
|
454
|
-
// Some responses carry credentials (`verifyUserOtp` returns the access
|
|
455
|
-
// token), so do not keep finished mutations in the cache.
|
|
456
|
-
gcTime: 0,
|
|
457
|
-
responseStruct,
|
|
458
|
-
mutationFn: async () => {
|
|
459
|
-
const fetchResponse = await this.#fetch(url.toString(), init);
|
|
460
|
-
if (!fetchResponse.ok) {
|
|
461
|
-
await this.#throwTransakApiError(fetchResponse, url);
|
|
462
|
-
}
|
|
463
|
-
return responseStruct ? (await fetchResponse.json()) : null;
|
|
464
|
-
},
|
|
465
|
-
}));
|
|
466
|
-
}
|
|
467
|
-
async #transakPost(mutationName, path,
|
|
468
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
469
|
-
dataStruct, body) {
|
|
297
|
+
async #transakPost(path, body, options = {}) {
|
|
470
298
|
const apiKey = this.#ensureApiKey();
|
|
471
299
|
const baseUrl = getTransakApiBaseUrl(this.#environment);
|
|
472
300
|
const url = new URL(path, baseUrl);
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
301
|
+
const requestBody = {
|
|
302
|
+
...(body ?? {}),
|
|
303
|
+
apiKey,
|
|
304
|
+
};
|
|
305
|
+
const policy = options.policy ?? this.#policy;
|
|
306
|
+
const response = await policy.execute(async () => {
|
|
307
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
477
308
|
method: 'POST',
|
|
478
309
|
headers: this.#getHeaders(),
|
|
479
|
-
body: JSON.stringify(
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
|
|
310
|
+
body: JSON.stringify(requestBody),
|
|
311
|
+
});
|
|
312
|
+
if (!fetchResponse.ok) {
|
|
313
|
+
await this.#throwTransakApiError(fetchResponse, url);
|
|
314
|
+
}
|
|
315
|
+
return fetchResponse.json();
|
|
316
|
+
});
|
|
483
317
|
return response.data;
|
|
484
318
|
}
|
|
485
|
-
async #transakPatch(
|
|
486
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
487
|
-
dataStruct, body) {
|
|
319
|
+
async #transakPatch(path, body) {
|
|
488
320
|
const apiKey = this.#ensureApiKey();
|
|
489
321
|
const baseUrl = getTransakApiBaseUrl(this.#environment);
|
|
490
322
|
const url = new URL(path, baseUrl);
|
|
491
323
|
url.searchParams.set('apiKey', apiKey);
|
|
492
|
-
const response =
|
|
493
|
-
|
|
494
|
-
url,
|
|
495
|
-
init: {
|
|
324
|
+
const response = await this.#policy.execute(async () => {
|
|
325
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
496
326
|
method: 'PATCH',
|
|
497
327
|
headers: this.#getHeaders(),
|
|
498
328
|
body: JSON.stringify(body),
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
|
|
329
|
+
});
|
|
330
|
+
if (!fetchResponse.ok) {
|
|
331
|
+
await this.#throwTransakApiError(fetchResponse, url);
|
|
332
|
+
}
|
|
333
|
+
return fetchResponse.json();
|
|
334
|
+
});
|
|
502
335
|
return response.data;
|
|
503
336
|
}
|
|
504
|
-
async #transakDelete(
|
|
337
|
+
async #transakDelete(path, params) {
|
|
505
338
|
const apiKey = this.#ensureApiKey();
|
|
506
339
|
const baseUrl = getTransakApiBaseUrl(this.#environment);
|
|
507
340
|
const url = new URL(path, baseUrl);
|
|
@@ -513,10 +346,14 @@ export class TransakService extends BaseDataService {
|
|
|
513
346
|
}
|
|
514
347
|
}
|
|
515
348
|
}
|
|
516
|
-
await this.#
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
349
|
+
await this.#policy.execute(async () => {
|
|
350
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
351
|
+
method: 'DELETE',
|
|
352
|
+
headers: this.#getHeaders(),
|
|
353
|
+
});
|
|
354
|
+
if (!fetchResponse.ok) {
|
|
355
|
+
await this.#throwTransakApiError(fetchResponse, url);
|
|
356
|
+
}
|
|
520
357
|
});
|
|
521
358
|
}
|
|
522
359
|
/**
|
|
@@ -543,9 +380,7 @@ export class TransakService extends BaseDataService {
|
|
|
543
380
|
// client product / version.
|
|
544
381
|
addRampsClientIdentityParams(url, this.#clientIdentity);
|
|
545
382
|
}
|
|
546
|
-
async #ordersApiGet(
|
|
547
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
548
|
-
dataStruct, params) {
|
|
383
|
+
async #ordersApiGet(path, params) {
|
|
549
384
|
const baseUrl = this.#getRampsApiBaseUrl();
|
|
550
385
|
const providerPath = getRampsProviderPath(this.#environment);
|
|
551
386
|
const url = new URL(`${providerPath}${path}`, baseUrl);
|
|
@@ -561,36 +396,29 @@ export class TransakService extends BaseDataService {
|
|
|
561
396
|
}
|
|
562
397
|
}
|
|
563
398
|
}
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
throw new HttpError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`);
|
|
576
|
-
}
|
|
577
|
-
return (await fetchResponse.json());
|
|
578
|
-
},
|
|
579
|
-
}));
|
|
399
|
+
const response = await this.#policy.execute(async () => {
|
|
400
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
401
|
+
method: 'GET',
|
|
402
|
+
headers: { Accept: 'application/json' },
|
|
403
|
+
});
|
|
404
|
+
if (!fetchResponse.ok) {
|
|
405
|
+
throw new HttpError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`);
|
|
406
|
+
}
|
|
407
|
+
return fetchResponse.json();
|
|
408
|
+
});
|
|
409
|
+
return response;
|
|
580
410
|
}
|
|
581
411
|
// === PUBLIC API METHODS ===
|
|
582
412
|
async sendUserOtp(email) {
|
|
583
|
-
const result = await this.#transakPost('
|
|
584
|
-
email,
|
|
585
|
-
});
|
|
413
|
+
const result = await this.#transakPost('/api/v2/auth/login', { email });
|
|
586
414
|
return result;
|
|
587
415
|
}
|
|
588
416
|
async verifyUserOtp(email, verificationCode, stateToken) {
|
|
589
|
-
const responseData = await this.#transakPost('
|
|
417
|
+
const responseData = await this.#transakPost('/api/v2/auth/verify', {
|
|
590
418
|
email,
|
|
591
419
|
otp: verificationCode,
|
|
592
420
|
stateToken,
|
|
593
|
-
});
|
|
421
|
+
}, { policy: this.#noRetryPolicy });
|
|
594
422
|
const accessToken = {
|
|
595
423
|
accessToken: responseData.accessToken,
|
|
596
424
|
ttl: responseData.ttl,
|
|
@@ -602,7 +430,7 @@ export class TransakService extends BaseDataService {
|
|
|
602
430
|
async logout() {
|
|
603
431
|
this.#ensureAccessToken();
|
|
604
432
|
try {
|
|
605
|
-
const result = await this.#transakPost('
|
|
433
|
+
const result = await this.#transakPost('/api/v1/auth/logout');
|
|
606
434
|
this.clearAccessToken();
|
|
607
435
|
return result;
|
|
608
436
|
}
|
|
@@ -616,7 +444,7 @@ export class TransakService extends BaseDataService {
|
|
|
616
444
|
}
|
|
617
445
|
async getUserDetails() {
|
|
618
446
|
this.#ensureAccessToken();
|
|
619
|
-
return this.#transakGet('
|
|
447
|
+
return this.#transakGet('/api/v2/user/');
|
|
620
448
|
}
|
|
621
449
|
async getBuyQuote(genericFiatCurrency, genericCryptoCurrency, genericNetwork, genericPaymentMethod, fiatAmount, isFeeExcludedFromFiat = true) {
|
|
622
450
|
const normalizedPaymentMethod = normalizePaymentMethodForTranslation(genericPaymentMethod || undefined);
|
|
@@ -640,7 +468,7 @@ export class TransakService extends BaseDataService {
|
|
|
640
468
|
if (translation.paymentMethod) {
|
|
641
469
|
params.paymentMethod = translation.paymentMethod;
|
|
642
470
|
}
|
|
643
|
-
const quote = await this.#transakGet('
|
|
471
|
+
const quote = await this.#transakGet('/api/v2/lookup/quotes', params);
|
|
644
472
|
return {
|
|
645
473
|
...quote,
|
|
646
474
|
requestedAssetId: genericCryptoCurrency,
|
|
@@ -649,14 +477,14 @@ export class TransakService extends BaseDataService {
|
|
|
649
477
|
}
|
|
650
478
|
async getKycRequirement(quoteId) {
|
|
651
479
|
this.#ensureAccessToken();
|
|
652
|
-
const result = await this.#transakGet('
|
|
480
|
+
const result = await this.#transakGet('/api/v2/kyc/requirement', {
|
|
653
481
|
'metadata[quoteId]': quoteId,
|
|
654
482
|
});
|
|
655
483
|
return result;
|
|
656
484
|
}
|
|
657
485
|
async getAdditionalRequirements(quoteId) {
|
|
658
486
|
this.#ensureAccessToken();
|
|
659
|
-
return this.#transakGet('
|
|
487
|
+
return this.#transakGet('/api/v2/kyc/additional-requirements', { 'metadata[quoteId]': quoteId });
|
|
660
488
|
}
|
|
661
489
|
async createOrder(quoteId, walletAddress, paymentMethodId) {
|
|
662
490
|
this.#ensureAccessToken();
|
|
@@ -666,7 +494,7 @@ export class TransakService extends BaseDataService {
|
|
|
666
494
|
});
|
|
667
495
|
const paymentInstrumentId = translation.paymentMethod ?? normalizedPaymentMethod;
|
|
668
496
|
try {
|
|
669
|
-
const transakOrder = await this.#transakPost('
|
|
497
|
+
const transakOrder = await this.#transakPost('/api/v2/orders', {
|
|
670
498
|
quoteId,
|
|
671
499
|
walletAddress,
|
|
672
500
|
paymentInstrumentId,
|
|
@@ -680,7 +508,7 @@ export class TransakService extends BaseDataService {
|
|
|
680
508
|
error.errorCode === TRANSAK_ERROR_CODES.ORDER_EXISTS) {
|
|
681
509
|
await this.cancelAllActiveOrders();
|
|
682
510
|
await new Promise((resolve) => setTimeout(resolve, this.#orderRetryDelayMs));
|
|
683
|
-
const retryOrder = await this.#transakPost('
|
|
511
|
+
const retryOrder = await this.#transakPost('/api/v2/orders', {
|
|
684
512
|
quoteId,
|
|
685
513
|
walletAddress,
|
|
686
514
|
paymentInstrumentId,
|
|
@@ -700,7 +528,7 @@ export class TransakService extends BaseDataService {
|
|
|
700
528
|
depositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(orderId, this.#environment);
|
|
701
529
|
}
|
|
702
530
|
const transakOrderId = TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);
|
|
703
|
-
const order = await this.#ordersApiGet(
|
|
531
|
+
const order = await this.#ordersApiGet(`/orders/${transakOrderId}`, { wallet });
|
|
704
532
|
const orderWithId = {
|
|
705
533
|
...order,
|
|
706
534
|
id: depositOrderId,
|
|
@@ -711,7 +539,7 @@ export class TransakService extends BaseDataService {
|
|
|
711
539
|
}
|
|
712
540
|
if (this.#accessToken?.accessToken) {
|
|
713
541
|
try {
|
|
714
|
-
const transakOrder = await this.#transakGet(
|
|
542
|
+
const transakOrder = await this.#transakGet(`/api/v2/orders/${transakOrderId}`);
|
|
715
543
|
return { ...orderWithId, paymentDetails: transakOrder.paymentDetails };
|
|
716
544
|
}
|
|
717
545
|
catch {
|
|
@@ -733,7 +561,7 @@ export class TransakService extends BaseDataService {
|
|
|
733
561
|
if (translation.paymentMethod) {
|
|
734
562
|
params.paymentCategory = translation.paymentMethod;
|
|
735
563
|
}
|
|
736
|
-
return this.#transakGet('
|
|
564
|
+
return this.#transakGet('/api/v2/orders/user-limit', params);
|
|
737
565
|
}
|
|
738
566
|
/**
|
|
739
567
|
* @deprecated Use {@link createWidgetUrl} instead. The OTT flow requires the
|
|
@@ -742,7 +570,7 @@ export class TransakService extends BaseDataService {
|
|
|
742
570
|
*/
|
|
743
571
|
async requestOtt() {
|
|
744
572
|
this.#ensureAccessToken();
|
|
745
|
-
const result = await this.#transakPost('
|
|
573
|
+
const result = await this.#transakPost('/api/v2/auth/request-ott');
|
|
746
574
|
return result;
|
|
747
575
|
}
|
|
748
576
|
/**
|
|
@@ -798,7 +626,7 @@ export class TransakService extends BaseDataService {
|
|
|
798
626
|
*/
|
|
799
627
|
async createWidgetUrl(quote, walletAddress, extraParams) {
|
|
800
628
|
this.#ensureAccessToken();
|
|
801
|
-
const bearerToken = await this
|
|
629
|
+
const bearerToken = await this.#messenger.call('AuthenticationController:getBearerToken');
|
|
802
630
|
const baseUrl = this.#getRampsApiBaseUrl();
|
|
803
631
|
const providerPath = getRampsProviderPath(this.#environment);
|
|
804
632
|
const url = new URL(`${providerPath}/widget-url`, baseUrl);
|
|
@@ -825,32 +653,32 @@ export class TransakService extends BaseDataService {
|
|
|
825
653
|
if (this.#accessToken?.accessToken) {
|
|
826
654
|
headers['x-transak-access-token'] = this.#accessToken.accessToken;
|
|
827
655
|
}
|
|
828
|
-
const response =
|
|
829
|
-
|
|
830
|
-
url,
|
|
831
|
-
init: {
|
|
656
|
+
const response = await this.#policy.execute(async () => {
|
|
657
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
832
658
|
method: 'POST',
|
|
833
659
|
headers,
|
|
834
660
|
body: JSON.stringify({ widgetParams }),
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
|
|
661
|
+
});
|
|
662
|
+
if (!fetchResponse.ok) {
|
|
663
|
+
await this.#throwTransakApiError(fetchResponse, url);
|
|
664
|
+
}
|
|
665
|
+
return fetchResponse.json();
|
|
666
|
+
});
|
|
838
667
|
return response.widgetUrl;
|
|
839
668
|
}
|
|
840
669
|
async submitPurposeOfUsageForm(purpose) {
|
|
841
670
|
this.#ensureAccessToken();
|
|
842
|
-
await this.#transakPost('
|
|
671
|
+
await this.#transakPost('/api/v2/kyc/purpose-of-usage', {
|
|
672
|
+
purposeList: purpose,
|
|
673
|
+
});
|
|
843
674
|
}
|
|
844
675
|
async patchUser(data) {
|
|
845
676
|
this.#ensureAccessToken();
|
|
846
|
-
return this.#transakPatch('
|
|
677
|
+
return this.#transakPatch('/api/v2/kyc/user', data);
|
|
847
678
|
}
|
|
848
679
|
async submitSsnDetails(ssn, quoteId) {
|
|
849
680
|
this.#ensureAccessToken();
|
|
850
|
-
return this.#transakPost('
|
|
851
|
-
ssn,
|
|
852
|
-
quoteId,
|
|
853
|
-
});
|
|
681
|
+
return this.#transakPost('/api/v2/kyc/ssn', { ssn, quoteId });
|
|
854
682
|
}
|
|
855
683
|
async confirmPayment(orderId, paymentMethodId) {
|
|
856
684
|
this.#ensureAccessToken();
|
|
@@ -859,7 +687,7 @@ export class TransakService extends BaseDataService {
|
|
|
859
687
|
paymentMethod: normalizedPaymentMethod,
|
|
860
688
|
});
|
|
861
689
|
const transakOrderId = TransakOrderIdTransformer.extractTransakOrderId(orderId);
|
|
862
|
-
return this.#transakPost('
|
|
690
|
+
return this.#transakPost('/api/v2/orders/payment-confirmation', {
|
|
863
691
|
orderId: transakOrderId,
|
|
864
692
|
paymentMethod: translation.paymentMethod ?? normalizedPaymentMethod,
|
|
865
693
|
});
|
|
@@ -874,38 +702,31 @@ export class TransakService extends BaseDataService {
|
|
|
874
702
|
...translationRequest,
|
|
875
703
|
paymentMethod: normalizePaymentMethodForTranslation(translationRequest.paymentMethod),
|
|
876
704
|
};
|
|
877
|
-
const params = {};
|
|
878
705
|
for (const [key, value] of Object.entries(normalizedRequest)) {
|
|
879
706
|
if (value !== undefined) {
|
|
880
707
|
url.searchParams.set(key, value);
|
|
881
|
-
params[key] = value;
|
|
882
708
|
}
|
|
883
709
|
}
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
throw new HttpError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`);
|
|
896
|
-
}
|
|
897
|
-
return (await fetchResponse.json());
|
|
898
|
-
},
|
|
899
|
-
}));
|
|
710
|
+
const response = await this.#policy.execute(async () => {
|
|
711
|
+
const fetchResponse = await this.#fetch(url.toString(), {
|
|
712
|
+
method: 'GET',
|
|
713
|
+
headers: { Accept: 'application/json' },
|
|
714
|
+
});
|
|
715
|
+
if (!fetchResponse.ok) {
|
|
716
|
+
throw new HttpError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`);
|
|
717
|
+
}
|
|
718
|
+
return fetchResponse.json();
|
|
719
|
+
});
|
|
720
|
+
return response;
|
|
900
721
|
}
|
|
901
722
|
async getIdProofStatus(workFlowRunId) {
|
|
902
723
|
this.#ensureAccessToken();
|
|
903
|
-
return this.#transakGet('
|
|
724
|
+
return this.#transakGet('/api/v2/kyc/id-proof-status', { workFlowRunId });
|
|
904
725
|
}
|
|
905
726
|
async cancelOrder(depositOrderId) {
|
|
906
727
|
this.#ensureAccessToken();
|
|
907
728
|
const transakOrderId = TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);
|
|
908
|
-
await this.#transakDelete(
|
|
729
|
+
await this.#transakDelete(`/api/v2/orders/${transakOrderId}`, {
|
|
909
730
|
cancelReason: 'Creating new order',
|
|
910
731
|
});
|
|
911
732
|
}
|
|
@@ -926,7 +747,7 @@ export class TransakService extends BaseDataService {
|
|
|
926
747
|
}
|
|
927
748
|
async getActiveOrders() {
|
|
928
749
|
this.#ensureAccessToken();
|
|
929
|
-
return this.#transakGet('
|
|
750
|
+
return this.#transakGet('/api/v2/active-orders');
|
|
930
751
|
}
|
|
931
752
|
}
|
|
932
753
|
//# sourceMappingURL=TransakService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransakService.js","sourceRoot":"","sources":["../src/TransakService.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseDataService } from '@metamask/base-data-service';\nimport type {\n CreateServicePolicyOptions,\n DataServiceCacheUpdatedEvent,\n DataServiceGranularCacheUpdatedEvent,\n DataServiceInvalidateQueriesAction,\n} from '@metamask/base-data-service';\nimport { HttpError } from '@metamask/controller-utils';\nimport type { Messenger } from '@metamask/messenger';\nimport type { AuthenticationController } from '@metamask/profile-sync-controller';\nimport {\n any,\n array,\n boolean,\n nullable,\n number,\n optional,\n record,\n string,\n type as looseObject,\n} from '@metamask/superstruct';\nimport type { Struct } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\n\nimport packageJson from '../package.json';\nimport type { RampsClientIdentity } from './client-identity.js';\nimport { addRampsClientIdentityParams } from './client-identity.js';\nimport { RAMPS_SDK_VERSION } from './RampsService.js';\nimport { TRANSAK_ERROR_CODES } from './transakErrorCodes.js';\nimport type { TransakServiceMethodActions } from './TransakService-method-action-types.js';\n\n// === TYPES ===\n\nexport type TransakAccessToken = {\n accessToken: string;\n ttl: number;\n created: Date;\n};\n\nexport type TransakUserDetails = {\n id: string;\n firstName: string;\n lastName: string;\n email: string;\n mobileNumber: string;\n status: string;\n dob: string;\n kyc: TransakUserDetailsKycDetails;\n address: TransakUserDetailsAddress;\n createdAt: string;\n};\n\nexport type TransakUserDetailsAddress = {\n addressLine1: string;\n addressLine2: string;\n state: string;\n city: string;\n postCode: string;\n country: string;\n countryCode: string;\n};\n\nexport type TransakUserDetailsKycDetails = {\n status: string;\n type: string;\n attempts: TransakUserDetailsKycAttempt[];\n highestApprovedKYCType: string | null;\n kycMarkedBy: string | null;\n kycResult: string | null;\n rejectionDetails: TransakUserDetailsKycAttemptRejectionDetails | null;\n userId: string;\n workFlowRunId: string;\n};\n\nexport type TransakUserDetailsKycAttempt = {\n artifacts: { key: string; value: string }[];\n metadata: {\n transaction: {\n kycVendorId: string;\n scanReference: string;\n workflowId: string;\n };\n };\n rejectionDetails: TransakUserDetailsKycAttemptRejectionDetails;\n result: string;\n sessionId: string;\n};\n\nexport type TransakUserDetailsKycAttemptRejectionDetails = {\n archetype: string;\n reason: string;\n reasonCode: string;\n};\n\nexport type TransakBuyQuote = {\n quoteId: string;\n conversionPrice: number;\n marketConversionPrice: number;\n slippage: number;\n fiatCurrency: string;\n cryptoCurrency: string;\n paymentMethod: string;\n fiatAmount: number;\n cryptoAmount: number;\n isBuyOrSell: string;\n network: string;\n feeDecimal: number;\n totalFee: number;\n feeBreakdown: { [prop: string]: string | number | boolean | null }[];\n nonce: number;\n cryptoLiquidityProvider: string;\n notes: { [prop: string]: string | number | boolean | null }[];\n requestedAssetId: string;\n requestedChainId: string;\n};\n\nexport type TransakKycRequirement = {\n status:\n | 'NOT_SUBMITTED'\n | 'APPROVED'\n | 'ADDITIONAL_FORMS_REQUIRED'\n | 'SUBMITTED';\n kycType: string;\n isAllowedToPlaceOrder: boolean;\n};\n\nexport type TransakAdditionalRequirement = {\n type: string;\n metadata?: {\n options: string[];\n documentProofOptions: string[];\n expiresAt: string;\n kycUrl: string;\n workFlowRunId: string;\n };\n};\n\nexport type TransakAdditionalRequirementsResponse = {\n formsRequired: TransakAdditionalRequirement[];\n};\n\nexport type TransakOttResponse = {\n ott: string;\n};\n\nexport type TransakOrderPaymentMethod = {\n fiatCurrency: string;\n paymentMethod: string;\n fields: { name: string; id: string; value: string }[];\n};\n\nexport type TransakDepositNetwork = {\n name: string;\n chainId: string;\n};\n\nexport type TransakDepositCryptoCurrency = {\n assetId: string;\n name: string;\n chainId: string;\n decimals: number;\n iconUrl: string;\n symbol: string;\n};\n\nexport type TransakDepositPaymentMethod = {\n id: string;\n name: string;\n shortName?: string;\n duration: string;\n icon: string;\n iconColor?: { light: string; dark: string };\n isManualBankTransfer?: boolean;\n};\n\nexport type TransakDepositRegion = {\n isoCode: string;\n flag: string;\n name: string;\n phone: { prefix: string; placeholder: string; template: string };\n currency: string;\n supported: boolean;\n recommended?: boolean;\n geolocated?: boolean;\n};\n\nexport type TransakDepositOrder = {\n id: string;\n provider: string;\n cryptoAmount: number | string;\n fiatAmount: number;\n cryptoCurrency: TransakDepositCryptoCurrency;\n fiatCurrency: string;\n providerOrderId: string;\n providerOrderLink: string;\n createdAt: number;\n paymentMethod: TransakDepositPaymentMethod;\n totalFeesFiat: number;\n txHash: string;\n walletAddress: string;\n status: string;\n network: TransakDepositNetwork;\n timeDescriptionPending: string;\n fiatAmountInUsd: number;\n feesInUsd: number;\n region: TransakDepositRegion;\n orderType: 'DEPOSIT';\n exchangeRate?: number;\n statusDescription?: string;\n paymentDetails: TransakOrderPaymentMethod[];\n partnerFees?: number;\n networkFees?: number;\n};\n\nexport type TransakOrder = {\n orderId: string;\n partnerUserId: string;\n status: string;\n isBuyOrSell: string;\n fiatCurrency: string;\n cryptoCurrency: string;\n network: string;\n walletAddress: string;\n quoteId: string;\n fiatAmount: number;\n fiatAmountInUsd: number;\n amountPaid: number;\n cryptoAmount: number;\n conversionPrice: number;\n totalFeeInFiat: number;\n paymentDetails: TransakOrderPaymentMethod[];\n txHash: string;\n transationLink: string | null;\n createdAt: string;\n updatedAt: string;\n completedAt: string;\n};\n\nexport type TransakQuoteTranslation = {\n region: string;\n paymentMethod: string | undefined;\n cryptoCurrency: string;\n network: string;\n fiatCurrency: string;\n};\n\nexport type TransakTranslationRequest = {\n regionId?: string;\n cryptoCurrencyId?: string;\n chainId?: string;\n fiatCurrencyId?: string;\n paymentMethod?: string;\n};\n\nexport type TransakUserLimits = {\n limits: { '1': number; '30': number; '365': number };\n spent: { '1': number; '30': number; '365': number };\n remaining: { '1': number; '30': number; '365': number };\n exceeded: { '1': boolean; '30': boolean; '365': boolean };\n shortage: Record<string, number>;\n};\n\nexport type PatchUserRequestBody = Partial<{\n personalDetails: Partial<{\n firstName: string;\n lastName: string;\n mobileNumber: string;\n dob: string;\n }>;\n addressDetails: Partial<{\n addressLine1: string;\n addressLine2: string;\n state: string;\n city: string;\n postCode: string;\n countryCode: string;\n }>;\n}>;\n\nexport type TransakIdProofStatus = {\n status: 'NOT_SUBMITTED' | 'SUBMITTED';\n kycType: string;\n randomLogIdentifier: string;\n};\n\n// === ENVIRONMENT ===\n\nexport enum TransakEnvironment {\n Production = 'production',\n Staging = 'staging',\n Development = 'development',\n}\n\nenum TransakApiProviders {\n TransakNative = 'transak-native',\n TransakNativeStaging = 'transak-native-staging',\n}\n\n// === ORDER ID UTILITIES ===\n\nexport class TransakOrderIdTransformer {\n static depositOrderIdToTransakOrderId(depositOrderId: string): string {\n const parts = depositOrderId.split('/');\n return parts[parts.length - 1];\n }\n\n static transakOrderIdToDepositOrderId(\n transakOrderId: string,\n environment: TransakEnvironment,\n ): string {\n const provider =\n environment === TransakEnvironment.Production\n ? 'transak-native'\n : 'transak-native-staging';\n return `/providers/${provider}/orders/${transakOrderId}`;\n }\n\n static isDepositOrderId(orderId: string): boolean {\n return orderId.startsWith('/providers/');\n }\n\n static extractTransakOrderId(orderId: string): string {\n return this.isDepositOrderId(orderId)\n ? this.depositOrderIdToTransakOrderId(orderId)\n : orderId;\n }\n}\n\n// === MESSENGER ===\n\nconst serviceName = 'TransakService';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'setApiKey',\n 'setAccessToken',\n 'clearAccessToken',\n 'sendUserOtp',\n 'verifyUserOtp',\n 'logout',\n 'getUserDetails',\n 'getBuyQuote',\n 'getKycRequirement',\n 'getAdditionalRequirements',\n 'createOrder',\n 'getOrder',\n 'getUserLimits',\n 'requestOtt',\n 'generatePaymentWidgetUrl',\n 'createWidgetUrl',\n 'submitPurposeOfUsageForm',\n 'patchUser',\n 'submitSsnDetails',\n 'confirmPayment',\n 'getTranslation',\n 'getIdProofStatus',\n 'cancelOrder',\n 'cancelAllActiveOrders',\n 'getActiveOrders',\n] as const;\n\n/**\n * Invalidates cached queries held by {@link TransakService}.\n */\nexport type TransakServiceInvalidateQueriesAction =\n DataServiceInvalidateQueriesAction<typeof serviceName>;\n\nexport type TransakServiceActions =\n | TransakServiceMethodActions\n | TransakServiceInvalidateQueriesAction;\n\n/**\n * Actions from other messengers that {@link TransakService} calls.\n */\ntype AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerTokenAction;\n\n/**\n * Published whenever a query or mutation in the service cache changes.\n */\nexport type TransakServiceCacheUpdatedEvent = DataServiceCacheUpdatedEvent<\n typeof serviceName\n>;\n\n/**\n * Published for a single query or mutation whenever it changes in the service\n * cache.\n */\nexport type TransakServiceGranularCacheUpdatedEvent =\n DataServiceGranularCacheUpdatedEvent<typeof serviceName>;\n\nexport type TransakServiceEvents =\n | TransakServiceCacheUpdatedEvent\n | TransakServiceGranularCacheUpdatedEvent;\n\ntype AllowedEvents = never;\n\nexport type TransakServiceMessenger = Messenger<\n typeof serviceName,\n TransakServiceActions | AllowedActions,\n TransakServiceEvents | AllowedEvents\n>;\n\n// === HELPER FUNCTIONS ===\n\n/**\n * Maps ramps API payment method IDs (e.g., \"/payments/debit-credit-card\")\n * to the deposit-format IDs expected by the translation endpoint\n * (e.g., \"credit_debit_card\").\n *\n * The translation endpoint only understands the deposit-format IDs.\n * Canonical IDs may arrive either with the \"/payments/\" prefix\n * (e.g., \"/payments/apple-pay\") or without it (e.g., \"apple-pay\"), so both\n * forms are accepted. If no mapping exists, the input is returned as-is (it\n * may already be in the deposit format).\n */\nconst RAMPS_TO_DEPOSIT_PAYMENT_METHOD: Record<string, string> = {\n '/payments/debit-credit-card': 'credit_debit_card',\n '/payments/apple-pay': 'apple_pay',\n '/payments/google-pay': 'google_pay',\n '/payments/sepa-bank-transfer': 'sepa_bank_transfer',\n '/payments/wire-transfer': 'wire_transfer',\n '/payments/gbp-bank-transfer': 'gbp_bank_transfer',\n};\n\nconst PAYMENTS_PREFIX = '/payments/';\n\nfunction normalizePaymentMethodForTranslation(\n paymentMethod: string | undefined,\n): string | undefined {\n if (!paymentMethod) {\n return undefined;\n }\n const prefixed = paymentMethod.startsWith(PAYMENTS_PREFIX)\n ? paymentMethod\n : `${PAYMENTS_PREFIX}${paymentMethod}`;\n return (\n RAMPS_TO_DEPOSIT_PAYMENT_METHOD[paymentMethod] ??\n RAMPS_TO_DEPOSIT_PAYMENT_METHOD[prefixed] ??\n paymentMethod\n );\n}\n\nfunction getTransakApiBaseUrl(environment: TransakEnvironment): string {\n switch (environment) {\n case TransakEnvironment.Production:\n return 'https://api-gateway.transak.com';\n // Transak has no dev environment; development uses their staging gateway.\n case TransakEnvironment.Staging:\n case TransakEnvironment.Development:\n return 'https://api-gateway-stg.transak.com';\n default:\n throw new Error(`Invalid Transak environment: ${String(environment)}`);\n }\n}\n\nfunction getRampsBaseUrl(environment: TransakEnvironment): string {\n switch (environment) {\n case TransakEnvironment.Production:\n return 'https://on-ramp.api.cx.metamask.io';\n case TransakEnvironment.Staging:\n return 'https://on-ramp.uat-api.cx.metamask.io';\n case TransakEnvironment.Development:\n return 'https://on-ramp.dev-api.cx.metamask.io';\n default:\n throw new Error(`Invalid Transak environment: ${String(environment)}`);\n }\n}\n\nfunction getRampsProviderPath(environment: TransakEnvironment): string {\n // The dev ramps API registers the same `transak-native-staging` provider\n // id as UAT; only production uses `transak-native`.\n const providerId =\n environment === TransakEnvironment.Production\n ? TransakApiProviders.TransakNative\n : TransakApiProviders.TransakNativeStaging;\n return `/providers/${providerId}`;\n}\n\nfunction getPaymentWidgetBaseUrl(environment: TransakEnvironment): string {\n switch (environment) {\n case TransakEnvironment.Production:\n return 'https://global.transak.com';\n // Transak has no dev environment; development uses their staging widget.\n case TransakEnvironment.Staging:\n case TransakEnvironment.Development:\n return 'https://global-stg.transak.com';\n default:\n throw new Error(`Invalid Transak environment: ${String(environment)}`);\n }\n}\n\n/**\n * Transak requires `referrerDomain` in `widgetParams` alongside the partner\n * API key (which the ramps API proxy injects server-side). Identifies the\n * MetaMask client to Transak. Default when the client does not pass a\n * `referrerDomain` constructor option (e.g. the mobile app passes its\n * package name / bundle id).\n */\nconst TRANSAK_REFERRER_DOMAIN = 'metamask.io';\n\n// === TRANSAK API ERROR ===\n\nexport class TransakApiError extends HttpError {\n readonly errorCode: string | undefined;\n\n readonly apiMessage: string | undefined;\n\n constructor(\n status: number,\n message: string,\n errorCode?: string,\n apiMessage?: string,\n ) {\n super(status, message);\n this.errorCode = errorCode;\n this.apiMessage = apiMessage;\n }\n}\n\n// === RESPONSE STRUCTS ===\n\n/**\n * The structs below are intentionally lenient: they require only the fields\n * the service itself depends on, check the type of any other field that is\n * present, and ignore extra fields the APIs return. The APIs omit fields for\n * incomplete profiles and sparse responses, and responses were not validated\n * before, so a missing field must not fail a call.\n */\n\nconst TransakPaymentDetailsStruct = array(\n looseObject({\n fiatCurrency: string(),\n paymentMethod: string(),\n fields: array(\n looseObject({ name: string(), id: string(), value: string() }),\n ),\n }),\n);\n\nconst SendUserOtpResponseStruct = looseObject({\n isTncAccepted: boolean(),\n stateToken: string(),\n email: string(),\n expiresIn: number(),\n});\n\nconst VerifyUserOtpResponseStruct = looseObject({\n accessToken: string(),\n ttl: number(),\n created: string(),\n});\n\nconst UserDetailsStruct = looseObject({\n id: optional(string()),\n firstName: optional(string()),\n lastName: optional(string()),\n email: optional(string()),\n mobileNumber: optional(string()),\n status: optional(string()),\n dob: optional(string()),\n kyc: optional(\n looseObject({\n status: optional(string()),\n type: optional(string()),\n userId: optional(string()),\n workFlowRunId: optional(string()),\n }),\n ),\n address: optional(\n looseObject({\n addressLine1: optional(string()),\n addressLine2: optional(string()),\n state: optional(string()),\n city: optional(string()),\n postCode: optional(string()),\n country: optional(string()),\n countryCode: optional(string()),\n }),\n ),\n createdAt: optional(string()),\n});\n\nconst BuyQuoteStruct = looseObject({\n quoteId: string(),\n conversionPrice: optional(number()),\n marketConversionPrice: optional(number()),\n slippage: optional(number()),\n fiatCurrency: optional(string()),\n cryptoCurrency: optional(string()),\n paymentMethod: optional(string()),\n fiatAmount: optional(number()),\n cryptoAmount: optional(number()),\n isBuyOrSell: optional(string()),\n network: optional(string()),\n feeDecimal: optional(number()),\n totalFee: optional(number()),\n feeBreakdown: optional(array(record(string(), any()))),\n nonce: optional(number()),\n cryptoLiquidityProvider: optional(string()),\n notes: optional(array(record(string(), any()))),\n});\n\nconst KycRequirementStruct = looseObject({\n status: string(),\n kycType: string(),\n isAllowedToPlaceOrder: boolean(),\n});\n\nconst AdditionalRequirementsStruct = looseObject({\n formsRequired: array(\n looseObject({ type: string(), metadata: optional(any()) }),\n ),\n});\n\nconst TransakOrderStruct = looseObject({\n orderId: string(),\n walletAddress: string(),\n paymentDetails: optional(nullable(TransakPaymentDetailsStruct)),\n});\n\nconst TransakOrderPaymentDetailsStruct = looseObject({\n paymentDetails: optional(nullable(TransakPaymentDetailsStruct)),\n});\n\nconst ActiveOrdersStruct = array(\n looseObject({ orderId: string(), status: string() }),\n);\n\nconst DepositOrderStruct = looseObject({\n providerOrderId: string(),\n status: string(),\n});\n\nconst UserLimitsStruct = looseObject({\n limits: looseObject({ '1': number(), '30': number(), '365': number() }),\n spent: looseObject({ '1': number(), '30': number(), '365': number() }),\n remaining: looseObject({ '1': number(), '30': number(), '365': number() }),\n exceeded: looseObject({ '1': boolean(), '30': boolean(), '365': boolean() }),\n shortage: optional(record(string(), number())),\n});\n\nconst OttStruct = looseObject({ ott: string() });\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst TranslationStruct: Struct<any> = looseObject({\n region: optional(string()),\n paymentMethod: optional(string()),\n cryptoCurrency: string(),\n network: string(),\n fiatCurrency: string(),\n});\n\nconst IdProofStatusStruct = looseObject({\n status: string(),\n kycType: string(),\n randomLogIdentifier: optional(string()),\n});\n\nconst PaymentConfirmationStruct = looseObject({ success: boolean() });\n\nconst WidgetUrlResponseStruct = looseObject({ widgetUrl: string() });\n\n/**\n * Wraps a struct in the `{ data }` envelope the Transak API gateway uses.\n *\n * @param dataStruct - The struct for the `data` property.\n * @returns The envelope struct.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction envelope(dataStruct: Struct<any>): Struct<any> {\n return looseObject({ data: dataStruct });\n}\n\n// === SERVICE DEFINITION ===\n\nexport class TransakService extends BaseDataService<\n typeof serviceName,\n TransakServiceMessenger\n> {\n readonly #fetch: typeof fetch;\n\n readonly #environment: TransakEnvironment;\n\n readonly #context: string;\n\n readonly #orderRetryDelayMs: number;\n\n #apiKey: string | null = null;\n\n #accessToken: TransakAccessToken | null = null;\n\n /**\n * Optional ramps API base URL override for local development (mirrors\n * `RampsService`'s `baseUrlOverride`). Applies to the requests this service\n * sends to the ramps API (orders, widget-url proxy), not to direct Transak\n * API calls.\n */\n readonly #rampsApiBaseUrlOverride?: string;\n\n /**\n * Identifies the client to Transak in `widgetParams` (e.g. the mobile app's\n * package name / bundle id). Defaults to `metamask.io`.\n */\n readonly #referrerDomain: string;\n\n readonly #clientIdentity: RampsClientIdentity;\n\n constructor({\n messenger,\n environment = TransakEnvironment.Staging,\n context,\n fetch: fetchFunction,\n apiKey,\n policyOptions,\n orderRetryDelayMs = 2000,\n rampsApiBaseUrlOverride,\n referrerDomain = TRANSAK_REFERRER_DOMAIN,\n clientProduct,\n clientVersion,\n }: {\n messenger: TransakServiceMessenger;\n environment?: TransakEnvironment;\n context: string;\n fetch: typeof fetch;\n apiKey?: string;\n policyOptions?: CreateServicePolicyOptions;\n orderRetryDelayMs?: number;\n rampsApiBaseUrlOverride?: string;\n referrerDomain?: string;\n clientProduct?: string;\n clientVersion?: string;\n }) {\n super({ name: serviceName, messenger, policyOptions });\n this.#fetch = fetchFunction;\n this.#environment = environment;\n this.#context = context;\n this.#apiKey = apiKey ?? null;\n this.#orderRetryDelayMs = orderRetryDelayMs;\n this.#rampsApiBaseUrlOverride = rampsApiBaseUrlOverride;\n this.#referrerDomain = referrerDomain;\n this.#clientIdentity = {\n clientProduct,\n clientVersion,\n };\n\n this.messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n setApiKey(apiKey: string): void {\n this.#apiKey = apiKey;\n }\n\n getApiKey(): string | null {\n return this.#apiKey;\n }\n\n #ensureApiKey(): string {\n if (!this.#apiKey) {\n throw new Error('Transak API key is required but not set.');\n }\n return this.#apiKey;\n }\n\n setAccessToken(token: TransakAccessToken): void {\n this.#accessToken = token;\n }\n\n getAccessToken(): TransakAccessToken | null {\n return this.#accessToken;\n }\n\n clearAccessToken(): void {\n this.#accessToken = null;\n }\n\n #ensureAccessToken(): void {\n if (!this.#accessToken?.accessToken) {\n throw new HttpError(\n 401,\n 'Authentication required. Please log in to continue.',\n );\n }\n\n const createdTime = new Date(this.#accessToken.created).getTime();\n const tokenAgeMs = Date.now() - createdTime;\n if (tokenAgeMs > this.#accessToken.ttl * 1000) {\n this.clearAccessToken();\n throw new HttpError(\n 401,\n 'Authentication token has expired. Please log in again.',\n );\n }\n }\n\n #getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n if (this.#accessToken?.accessToken) {\n headers.authorization = this.#accessToken.accessToken;\n }\n return headers;\n }\n\n async #throwTransakApiError(\n fetchResponse: Response,\n url: URL,\n ): Promise<never> {\n let errorBody = '';\n let errorCode: string | undefined;\n let apiMessage: string | undefined;\n try {\n errorBody = await fetchResponse.text();\n const parsed = JSON.parse(errorBody) as {\n error?: {\n code?: string;\n errorCode?: string | number;\n message?: string;\n };\n };\n errorCode =\n parsed?.error?.code ??\n (parsed?.error?.errorCode !== null &&\n parsed?.error?.errorCode !== undefined\n ? String(parsed.error.errorCode)\n : undefined);\n apiMessage =\n typeof parsed?.error?.message === 'string'\n ? parsed.error.message\n : undefined;\n } catch {\n // ignore body read/parse failures\n }\n throw new TransakApiError(\n fetchResponse.status,\n `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'${errorBody ? `: ${errorBody}` : ''}`,\n errorCode,\n apiMessage,\n );\n }\n\n /**\n * Identifies the current login session without exposing the access token,\n * so reads made under different sessions never share a request.\n *\n * @returns The access token creation time in milliseconds, or `null` when\n * logged out.\n */\n #getSessionId(): number | null {\n return this.#accessToken\n ? new Date(this.#accessToken.created).getTime()\n : null;\n }\n\n async #transakGet<Data>(\n queryName: string,\n path: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataStruct: Struct<any>,\n params?: Record<string, string>,\n ): Promise<Data> {\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== null && value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n }\n\n const apiKey = this.#ensureApiKey();\n url.searchParams.set('apiKey', apiKey);\n\n const response = (await this.fetchQuery({\n // The API key is deliberately left out of the key, as keys appear in the\n // names of published `cacheUpdated` events.\n queryKey: [\n `${this.name}:${queryName}`,\n path,\n params ?? {},\n this.#getSessionId(),\n ],\n staleTime: 0,\n gcTime: 0,\n responseStruct: envelope(dataStruct),\n queryFn: async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: this.#getHeaders(),\n });\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n return (await fetchResponse.json()) as Json;\n },\n })) as { data: Data };\n\n return response.data;\n }\n\n /**\n * Sends a request that changes server side data. Mutations are never\n * retried, and the mutation key holds only the method name, as keys appear\n * in the names of published `cacheUpdated` events.\n *\n * @param options - The options.\n * @param options.mutationName - The name of the public method.\n * @param options.url - The request URL.\n * @param options.init - The request method, headers and body.\n * @param options.responseStruct - The struct for the response body. When\n * omitted, the response body is ignored.\n * @returns The validated response body, or `null` if it was ignored.\n */\n async #sendMutation({\n mutationName,\n url,\n init,\n responseStruct,\n }: {\n mutationName: string;\n url: URL;\n init: RequestInit;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n responseStruct?: Struct<any>;\n }): Promise<unknown> {\n return (await this.executeMutation({\n mutationKey: [`${this.name}:${mutationName}`],\n // Some responses carry credentials (`verifyUserOtp` returns the access\n // token), so do not keep finished mutations in the cache.\n gcTime: 0,\n responseStruct,\n mutationFn: async () => {\n const fetchResponse = await this.#fetch(url.toString(), init);\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n return responseStruct ? ((await fetchResponse.json()) as Json) : null;\n },\n })) as unknown;\n }\n\n async #transakPost<Data>(\n mutationName: string,\n path: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataStruct: Struct<any>,\n body?: Record<string, unknown>,\n ): Promise<Data> {\n const apiKey = this.#ensureApiKey();\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n\n const response = (await this.#sendMutation({\n mutationName,\n url,\n init: {\n method: 'POST',\n headers: this.#getHeaders(),\n body: JSON.stringify({ ...(body ?? {}), apiKey }),\n },\n responseStruct: envelope(dataStruct),\n })) as { data: Data };\n\n return response.data;\n }\n\n async #transakPatch<Data>(\n mutationName: string,\n path: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataStruct: Struct<any>,\n body: Record<string, unknown>,\n ): Promise<Data> {\n const apiKey = this.#ensureApiKey();\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n url.searchParams.set('apiKey', apiKey);\n\n const response = (await this.#sendMutation({\n mutationName,\n url,\n init: {\n method: 'PATCH',\n headers: this.#getHeaders(),\n body: JSON.stringify(body),\n },\n responseStruct: envelope(dataStruct),\n })) as { data: Data };\n\n return response.data;\n }\n\n async #transakDelete(\n mutationName: string,\n path: string,\n params?: Record<string, string>,\n ): Promise<void> {\n const apiKey = this.#ensureApiKey();\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n url.searchParams.set('apiKey', apiKey);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== null && value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n }\n\n await this.#sendMutation({\n mutationName,\n url,\n init: { method: 'DELETE', headers: this.#getHeaders() },\n });\n }\n\n /**\n * Gets the ramps API base URL, respecting the local-development override\n * when set (same semantics as `RampsService`'s `baseUrlOverride`).\n *\n * @returns The ramps API base URL to use.\n */\n #getRampsApiBaseUrl(): string {\n return this.#rampsApiBaseUrlOverride ?? getRampsBaseUrl(this.#environment);\n }\n\n /**\n * Adds the common request parameters to a ramps API proxy URL, mirroring\n * `RampsService`'s `#addCommonParams`.\n *\n * @param url - The URL to add parameters to.\n */\n #addRampsCommonParams(url: URL): void {\n url.searchParams.set('action', 'deposit');\n url.searchParams.set('sdk', RAMPS_SDK_VERSION);\n url.searchParams.set('controller', packageJson.version);\n url.searchParams.set('context', this.#context);\n // In the query string (not headers) so CDN-cached responses vary per\n // client product / version.\n addRampsClientIdentityParams(url, this.#clientIdentity);\n }\n\n async #ordersApiGet<Data>(\n queryName: string,\n path: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataStruct: Struct<any>,\n params?: Record<string, string>,\n ): Promise<Data> {\n const baseUrl = this.#getRampsApiBaseUrl();\n const providerPath = getRampsProviderPath(this.#environment);\n const url = new URL(`${providerPath}${path}`, baseUrl);\n\n url.searchParams.set('action', 'deposit');\n url.searchParams.set('context', this.#context);\n // In the query string (not headers) so CDN-cached responses vary per\n // client product / version.\n addRampsClientIdentityParams(url, this.#clientIdentity);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== null && value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n }\n\n return (await this.fetchQuery({\n queryKey: [`${this.name}:${queryName}`, path, params ?? {}],\n staleTime: 0,\n gcTime: 0,\n responseStruct: dataStruct,\n queryFn: async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: { Accept: 'application/json' },\n });\n if (!fetchResponse.ok) {\n throw new HttpError(\n fetchResponse.status,\n `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`,\n );\n }\n return (await fetchResponse.json()) as Json;\n },\n })) as Data;\n }\n\n // === PUBLIC API METHODS ===\n\n async sendUserOtp(email: string): Promise<{\n isTncAccepted: boolean;\n stateToken: string;\n email: string;\n expiresIn: number;\n }> {\n const result = await this.#transakPost<{\n isTncAccepted: boolean;\n stateToken: string;\n email: string;\n expiresIn: number;\n }>('sendUserOtp', '/api/v2/auth/login', SendUserOtpResponseStruct, {\n email,\n });\n return result;\n }\n\n async verifyUserOtp(\n email: string,\n verificationCode: string,\n stateToken: string,\n ): Promise<TransakAccessToken> {\n const responseData = await this.#transakPost<{\n accessToken: string;\n ttl: number;\n created: string;\n }>('verifyUserOtp', '/api/v2/auth/verify', VerifyUserOtpResponseStruct, {\n email,\n otp: verificationCode,\n stateToken,\n });\n\n const accessToken: TransakAccessToken = {\n accessToken: responseData.accessToken,\n ttl: responseData.ttl,\n created: new Date(responseData.created),\n };\n\n this.setAccessToken(accessToken);\n return accessToken;\n }\n\n async logout(): Promise<string> {\n this.#ensureAccessToken();\n try {\n const result = await this.#transakPost<string>(\n 'logout',\n '/api/v1/auth/logout',\n string(),\n );\n this.clearAccessToken();\n return result;\n } catch (error) {\n if (error instanceof HttpError && error.httpStatus === 401) {\n this.clearAccessToken();\n return 'user was already logged out';\n }\n throw error;\n }\n }\n\n async getUserDetails(): Promise<TransakUserDetails> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakUserDetails>(\n 'getUserDetails',\n '/api/v2/user/',\n UserDetailsStruct,\n );\n }\n\n async getBuyQuote(\n genericFiatCurrency: string,\n genericCryptoCurrency: string,\n genericNetwork: string,\n genericPaymentMethod: string,\n fiatAmount: string,\n isFeeExcludedFromFiat = true,\n ): Promise<TransakBuyQuote> {\n const normalizedPaymentMethod = normalizePaymentMethodForTranslation(\n genericPaymentMethod || undefined,\n );\n const translationRequest = {\n cryptoCurrencyId: genericCryptoCurrency,\n chainId: genericNetwork,\n fiatCurrencyId: genericFiatCurrency,\n paymentMethod: normalizedPaymentMethod,\n };\n\n const translation = await this.getTranslation(translationRequest);\n\n const params: Record<string, string> = {\n fiatCurrency: translation.fiatCurrency,\n cryptoCurrency: translation.cryptoCurrency,\n isBuyOrSell: 'BUY',\n network: translation.network,\n fiatAmount,\n };\n\n if (isFeeExcludedFromFiat) {\n params.isFeeExcludedFromFiat = 'true';\n }\n\n if (translation.paymentMethod) {\n params.paymentMethod = translation.paymentMethod;\n }\n\n const quote = await this.#transakGet<\n Omit<TransakBuyQuote, 'requestedAssetId' | 'requestedChainId'>\n >('getBuyQuote', '/api/v2/lookup/quotes', BuyQuoteStruct, params);\n\n return {\n ...quote,\n requestedAssetId: genericCryptoCurrency,\n requestedChainId: genericNetwork,\n };\n }\n\n async getKycRequirement(quoteId: string): Promise<TransakKycRequirement> {\n this.#ensureAccessToken();\n const result = await this.#transakGet<TransakKycRequirement>(\n 'getKycRequirement',\n '/api/v2/kyc/requirement',\n KycRequirementStruct,\n {\n 'metadata[quoteId]': quoteId,\n },\n );\n return result;\n }\n\n async getAdditionalRequirements(\n quoteId: string,\n ): Promise<TransakAdditionalRequirementsResponse> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakAdditionalRequirementsResponse>(\n 'getAdditionalRequirements',\n '/api/v2/kyc/additional-requirements',\n AdditionalRequirementsStruct,\n { 'metadata[quoteId]': quoteId },\n );\n }\n\n async createOrder(\n quoteId: string,\n walletAddress: string,\n paymentMethodId: string,\n ): Promise<TransakDepositOrder> {\n this.#ensureAccessToken();\n\n const normalizedPaymentMethod =\n normalizePaymentMethodForTranslation(paymentMethodId);\n const translation = await this.getTranslation({\n paymentMethod: normalizedPaymentMethod,\n });\n\n const paymentInstrumentId =\n translation.paymentMethod ?? normalizedPaymentMethod;\n\n try {\n const transakOrder = await this.#transakPost<TransakOrder>(\n 'createOrder',\n '/api/v2/orders',\n TransakOrderStruct,\n {\n quoteId,\n walletAddress,\n paymentInstrumentId,\n },\n );\n\n const depositOrderId =\n TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n transakOrder.orderId,\n this.#environment,\n );\n\n return this.getOrder(\n depositOrderId,\n transakOrder.walletAddress,\n transakOrder.paymentDetails,\n );\n } catch (error) {\n if (\n error instanceof TransakApiError &&\n error.httpStatus === 409 &&\n error.errorCode === TRANSAK_ERROR_CODES.ORDER_EXISTS\n ) {\n await this.cancelAllActiveOrders();\n await new Promise((resolve) =>\n setTimeout(resolve, this.#orderRetryDelayMs),\n );\n\n const retryOrder = await this.#transakPost<TransakOrder>(\n 'createOrder',\n '/api/v2/orders',\n TransakOrderStruct,\n {\n quoteId,\n walletAddress,\n paymentInstrumentId,\n },\n );\n\n const retryDepositOrderId =\n TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n retryOrder.orderId,\n this.#environment,\n );\n\n return this.getOrder(\n retryDepositOrderId,\n retryOrder.walletAddress,\n retryOrder.paymentDetails,\n );\n }\n throw error;\n }\n }\n\n async getOrder(\n orderId: string,\n wallet: string,\n paymentDetails?: TransakOrderPaymentMethod[],\n ): Promise<TransakDepositOrder> {\n let depositOrderId: string;\n if (TransakOrderIdTransformer.isDepositOrderId(orderId)) {\n depositOrderId = orderId;\n } else {\n depositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n orderId,\n this.#environment,\n );\n }\n\n const transakOrderId =\n TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);\n\n const order = await this.#ordersApiGet<TransakDepositOrder>(\n 'getOrder',\n `/orders/${transakOrderId}`,\n DepositOrderStruct,\n { wallet },\n );\n\n const orderWithId = {\n ...order,\n id: depositOrderId,\n orderType: 'DEPOSIT' as const,\n };\n\n if (paymentDetails && paymentDetails.length > 0) {\n return { ...orderWithId, paymentDetails };\n }\n\n if (this.#accessToken?.accessToken) {\n try {\n const transakOrder = await this.#transakGet<TransakOrder>(\n 'getOrderPaymentDetails',\n `/api/v2/orders/${transakOrderId}`,\n TransakOrderPaymentDetailsStruct,\n );\n return { ...orderWithId, paymentDetails: transakOrder.paymentDetails };\n } catch {\n return orderWithId;\n }\n }\n\n return orderWithId;\n }\n\n async getUserLimits(\n fiatCurrency: string,\n paymentMethod: string,\n kycType: string,\n ): Promise<TransakUserLimits> {\n this.#ensureAccessToken();\n\n const translation = await this.getTranslation({\n paymentMethod: normalizePaymentMethodForTranslation(paymentMethod),\n });\n\n const params: Record<string, string> = {\n isBuyOrSell: 'BUY',\n kycType,\n fiatCurrency,\n };\n\n if (translation.paymentMethod) {\n params.paymentCategory = translation.paymentMethod;\n }\n\n return this.#transakGet<TransakUserLimits>(\n 'getUserLimits',\n '/api/v2/orders/user-limit',\n UserLimitsStruct,\n params,\n );\n }\n\n /**\n * @deprecated Use {@link createWidgetUrl} instead. The OTT flow requires the\n * partner API key on the client and Transak is deprecating `request-ott`.\n * @returns The one-time token response.\n */\n async requestOtt(): Promise<TransakOttResponse> {\n this.#ensureAccessToken();\n const result = await this.#transakPost<TransakOttResponse>(\n 'requestOtt',\n '/api/v2/auth/request-ott',\n OttStruct,\n );\n return result;\n }\n\n /**\n * @deprecated Use {@link createWidgetUrl} instead. This builds the widget\n * URL client-side and embeds the partner API key in it.\n * @param ottToken - The one-time token for widget authentication.\n * @param quote - The buy quote to pre-fill in the widget.\n * @param walletAddress - The destination wallet address.\n * @param extraParams - Optional additional URL parameters.\n * @returns The fully constructed widget URL string.\n */\n generatePaymentWidgetUrl(\n ottToken: string,\n quote: TransakBuyQuote,\n walletAddress: string,\n extraParams?: Record<string, string>,\n ): string {\n const apiKey = this.#ensureApiKey();\n const widgetBaseUrl = getPaymentWidgetBaseUrl(this.#environment);\n\n const defaultParams: Record<string, string> = {\n apiKey,\n ott: ottToken,\n fiatCurrency: quote.fiatCurrency,\n cryptoCurrencyCode: quote.cryptoCurrency,\n productsAvailed: 'BUY',\n fiatAmount: quote.fiatAmount.toString(),\n network: quote.network,\n hideExchangeScreen: 'true',\n walletAddress,\n disableWalletAddressForm: 'true',\n paymentMethod: quote.paymentMethod,\n redirectURL:\n 'https://on-ramp-content.api.cx.metamask.io/regions/fake-callback',\n hideMenu: 'true',\n };\n\n const params = new URLSearchParams({\n ...defaultParams,\n ...extraParams,\n });\n\n const widgetUrl = new URL(widgetBaseUrl);\n widgetUrl.search = params.toString();\n return widgetUrl.toString();\n }\n\n /**\n * Creates a Transak payment widget URL through the ramps API proxy\n * (`POST {rampsBaseUrl}/providers/{providerId}/widget-url`). The proxy\n * injects the partner API key and derives the user IP server-side, so\n * neither leaves the backend. Replaces the OTT flow ({@link requestOtt} +\n * {@link generatePaymentWidgetUrl}).\n *\n * Requires both a Transak access token (user must be logged in to Transak)\n * and a MetaMask bearer token from `AuthenticationController`.\n *\n * @param quote - The buy quote to pre-fill in the widget.\n * @param walletAddress - The destination wallet address.\n * @param extraParams - Optional additional widget parameters (e.g. theming).\n * Keys must be on the proxy's allowlist or the request is rejected.\n * @returns The single-use widget URL (expires after 5 minutes).\n */\n async createWidgetUrl(\n quote: TransakBuyQuote,\n walletAddress: string,\n extraParams?: Record<string, string>,\n ): Promise<string> {\n this.#ensureAccessToken();\n const bearerToken = await this.messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n\n const baseUrl = this.#getRampsApiBaseUrl();\n const providerPath = getRampsProviderPath(this.#environment);\n const url = new URL(`${providerPath}/widget-url`, baseUrl);\n\n this.#addRampsCommonParams(url);\n\n const widgetParams: Record<string, string | number> = {\n referrerDomain: this.#referrerDomain,\n fiatCurrency: quote.fiatCurrency,\n cryptoCurrencyCode: quote.cryptoCurrency,\n fiatAmount: quote.fiatAmount,\n network: quote.network,\n paymentMethod: quote.paymentMethod,\n walletAddress,\n hideExchangeScreen: 'true',\n disableWalletAddressEdit: 'true',\n hideMenu: 'true',\n redirectURL:\n 'https://on-ramp-content.api.cx.metamask.io/regions/fake-callback',\n ...extraParams,\n };\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n };\n if (this.#accessToken?.accessToken) {\n headers['x-transak-access-token'] = this.#accessToken.accessToken;\n }\n\n const response = (await this.#sendMutation({\n mutationName: 'createWidgetUrl',\n url,\n init: {\n method: 'POST',\n headers,\n body: JSON.stringify({ widgetParams }),\n },\n responseStruct: WidgetUrlResponseStruct,\n })) as { widgetUrl: string };\n\n return response.widgetUrl;\n }\n\n async submitPurposeOfUsageForm(purpose: string[]): Promise<void> {\n this.#ensureAccessToken();\n await this.#transakPost(\n 'submitPurposeOfUsageForm',\n '/api/v2/kyc/purpose-of-usage',\n any(),\n { purposeList: purpose },\n );\n }\n\n async patchUser(data: PatchUserRequestBody): Promise<unknown> {\n this.#ensureAccessToken();\n return this.#transakPatch('patchUser', '/api/v2/kyc/user', any(), data);\n }\n\n async submitSsnDetails(ssn: string, quoteId: string): Promise<unknown> {\n this.#ensureAccessToken();\n return this.#transakPost('submitSsnDetails', '/api/v2/kyc/ssn', any(), {\n ssn,\n quoteId,\n });\n }\n\n async confirmPayment(\n orderId: string,\n paymentMethodId: string,\n ): Promise<{ success: boolean }> {\n this.#ensureAccessToken();\n\n const normalizedPaymentMethod =\n normalizePaymentMethodForTranslation(paymentMethodId);\n const translation = await this.getTranslation({\n paymentMethod: normalizedPaymentMethod,\n });\n\n const transakOrderId =\n TransakOrderIdTransformer.extractTransakOrderId(orderId);\n\n return this.#transakPost<{ success: boolean }>(\n 'confirmPayment',\n '/api/v2/orders/payment-confirmation',\n PaymentConfirmationStruct,\n {\n orderId: transakOrderId,\n paymentMethod: translation.paymentMethod ?? normalizedPaymentMethod,\n },\n );\n }\n\n async getTranslation(\n translationRequest: TransakTranslationRequest,\n ): Promise<TransakQuoteTranslation> {\n const baseUrl = getRampsBaseUrl(this.#environment);\n const providerPath = getRampsProviderPath(this.#environment);\n const url = new URL(`${providerPath}/native/translate`, baseUrl);\n\n url.searchParams.set('action', 'deposit');\n url.searchParams.set('context', this.#context);\n\n const normalizedRequest = {\n ...translationRequest,\n paymentMethod: normalizePaymentMethodForTranslation(\n translationRequest.paymentMethod,\n ),\n };\n\n const params: Record<string, string> = {};\n for (const [key, value] of Object.entries(normalizedRequest)) {\n if (value !== undefined) {\n url.searchParams.set(key, value);\n params[key] = value;\n }\n }\n\n return (await this.fetchQuery({\n queryKey: [`${this.name}:getTranslation`, params],\n staleTime: 0,\n gcTime: 0,\n responseStruct: TranslationStruct,\n queryFn: async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: { Accept: 'application/json' },\n });\n if (!fetchResponse.ok) {\n throw new HttpError(\n fetchResponse.status,\n `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`,\n );\n }\n return (await fetchResponse.json()) as Json;\n },\n })) as TransakQuoteTranslation;\n }\n\n async getIdProofStatus(workFlowRunId: string): Promise<TransakIdProofStatus> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakIdProofStatus>(\n 'getIdProofStatus',\n '/api/v2/kyc/id-proof-status',\n IdProofStatusStruct,\n { workFlowRunId },\n );\n }\n\n async cancelOrder(depositOrderId: string): Promise<void> {\n this.#ensureAccessToken();\n const transakOrderId =\n TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);\n await this.#transakDelete(\n 'cancelOrder',\n `/api/v2/orders/${transakOrderId}`,\n {\n cancelReason: 'Creating new order',\n },\n );\n }\n\n async cancelAllActiveOrders(): Promise<Error[]> {\n this.#ensureAccessToken();\n const activeOrders = await this.getActiveOrders();\n const errors: Error[] = [];\n\n await Promise.all(\n activeOrders.map(async (order) => {\n try {\n const depositOrderId =\n TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n order.orderId,\n this.#environment,\n );\n await this.cancelOrder(depositOrderId);\n } catch (error) {\n errors.push(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }),\n );\n\n return errors;\n }\n\n async getActiveOrders(): Promise<TransakOrder[]> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakOrder[]>(\n 'getActiveOrders',\n '/api/v2/active-orders',\n ActiveOrdersStruct,\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TransakService.js","sourceRoot":"","sources":["../src/TransakService.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CreateServicePolicyOptions,\n ServicePolicy,\n} from '@metamask/controller-utils';\nimport { createServicePolicy, HttpError } from '@metamask/controller-utils';\nimport type { Messenger } from '@metamask/messenger';\nimport type { AuthenticationController } from '@metamask/profile-sync-controller';\n\nimport packageJson from '../package.json';\nimport type { RampsClientIdentity } from './client-identity.js';\nimport { addRampsClientIdentityParams } from './client-identity.js';\nimport { RAMPS_SDK_VERSION } from './RampsService.js';\nimport { TRANSAK_ERROR_CODES } from './transakErrorCodes.js';\nimport type { TransakServiceMethodActions } from './TransakService-method-action-types.js';\n\n// === TYPES ===\n\nexport type TransakAccessToken = {\n accessToken: string;\n ttl: number;\n created: Date;\n};\n\nexport type TransakUserDetails = {\n id: string;\n firstName: string;\n lastName: string;\n email: string;\n mobileNumber: string;\n status: string;\n dob: string;\n kyc: TransakUserDetailsKycDetails;\n address: TransakUserDetailsAddress;\n createdAt: string;\n};\n\nexport type TransakUserDetailsAddress = {\n addressLine1: string;\n addressLine2: string;\n state: string;\n city: string;\n postCode: string;\n country: string;\n countryCode: string;\n};\n\nexport type TransakUserDetailsKycDetails = {\n status: string;\n type: string;\n attempts: TransakUserDetailsKycAttempt[];\n highestApprovedKYCType: string | null;\n kycMarkedBy: string | null;\n kycResult: string | null;\n rejectionDetails: TransakUserDetailsKycAttemptRejectionDetails | null;\n userId: string;\n workFlowRunId: string;\n};\n\nexport type TransakUserDetailsKycAttempt = {\n artifacts: { key: string; value: string }[];\n metadata: {\n transaction: {\n kycVendorId: string;\n scanReference: string;\n workflowId: string;\n };\n };\n rejectionDetails: TransakUserDetailsKycAttemptRejectionDetails;\n result: string;\n sessionId: string;\n};\n\nexport type TransakUserDetailsKycAttemptRejectionDetails = {\n archetype: string;\n reason: string;\n reasonCode: string;\n};\n\nexport type TransakBuyQuote = {\n quoteId: string;\n conversionPrice: number;\n marketConversionPrice: number;\n slippage: number;\n fiatCurrency: string;\n cryptoCurrency: string;\n paymentMethod: string;\n fiatAmount: number;\n cryptoAmount: number;\n isBuyOrSell: string;\n network: string;\n feeDecimal: number;\n totalFee: number;\n feeBreakdown: { [prop: string]: string | number | boolean | null }[];\n nonce: number;\n cryptoLiquidityProvider: string;\n notes: { [prop: string]: string | number | boolean | null }[];\n requestedAssetId: string;\n requestedChainId: string;\n};\n\nexport type TransakKycRequirement = {\n status:\n | 'NOT_SUBMITTED'\n | 'APPROVED'\n | 'ADDITIONAL_FORMS_REQUIRED'\n | 'SUBMITTED';\n kycType: string;\n isAllowedToPlaceOrder: boolean;\n};\n\nexport type TransakAdditionalRequirement = {\n type: string;\n metadata?: {\n options: string[];\n documentProofOptions: string[];\n expiresAt: string;\n kycUrl: string;\n workFlowRunId: string;\n };\n};\n\nexport type TransakAdditionalRequirementsResponse = {\n formsRequired: TransakAdditionalRequirement[];\n};\n\nexport type TransakOttResponse = {\n ott: string;\n};\n\nexport type TransakOrderPaymentMethod = {\n fiatCurrency: string;\n paymentMethod: string;\n fields: { name: string; id: string; value: string }[];\n};\n\nexport type TransakDepositNetwork = {\n name: string;\n chainId: string;\n};\n\nexport type TransakDepositCryptoCurrency = {\n assetId: string;\n name: string;\n chainId: string;\n decimals: number;\n iconUrl: string;\n symbol: string;\n};\n\nexport type TransakDepositPaymentMethod = {\n id: string;\n name: string;\n shortName?: string;\n duration: string;\n icon: string;\n iconColor?: { light: string; dark: string };\n isManualBankTransfer?: boolean;\n};\n\nexport type TransakDepositRegion = {\n isoCode: string;\n flag: string;\n name: string;\n phone: { prefix: string; placeholder: string; template: string };\n currency: string;\n supported: boolean;\n recommended?: boolean;\n geolocated?: boolean;\n};\n\nexport type TransakDepositOrder = {\n id: string;\n provider: string;\n cryptoAmount: number | string;\n fiatAmount: number;\n cryptoCurrency: TransakDepositCryptoCurrency;\n fiatCurrency: string;\n providerOrderId: string;\n providerOrderLink: string;\n createdAt: number;\n paymentMethod: TransakDepositPaymentMethod;\n totalFeesFiat: number;\n txHash: string;\n walletAddress: string;\n status: string;\n network: TransakDepositNetwork;\n timeDescriptionPending: string;\n fiatAmountInUsd: number;\n feesInUsd: number;\n region: TransakDepositRegion;\n orderType: 'DEPOSIT';\n exchangeRate?: number;\n statusDescription?: string;\n paymentDetails: TransakOrderPaymentMethod[];\n partnerFees?: number;\n networkFees?: number;\n};\n\nexport type TransakOrder = {\n orderId: string;\n partnerUserId: string;\n status: string;\n isBuyOrSell: string;\n fiatCurrency: string;\n cryptoCurrency: string;\n network: string;\n walletAddress: string;\n quoteId: string;\n fiatAmount: number;\n fiatAmountInUsd: number;\n amountPaid: number;\n cryptoAmount: number;\n conversionPrice: number;\n totalFeeInFiat: number;\n paymentDetails: TransakOrderPaymentMethod[];\n txHash: string;\n transationLink: string | null;\n createdAt: string;\n updatedAt: string;\n completedAt: string;\n};\n\nexport type TransakQuoteTranslation = {\n region: string;\n paymentMethod: string | undefined;\n cryptoCurrency: string;\n network: string;\n fiatCurrency: string;\n};\n\nexport type TransakTranslationRequest = {\n regionId?: string;\n cryptoCurrencyId?: string;\n chainId?: string;\n fiatCurrencyId?: string;\n paymentMethod?: string;\n};\n\nexport type TransakUserLimits = {\n limits: { '1': number; '30': number; '365': number };\n spent: { '1': number; '30': number; '365': number };\n remaining: { '1': number; '30': number; '365': number };\n exceeded: { '1': boolean; '30': boolean; '365': boolean };\n shortage: Record<string, number>;\n};\n\nexport type PatchUserRequestBody = Partial<{\n personalDetails: Partial<{\n firstName: string;\n lastName: string;\n mobileNumber: string;\n dob: string;\n }>;\n addressDetails: Partial<{\n addressLine1: string;\n addressLine2: string;\n state: string;\n city: string;\n postCode: string;\n countryCode: string;\n }>;\n}>;\n\nexport type TransakIdProofStatus = {\n status: 'NOT_SUBMITTED' | 'SUBMITTED';\n kycType: string;\n randomLogIdentifier: string;\n};\n\n// === ENVIRONMENT ===\n\nexport enum TransakEnvironment {\n Production = 'production',\n Staging = 'staging',\n Development = 'development',\n}\n\nenum TransakApiProviders {\n TransakNative = 'transak-native',\n TransakNativeStaging = 'transak-native-staging',\n}\n\n// === ORDER ID UTILITIES ===\n\nexport class TransakOrderIdTransformer {\n static depositOrderIdToTransakOrderId(depositOrderId: string): string {\n const parts = depositOrderId.split('/');\n return parts[parts.length - 1];\n }\n\n static transakOrderIdToDepositOrderId(\n transakOrderId: string,\n environment: TransakEnvironment,\n ): string {\n const provider =\n environment === TransakEnvironment.Production\n ? 'transak-native'\n : 'transak-native-staging';\n return `/providers/${provider}/orders/${transakOrderId}`;\n }\n\n static isDepositOrderId(orderId: string): boolean {\n return orderId.startsWith('/providers/');\n }\n\n static extractTransakOrderId(orderId: string): string {\n return this.isDepositOrderId(orderId)\n ? this.depositOrderIdToTransakOrderId(orderId)\n : orderId;\n }\n}\n\n// === MESSENGER ===\n\nconst serviceName = 'TransakService';\n\nconst MESSENGER_EXPOSED_METHODS = [\n 'setApiKey',\n 'setAccessToken',\n 'clearAccessToken',\n 'sendUserOtp',\n 'verifyUserOtp',\n 'logout',\n 'getUserDetails',\n 'getBuyQuote',\n 'getKycRequirement',\n 'getAdditionalRequirements',\n 'createOrder',\n 'getOrder',\n 'getUserLimits',\n 'requestOtt',\n 'generatePaymentWidgetUrl',\n 'createWidgetUrl',\n 'submitPurposeOfUsageForm',\n 'patchUser',\n 'submitSsnDetails',\n 'confirmPayment',\n 'getTranslation',\n 'getIdProofStatus',\n 'cancelOrder',\n 'cancelAllActiveOrders',\n 'getActiveOrders',\n] as const;\n\nexport type TransakServiceActions = TransakServiceMethodActions;\n\n/**\n * Actions from other messengers that {@link TransakService} calls.\n */\ntype AllowedActions =\n AuthenticationController.AuthenticationControllerGetBearerTokenAction;\n\nexport type TransakServiceEvents = never;\n\ntype AllowedEvents = never;\n\nexport type TransakServiceMessenger = Messenger<\n typeof serviceName,\n TransakServiceActions | AllowedActions,\n TransakServiceEvents | AllowedEvents\n>;\n\n// === HELPER FUNCTIONS ===\n\n/**\n * Maps ramps API payment method IDs (e.g., \"/payments/debit-credit-card\")\n * to the deposit-format IDs expected by the translation endpoint\n * (e.g., \"credit_debit_card\").\n *\n * The translation endpoint only understands the deposit-format IDs.\n * Canonical IDs may arrive either with the \"/payments/\" prefix\n * (e.g., \"/payments/apple-pay\") or without it (e.g., \"apple-pay\"), so both\n * forms are accepted. If no mapping exists, the input is returned as-is (it\n * may already be in the deposit format).\n */\nconst RAMPS_TO_DEPOSIT_PAYMENT_METHOD: Record<string, string> = {\n '/payments/debit-credit-card': 'credit_debit_card',\n '/payments/apple-pay': 'apple_pay',\n '/payments/google-pay': 'google_pay',\n '/payments/sepa-bank-transfer': 'sepa_bank_transfer',\n '/payments/wire-transfer': 'wire_transfer',\n '/payments/gbp-bank-transfer': 'gbp_bank_transfer',\n};\n\nconst PAYMENTS_PREFIX = '/payments/';\n\nfunction normalizePaymentMethodForTranslation(\n paymentMethod: string | undefined,\n): string | undefined {\n if (!paymentMethod) {\n return undefined;\n }\n const prefixed = paymentMethod.startsWith(PAYMENTS_PREFIX)\n ? paymentMethod\n : `${PAYMENTS_PREFIX}${paymentMethod}`;\n return (\n RAMPS_TO_DEPOSIT_PAYMENT_METHOD[paymentMethod] ??\n RAMPS_TO_DEPOSIT_PAYMENT_METHOD[prefixed] ??\n paymentMethod\n );\n}\n\nfunction getTransakApiBaseUrl(environment: TransakEnvironment): string {\n switch (environment) {\n case TransakEnvironment.Production:\n return 'https://api-gateway.transak.com';\n // Transak has no dev environment; development uses their staging gateway.\n case TransakEnvironment.Staging:\n case TransakEnvironment.Development:\n return 'https://api-gateway-stg.transak.com';\n default:\n throw new Error(`Invalid Transak environment: ${String(environment)}`);\n }\n}\n\nfunction getRampsBaseUrl(environment: TransakEnvironment): string {\n switch (environment) {\n case TransakEnvironment.Production:\n return 'https://on-ramp.api.cx.metamask.io';\n case TransakEnvironment.Staging:\n return 'https://on-ramp.uat-api.cx.metamask.io';\n case TransakEnvironment.Development:\n return 'https://on-ramp.dev-api.cx.metamask.io';\n default:\n throw new Error(`Invalid Transak environment: ${String(environment)}`);\n }\n}\n\nfunction getRampsProviderPath(environment: TransakEnvironment): string {\n // The dev ramps API registers the same `transak-native-staging` provider\n // id as UAT; only production uses `transak-native`.\n const providerId =\n environment === TransakEnvironment.Production\n ? TransakApiProviders.TransakNative\n : TransakApiProviders.TransakNativeStaging;\n return `/providers/${providerId}`;\n}\n\nfunction getPaymentWidgetBaseUrl(environment: TransakEnvironment): string {\n switch (environment) {\n case TransakEnvironment.Production:\n return 'https://global.transak.com';\n // Transak has no dev environment; development uses their staging widget.\n case TransakEnvironment.Staging:\n case TransakEnvironment.Development:\n return 'https://global-stg.transak.com';\n default:\n throw new Error(`Invalid Transak environment: ${String(environment)}`);\n }\n}\n\n/**\n * Transak requires `referrerDomain` in `widgetParams` alongside the partner\n * API key (which the ramps API proxy injects server-side). Identifies the\n * MetaMask client to Transak. Default when the client does not pass a\n * `referrerDomain` constructor option (e.g. the mobile app passes its\n * package name / bundle id).\n */\nconst TRANSAK_REFERRER_DOMAIN = 'metamask.io';\n\n// === TRANSAK API ERROR ===\n\nexport class TransakApiError extends HttpError {\n readonly errorCode: string | undefined;\n\n readonly apiMessage: string | undefined;\n\n constructor(\n status: number,\n message: string,\n errorCode?: string,\n apiMessage?: string,\n ) {\n super(status, message);\n this.errorCode = errorCode;\n this.apiMessage = apiMessage;\n }\n}\n\n// === SERVICE DEFINITION ===\n\nexport class TransakService {\n readonly name: typeof serviceName;\n\n readonly #messenger: TransakServiceMessenger;\n\n readonly #fetch: typeof fetch;\n\n readonly #policy: ServicePolicy;\n\n readonly #noRetryPolicy: ServicePolicy;\n\n readonly #environment: TransakEnvironment;\n\n readonly #context: string;\n\n readonly #orderRetryDelayMs: number;\n\n #apiKey: string | null = null;\n\n #accessToken: TransakAccessToken | null = null;\n\n /**\n * Optional ramps API base URL override for local development (mirrors\n * `RampsService`'s `baseUrlOverride`). Applies to the requests this service\n * sends to the ramps API (orders, widget-url proxy), not to direct Transak\n * API calls.\n */\n readonly #rampsApiBaseUrlOverride?: string;\n\n /**\n * Identifies the client to Transak in `widgetParams` (e.g. the mobile app's\n * package name / bundle id). Defaults to `metamask.io`.\n */\n readonly #referrerDomain: string;\n\n readonly #clientIdentity: RampsClientIdentity;\n\n constructor({\n messenger,\n environment = TransakEnvironment.Staging,\n context,\n fetch: fetchFunction,\n apiKey,\n policyOptions = {},\n orderRetryDelayMs = 2000,\n rampsApiBaseUrlOverride,\n referrerDomain = TRANSAK_REFERRER_DOMAIN,\n clientProduct,\n clientVersion,\n }: {\n messenger: TransakServiceMessenger;\n environment?: TransakEnvironment;\n context: string;\n fetch: typeof fetch;\n apiKey?: string;\n policyOptions?: CreateServicePolicyOptions;\n orderRetryDelayMs?: number;\n rampsApiBaseUrlOverride?: string;\n referrerDomain?: string;\n clientProduct?: string;\n clientVersion?: string;\n }) {\n this.name = serviceName;\n this.#messenger = messenger;\n this.#fetch = fetchFunction;\n this.#policy = createServicePolicy(policyOptions);\n this.#noRetryPolicy = createServicePolicy({\n ...policyOptions,\n maxRetries: 0,\n });\n this.#environment = environment;\n this.#context = context;\n this.#apiKey = apiKey ?? null;\n this.#orderRetryDelayMs = orderRetryDelayMs;\n this.#rampsApiBaseUrlOverride = rampsApiBaseUrlOverride;\n this.#referrerDomain = referrerDomain;\n this.#clientIdentity = {\n clientProduct,\n clientVersion,\n };\n\n this.#messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n setApiKey(apiKey: string): void {\n this.#apiKey = apiKey;\n }\n\n getApiKey(): string | null {\n return this.#apiKey;\n }\n\n #ensureApiKey(): string {\n if (!this.#apiKey) {\n throw new Error('Transak API key is required but not set.');\n }\n return this.#apiKey;\n }\n\n setAccessToken(token: TransakAccessToken): void {\n this.#accessToken = token;\n }\n\n getAccessToken(): TransakAccessToken | null {\n return this.#accessToken;\n }\n\n clearAccessToken(): void {\n this.#accessToken = null;\n }\n\n #ensureAccessToken(): void {\n if (!this.#accessToken?.accessToken) {\n throw new HttpError(\n 401,\n 'Authentication required. Please log in to continue.',\n );\n }\n\n const createdTime = new Date(this.#accessToken.created).getTime();\n const tokenAgeMs = Date.now() - createdTime;\n if (tokenAgeMs > this.#accessToken.ttl * 1000) {\n this.clearAccessToken();\n throw new HttpError(\n 401,\n 'Authentication token has expired. Please log in again.',\n );\n }\n }\n\n #getHeaders(): Record<string, string> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n };\n if (this.#accessToken?.accessToken) {\n headers.authorization = this.#accessToken.accessToken;\n }\n return headers;\n }\n\n async #throwTransakApiError(\n fetchResponse: Response,\n url: URL,\n ): Promise<never> {\n let errorBody = '';\n let errorCode: string | undefined;\n let apiMessage: string | undefined;\n try {\n errorBody = await fetchResponse.text();\n const parsed = JSON.parse(errorBody) as {\n error?: {\n code?: string;\n errorCode?: string | number;\n message?: string;\n };\n };\n errorCode =\n parsed?.error?.code ??\n (parsed?.error?.errorCode !== null &&\n parsed?.error?.errorCode !== undefined\n ? String(parsed.error.errorCode)\n : undefined);\n apiMessage =\n typeof parsed?.error?.message === 'string'\n ? parsed.error.message\n : undefined;\n } catch {\n // ignore body read/parse failures\n }\n throw new TransakApiError(\n fetchResponse.status,\n `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'${errorBody ? `: ${errorBody}` : ''}`,\n errorCode,\n apiMessage,\n );\n }\n\n async #transakGet<ResponseType>(\n path: string,\n params?: Record<string, string>,\n ): Promise<ResponseType> {\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== null && value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n }\n\n const apiKey = this.#ensureApiKey();\n url.searchParams.set('apiKey', apiKey);\n\n const response = await this.#policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: this.#getHeaders(),\n });\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n return fetchResponse.json() as Promise<{ data: ResponseType }>;\n });\n\n return response.data;\n }\n\n async #transakPost<ResponseType>(\n path: string,\n body?: Record<string, unknown>,\n options: { policy?: ServicePolicy } = {},\n ): Promise<ResponseType> {\n const apiKey = this.#ensureApiKey();\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n\n const requestBody = {\n ...(body ?? {}),\n apiKey,\n };\n\n const policy = options.policy ?? this.#policy;\n\n const response = await policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'POST',\n headers: this.#getHeaders(),\n body: JSON.stringify(requestBody),\n });\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n return fetchResponse.json() as Promise<{ data: ResponseType }>;\n });\n\n return response.data;\n }\n\n async #transakPatch<ResponseType>(\n path: string,\n body: Record<string, unknown>,\n ): Promise<ResponseType> {\n const apiKey = this.#ensureApiKey();\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n url.searchParams.set('apiKey', apiKey);\n\n const response = await this.#policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'PATCH',\n headers: this.#getHeaders(),\n body: JSON.stringify(body),\n });\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n return fetchResponse.json() as Promise<{ data: ResponseType }>;\n });\n\n return response.data;\n }\n\n async #transakDelete(\n path: string,\n params?: Record<string, string>,\n ): Promise<void> {\n const apiKey = this.#ensureApiKey();\n const baseUrl = getTransakApiBaseUrl(this.#environment);\n const url = new URL(path, baseUrl);\n url.searchParams.set('apiKey', apiKey);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== null && value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n }\n\n await this.#policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'DELETE',\n headers: this.#getHeaders(),\n });\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n });\n }\n\n /**\n * Gets the ramps API base URL, respecting the local-development override\n * when set (same semantics as `RampsService`'s `baseUrlOverride`).\n *\n * @returns The ramps API base URL to use.\n */\n #getRampsApiBaseUrl(): string {\n return this.#rampsApiBaseUrlOverride ?? getRampsBaseUrl(this.#environment);\n }\n\n /**\n * Adds the common request parameters to a ramps API proxy URL, mirroring\n * `RampsService`'s `#addCommonParams`.\n *\n * @param url - The URL to add parameters to.\n */\n #addRampsCommonParams(url: URL): void {\n url.searchParams.set('action', 'deposit');\n url.searchParams.set('sdk', RAMPS_SDK_VERSION);\n url.searchParams.set('controller', packageJson.version);\n url.searchParams.set('context', this.#context);\n // In the query string (not headers) so CDN-cached responses vary per\n // client product / version.\n addRampsClientIdentityParams(url, this.#clientIdentity);\n }\n\n async #ordersApiGet<ResponseType>(\n path: string,\n params?: Record<string, string>,\n ): Promise<ResponseType> {\n const baseUrl = this.#getRampsApiBaseUrl();\n const providerPath = getRampsProviderPath(this.#environment);\n const url = new URL(`${providerPath}${path}`, baseUrl);\n\n url.searchParams.set('action', 'deposit');\n url.searchParams.set('context', this.#context);\n // In the query string (not headers) so CDN-cached responses vary per\n // client product / version.\n addRampsClientIdentityParams(url, this.#clientIdentity);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== null && value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n }\n\n const response = await this.#policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: { Accept: 'application/json' },\n });\n if (!fetchResponse.ok) {\n throw new HttpError(\n fetchResponse.status,\n `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`,\n );\n }\n return fetchResponse.json() as Promise<ResponseType>;\n });\n\n return response;\n }\n\n // === PUBLIC API METHODS ===\n\n async sendUserOtp(email: string): Promise<{\n isTncAccepted: boolean;\n stateToken: string;\n email: string;\n expiresIn: number;\n }> {\n const result = await this.#transakPost<{\n isTncAccepted: boolean;\n stateToken: string;\n email: string;\n expiresIn: number;\n }>('/api/v2/auth/login', { email });\n return result;\n }\n\n async verifyUserOtp(\n email: string,\n verificationCode: string,\n stateToken: string,\n ): Promise<TransakAccessToken> {\n const responseData = await this.#transakPost<{\n accessToken: string;\n ttl: number;\n created: string;\n }>(\n '/api/v2/auth/verify',\n {\n email,\n otp: verificationCode,\n stateToken,\n },\n { policy: this.#noRetryPolicy },\n );\n\n const accessToken: TransakAccessToken = {\n accessToken: responseData.accessToken,\n ttl: responseData.ttl,\n created: new Date(responseData.created),\n };\n\n this.setAccessToken(accessToken);\n return accessToken;\n }\n\n async logout(): Promise<string> {\n this.#ensureAccessToken();\n try {\n const result = await this.#transakPost<string>('/api/v1/auth/logout');\n this.clearAccessToken();\n return result;\n } catch (error) {\n if (error instanceof HttpError && error.httpStatus === 401) {\n this.clearAccessToken();\n return 'user was already logged out';\n }\n throw error;\n }\n }\n\n async getUserDetails(): Promise<TransakUserDetails> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakUserDetails>('/api/v2/user/');\n }\n\n async getBuyQuote(\n genericFiatCurrency: string,\n genericCryptoCurrency: string,\n genericNetwork: string,\n genericPaymentMethod: string,\n fiatAmount: string,\n isFeeExcludedFromFiat = true,\n ): Promise<TransakBuyQuote> {\n const normalizedPaymentMethod = normalizePaymentMethodForTranslation(\n genericPaymentMethod || undefined,\n );\n const translationRequest = {\n cryptoCurrencyId: genericCryptoCurrency,\n chainId: genericNetwork,\n fiatCurrencyId: genericFiatCurrency,\n paymentMethod: normalizedPaymentMethod,\n };\n\n const translation = await this.getTranslation(translationRequest);\n\n const params: Record<string, string> = {\n fiatCurrency: translation.fiatCurrency,\n cryptoCurrency: translation.cryptoCurrency,\n isBuyOrSell: 'BUY',\n network: translation.network,\n fiatAmount,\n };\n\n if (isFeeExcludedFromFiat) {\n params.isFeeExcludedFromFiat = 'true';\n }\n\n if (translation.paymentMethod) {\n params.paymentMethod = translation.paymentMethod;\n }\n\n const quote = await this.#transakGet<\n Omit<TransakBuyQuote, 'requestedAssetId' | 'requestedChainId'>\n >('/api/v2/lookup/quotes', params);\n\n return {\n ...quote,\n requestedAssetId: genericCryptoCurrency,\n requestedChainId: genericNetwork,\n };\n }\n\n async getKycRequirement(quoteId: string): Promise<TransakKycRequirement> {\n this.#ensureAccessToken();\n const result = await this.#transakGet<TransakKycRequirement>(\n '/api/v2/kyc/requirement',\n {\n 'metadata[quoteId]': quoteId,\n },\n );\n return result;\n }\n\n async getAdditionalRequirements(\n quoteId: string,\n ): Promise<TransakAdditionalRequirementsResponse> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakAdditionalRequirementsResponse>(\n '/api/v2/kyc/additional-requirements',\n { 'metadata[quoteId]': quoteId },\n );\n }\n\n async createOrder(\n quoteId: string,\n walletAddress: string,\n paymentMethodId: string,\n ): Promise<TransakDepositOrder> {\n this.#ensureAccessToken();\n\n const normalizedPaymentMethod =\n normalizePaymentMethodForTranslation(paymentMethodId);\n const translation = await this.getTranslation({\n paymentMethod: normalizedPaymentMethod,\n });\n\n const paymentInstrumentId =\n translation.paymentMethod ?? normalizedPaymentMethod;\n\n try {\n const transakOrder = await this.#transakPost<TransakOrder>(\n '/api/v2/orders',\n {\n quoteId,\n walletAddress,\n paymentInstrumentId,\n },\n );\n\n const depositOrderId =\n TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n transakOrder.orderId,\n this.#environment,\n );\n\n return this.getOrder(\n depositOrderId,\n transakOrder.walletAddress,\n transakOrder.paymentDetails,\n );\n } catch (error) {\n if (\n error instanceof TransakApiError &&\n error.httpStatus === 409 &&\n error.errorCode === TRANSAK_ERROR_CODES.ORDER_EXISTS\n ) {\n await this.cancelAllActiveOrders();\n await new Promise((resolve) =>\n setTimeout(resolve, this.#orderRetryDelayMs),\n );\n\n const retryOrder = await this.#transakPost<TransakOrder>(\n '/api/v2/orders',\n {\n quoteId,\n walletAddress,\n paymentInstrumentId,\n },\n );\n\n const retryDepositOrderId =\n TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n retryOrder.orderId,\n this.#environment,\n );\n\n return this.getOrder(\n retryDepositOrderId,\n retryOrder.walletAddress,\n retryOrder.paymentDetails,\n );\n }\n throw error;\n }\n }\n\n async getOrder(\n orderId: string,\n wallet: string,\n paymentDetails?: TransakOrderPaymentMethod[],\n ): Promise<TransakDepositOrder> {\n let depositOrderId: string;\n if (TransakOrderIdTransformer.isDepositOrderId(orderId)) {\n depositOrderId = orderId;\n } else {\n depositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n orderId,\n this.#environment,\n );\n }\n\n const transakOrderId =\n TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);\n\n const order = await this.#ordersApiGet<TransakDepositOrder>(\n `/orders/${transakOrderId}`,\n { wallet },\n );\n\n const orderWithId = {\n ...order,\n id: depositOrderId,\n orderType: 'DEPOSIT' as const,\n };\n\n if (paymentDetails && paymentDetails.length > 0) {\n return { ...orderWithId, paymentDetails };\n }\n\n if (this.#accessToken?.accessToken) {\n try {\n const transakOrder = await this.#transakGet<TransakOrder>(\n `/api/v2/orders/${transakOrderId}`,\n );\n return { ...orderWithId, paymentDetails: transakOrder.paymentDetails };\n } catch {\n return orderWithId;\n }\n }\n\n return orderWithId;\n }\n\n async getUserLimits(\n fiatCurrency: string,\n paymentMethod: string,\n kycType: string,\n ): Promise<TransakUserLimits> {\n this.#ensureAccessToken();\n\n const translation = await this.getTranslation({\n paymentMethod: normalizePaymentMethodForTranslation(paymentMethod),\n });\n\n const params: Record<string, string> = {\n isBuyOrSell: 'BUY',\n kycType,\n fiatCurrency,\n };\n\n if (translation.paymentMethod) {\n params.paymentCategory = translation.paymentMethod;\n }\n\n return this.#transakGet<TransakUserLimits>(\n '/api/v2/orders/user-limit',\n params,\n );\n }\n\n /**\n * @deprecated Use {@link createWidgetUrl} instead. The OTT flow requires the\n * partner API key on the client and Transak is deprecating `request-ott`.\n * @returns The one-time token response.\n */\n async requestOtt(): Promise<TransakOttResponse> {\n this.#ensureAccessToken();\n const result = await this.#transakPost<TransakOttResponse>(\n '/api/v2/auth/request-ott',\n );\n return result;\n }\n\n /**\n * @deprecated Use {@link createWidgetUrl} instead. This builds the widget\n * URL client-side and embeds the partner API key in it.\n * @param ottToken - The one-time token for widget authentication.\n * @param quote - The buy quote to pre-fill in the widget.\n * @param walletAddress - The destination wallet address.\n * @param extraParams - Optional additional URL parameters.\n * @returns The fully constructed widget URL string.\n */\n generatePaymentWidgetUrl(\n ottToken: string,\n quote: TransakBuyQuote,\n walletAddress: string,\n extraParams?: Record<string, string>,\n ): string {\n const apiKey = this.#ensureApiKey();\n const widgetBaseUrl = getPaymentWidgetBaseUrl(this.#environment);\n\n const defaultParams: Record<string, string> = {\n apiKey,\n ott: ottToken,\n fiatCurrency: quote.fiatCurrency,\n cryptoCurrencyCode: quote.cryptoCurrency,\n productsAvailed: 'BUY',\n fiatAmount: quote.fiatAmount.toString(),\n network: quote.network,\n hideExchangeScreen: 'true',\n walletAddress,\n disableWalletAddressForm: 'true',\n paymentMethod: quote.paymentMethod,\n redirectURL:\n 'https://on-ramp-content.api.cx.metamask.io/regions/fake-callback',\n hideMenu: 'true',\n };\n\n const params = new URLSearchParams({\n ...defaultParams,\n ...extraParams,\n });\n\n const widgetUrl = new URL(widgetBaseUrl);\n widgetUrl.search = params.toString();\n return widgetUrl.toString();\n }\n\n /**\n * Creates a Transak payment widget URL through the ramps API proxy\n * (`POST {rampsBaseUrl}/providers/{providerId}/widget-url`). The proxy\n * injects the partner API key and derives the user IP server-side, so\n * neither leaves the backend. Replaces the OTT flow ({@link requestOtt} +\n * {@link generatePaymentWidgetUrl}).\n *\n * Requires both a Transak access token (user must be logged in to Transak)\n * and a MetaMask bearer token from `AuthenticationController`.\n *\n * @param quote - The buy quote to pre-fill in the widget.\n * @param walletAddress - The destination wallet address.\n * @param extraParams - Optional additional widget parameters (e.g. theming).\n * Keys must be on the proxy's allowlist or the request is rejected.\n * @returns The single-use widget URL (expires after 5 minutes).\n */\n async createWidgetUrl(\n quote: TransakBuyQuote,\n walletAddress: string,\n extraParams?: Record<string, string>,\n ): Promise<string> {\n this.#ensureAccessToken();\n const bearerToken = await this.#messenger.call(\n 'AuthenticationController:getBearerToken',\n );\n\n const baseUrl = this.#getRampsApiBaseUrl();\n const providerPath = getRampsProviderPath(this.#environment);\n const url = new URL(`${providerPath}/widget-url`, baseUrl);\n\n this.#addRampsCommonParams(url);\n\n const widgetParams: Record<string, string | number> = {\n referrerDomain: this.#referrerDomain,\n fiatCurrency: quote.fiatCurrency,\n cryptoCurrencyCode: quote.cryptoCurrency,\n fiatAmount: quote.fiatAmount,\n network: quote.network,\n paymentMethod: quote.paymentMethod,\n walletAddress,\n hideExchangeScreen: 'true',\n disableWalletAddressEdit: 'true',\n hideMenu: 'true',\n redirectURL:\n 'https://on-ramp-content.api.cx.metamask.io/regions/fake-callback',\n ...extraParams,\n };\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n };\n if (this.#accessToken?.accessToken) {\n headers['x-transak-access-token'] = this.#accessToken.accessToken;\n }\n\n const response = await this.#policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'POST',\n headers,\n body: JSON.stringify({ widgetParams }),\n });\n if (!fetchResponse.ok) {\n await this.#throwTransakApiError(fetchResponse, url);\n }\n return fetchResponse.json() as Promise<{ widgetUrl: string }>;\n });\n\n return response.widgetUrl;\n }\n\n async submitPurposeOfUsageForm(purpose: string[]): Promise<void> {\n this.#ensureAccessToken();\n await this.#transakPost('/api/v2/kyc/purpose-of-usage', {\n purposeList: purpose,\n });\n }\n\n async patchUser(data: PatchUserRequestBody): Promise<unknown> {\n this.#ensureAccessToken();\n return this.#transakPatch('/api/v2/kyc/user', data);\n }\n\n async submitSsnDetails(ssn: string, quoteId: string): Promise<unknown> {\n this.#ensureAccessToken();\n return this.#transakPost('/api/v2/kyc/ssn', { ssn, quoteId });\n }\n\n async confirmPayment(\n orderId: string,\n paymentMethodId: string,\n ): Promise<{ success: boolean }> {\n this.#ensureAccessToken();\n\n const normalizedPaymentMethod =\n normalizePaymentMethodForTranslation(paymentMethodId);\n const translation = await this.getTranslation({\n paymentMethod: normalizedPaymentMethod,\n });\n\n const transakOrderId =\n TransakOrderIdTransformer.extractTransakOrderId(orderId);\n\n return this.#transakPost<{ success: boolean }>(\n '/api/v2/orders/payment-confirmation',\n {\n orderId: transakOrderId,\n paymentMethod: translation.paymentMethod ?? normalizedPaymentMethod,\n },\n );\n }\n\n async getTranslation(\n translationRequest: TransakTranslationRequest,\n ): Promise<TransakQuoteTranslation> {\n const baseUrl = getRampsBaseUrl(this.#environment);\n const providerPath = getRampsProviderPath(this.#environment);\n const url = new URL(`${providerPath}/native/translate`, baseUrl);\n\n url.searchParams.set('action', 'deposit');\n url.searchParams.set('context', this.#context);\n\n const normalizedRequest = {\n ...translationRequest,\n paymentMethod: normalizePaymentMethodForTranslation(\n translationRequest.paymentMethod,\n ),\n };\n\n for (const [key, value] of Object.entries(normalizedRequest)) {\n if (value !== undefined) {\n url.searchParams.set(key, value);\n }\n }\n\n const response = await this.#policy.execute(async () => {\n const fetchResponse = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: { Accept: 'application/json' },\n });\n if (!fetchResponse.ok) {\n throw new HttpError(\n fetchResponse.status,\n `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`,\n );\n }\n return fetchResponse.json() as Promise<TransakQuoteTranslation>;\n });\n\n return response;\n }\n\n async getIdProofStatus(workFlowRunId: string): Promise<TransakIdProofStatus> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakIdProofStatus>(\n '/api/v2/kyc/id-proof-status',\n { workFlowRunId },\n );\n }\n\n async cancelOrder(depositOrderId: string): Promise<void> {\n this.#ensureAccessToken();\n const transakOrderId =\n TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);\n await this.#transakDelete(`/api/v2/orders/${transakOrderId}`, {\n cancelReason: 'Creating new order',\n });\n }\n\n async cancelAllActiveOrders(): Promise<Error[]> {\n this.#ensureAccessToken();\n const activeOrders = await this.getActiveOrders();\n const errors: Error[] = [];\n\n await Promise.all(\n activeOrders.map(async (order) => {\n try {\n const depositOrderId =\n TransakOrderIdTransformer.transakOrderIdToDepositOrderId(\n order.orderId,\n this.#environment,\n );\n await this.cancelOrder(depositOrderId);\n } catch (error) {\n errors.push(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }),\n );\n\n return errors;\n }\n\n async getActiveOrders(): Promise<TransakOrder[]> {\n this.#ensureAccessToken();\n return this.#transakGet<TransakOrder[]>('/api/v2/active-orders');\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export type { TypedError } from './errorNormalization.js';
|
|
|
21
21
|
export { getErrorMessage, extractExplicitTypedError, normalizeToTypedError, } from './errorNormalization.js';
|
|
22
22
|
export type { UserStorageRampsOrderEntry, SyncRampsOrder, OrderSyncingController, OrderSyncingOptions, SyncOrdersWithUserStorageConfig, } from './order-syncing/index.js';
|
|
23
23
|
export { USER_STORAGE_RAMPS_ORDERS_FEATURE, USER_STORAGE_VERSION, USER_STORAGE_VERSION_KEY, createOrderStorageKey, isSyncableOrder, mapRampsOrderToUserStorageEntry, mapUserStorageEntryToRampsOrder, stripPaymentDetailsForRemoteStorage, stripSyncMetadata, stripDeletedAt, areOrdersEqual, canPerformOrderSyncing, syncOrdersWithUserStorage, updateOrderInUserStorage, deleteOrderInUserStorage, } from './order-syncing/index.js';
|
|
24
|
-
export type { TransakServiceActions,
|
|
24
|
+
export type { TransakServiceActions, TransakServiceEvents, TransakServiceMessenger, TransakAccessToken, TransakUserDetails, TransakUserDetailsAddress, TransakUserDetailsKycDetails, TransakBuyQuote, TransakKycRequirement, TransakAdditionalRequirement, TransakAdditionalRequirementsResponse, TransakOttResponse, TransakOrderPaymentMethod, TransakDepositOrder, TransakDepositNetwork, TransakDepositCryptoCurrency, TransakDepositPaymentMethod, TransakDepositRegion, TransakOrder, TransakQuoteTranslation, TransakTranslationRequest, TransakUserLimits, TransakIdProofStatus, PatchUserRequestBody as TransakPatchUserRequestBody, } from './TransakService.js';
|
|
25
25
|
export { TransakApiError, TransakService, TransakEnvironment, TransakOrderIdTransformer, } from './TransakService.js';
|
|
26
26
|
export { getTransakApiMessage, isTransakPhoneRegisteredError, } from './transakApiErrorUtils.js';
|
|
27
27
|
export type { TransakServiceMethodActions, TransakServiceSendUserOtpAction, TransakServiceVerifyUserOtpAction, TransakServiceGetUserDetailsAction, TransakServiceGetBuyQuoteAction, TransakServiceGetKycRequirementAction, TransakServiceCreateOrderAction, TransakServiceGetOrderAction, TransakServiceRequestOttAction, TransakServiceGeneratePaymentWidgetUrlAction, TransakServiceCreateWidgetUrlAction, } from './TransakService-method-action-types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyFA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC9B,oBAAoB,EACpB,yCAAyC,EACzC,4CAA4C,GAC7C,MAAM,sBAAsB,CAAC;AA2C9B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAmB9B,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,8BAA8B,EAC9B,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EACL,sCAAsC,EACtC,qCAAqC,EACrC,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,iCAAiC,EACjC,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,+BAA+B,EAC/B,+BAA+B,EAC/B,mCAAmC,EACnC,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AA8BlC,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAoBnC,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA+CzE,OAAO,EACL,cAAc,EACd,WAAW,IAAI,kBAAkB,EACjC,kCAAkC,EAClC,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC","sourcesContent":["export type {\n RampsControllerActions,\n RampsControllerEvents,\n RampsControllerGetStateAction,\n RampsControllerMessenger,\n RampsControllerState,\n RampsControllerStateChangeEvent,\n RampsControllerOrderStatusChangedEvent,\n RampsControllerAutorampStatusChangedEvent,\n AutorampTransactionStatusChangedPayload,\n RampsControllerOptions,\n PaymentMethodsForContextResponse,\n UserRegion,\n ResourceState,\n TransakState,\n NativeProvidersState,\n MoneyAccountWalletRegistration,\n MoneyAccountWalletRegistrationResult,\n KeyringControllerSignPersonalMessageAction,\n VbaAutorampStatus,\n VbaKycStatus,\n VbaOnboardingSnapshot,\n VbaProviderFlowStatus,\n} from './RampsController.js';\nexport type {\n RampsControllerExecuteRequestAction,\n RampsControllerAbortRequestAction,\n RampsControllerGetRequestStateAction,\n RampsControllerSetUserRegionAction,\n RampsControllerSetSelectedProviderAction,\n RampsControllerSetSelectedProviderForAssetAction,\n RampsControllerInitAction,\n RampsControllerGetCountriesAction,\n RampsControllerGetTokensAction,\n RampsControllerSetSelectedTokenAction,\n RampsControllerGetProvidersAction,\n RampsControllerGetPaymentMethodsAction,\n RampsControllerGetPaymentMethodsForContextAction,\n RampsControllerSetSelectedPaymentMethodAction,\n RampsControllerGetQuotesAction,\n RampsControllerGetQuoteWithFeesAction,\n RampsControllerAddOrderAction,\n RampsControllerRemoveOrderAction,\n RampsControllerAddAutorampAction,\n RampsControllerCreateAutorampAction,\n RampsControllerHydrateVbaOnboardingAction,\n RampsControllerRemoveAutorampAction,\n RampsControllerRegisterMoneyAccountWalletAction,\n RampsControllerMarkAutorampAsNotifiedAction,\n RampsControllerApplyAutorampStatusFromPushAction,\n RampsControllerRefreshAutorampAction,\n RampsControllerRefreshAutorampsAction,\n RampsControllerRefreshAutorampTransactionsAction,\n RampsControllerRefreshCustomerAbilitiesAction,\n RampsControllerStartOrderPollingAction,\n RampsControllerStopOrderPollingAction,\n RampsControllerGetBuyWidgetDataAction,\n RampsControllerGetFallbackBuyWidgetDataAction,\n RampsControllerAddPrecreatedOrderAction,\n RampsControllerGetOrderAction,\n RampsControllerGetOrderFromCallbackAction,\n RampsControllerTransakSetApiKeyAction,\n RampsControllerTransakSetAccessTokenAction,\n RampsControllerTransakClearAccessTokenAction,\n RampsControllerTransakSetAuthenticatedAction,\n RampsControllerTransakResetStateAction,\n RampsControllerTransakSendUserOtpAction,\n RampsControllerTransakVerifyUserOtpAction,\n RampsControllerTransakLogoutAction,\n RampsControllerTransakGetUserDetailsAction,\n RampsControllerTransakGetBuyQuoteAction,\n RampsControllerTransakGetKycRequirementAction,\n RampsControllerTransakGetAdditionalRequirementsAction,\n RampsControllerTransakCreateOrderAction,\n RampsControllerTransakGetOrderAction,\n RampsControllerTransakGetUserLimitsAction,\n RampsControllerTransakRequestOttAction,\n RampsControllerTransakGeneratePaymentWidgetUrlAction,\n RampsControllerTransakSubmitPurposeOfUsageFormAction,\n RampsControllerTransakPatchUserAction,\n RampsControllerTransakSubmitSsnDetailsAction,\n RampsControllerTransakConfirmPaymentAction,\n RampsControllerTransakGetTranslationAction,\n RampsControllerTransakGetIdProofStatusAction,\n RampsControllerTransakCancelOrderAction,\n RampsControllerTransakCancelAllActiveOrdersAction,\n RampsControllerTransakGetActiveOrdersAction,\n RampsControllerSyncOrdersWithUserStorageAction,\n} from './RampsController-method-action-types.js';\nexport {\n RampsController,\n VBA_AUTORAMP_STATUSES,\n VBA_KYC_STATUSES,\n VBA_PROVIDER_FLOW_STATUSES,\n getDefaultRampsControllerState,\n getInternalOrderCode,\n RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS,\n RAMPS_CONTROLLER_REQUIRED_CONTROLLER_ACTIONS,\n} from './RampsController.js';\nexport type {\n RampsServiceActions,\n RampsServiceEvents,\n RampsServiceMessenger,\n RampsServiceInvalidateQueriesAction,\n RampsServiceCacheUpdatedEvent,\n RampsServiceGranularCacheUpdatedEvent,\n Country,\n State,\n SupportedActions,\n CountryPhone,\n Provider,\n ProviderLink,\n ProviderLogos,\n ProviderBrowserType,\n ProviderLimit,\n ProviderFiatLimits,\n ProviderLimits,\n ProviderSortOrder,\n ProvidersResponse,\n RampAction,\n PaymentMethod,\n PaymentMethodsResponse,\n Quote,\n QuoteError,\n QuoteSortBy,\n QuoteSortOrder,\n QuoteCryptoTranslation,\n QuoteCustomAction,\n QuotesResponse,\n GetQuotesParams,\n RampsToken,\n TokensResponse,\n BuyWidget,\n BuyWidgetFallback,\n RampsOrder,\n RampsOrderNetwork,\n RampsOrderCryptoCurrency,\n RampsOrderFiatCurrency,\n RampsOrderPaymentMethod,\n OrderPaymentDetail,\n} from './RampsService.js';\nexport {\n RampsService,\n RampsEnvironment,\n RampsApiService,\n RampsOrderStatus,\n RAMPS_SDK_VERSION,\n getDefaultRedirectCallbackUrl,\n} from './RampsService.js';\nexport type { RampsClientIdentity } from './client-identity.js';\nexport {\n addRampsClientIdentityParams,\n RAMPS_CLIENT_PRODUCT_PARAM,\n RAMPS_CLIENT_VERSION_PARAM,\n} from './client-identity.js';\nexport type {\n RampsServiceGetDefaultRedirectCallbackUrlAction,\n RampsServiceGetGeolocationAction,\n RampsServiceGetCountriesAction,\n RampsServiceGetPaymentMethodsAction,\n RampsServiceGetQuotesAction,\n RampsServiceGetBuyWidgetUrlAction,\n RampsServiceGetOrderAction,\n RampsServiceGetOrderFromCallbackAction,\n} from './RampsService-method-action-types.js';\nexport type {\n RequestCache,\n RequestState,\n ExecuteRequestOptions,\n PendingRequest,\n ResourceType,\n} from './RequestCache.js';\nexport type { RampsErrorCode } from './rampsErrorCodes.js';\nexport {\n RequestStatus,\n DEFAULT_REQUEST_CACHE_TTL,\n DEFAULT_REQUEST_CACHE_MAX_SIZE,\n createCacheKey,\n isCacheExpired,\n createLoadingState,\n createSuccessState,\n createErrorState,\n} from './RequestCache.js';\nexport { RAMPS_ERROR_CODES } from './rampsErrorCodes.js';\nexport type { RequestSelectorResult } from './selectors.js';\nexport { createRequestSelector } from './selectors.js';\nexport type { HeadlessFeatureFlagsLookup } from './featureFlags.js';\nexport {\n HEADLESS_ALL_PROVIDERS_FEATURE_VERSION,\n MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY,\n getHeadlessProviderAllowlist,\n isHeadlessAllProvidersEnabled,\n} from './featureFlags.js';\nexport {\n normalizeRampsAssetId,\n providerServesAsset,\n getProvidersServingAsset,\n regionHasProviderForAsset,\n isFiatDepositAvailable,\n} from './providerAvailability.js';\nexport {\n isExternalBrowserQuote,\n isCustomActionQuote,\n isInAppOnlyQuote,\n getBuyWidgetFallback,\n} from './quoteClassification.js';\nexport {\n TERMINAL_ORDER_STATUSES,\n isTerminalOrderStatus,\n} from './orderStatus.js';\nexport type { TypedError } from './errorNormalization.js';\nexport {\n getErrorMessage,\n extractExplicitTypedError,\n normalizeToTypedError,\n} from './errorNormalization.js';\nexport type {\n UserStorageRampsOrderEntry,\n SyncRampsOrder,\n OrderSyncingController,\n OrderSyncingOptions,\n SyncOrdersWithUserStorageConfig,\n} from './order-syncing/index.js';\nexport {\n USER_STORAGE_RAMPS_ORDERS_FEATURE,\n USER_STORAGE_VERSION,\n USER_STORAGE_VERSION_KEY,\n createOrderStorageKey,\n isSyncableOrder,\n mapRampsOrderToUserStorageEntry,\n mapUserStorageEntryToRampsOrder,\n stripPaymentDetailsForRemoteStorage,\n stripSyncMetadata,\n stripDeletedAt,\n areOrdersEqual,\n canPerformOrderSyncing,\n syncOrdersWithUserStorage,\n updateOrderInUserStorage,\n deleteOrderInUserStorage,\n} from './order-syncing/index.js';\nexport type {\n TransakServiceActions,\n TransakServiceCacheUpdatedEvent,\n TransakServiceEvents,\n TransakServiceGranularCacheUpdatedEvent,\n TransakServiceInvalidateQueriesAction,\n TransakServiceMessenger,\n TransakAccessToken,\n TransakUserDetails,\n TransakUserDetailsAddress,\n TransakUserDetailsKycDetails,\n TransakBuyQuote,\n TransakKycRequirement,\n TransakAdditionalRequirement,\n TransakAdditionalRequirementsResponse,\n TransakOttResponse,\n TransakOrderPaymentMethod,\n TransakDepositOrder,\n TransakDepositNetwork,\n TransakDepositCryptoCurrency,\n TransakDepositPaymentMethod,\n TransakDepositRegion,\n TransakOrder,\n TransakQuoteTranslation,\n TransakTranslationRequest,\n TransakUserLimits,\n TransakIdProofStatus,\n PatchUserRequestBody as TransakPatchUserRequestBody,\n} from './TransakService.js';\nexport {\n TransakApiError,\n TransakService,\n TransakEnvironment,\n TransakOrderIdTransformer,\n} from './TransakService.js';\nexport {\n getTransakApiMessage,\n isTransakPhoneRegisteredError,\n} from './transakApiErrorUtils.js';\nexport type {\n TransakServiceMethodActions,\n TransakServiceSendUserOtpAction,\n TransakServiceVerifyUserOtpAction,\n TransakServiceGetUserDetailsAction,\n TransakServiceGetBuyQuoteAction,\n TransakServiceGetKycRequirementAction,\n TransakServiceCreateOrderAction,\n TransakServiceGetOrderAction,\n TransakServiceRequestOttAction,\n TransakServiceGeneratePaymentWidgetUrlAction,\n TransakServiceCreateWidgetUrlAction,\n} from './TransakService-method-action-types.js';\nexport type {\n AutorampAccount,\n ApplyAutorampRemoteStatusResult,\n CreateAutorampRequest,\n MusdAutorampDepositRailReadiness,\n} from './autorampAccount.js';\nexport {\n AutorampStatus,\n TERMINAL_AUTORAMP_STATUSES,\n NOTABLE_AUTORAMP_STATUSES,\n isTerminalAutorampStatus,\n normalizeAutorampStatus,\n createAutorampAccount,\n applyAutorampRemoteStatus,\n markAutorampNotified,\n buildMusdAutorampRequest,\n buildBrazilMusdAutorampRequest,\n getMusdAutorampDepositRailReadiness,\n} from './autorampAccount.js';\nexport { buildOwnershipMessage } from './ownership-message.js';\nexport type {\n AutorampTransactionRecord,\n AutorampTransactionRecords,\n AutorampTransactionChange,\n} from './diffAutorampTransactions.js';\nexport { diffAutorampTransactions } from './diffAutorampTransactions.js';\nexport type {\n AutorampDepositInstructions,\n AutorampDepositRailsSummary,\n AutorampRemoteSnapshot,\n AutorampTransactionSummary,\n PixDepositInstructions,\n UsBankDepositInstructions,\n UsBankDepositRail,\n} from './autoramp-types.js';\nexport type {\n NeoBankServiceActions,\n NeoBankServiceCacheUpdatedEvent,\n NeoBankServiceEvents,\n NeoBankServiceGranularCacheUpdatedEvent,\n NeoBankServiceInvalidateQueriesAction,\n NeoBankServiceMessenger,\n NeoBankAutorampResponse,\n NeoBankMicrodeposit,\n NeoBankAbilityCurrency,\n NeoBankAbilityStatus,\n NeoBankCurrencyAbility,\n NeoBankCustomerAbilities,\n NeoBankFiatAbilities,\n NeoBankRequestOptions,\n NeoBankQueryParams,\n GetWalletRegistrationStatusParams,\n RegisterSelfHostedWalletParams,\n} from './NeoBankService.js';\nexport type {\n NeoBankServiceGetAutorampAction,\n NeoBankServiceGetAutorampsAction,\n NeoBankServiceGetPixDepositInstructionsAction,\n NeoBankServiceGetDepositInstructionsAction,\n NeoBankServiceListAutorampTransactionsAction,\n NeoBankServiceRegisterPixAddressAction,\n NeoBankServiceGetAutorampQuoteAction,\n NeoBankServiceCreateAutorampAction,\n NeoBankServiceGetAutorampQuoteForAutorampAction,\n NeoBankServiceAttachAutorampQuoteAction,\n NeoBankServiceGetCustomerByExternalIdAction,\n NeoBankServiceGetMoonpayCustomerIdAction,\n NeoBankServiceGetMicrodepositsAction,\n NeoBankServiceGetCustomerAbilitiesAction,\n NeoBankServiceGetWalletRegistrationStatusAction,\n NeoBankServiceRegisterSelfHostedWalletAction,\n} from './NeoBankService-method-action-types.js';\nexport {\n NeoBankService,\n serviceName as neoBankServiceName,\n mapNeoBankAutorampToRemoteSnapshot,\n extractPixDepositInstructions,\n extractUsBankDepositInstructions,\n} from './NeoBankService.js';\nexport type {\n Blockchain,\n RegistrationOutcome,\n RegistrationStatus,\n SelfHostedRegistration,\n WalletRegistrationErrorKind,\n} from './wallet-registration-service.js';\nexport { WalletRegistrationError } from './wallet-registration-service.js';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyFA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAC9B,oBAAoB,EACpB,yCAAyC,EACzC,4CAA4C,GAC7C,MAAM,sBAAsB,CAAC;AA2C9B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAmB9B,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,8BAA8B,EAC9B,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EACL,sCAAsC,EACtC,qCAAqC,EACrC,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EACL,iCAAiC,EACjC,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,+BAA+B,EAC/B,+BAA+B,EAC/B,mCAAmC,EACnC,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AA2BlC,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAoBnC,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,mCAAmC,GACpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAM/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AA+CzE,OAAO,EACL,cAAc,EACd,WAAW,IAAI,kBAAkB,EACjC,kCAAkC,EAClC,6BAA6B,EAC7B,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC","sourcesContent":["export type {\n RampsControllerActions,\n RampsControllerEvents,\n RampsControllerGetStateAction,\n RampsControllerMessenger,\n RampsControllerState,\n RampsControllerStateChangeEvent,\n RampsControllerOrderStatusChangedEvent,\n RampsControllerAutorampStatusChangedEvent,\n AutorampTransactionStatusChangedPayload,\n RampsControllerOptions,\n PaymentMethodsForContextResponse,\n UserRegion,\n ResourceState,\n TransakState,\n NativeProvidersState,\n MoneyAccountWalletRegistration,\n MoneyAccountWalletRegistrationResult,\n KeyringControllerSignPersonalMessageAction,\n VbaAutorampStatus,\n VbaKycStatus,\n VbaOnboardingSnapshot,\n VbaProviderFlowStatus,\n} from './RampsController.js';\nexport type {\n RampsControllerExecuteRequestAction,\n RampsControllerAbortRequestAction,\n RampsControllerGetRequestStateAction,\n RampsControllerSetUserRegionAction,\n RampsControllerSetSelectedProviderAction,\n RampsControllerSetSelectedProviderForAssetAction,\n RampsControllerInitAction,\n RampsControllerGetCountriesAction,\n RampsControllerGetTokensAction,\n RampsControllerSetSelectedTokenAction,\n RampsControllerGetProvidersAction,\n RampsControllerGetPaymentMethodsAction,\n RampsControllerGetPaymentMethodsForContextAction,\n RampsControllerSetSelectedPaymentMethodAction,\n RampsControllerGetQuotesAction,\n RampsControllerGetQuoteWithFeesAction,\n RampsControllerAddOrderAction,\n RampsControllerRemoveOrderAction,\n RampsControllerAddAutorampAction,\n RampsControllerCreateAutorampAction,\n RampsControllerHydrateVbaOnboardingAction,\n RampsControllerRemoveAutorampAction,\n RampsControllerRegisterMoneyAccountWalletAction,\n RampsControllerMarkAutorampAsNotifiedAction,\n RampsControllerApplyAutorampStatusFromPushAction,\n RampsControllerRefreshAutorampAction,\n RampsControllerRefreshAutorampsAction,\n RampsControllerRefreshAutorampTransactionsAction,\n RampsControllerRefreshCustomerAbilitiesAction,\n RampsControllerStartOrderPollingAction,\n RampsControllerStopOrderPollingAction,\n RampsControllerGetBuyWidgetDataAction,\n RampsControllerGetFallbackBuyWidgetDataAction,\n RampsControllerAddPrecreatedOrderAction,\n RampsControllerGetOrderAction,\n RampsControllerGetOrderFromCallbackAction,\n RampsControllerTransakSetApiKeyAction,\n RampsControllerTransakSetAccessTokenAction,\n RampsControllerTransakClearAccessTokenAction,\n RampsControllerTransakSetAuthenticatedAction,\n RampsControllerTransakResetStateAction,\n RampsControllerTransakSendUserOtpAction,\n RampsControllerTransakVerifyUserOtpAction,\n RampsControllerTransakLogoutAction,\n RampsControllerTransakGetUserDetailsAction,\n RampsControllerTransakGetBuyQuoteAction,\n RampsControllerTransakGetKycRequirementAction,\n RampsControllerTransakGetAdditionalRequirementsAction,\n RampsControllerTransakCreateOrderAction,\n RampsControllerTransakGetOrderAction,\n RampsControllerTransakGetUserLimitsAction,\n RampsControllerTransakRequestOttAction,\n RampsControllerTransakGeneratePaymentWidgetUrlAction,\n RampsControllerTransakSubmitPurposeOfUsageFormAction,\n RampsControllerTransakPatchUserAction,\n RampsControllerTransakSubmitSsnDetailsAction,\n RampsControllerTransakConfirmPaymentAction,\n RampsControllerTransakGetTranslationAction,\n RampsControllerTransakGetIdProofStatusAction,\n RampsControllerTransakCancelOrderAction,\n RampsControllerTransakCancelAllActiveOrdersAction,\n RampsControllerTransakGetActiveOrdersAction,\n RampsControllerSyncOrdersWithUserStorageAction,\n} from './RampsController-method-action-types.js';\nexport {\n RampsController,\n VBA_AUTORAMP_STATUSES,\n VBA_KYC_STATUSES,\n VBA_PROVIDER_FLOW_STATUSES,\n getDefaultRampsControllerState,\n getInternalOrderCode,\n RAMPS_CONTROLLER_REQUIRED_SERVICE_ACTIONS,\n RAMPS_CONTROLLER_REQUIRED_CONTROLLER_ACTIONS,\n} from './RampsController.js';\nexport type {\n RampsServiceActions,\n RampsServiceEvents,\n RampsServiceMessenger,\n RampsServiceInvalidateQueriesAction,\n RampsServiceCacheUpdatedEvent,\n RampsServiceGranularCacheUpdatedEvent,\n Country,\n State,\n SupportedActions,\n CountryPhone,\n Provider,\n ProviderLink,\n ProviderLogos,\n ProviderBrowserType,\n ProviderLimit,\n ProviderFiatLimits,\n ProviderLimits,\n ProviderSortOrder,\n ProvidersResponse,\n RampAction,\n PaymentMethod,\n PaymentMethodsResponse,\n Quote,\n QuoteError,\n QuoteSortBy,\n QuoteSortOrder,\n QuoteCryptoTranslation,\n QuoteCustomAction,\n QuotesResponse,\n GetQuotesParams,\n RampsToken,\n TokensResponse,\n BuyWidget,\n BuyWidgetFallback,\n RampsOrder,\n RampsOrderNetwork,\n RampsOrderCryptoCurrency,\n RampsOrderFiatCurrency,\n RampsOrderPaymentMethod,\n OrderPaymentDetail,\n} from './RampsService.js';\nexport {\n RampsService,\n RampsEnvironment,\n RampsApiService,\n RampsOrderStatus,\n RAMPS_SDK_VERSION,\n getDefaultRedirectCallbackUrl,\n} from './RampsService.js';\nexport type { RampsClientIdentity } from './client-identity.js';\nexport {\n addRampsClientIdentityParams,\n RAMPS_CLIENT_PRODUCT_PARAM,\n RAMPS_CLIENT_VERSION_PARAM,\n} from './client-identity.js';\nexport type {\n RampsServiceGetDefaultRedirectCallbackUrlAction,\n RampsServiceGetGeolocationAction,\n RampsServiceGetCountriesAction,\n RampsServiceGetPaymentMethodsAction,\n RampsServiceGetQuotesAction,\n RampsServiceGetBuyWidgetUrlAction,\n RampsServiceGetOrderAction,\n RampsServiceGetOrderFromCallbackAction,\n} from './RampsService-method-action-types.js';\nexport type {\n RequestCache,\n RequestState,\n ExecuteRequestOptions,\n PendingRequest,\n ResourceType,\n} from './RequestCache.js';\nexport type { RampsErrorCode } from './rampsErrorCodes.js';\nexport {\n RequestStatus,\n DEFAULT_REQUEST_CACHE_TTL,\n DEFAULT_REQUEST_CACHE_MAX_SIZE,\n createCacheKey,\n isCacheExpired,\n createLoadingState,\n createSuccessState,\n createErrorState,\n} from './RequestCache.js';\nexport { RAMPS_ERROR_CODES } from './rampsErrorCodes.js';\nexport type { RequestSelectorResult } from './selectors.js';\nexport { createRequestSelector } from './selectors.js';\nexport type { HeadlessFeatureFlagsLookup } from './featureFlags.js';\nexport {\n HEADLESS_ALL_PROVIDERS_FEATURE_VERSION,\n MONEY_HEADLESS_ALL_PROVIDERS_FLAG_KEY,\n getHeadlessProviderAllowlist,\n isHeadlessAllProvidersEnabled,\n} from './featureFlags.js';\nexport {\n normalizeRampsAssetId,\n providerServesAsset,\n getProvidersServingAsset,\n regionHasProviderForAsset,\n isFiatDepositAvailable,\n} from './providerAvailability.js';\nexport {\n isExternalBrowserQuote,\n isCustomActionQuote,\n isInAppOnlyQuote,\n getBuyWidgetFallback,\n} from './quoteClassification.js';\nexport {\n TERMINAL_ORDER_STATUSES,\n isTerminalOrderStatus,\n} from './orderStatus.js';\nexport type { TypedError } from './errorNormalization.js';\nexport {\n getErrorMessage,\n extractExplicitTypedError,\n normalizeToTypedError,\n} from './errorNormalization.js';\nexport type {\n UserStorageRampsOrderEntry,\n SyncRampsOrder,\n OrderSyncingController,\n OrderSyncingOptions,\n SyncOrdersWithUserStorageConfig,\n} from './order-syncing/index.js';\nexport {\n USER_STORAGE_RAMPS_ORDERS_FEATURE,\n USER_STORAGE_VERSION,\n USER_STORAGE_VERSION_KEY,\n createOrderStorageKey,\n isSyncableOrder,\n mapRampsOrderToUserStorageEntry,\n mapUserStorageEntryToRampsOrder,\n stripPaymentDetailsForRemoteStorage,\n stripSyncMetadata,\n stripDeletedAt,\n areOrdersEqual,\n canPerformOrderSyncing,\n syncOrdersWithUserStorage,\n updateOrderInUserStorage,\n deleteOrderInUserStorage,\n} from './order-syncing/index.js';\nexport type {\n TransakServiceActions,\n TransakServiceEvents,\n TransakServiceMessenger,\n TransakAccessToken,\n TransakUserDetails,\n TransakUserDetailsAddress,\n TransakUserDetailsKycDetails,\n TransakBuyQuote,\n TransakKycRequirement,\n TransakAdditionalRequirement,\n TransakAdditionalRequirementsResponse,\n TransakOttResponse,\n TransakOrderPaymentMethod,\n TransakDepositOrder,\n TransakDepositNetwork,\n TransakDepositCryptoCurrency,\n TransakDepositPaymentMethod,\n TransakDepositRegion,\n TransakOrder,\n TransakQuoteTranslation,\n TransakTranslationRequest,\n TransakUserLimits,\n TransakIdProofStatus,\n PatchUserRequestBody as TransakPatchUserRequestBody,\n} from './TransakService.js';\nexport {\n TransakApiError,\n TransakService,\n TransakEnvironment,\n TransakOrderIdTransformer,\n} from './TransakService.js';\nexport {\n getTransakApiMessage,\n isTransakPhoneRegisteredError,\n} from './transakApiErrorUtils.js';\nexport type {\n TransakServiceMethodActions,\n TransakServiceSendUserOtpAction,\n TransakServiceVerifyUserOtpAction,\n TransakServiceGetUserDetailsAction,\n TransakServiceGetBuyQuoteAction,\n TransakServiceGetKycRequirementAction,\n TransakServiceCreateOrderAction,\n TransakServiceGetOrderAction,\n TransakServiceRequestOttAction,\n TransakServiceGeneratePaymentWidgetUrlAction,\n TransakServiceCreateWidgetUrlAction,\n} from './TransakService-method-action-types.js';\nexport type {\n AutorampAccount,\n ApplyAutorampRemoteStatusResult,\n CreateAutorampRequest,\n MusdAutorampDepositRailReadiness,\n} from './autorampAccount.js';\nexport {\n AutorampStatus,\n TERMINAL_AUTORAMP_STATUSES,\n NOTABLE_AUTORAMP_STATUSES,\n isTerminalAutorampStatus,\n normalizeAutorampStatus,\n createAutorampAccount,\n applyAutorampRemoteStatus,\n markAutorampNotified,\n buildMusdAutorampRequest,\n buildBrazilMusdAutorampRequest,\n getMusdAutorampDepositRailReadiness,\n} from './autorampAccount.js';\nexport { buildOwnershipMessage } from './ownership-message.js';\nexport type {\n AutorampTransactionRecord,\n AutorampTransactionRecords,\n AutorampTransactionChange,\n} from './diffAutorampTransactions.js';\nexport { diffAutorampTransactions } from './diffAutorampTransactions.js';\nexport type {\n AutorampDepositInstructions,\n AutorampDepositRailsSummary,\n AutorampRemoteSnapshot,\n AutorampTransactionSummary,\n PixDepositInstructions,\n UsBankDepositInstructions,\n UsBankDepositRail,\n} from './autoramp-types.js';\nexport type {\n NeoBankServiceActions,\n NeoBankServiceCacheUpdatedEvent,\n NeoBankServiceEvents,\n NeoBankServiceGranularCacheUpdatedEvent,\n NeoBankServiceInvalidateQueriesAction,\n NeoBankServiceMessenger,\n NeoBankAutorampResponse,\n NeoBankMicrodeposit,\n NeoBankAbilityCurrency,\n NeoBankAbilityStatus,\n NeoBankCurrencyAbility,\n NeoBankCustomerAbilities,\n NeoBankFiatAbilities,\n NeoBankRequestOptions,\n NeoBankQueryParams,\n GetWalletRegistrationStatusParams,\n RegisterSelfHostedWalletParams,\n} from './NeoBankService.js';\nexport type {\n NeoBankServiceGetAutorampAction,\n NeoBankServiceGetAutorampsAction,\n NeoBankServiceGetPixDepositInstructionsAction,\n NeoBankServiceGetDepositInstructionsAction,\n NeoBankServiceListAutorampTransactionsAction,\n NeoBankServiceRegisterPixAddressAction,\n NeoBankServiceGetAutorampQuoteAction,\n NeoBankServiceCreateAutorampAction,\n NeoBankServiceGetAutorampQuoteForAutorampAction,\n NeoBankServiceAttachAutorampQuoteAction,\n NeoBankServiceGetCustomerByExternalIdAction,\n NeoBankServiceGetMoonpayCustomerIdAction,\n NeoBankServiceGetMicrodepositsAction,\n NeoBankServiceGetCustomerAbilitiesAction,\n NeoBankServiceGetWalletRegistrationStatusAction,\n NeoBankServiceRegisterSelfHostedWalletAction,\n} from './NeoBankService-method-action-types.js';\nexport {\n NeoBankService,\n serviceName as neoBankServiceName,\n mapNeoBankAutorampToRemoteSnapshot,\n extractPixDepositInstructions,\n extractUsBankDepositInstructions,\n} from './NeoBankService.js';\nexport type {\n Blockchain,\n RegistrationOutcome,\n RegistrationStatus,\n SelfHostedRegistration,\n WalletRegistrationErrorKind,\n} from './wallet-registration-service.js';\nexport { WalletRegistrationError } from './wallet-registration-service.js';\n"]}
|
package/package.json
CHANGED