@metamask/ramps-controller 20.3.0 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -1
- package/dist/{NeoBankService-method-action-types.d.mts → NeoBankService-method-action-types.d.ts} +2 -2
- package/dist/NeoBankService-method-action-types.d.ts.map +1 -0
- package/dist/{NeoBankService-method-action-types.mjs → NeoBankService-method-action-types.js} +1 -1
- package/dist/NeoBankService-method-action-types.js.map +1 -0
- package/dist/{NeoBankService.d.cts → NeoBankService.d.ts} +8 -8
- package/dist/NeoBankService.d.ts.map +1 -0
- package/dist/NeoBankService.js +380 -0
- package/dist/NeoBankService.js.map +1 -0
- package/dist/{RampsController-method-action-types.d.mts → RampsController-method-action-types.d.ts} +18 -3
- package/dist/RampsController-method-action-types.d.ts.map +1 -0
- package/dist/{TransakService-method-action-types.mjs → RampsController-method-action-types.js} +1 -1
- package/dist/RampsController-method-action-types.js.map +1 -0
- package/dist/{RampsController.d.mts → RampsController.d.ts} +86 -23
- package/dist/RampsController.d.ts.map +1 -0
- package/dist/{RampsController.mjs → RampsController.js} +976 -634
- package/dist/RampsController.js.map +1 -0
- package/dist/{RampsService-method-action-types.d.cts → RampsService-method-action-types.d.ts} +2 -2
- package/dist/RampsService-method-action-types.d.ts.map +1 -0
- package/dist/{RampsService-method-action-types.mjs → RampsService-method-action-types.js} +1 -1
- package/dist/RampsService-method-action-types.js.map +1 -0
- package/dist/{RampsService.d.mts → RampsService.d.ts} +11 -5
- package/dist/RampsService.d.ts.map +1 -0
- package/dist/{RampsService.mjs → RampsService.js} +159 -147
- package/dist/RampsService.js.map +1 -0
- package/dist/{RequestCache.d.mts → RequestCache.d.ts} +3 -3
- package/dist/RequestCache.d.ts.map +1 -0
- package/dist/{RequestCache.mjs → RequestCache.js} +1 -1
- package/dist/RequestCache.js.map +1 -0
- package/dist/{TransakService-method-action-types.d.cts → TransakService-method-action-types.d.ts} +2 -2
- package/dist/TransakService-method-action-types.d.ts.map +1 -0
- package/dist/{RampsController-method-action-types.mjs → TransakService-method-action-types.js} +1 -1
- package/dist/TransakService-method-action-types.js.map +1 -0
- package/dist/{TransakService.d.cts → TransakService.d.ts} +6 -6
- package/dist/TransakService.d.ts.map +1 -0
- package/dist/TransakService.js +746 -0
- package/dist/TransakService.js.map +1 -0
- package/dist/{autoramp-types.d.cts → autoramp-types.d.ts} +1 -1
- package/dist/autoramp-types.d.ts.map +1 -0
- package/dist/autoramp-types.js +2 -0
- package/dist/autoramp-types.js.map +1 -0
- package/dist/{autorampAccount.d.mts → autorampAccount.d.ts} +3 -3
- package/dist/autorampAccount.d.ts.map +1 -0
- package/dist/{autorampAccount.mjs → autorampAccount.js} +1 -1
- package/dist/autorampAccount.js.map +1 -0
- package/dist/{client-identity.d.mts → client-identity.d.ts} +1 -1
- package/dist/client-identity.d.ts.map +1 -0
- package/dist/{client-identity.mjs → client-identity.js} +1 -1
- package/dist/client-identity.js.map +1 -0
- package/dist/{errorNormalization.d.mts → errorNormalization.d.ts} +1 -1
- package/dist/errorNormalization.d.ts.map +1 -0
- package/dist/{errorNormalization.mjs → errorNormalization.js} +1 -1
- package/dist/errorNormalization.js.map +1 -0
- package/dist/{featureFlags.d.mts → featureFlags.d.ts} +2 -2
- package/dist/featureFlags.d.ts.map +1 -0
- package/dist/{featureFlags.mjs → featureFlags.js} +1 -1
- package/dist/featureFlags.js.map +1 -0
- package/dist/{index.d.mts → index.d.ts} +37 -35
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/order-syncing/constants.d.ts +23 -0
- package/dist/order-syncing/constants.d.ts.map +1 -0
- package/dist/order-syncing/constants.js +23 -0
- package/dist/order-syncing/constants.js.map +1 -0
- package/dist/order-syncing/controller-integration.d.ts +91 -0
- package/dist/order-syncing/controller-integration.d.ts.map +1 -0
- package/dist/order-syncing/controller-integration.js +364 -0
- package/dist/order-syncing/controller-integration.js.map +1 -0
- package/dist/order-syncing/index.d.ts +7 -0
- package/dist/order-syncing/index.d.ts.map +1 -0
- package/dist/order-syncing/index.js +5 -0
- package/dist/order-syncing/index.js.map +1 -0
- package/dist/order-syncing/sync-utils.d.ts +9 -0
- package/dist/order-syncing/sync-utils.d.ts.map +1 -0
- package/dist/order-syncing/sync-utils.js +27 -0
- package/dist/order-syncing/sync-utils.js.map +1 -0
- package/dist/order-syncing/types.d.ts +66 -0
- package/dist/order-syncing/types.d.ts.map +1 -0
- package/dist/order-syncing/types.js +2 -0
- package/dist/order-syncing/types.js.map +1 -0
- package/dist/order-syncing/utils.d.ts +83 -0
- package/dist/order-syncing/utils.d.ts.map +1 -0
- package/dist/order-syncing/utils.js +144 -0
- package/dist/order-syncing/utils.js.map +1 -0
- package/dist/{orderStatus.d.mts → orderStatus.d.ts} +2 -2
- package/dist/orderStatus.d.ts.map +1 -0
- package/dist/{orderStatus.mjs → orderStatus.js} +2 -2
- package/dist/orderStatus.js.map +1 -0
- package/dist/{ownership-message.d.cts → ownership-message.d.ts} +1 -1
- package/dist/ownership-message.d.ts.map +1 -0
- package/dist/{ownership-message.mjs → ownership-message.js} +1 -1
- package/dist/ownership-message.js.map +1 -0
- package/dist/{paymentMethodMerge.d.cts → paymentMethodMerge.d.ts} +2 -2
- package/dist/paymentMethodMerge.d.ts.map +1 -0
- package/dist/{paymentMethodMerge.mjs → paymentMethodMerge.js} +1 -1
- package/dist/paymentMethodMerge.js.map +1 -0
- package/dist/{providerAvailability.d.cts → providerAvailability.d.ts} +2 -2
- package/dist/providerAvailability.d.ts.map +1 -0
- package/dist/{providerAvailability.mjs → providerAvailability.js} +1 -1
- package/dist/providerAvailability.js.map +1 -0
- package/dist/{quoteClassification.d.cts → quoteClassification.d.ts} +2 -2
- package/dist/quoteClassification.d.ts.map +1 -0
- package/dist/{quoteClassification.mjs → quoteClassification.js} +1 -1
- package/dist/quoteClassification.js.map +1 -0
- package/dist/{rampsErrorCodes.d.cts → rampsErrorCodes.d.ts} +2 -2
- package/dist/rampsErrorCodes.d.ts.map +1 -0
- package/dist/{rampsErrorCodes.mjs → rampsErrorCodes.js} +1 -1
- package/dist/rampsErrorCodes.js.map +1 -0
- package/dist/{selectors.d.mts → selectors.d.ts} +3 -3
- package/dist/selectors.d.ts.map +1 -0
- package/dist/{selectors.mjs → selectors.js} +2 -2
- package/dist/selectors.js.map +1 -0
- package/dist/{transakApiErrorUtils.d.cts → transakApiErrorUtils.d.ts} +1 -1
- package/dist/transakApiErrorUtils.d.ts.map +1 -0
- package/dist/{transakApiErrorUtils.mjs → transakApiErrorUtils.js} +3 -3
- package/dist/transakApiErrorUtils.js.map +1 -0
- package/dist/{transakErrorCodes.d.cts → transakErrorCodes.d.ts} +3 -3
- package/dist/transakErrorCodes.d.ts.map +1 -0
- package/dist/{transakErrorCodes.mjs → transakErrorCodes.js} +1 -1
- package/dist/transakErrorCodes.js.map +1 -0
- package/dist/{wallet-registration-machine.d.cts → wallet-registration-machine.d.ts} +1 -1
- package/dist/wallet-registration-machine.d.ts.map +1 -0
- package/dist/{wallet-registration-machine.mjs → wallet-registration-machine.js} +1 -1
- package/dist/wallet-registration-machine.js.map +1 -0
- package/dist/{wallet-registration-service.d.cts → wallet-registration-service.d.ts} +1 -1
- package/dist/wallet-registration-service.d.ts.map +1 -0
- package/dist/{wallet-registration-service.mjs → wallet-registration-service.js} +60 -69
- package/dist/wallet-registration-service.js.map +1 -0
- package/package.json +18 -21
- package/dist/NeoBankService-method-action-types.cjs +0 -7
- package/dist/NeoBankService-method-action-types.cjs.map +0 -1
- package/dist/NeoBankService-method-action-types.d.cts +0 -126
- package/dist/NeoBankService-method-action-types.d.cts.map +0 -1
- package/dist/NeoBankService-method-action-types.d.mts.map +0 -1
- package/dist/NeoBankService-method-action-types.mjs.map +0 -1
- package/dist/NeoBankService.cjs +0 -387
- package/dist/NeoBankService.cjs.map +0 -1
- package/dist/NeoBankService.d.cts.map +0 -1
- package/dist/NeoBankService.d.mts +0 -191
- package/dist/NeoBankService.d.mts.map +0 -1
- package/dist/NeoBankService.mjs +0 -379
- package/dist/NeoBankService.mjs.map +0 -1
- package/dist/RampsController-method-action-types.cjs +0 -7
- package/dist/RampsController-method-action-types.cjs.map +0 -1
- package/dist/RampsController-method-action-types.d.cts +0 -758
- package/dist/RampsController-method-action-types.d.cts.map +0 -1
- package/dist/RampsController-method-action-types.d.mts.map +0 -1
- package/dist/RampsController-method-action-types.mjs.map +0 -1
- package/dist/RampsController.cjs +0 -2799
- package/dist/RampsController.cjs.map +0 -1
- package/dist/RampsController.d.cts +0 -968
- package/dist/RampsController.d.cts.map +0 -1
- package/dist/RampsController.d.mts.map +0 -1
- package/dist/RampsController.mjs.map +0 -1
- package/dist/RampsService-method-action-types.cjs +0 -7
- package/dist/RampsService-method-action-types.cjs.map +0 -1
- package/dist/RampsService-method-action-types.d.cts.map +0 -1
- package/dist/RampsService-method-action-types.d.mts +0 -171
- package/dist/RampsService-method-action-types.d.mts.map +0 -1
- package/dist/RampsService-method-action-types.mjs.map +0 -1
- package/dist/RampsService.cjs +0 -708
- package/dist/RampsService.cjs.map +0 -1
- package/dist/RampsService.d.cts +0 -944
- package/dist/RampsService.d.cts.map +0 -1
- package/dist/RampsService.d.mts.map +0 -1
- package/dist/RampsService.mjs.map +0 -1
- package/dist/RequestCache.cjs +0 -103
- package/dist/RequestCache.cjs.map +0 -1
- package/dist/RequestCache.d.cts +0 -110
- package/dist/RequestCache.d.cts.map +0 -1
- package/dist/RequestCache.d.mts.map +0 -1
- package/dist/RequestCache.mjs.map +0 -1
- package/dist/TransakService-method-action-types.cjs +0 -7
- package/dist/TransakService-method-action-types.cjs.map +0 -1
- package/dist/TransakService-method-action-types.d.cts.map +0 -1
- package/dist/TransakService-method-action-types.d.mts +0 -140
- package/dist/TransakService-method-action-types.d.mts.map +0 -1
- package/dist/TransakService-method-action-types.mjs.map +0 -1
- package/dist/TransakService.cjs +0 -743
- package/dist/TransakService.cjs.map +0 -1
- package/dist/TransakService.d.cts.map +0 -1
- package/dist/TransakService.d.mts +0 -370
- package/dist/TransakService.d.mts.map +0 -1
- package/dist/TransakService.mjs +0 -734
- package/dist/TransakService.mjs.map +0 -1
- package/dist/autoramp-types.cjs +0 -3
- package/dist/autoramp-types.cjs.map +0 -1
- package/dist/autoramp-types.d.cts.map +0 -1
- package/dist/autoramp-types.d.mts +0 -22
- package/dist/autoramp-types.d.mts.map +0 -1
- package/dist/autoramp-types.mjs +0 -2
- package/dist/autoramp-types.mjs.map +0 -1
- package/dist/autorampAccount.cjs +0 -155
- package/dist/autorampAccount.cjs.map +0 -1
- package/dist/autorampAccount.d.cts +0 -126
- package/dist/autorampAccount.d.cts.map +0 -1
- package/dist/autorampAccount.d.mts.map +0 -1
- package/dist/autorampAccount.mjs.map +0 -1
- package/dist/client-identity.cjs +0 -28
- package/dist/client-identity.cjs.map +0 -1
- package/dist/client-identity.d.cts +0 -24
- package/dist/client-identity.d.cts.map +0 -1
- package/dist/client-identity.d.mts.map +0 -1
- package/dist/client-identity.mjs.map +0 -1
- package/dist/errorNormalization.cjs +0 -84
- package/dist/errorNormalization.cjs.map +0 -1
- package/dist/errorNormalization.d.cts +0 -56
- package/dist/errorNormalization.d.cts.map +0 -1
- package/dist/errorNormalization.d.mts.map +0 -1
- package/dist/errorNormalization.mjs.map +0 -1
- package/dist/featureFlags.cjs +0 -144
- package/dist/featureFlags.cjs.map +0 -1
- package/dist/featureFlags.d.cts +0 -82
- package/dist/featureFlags.d.cts.map +0 -1
- package/dist/featureFlags.d.mts.map +0 -1
- package/dist/featureFlags.mjs.map +0 -1
- package/dist/index.cjs +0 -82
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -35
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -18
- package/dist/index.mjs.map +0 -1
- package/dist/orderStatus.cjs +0 -34
- package/dist/orderStatus.cjs.map +0 -1
- package/dist/orderStatus.d.cts +0 -18
- package/dist/orderStatus.d.cts.map +0 -1
- package/dist/orderStatus.d.mts.map +0 -1
- package/dist/orderStatus.mjs.map +0 -1
- package/dist/ownership-message.cjs +0 -26
- package/dist/ownership-message.cjs.map +0 -1
- package/dist/ownership-message.d.cts.map +0 -1
- package/dist/ownership-message.d.mts +0 -22
- package/dist/ownership-message.d.mts.map +0 -1
- package/dist/ownership-message.mjs.map +0 -1
- package/dist/paymentMethodMerge.cjs +0 -51
- package/dist/paymentMethodMerge.cjs.map +0 -1
- package/dist/paymentMethodMerge.d.cts.map +0 -1
- package/dist/paymentMethodMerge.d.mts +0 -26
- package/dist/paymentMethodMerge.d.mts.map +0 -1
- package/dist/paymentMethodMerge.mjs.map +0 -1
- package/dist/providerAvailability.cjs +0 -134
- package/dist/providerAvailability.cjs.map +0 -1
- package/dist/providerAvailability.d.cts.map +0 -1
- package/dist/providerAvailability.d.mts +0 -101
- package/dist/providerAvailability.d.mts.map +0 -1
- package/dist/providerAvailability.mjs.map +0 -1
- package/dist/quoteClassification.cjs +0 -44
- package/dist/quoteClassification.cjs.map +0 -1
- package/dist/quoteClassification.d.cts.map +0 -1
- package/dist/quoteClassification.d.mts +0 -33
- package/dist/quoteClassification.d.mts.map +0 -1
- package/dist/quoteClassification.mjs.map +0 -1
- package/dist/rampsErrorCodes.cjs +0 -11
- package/dist/rampsErrorCodes.cjs.map +0 -1
- package/dist/rampsErrorCodes.d.cts.map +0 -1
- package/dist/rampsErrorCodes.d.mts +0 -9
- package/dist/rampsErrorCodes.d.mts.map +0 -1
- package/dist/rampsErrorCodes.mjs.map +0 -1
- package/dist/selectors.cjs +0 -85
- package/dist/selectors.cjs.map +0 -1
- package/dist/selectors.d.cts +0 -78
- package/dist/selectors.d.cts.map +0 -1
- package/dist/selectors.d.mts.map +0 -1
- package/dist/selectors.mjs.map +0 -1
- package/dist/transakApiErrorUtils.cjs +0 -15
- package/dist/transakApiErrorUtils.cjs.map +0 -1
- package/dist/transakApiErrorUtils.d.cts.map +0 -1
- package/dist/transakApiErrorUtils.d.mts +0 -3
- package/dist/transakApiErrorUtils.d.mts.map +0 -1
- package/dist/transakApiErrorUtils.mjs.map +0 -1
- package/dist/transakErrorCodes.cjs +0 -14
- package/dist/transakErrorCodes.cjs.map +0 -1
- package/dist/transakErrorCodes.d.cts.map +0 -1
- package/dist/transakErrorCodes.d.mts +0 -12
- package/dist/transakErrorCodes.d.mts.map +0 -1
- package/dist/transakErrorCodes.mjs.map +0 -1
- package/dist/wallet-registration-machine.cjs +0 -144
- package/dist/wallet-registration-machine.cjs.map +0 -1
- package/dist/wallet-registration-machine.d.cts.map +0 -1
- package/dist/wallet-registration-machine.d.mts +0 -81
- package/dist/wallet-registration-machine.d.mts.map +0 -1
- package/dist/wallet-registration-machine.mjs.map +0 -1
- package/dist/wallet-registration-service.cjs +0 -351
- package/dist/wallet-registration-service.cjs.map +0 -1
- package/dist/wallet-registration-service.d.cts.map +0 -1
- package/dist/wallet-registration-service.d.mts +0 -144
- package/dist/wallet-registration-service.d.mts.map +0 -1
- package/dist/wallet-registration-service.mjs.map +0 -1
package/dist/TransakService.mjs
DELETED
|
@@ -1,734 +0,0 @@
|
|
|
1
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _TransakService_instances, _TransakService_messenger, _TransakService_fetch, _TransakService_policy, _TransakService_noRetryPolicy, _TransakService_environment, _TransakService_context, _TransakService_orderRetryDelayMs, _TransakService_apiKey, _TransakService_accessToken, _TransakService_rampsApiBaseUrlOverride, _TransakService_referrerDomain, _TransakService_clientIdentity, _TransakService_ensureApiKey, _TransakService_ensureAccessToken, _TransakService_getHeaders, _TransakService_throwTransakApiError, _TransakService_transakGet, _TransakService_transakPost, _TransakService_transakPatch, _TransakService_transakDelete, _TransakService_getRampsApiBaseUrl, _TransakService_addRampsCommonParams, _TransakService_ordersApiGet;
|
|
13
|
-
import { createServicePolicy, HttpError } from "@metamask/controller-utils";
|
|
14
|
-
import packageJson from "../package.json" with { type: "json" };
|
|
15
|
-
import { addRampsClientIdentityParams } from "./client-identity.mjs";
|
|
16
|
-
import { RAMPS_SDK_VERSION } from "./RampsService.mjs";
|
|
17
|
-
import { TRANSAK_ERROR_CODES } from "./transakErrorCodes.mjs";
|
|
18
|
-
// === ENVIRONMENT ===
|
|
19
|
-
export var TransakEnvironment;
|
|
20
|
-
(function (TransakEnvironment) {
|
|
21
|
-
TransakEnvironment["Production"] = "production";
|
|
22
|
-
TransakEnvironment["Staging"] = "staging";
|
|
23
|
-
TransakEnvironment["Development"] = "development";
|
|
24
|
-
})(TransakEnvironment || (TransakEnvironment = {}));
|
|
25
|
-
var TransakApiProviders;
|
|
26
|
-
(function (TransakApiProviders) {
|
|
27
|
-
TransakApiProviders["TransakNative"] = "transak-native";
|
|
28
|
-
TransakApiProviders["TransakNativeStaging"] = "transak-native-staging";
|
|
29
|
-
})(TransakApiProviders || (TransakApiProviders = {}));
|
|
30
|
-
// === ORDER ID UTILITIES ===
|
|
31
|
-
export class TransakOrderIdTransformer {
|
|
32
|
-
static depositOrderIdToTransakOrderId(depositOrderId) {
|
|
33
|
-
const parts = depositOrderId.split('/');
|
|
34
|
-
return parts[parts.length - 1];
|
|
35
|
-
}
|
|
36
|
-
static transakOrderIdToDepositOrderId(transakOrderId, environment) {
|
|
37
|
-
const provider = environment === TransakEnvironment.Production
|
|
38
|
-
? 'transak-native'
|
|
39
|
-
: 'transak-native-staging';
|
|
40
|
-
return `/providers/${provider}/orders/${transakOrderId}`;
|
|
41
|
-
}
|
|
42
|
-
static isDepositOrderId(orderId) {
|
|
43
|
-
return orderId.startsWith('/providers/');
|
|
44
|
-
}
|
|
45
|
-
static extractTransakOrderId(orderId) {
|
|
46
|
-
return this.isDepositOrderId(orderId)
|
|
47
|
-
? this.depositOrderIdToTransakOrderId(orderId)
|
|
48
|
-
: orderId;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// === MESSENGER ===
|
|
52
|
-
const serviceName = 'TransakService';
|
|
53
|
-
const MESSENGER_EXPOSED_METHODS = [
|
|
54
|
-
'setApiKey',
|
|
55
|
-
'setAccessToken',
|
|
56
|
-
'clearAccessToken',
|
|
57
|
-
'sendUserOtp',
|
|
58
|
-
'verifyUserOtp',
|
|
59
|
-
'logout',
|
|
60
|
-
'getUserDetails',
|
|
61
|
-
'getBuyQuote',
|
|
62
|
-
'getKycRequirement',
|
|
63
|
-
'getAdditionalRequirements',
|
|
64
|
-
'createOrder',
|
|
65
|
-
'getOrder',
|
|
66
|
-
'getUserLimits',
|
|
67
|
-
'requestOtt',
|
|
68
|
-
'generatePaymentWidgetUrl',
|
|
69
|
-
'createWidgetUrl',
|
|
70
|
-
'submitPurposeOfUsageForm',
|
|
71
|
-
'patchUser',
|
|
72
|
-
'submitSsnDetails',
|
|
73
|
-
'confirmPayment',
|
|
74
|
-
'getTranslation',
|
|
75
|
-
'getIdProofStatus',
|
|
76
|
-
'cancelOrder',
|
|
77
|
-
'cancelAllActiveOrders',
|
|
78
|
-
'getActiveOrders',
|
|
79
|
-
];
|
|
80
|
-
// === HELPER FUNCTIONS ===
|
|
81
|
-
/**
|
|
82
|
-
* Maps ramps API payment method IDs (e.g., "/payments/debit-credit-card")
|
|
83
|
-
* to the deposit-format IDs expected by the translation endpoint
|
|
84
|
-
* (e.g., "credit_debit_card").
|
|
85
|
-
*
|
|
86
|
-
* The translation endpoint only understands the deposit-format IDs.
|
|
87
|
-
* Canonical IDs may arrive either with the "/payments/" prefix
|
|
88
|
-
* (e.g., "/payments/apple-pay") or without it (e.g., "apple-pay"), so both
|
|
89
|
-
* forms are accepted. If no mapping exists, the input is returned as-is (it
|
|
90
|
-
* may already be in the deposit format).
|
|
91
|
-
*/
|
|
92
|
-
const RAMPS_TO_DEPOSIT_PAYMENT_METHOD = {
|
|
93
|
-
'/payments/debit-credit-card': 'credit_debit_card',
|
|
94
|
-
'/payments/apple-pay': 'apple_pay',
|
|
95
|
-
'/payments/google-pay': 'google_pay',
|
|
96
|
-
'/payments/sepa-bank-transfer': 'sepa_bank_transfer',
|
|
97
|
-
'/payments/wire-transfer': 'wire_transfer',
|
|
98
|
-
'/payments/gbp-bank-transfer': 'gbp_bank_transfer',
|
|
99
|
-
};
|
|
100
|
-
const PAYMENTS_PREFIX = '/payments/';
|
|
101
|
-
function normalizePaymentMethodForTranslation(paymentMethod) {
|
|
102
|
-
if (!paymentMethod) {
|
|
103
|
-
return undefined;
|
|
104
|
-
}
|
|
105
|
-
const prefixed = paymentMethod.startsWith(PAYMENTS_PREFIX)
|
|
106
|
-
? paymentMethod
|
|
107
|
-
: `${PAYMENTS_PREFIX}${paymentMethod}`;
|
|
108
|
-
return (RAMPS_TO_DEPOSIT_PAYMENT_METHOD[paymentMethod] ??
|
|
109
|
-
RAMPS_TO_DEPOSIT_PAYMENT_METHOD[prefixed] ??
|
|
110
|
-
paymentMethod);
|
|
111
|
-
}
|
|
112
|
-
function getTransakApiBaseUrl(environment) {
|
|
113
|
-
switch (environment) {
|
|
114
|
-
case TransakEnvironment.Production:
|
|
115
|
-
return 'https://api-gateway.transak.com';
|
|
116
|
-
// Transak has no dev environment; development uses their staging gateway.
|
|
117
|
-
case TransakEnvironment.Staging:
|
|
118
|
-
case TransakEnvironment.Development:
|
|
119
|
-
return 'https://api-gateway-stg.transak.com';
|
|
120
|
-
default:
|
|
121
|
-
throw new Error(`Invalid Transak environment: ${String(environment)}`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function getRampsBaseUrl(environment) {
|
|
125
|
-
switch (environment) {
|
|
126
|
-
case TransakEnvironment.Production:
|
|
127
|
-
return 'https://on-ramp.api.cx.metamask.io';
|
|
128
|
-
case TransakEnvironment.Staging:
|
|
129
|
-
return 'https://on-ramp.uat-api.cx.metamask.io';
|
|
130
|
-
case TransakEnvironment.Development:
|
|
131
|
-
return 'https://on-ramp.dev-api.cx.metamask.io';
|
|
132
|
-
default:
|
|
133
|
-
throw new Error(`Invalid Transak environment: ${String(environment)}`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
function getRampsProviderPath(environment) {
|
|
137
|
-
// The dev ramps API registers the same `transak-native-staging` provider
|
|
138
|
-
// id as UAT; only production uses `transak-native`.
|
|
139
|
-
const providerId = environment === TransakEnvironment.Production
|
|
140
|
-
? TransakApiProviders.TransakNative
|
|
141
|
-
: TransakApiProviders.TransakNativeStaging;
|
|
142
|
-
return `/providers/${providerId}`;
|
|
143
|
-
}
|
|
144
|
-
function getPaymentWidgetBaseUrl(environment) {
|
|
145
|
-
switch (environment) {
|
|
146
|
-
case TransakEnvironment.Production:
|
|
147
|
-
return 'https://global.transak.com';
|
|
148
|
-
// Transak has no dev environment; development uses their staging widget.
|
|
149
|
-
case TransakEnvironment.Staging:
|
|
150
|
-
case TransakEnvironment.Development:
|
|
151
|
-
return 'https://global-stg.transak.com';
|
|
152
|
-
default:
|
|
153
|
-
throw new Error(`Invalid Transak environment: ${String(environment)}`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Transak requires `referrerDomain` in `widgetParams` alongside the partner
|
|
158
|
-
* API key (which the ramps API proxy injects server-side). Identifies the
|
|
159
|
-
* MetaMask client to Transak. Default when the client does not pass a
|
|
160
|
-
* `referrerDomain` constructor option (e.g. the mobile app passes its
|
|
161
|
-
* package name / bundle id).
|
|
162
|
-
*/
|
|
163
|
-
const TRANSAK_REFERRER_DOMAIN = 'metamask.io';
|
|
164
|
-
// === TRANSAK API ERROR ===
|
|
165
|
-
export class TransakApiError extends HttpError {
|
|
166
|
-
constructor(status, message, errorCode, apiMessage) {
|
|
167
|
-
super(status, message);
|
|
168
|
-
this.errorCode = errorCode;
|
|
169
|
-
this.apiMessage = apiMessage;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
// === SERVICE DEFINITION ===
|
|
173
|
-
export class TransakService {
|
|
174
|
-
constructor({ messenger, environment = TransakEnvironment.Staging, context, fetch: fetchFunction, apiKey, policyOptions = {}, orderRetryDelayMs = 2000, rampsApiBaseUrlOverride, referrerDomain = TRANSAK_REFERRER_DOMAIN, clientProduct, clientVersion, }) {
|
|
175
|
-
_TransakService_instances.add(this);
|
|
176
|
-
_TransakService_messenger.set(this, void 0);
|
|
177
|
-
_TransakService_fetch.set(this, void 0);
|
|
178
|
-
_TransakService_policy.set(this, void 0);
|
|
179
|
-
_TransakService_noRetryPolicy.set(this, void 0);
|
|
180
|
-
_TransakService_environment.set(this, void 0);
|
|
181
|
-
_TransakService_context.set(this, void 0);
|
|
182
|
-
_TransakService_orderRetryDelayMs.set(this, void 0);
|
|
183
|
-
_TransakService_apiKey.set(this, null);
|
|
184
|
-
_TransakService_accessToken.set(this, null);
|
|
185
|
-
/**
|
|
186
|
-
* Optional ramps API base URL override for local development (mirrors
|
|
187
|
-
* `RampsService`'s `baseUrlOverride`). Applies to the requests this service
|
|
188
|
-
* sends to the ramps API (orders, widget-url proxy), not to direct Transak
|
|
189
|
-
* API calls.
|
|
190
|
-
*/
|
|
191
|
-
_TransakService_rampsApiBaseUrlOverride.set(this, void 0);
|
|
192
|
-
/**
|
|
193
|
-
* Identifies the client to Transak in `widgetParams` (e.g. the mobile app's
|
|
194
|
-
* package name / bundle id). Defaults to `metamask.io`.
|
|
195
|
-
*/
|
|
196
|
-
_TransakService_referrerDomain.set(this, void 0);
|
|
197
|
-
_TransakService_clientIdentity.set(this, void 0);
|
|
198
|
-
this.name = serviceName;
|
|
199
|
-
__classPrivateFieldSet(this, _TransakService_messenger, messenger, "f");
|
|
200
|
-
__classPrivateFieldSet(this, _TransakService_fetch, fetchFunction, "f");
|
|
201
|
-
__classPrivateFieldSet(this, _TransakService_policy, createServicePolicy(policyOptions), "f");
|
|
202
|
-
__classPrivateFieldSet(this, _TransakService_noRetryPolicy, createServicePolicy({
|
|
203
|
-
...policyOptions,
|
|
204
|
-
maxRetries: 0,
|
|
205
|
-
}), "f");
|
|
206
|
-
__classPrivateFieldSet(this, _TransakService_environment, environment, "f");
|
|
207
|
-
__classPrivateFieldSet(this, _TransakService_context, context, "f");
|
|
208
|
-
__classPrivateFieldSet(this, _TransakService_apiKey, apiKey ?? null, "f");
|
|
209
|
-
__classPrivateFieldSet(this, _TransakService_orderRetryDelayMs, orderRetryDelayMs, "f");
|
|
210
|
-
__classPrivateFieldSet(this, _TransakService_rampsApiBaseUrlOverride, rampsApiBaseUrlOverride, "f");
|
|
211
|
-
__classPrivateFieldSet(this, _TransakService_referrerDomain, referrerDomain, "f");
|
|
212
|
-
__classPrivateFieldSet(this, _TransakService_clientIdentity, {
|
|
213
|
-
clientProduct,
|
|
214
|
-
clientVersion,
|
|
215
|
-
}, "f");
|
|
216
|
-
__classPrivateFieldGet(this, _TransakService_messenger, "f").registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
|
|
217
|
-
}
|
|
218
|
-
setApiKey(apiKey) {
|
|
219
|
-
__classPrivateFieldSet(this, _TransakService_apiKey, apiKey, "f");
|
|
220
|
-
}
|
|
221
|
-
getApiKey() {
|
|
222
|
-
return __classPrivateFieldGet(this, _TransakService_apiKey, "f");
|
|
223
|
-
}
|
|
224
|
-
setAccessToken(token) {
|
|
225
|
-
__classPrivateFieldSet(this, _TransakService_accessToken, token, "f");
|
|
226
|
-
}
|
|
227
|
-
getAccessToken() {
|
|
228
|
-
return __classPrivateFieldGet(this, _TransakService_accessToken, "f");
|
|
229
|
-
}
|
|
230
|
-
clearAccessToken() {
|
|
231
|
-
__classPrivateFieldSet(this, _TransakService_accessToken, null, "f");
|
|
232
|
-
}
|
|
233
|
-
// === PUBLIC API METHODS ===
|
|
234
|
-
async sendUserOtp(email) {
|
|
235
|
-
const result = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/auth/login', { email });
|
|
236
|
-
return result;
|
|
237
|
-
}
|
|
238
|
-
async verifyUserOtp(email, verificationCode, stateToken) {
|
|
239
|
-
const responseData = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/auth/verify', {
|
|
240
|
-
email,
|
|
241
|
-
otp: verificationCode,
|
|
242
|
-
stateToken,
|
|
243
|
-
}, { policy: __classPrivateFieldGet(this, _TransakService_noRetryPolicy, "f") });
|
|
244
|
-
const accessToken = {
|
|
245
|
-
accessToken: responseData.accessToken,
|
|
246
|
-
ttl: responseData.ttl,
|
|
247
|
-
created: new Date(responseData.created),
|
|
248
|
-
};
|
|
249
|
-
this.setAccessToken(accessToken);
|
|
250
|
-
return accessToken;
|
|
251
|
-
}
|
|
252
|
-
async logout() {
|
|
253
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
254
|
-
try {
|
|
255
|
-
const result = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v1/auth/logout');
|
|
256
|
-
this.clearAccessToken();
|
|
257
|
-
return result;
|
|
258
|
-
}
|
|
259
|
-
catch (error) {
|
|
260
|
-
if (error instanceof HttpError && error.httpStatus === 401) {
|
|
261
|
-
this.clearAccessToken();
|
|
262
|
-
return 'user was already logged out';
|
|
263
|
-
}
|
|
264
|
-
throw error;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
async getUserDetails() {
|
|
268
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
269
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/user/');
|
|
270
|
-
}
|
|
271
|
-
async getBuyQuote(genericFiatCurrency, genericCryptoCurrency, genericNetwork, genericPaymentMethod, fiatAmount) {
|
|
272
|
-
const normalizedPaymentMethod = normalizePaymentMethodForTranslation(genericPaymentMethod || undefined);
|
|
273
|
-
const translationRequest = {
|
|
274
|
-
cryptoCurrencyId: genericCryptoCurrency,
|
|
275
|
-
chainId: genericNetwork,
|
|
276
|
-
fiatCurrencyId: genericFiatCurrency,
|
|
277
|
-
paymentMethod: normalizedPaymentMethod,
|
|
278
|
-
};
|
|
279
|
-
const translation = await this.getTranslation(translationRequest);
|
|
280
|
-
const params = {
|
|
281
|
-
fiatCurrency: translation.fiatCurrency,
|
|
282
|
-
cryptoCurrency: translation.cryptoCurrency,
|
|
283
|
-
isBuyOrSell: 'BUY',
|
|
284
|
-
network: translation.network,
|
|
285
|
-
fiatAmount,
|
|
286
|
-
isFeeExcludedFromFiat: 'true',
|
|
287
|
-
};
|
|
288
|
-
if (translation.paymentMethod) {
|
|
289
|
-
params.paymentMethod = translation.paymentMethod;
|
|
290
|
-
}
|
|
291
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/lookup/quotes', params);
|
|
292
|
-
}
|
|
293
|
-
async getKycRequirement(quoteId) {
|
|
294
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
295
|
-
const result = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/kyc/requirement', {
|
|
296
|
-
'metadata[quoteId]': quoteId,
|
|
297
|
-
});
|
|
298
|
-
return result;
|
|
299
|
-
}
|
|
300
|
-
async getAdditionalRequirements(quoteId) {
|
|
301
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
302
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/kyc/additional-requirements', { 'metadata[quoteId]': quoteId });
|
|
303
|
-
}
|
|
304
|
-
async createOrder(quoteId, walletAddress, paymentMethodId) {
|
|
305
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
306
|
-
const normalizedPaymentMethod = normalizePaymentMethodForTranslation(paymentMethodId);
|
|
307
|
-
const translation = await this.getTranslation({
|
|
308
|
-
paymentMethod: normalizedPaymentMethod,
|
|
309
|
-
});
|
|
310
|
-
const paymentInstrumentId = translation.paymentMethod ?? normalizedPaymentMethod;
|
|
311
|
-
try {
|
|
312
|
-
const transakOrder = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/orders', {
|
|
313
|
-
quoteId,
|
|
314
|
-
walletAddress,
|
|
315
|
-
paymentInstrumentId,
|
|
316
|
-
});
|
|
317
|
-
const depositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(transakOrder.orderId, __classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
318
|
-
return this.getOrder(depositOrderId, transakOrder.walletAddress, transakOrder.paymentDetails);
|
|
319
|
-
}
|
|
320
|
-
catch (error) {
|
|
321
|
-
if (error instanceof TransakApiError &&
|
|
322
|
-
error.httpStatus === 409 &&
|
|
323
|
-
error.errorCode === TRANSAK_ERROR_CODES.ORDER_EXISTS) {
|
|
324
|
-
await this.cancelAllActiveOrders();
|
|
325
|
-
await new Promise((resolve) => setTimeout(resolve, __classPrivateFieldGet(this, _TransakService_orderRetryDelayMs, "f")));
|
|
326
|
-
const retryOrder = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/orders', {
|
|
327
|
-
quoteId,
|
|
328
|
-
walletAddress,
|
|
329
|
-
paymentInstrumentId,
|
|
330
|
-
});
|
|
331
|
-
const retryDepositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(retryOrder.orderId, __classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
332
|
-
return this.getOrder(retryDepositOrderId, retryOrder.walletAddress, retryOrder.paymentDetails);
|
|
333
|
-
}
|
|
334
|
-
throw error;
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
async getOrder(orderId, wallet, paymentDetails) {
|
|
338
|
-
let depositOrderId;
|
|
339
|
-
if (TransakOrderIdTransformer.isDepositOrderId(orderId)) {
|
|
340
|
-
depositOrderId = orderId;
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
depositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(orderId, __classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
344
|
-
}
|
|
345
|
-
const transakOrderId = TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);
|
|
346
|
-
const order = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ordersApiGet).call(this, `/orders/${transakOrderId}`, { wallet });
|
|
347
|
-
const orderWithId = {
|
|
348
|
-
...order,
|
|
349
|
-
id: depositOrderId,
|
|
350
|
-
orderType: 'DEPOSIT',
|
|
351
|
-
};
|
|
352
|
-
if (paymentDetails && paymentDetails.length > 0) {
|
|
353
|
-
return { ...orderWithId, paymentDetails };
|
|
354
|
-
}
|
|
355
|
-
if (__classPrivateFieldGet(this, _TransakService_accessToken, "f")?.accessToken) {
|
|
356
|
-
try {
|
|
357
|
-
const transakOrder = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, `/api/v2/orders/${transakOrderId}`);
|
|
358
|
-
return { ...orderWithId, paymentDetails: transakOrder.paymentDetails };
|
|
359
|
-
}
|
|
360
|
-
catch {
|
|
361
|
-
return orderWithId;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
return orderWithId;
|
|
365
|
-
}
|
|
366
|
-
async getUserLimits(fiatCurrency, paymentMethod, kycType) {
|
|
367
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
368
|
-
const translation = await this.getTranslation({
|
|
369
|
-
paymentMethod: normalizePaymentMethodForTranslation(paymentMethod),
|
|
370
|
-
});
|
|
371
|
-
const params = {
|
|
372
|
-
isBuyOrSell: 'BUY',
|
|
373
|
-
kycType,
|
|
374
|
-
fiatCurrency,
|
|
375
|
-
};
|
|
376
|
-
if (translation.paymentMethod) {
|
|
377
|
-
params.paymentCategory = translation.paymentMethod;
|
|
378
|
-
}
|
|
379
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/orders/user-limit', params);
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* @deprecated Use {@link createWidgetUrl} instead. The OTT flow requires the
|
|
383
|
-
* partner API key on the client and Transak is deprecating `request-ott`.
|
|
384
|
-
* @returns The one-time token response.
|
|
385
|
-
*/
|
|
386
|
-
async requestOtt() {
|
|
387
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
388
|
-
const result = await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/auth/request-ott');
|
|
389
|
-
return result;
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* @deprecated Use {@link createWidgetUrl} instead. This builds the widget
|
|
393
|
-
* URL client-side and embeds the partner API key in it.
|
|
394
|
-
* @param ottToken - The one-time token for widget authentication.
|
|
395
|
-
* @param quote - The buy quote to pre-fill in the widget.
|
|
396
|
-
* @param walletAddress - The destination wallet address.
|
|
397
|
-
* @param extraParams - Optional additional URL parameters.
|
|
398
|
-
* @returns The fully constructed widget URL string.
|
|
399
|
-
*/
|
|
400
|
-
generatePaymentWidgetUrl(ottToken, quote, walletAddress, extraParams) {
|
|
401
|
-
const apiKey = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureApiKey).call(this);
|
|
402
|
-
const widgetBaseUrl = getPaymentWidgetBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
403
|
-
const defaultParams = {
|
|
404
|
-
apiKey,
|
|
405
|
-
ott: ottToken,
|
|
406
|
-
fiatCurrency: quote.fiatCurrency,
|
|
407
|
-
cryptoCurrencyCode: quote.cryptoCurrency,
|
|
408
|
-
productsAvailed: 'BUY',
|
|
409
|
-
fiatAmount: quote.fiatAmount.toString(),
|
|
410
|
-
network: quote.network,
|
|
411
|
-
hideExchangeScreen: 'true',
|
|
412
|
-
walletAddress,
|
|
413
|
-
disableWalletAddressForm: 'true',
|
|
414
|
-
paymentMethod: quote.paymentMethod,
|
|
415
|
-
redirectURL: 'https://on-ramp-content.api.cx.metamask.io/regions/fake-callback',
|
|
416
|
-
hideMenu: 'true',
|
|
417
|
-
};
|
|
418
|
-
const params = new URLSearchParams({
|
|
419
|
-
...defaultParams,
|
|
420
|
-
...extraParams,
|
|
421
|
-
});
|
|
422
|
-
const widgetUrl = new URL(widgetBaseUrl);
|
|
423
|
-
widgetUrl.search = params.toString();
|
|
424
|
-
return widgetUrl.toString();
|
|
425
|
-
}
|
|
426
|
-
/**
|
|
427
|
-
* Creates a Transak payment widget URL through the ramps API proxy
|
|
428
|
-
* (`POST {rampsBaseUrl}/providers/{providerId}/widget-url`). The proxy
|
|
429
|
-
* injects the partner API key and derives the user IP server-side, so
|
|
430
|
-
* neither leaves the backend. Replaces the OTT flow ({@link requestOtt} +
|
|
431
|
-
* {@link generatePaymentWidgetUrl}).
|
|
432
|
-
*
|
|
433
|
-
* Requires both a Transak access token (user must be logged in to Transak)
|
|
434
|
-
* and a MetaMask bearer token from `AuthenticationController`.
|
|
435
|
-
*
|
|
436
|
-
* @param quote - The buy quote to pre-fill in the widget.
|
|
437
|
-
* @param walletAddress - The destination wallet address.
|
|
438
|
-
* @param extraParams - Optional additional widget parameters (e.g. theming).
|
|
439
|
-
* Keys must be on the proxy's allowlist or the request is rejected.
|
|
440
|
-
* @returns The single-use widget URL (expires after 5 minutes).
|
|
441
|
-
*/
|
|
442
|
-
async createWidgetUrl(quote, walletAddress, extraParams) {
|
|
443
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
444
|
-
const bearerToken = await __classPrivateFieldGet(this, _TransakService_messenger, "f").call('AuthenticationController:getBearerToken');
|
|
445
|
-
const baseUrl = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_getRampsApiBaseUrl).call(this);
|
|
446
|
-
const providerPath = getRampsProviderPath(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
447
|
-
const url = new URL(`${providerPath}/widget-url`, baseUrl);
|
|
448
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_addRampsCommonParams).call(this, url);
|
|
449
|
-
const widgetParams = {
|
|
450
|
-
referrerDomain: __classPrivateFieldGet(this, _TransakService_referrerDomain, "f"),
|
|
451
|
-
fiatCurrency: quote.fiatCurrency,
|
|
452
|
-
cryptoCurrencyCode: quote.cryptoCurrency,
|
|
453
|
-
fiatAmount: quote.fiatAmount,
|
|
454
|
-
network: quote.network,
|
|
455
|
-
paymentMethod: quote.paymentMethod,
|
|
456
|
-
walletAddress,
|
|
457
|
-
hideExchangeScreen: 'true',
|
|
458
|
-
disableWalletAddressEdit: 'true',
|
|
459
|
-
hideMenu: 'true',
|
|
460
|
-
redirectURL: 'https://on-ramp-content.api.cx.metamask.io/regions/fake-callback',
|
|
461
|
-
...extraParams,
|
|
462
|
-
};
|
|
463
|
-
const headers = {
|
|
464
|
-
'Content-Type': 'application/json',
|
|
465
|
-
Accept: 'application/json',
|
|
466
|
-
Authorization: `Bearer ${bearerToken}`,
|
|
467
|
-
};
|
|
468
|
-
if (__classPrivateFieldGet(this, _TransakService_accessToken, "f")?.accessToken) {
|
|
469
|
-
headers['x-transak-access-token'] = __classPrivateFieldGet(this, _TransakService_accessToken, "f").accessToken;
|
|
470
|
-
}
|
|
471
|
-
const response = await __classPrivateFieldGet(this, _TransakService_policy, "f").execute(async () => {
|
|
472
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
473
|
-
method: 'POST',
|
|
474
|
-
headers,
|
|
475
|
-
body: JSON.stringify({ widgetParams }),
|
|
476
|
-
});
|
|
477
|
-
if (!fetchResponse.ok) {
|
|
478
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_throwTransakApiError).call(this, fetchResponse, url);
|
|
479
|
-
}
|
|
480
|
-
return fetchResponse.json();
|
|
481
|
-
});
|
|
482
|
-
return response.widgetUrl;
|
|
483
|
-
}
|
|
484
|
-
async submitPurposeOfUsageForm(purpose) {
|
|
485
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
486
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/kyc/purpose-of-usage', {
|
|
487
|
-
purposeList: purpose,
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
async patchUser(data) {
|
|
491
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
492
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPatch).call(this, '/api/v2/kyc/user', data);
|
|
493
|
-
}
|
|
494
|
-
async submitSsnDetails(ssn, quoteId) {
|
|
495
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
496
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/kyc/ssn', { ssn, quoteId });
|
|
497
|
-
}
|
|
498
|
-
async confirmPayment(orderId, paymentMethodId) {
|
|
499
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
500
|
-
const normalizedPaymentMethod = normalizePaymentMethodForTranslation(paymentMethodId);
|
|
501
|
-
const translation = await this.getTranslation({
|
|
502
|
-
paymentMethod: normalizedPaymentMethod,
|
|
503
|
-
});
|
|
504
|
-
const transakOrderId = TransakOrderIdTransformer.extractTransakOrderId(orderId);
|
|
505
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakPost).call(this, '/api/v2/orders/payment-confirmation', {
|
|
506
|
-
orderId: transakOrderId,
|
|
507
|
-
paymentMethod: translation.paymentMethod ?? normalizedPaymentMethod,
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
async getTranslation(translationRequest) {
|
|
511
|
-
const baseUrl = getRampsBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
512
|
-
const providerPath = getRampsProviderPath(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
513
|
-
const url = new URL(`${providerPath}/native/translate`, baseUrl);
|
|
514
|
-
url.searchParams.set('action', 'deposit');
|
|
515
|
-
url.searchParams.set('context', __classPrivateFieldGet(this, _TransakService_context, "f"));
|
|
516
|
-
const normalizedRequest = {
|
|
517
|
-
...translationRequest,
|
|
518
|
-
paymentMethod: normalizePaymentMethodForTranslation(translationRequest.paymentMethod),
|
|
519
|
-
};
|
|
520
|
-
for (const [key, value] of Object.entries(normalizedRequest)) {
|
|
521
|
-
if (value !== undefined) {
|
|
522
|
-
url.searchParams.set(key, value);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
const response = await __classPrivateFieldGet(this, _TransakService_policy, "f").execute(async () => {
|
|
526
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
527
|
-
method: 'GET',
|
|
528
|
-
headers: { Accept: 'application/json' },
|
|
529
|
-
});
|
|
530
|
-
if (!fetchResponse.ok) {
|
|
531
|
-
throw new HttpError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`);
|
|
532
|
-
}
|
|
533
|
-
return fetchResponse.json();
|
|
534
|
-
});
|
|
535
|
-
return response;
|
|
536
|
-
}
|
|
537
|
-
async getIdProofStatus(workFlowRunId) {
|
|
538
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
539
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/kyc/id-proof-status', { workFlowRunId });
|
|
540
|
-
}
|
|
541
|
-
async cancelOrder(depositOrderId) {
|
|
542
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
543
|
-
const transakOrderId = TransakOrderIdTransformer.extractTransakOrderId(depositOrderId);
|
|
544
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakDelete).call(this, `/api/v2/orders/${transakOrderId}`, {
|
|
545
|
-
cancelReason: 'Creating new order',
|
|
546
|
-
});
|
|
547
|
-
}
|
|
548
|
-
async cancelAllActiveOrders() {
|
|
549
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
550
|
-
const activeOrders = await this.getActiveOrders();
|
|
551
|
-
const errors = [];
|
|
552
|
-
await Promise.all(activeOrders.map(async (order) => {
|
|
553
|
-
try {
|
|
554
|
-
const depositOrderId = TransakOrderIdTransformer.transakOrderIdToDepositOrderId(order.orderId, __classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
555
|
-
await this.cancelOrder(depositOrderId);
|
|
556
|
-
}
|
|
557
|
-
catch (error) {
|
|
558
|
-
errors.push(error instanceof Error ? error : new Error(String(error)));
|
|
559
|
-
}
|
|
560
|
-
}));
|
|
561
|
-
return errors;
|
|
562
|
-
}
|
|
563
|
-
async getActiveOrders() {
|
|
564
|
-
__classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureAccessToken).call(this);
|
|
565
|
-
return __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_transakGet).call(this, '/api/v2/active-orders');
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
_TransakService_messenger = new WeakMap(), _TransakService_fetch = new WeakMap(), _TransakService_policy = new WeakMap(), _TransakService_noRetryPolicy = new WeakMap(), _TransakService_environment = new WeakMap(), _TransakService_context = new WeakMap(), _TransakService_orderRetryDelayMs = new WeakMap(), _TransakService_apiKey = new WeakMap(), _TransakService_accessToken = new WeakMap(), _TransakService_rampsApiBaseUrlOverride = new WeakMap(), _TransakService_referrerDomain = new WeakMap(), _TransakService_clientIdentity = new WeakMap(), _TransakService_instances = new WeakSet(), _TransakService_ensureApiKey = function _TransakService_ensureApiKey() {
|
|
569
|
-
if (!__classPrivateFieldGet(this, _TransakService_apiKey, "f")) {
|
|
570
|
-
throw new Error('Transak API key is required but not set.');
|
|
571
|
-
}
|
|
572
|
-
return __classPrivateFieldGet(this, _TransakService_apiKey, "f");
|
|
573
|
-
}, _TransakService_ensureAccessToken = function _TransakService_ensureAccessToken() {
|
|
574
|
-
if (!__classPrivateFieldGet(this, _TransakService_accessToken, "f")?.accessToken) {
|
|
575
|
-
throw new HttpError(401, 'Authentication required. Please log in to continue.');
|
|
576
|
-
}
|
|
577
|
-
const createdTime = new Date(__classPrivateFieldGet(this, _TransakService_accessToken, "f").created).getTime();
|
|
578
|
-
const tokenAgeMs = Date.now() - createdTime;
|
|
579
|
-
if (tokenAgeMs > __classPrivateFieldGet(this, _TransakService_accessToken, "f").ttl * 1000) {
|
|
580
|
-
this.clearAccessToken();
|
|
581
|
-
throw new HttpError(401, 'Authentication token has expired. Please log in again.');
|
|
582
|
-
}
|
|
583
|
-
}, _TransakService_getHeaders = function _TransakService_getHeaders() {
|
|
584
|
-
const headers = {
|
|
585
|
-
'Content-Type': 'application/json',
|
|
586
|
-
Accept: 'application/json',
|
|
587
|
-
};
|
|
588
|
-
if (__classPrivateFieldGet(this, _TransakService_accessToken, "f")?.accessToken) {
|
|
589
|
-
headers.authorization = __classPrivateFieldGet(this, _TransakService_accessToken, "f").accessToken;
|
|
590
|
-
}
|
|
591
|
-
return headers;
|
|
592
|
-
}, _TransakService_throwTransakApiError = async function _TransakService_throwTransakApiError(fetchResponse, url) {
|
|
593
|
-
let errorBody = '';
|
|
594
|
-
let errorCode;
|
|
595
|
-
let apiMessage;
|
|
596
|
-
try {
|
|
597
|
-
errorBody = await fetchResponse.text();
|
|
598
|
-
const parsed = JSON.parse(errorBody);
|
|
599
|
-
errorCode =
|
|
600
|
-
parsed?.error?.code ??
|
|
601
|
-
(parsed?.error?.errorCode !== null &&
|
|
602
|
-
parsed?.error?.errorCode !== undefined
|
|
603
|
-
? String(parsed.error.errorCode)
|
|
604
|
-
: undefined);
|
|
605
|
-
apiMessage =
|
|
606
|
-
typeof parsed?.error?.message === 'string'
|
|
607
|
-
? parsed.error.message
|
|
608
|
-
: undefined;
|
|
609
|
-
}
|
|
610
|
-
catch {
|
|
611
|
-
// ignore body read/parse failures
|
|
612
|
-
}
|
|
613
|
-
throw new TransakApiError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'${errorBody ? `: ${errorBody}` : ''}`, errorCode, apiMessage);
|
|
614
|
-
}, _TransakService_transakGet = async function _TransakService_transakGet(path, params) {
|
|
615
|
-
const baseUrl = getTransakApiBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
616
|
-
const url = new URL(path, baseUrl);
|
|
617
|
-
if (params) {
|
|
618
|
-
for (const [key, value] of Object.entries(params)) {
|
|
619
|
-
if (value !== null && value !== undefined) {
|
|
620
|
-
url.searchParams.set(key, value);
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
const apiKey = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureApiKey).call(this);
|
|
625
|
-
url.searchParams.set('apiKey', apiKey);
|
|
626
|
-
const response = await __classPrivateFieldGet(this, _TransakService_policy, "f").execute(async () => {
|
|
627
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
628
|
-
method: 'GET',
|
|
629
|
-
headers: __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_getHeaders).call(this),
|
|
630
|
-
});
|
|
631
|
-
if (!fetchResponse.ok) {
|
|
632
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_throwTransakApiError).call(this, fetchResponse, url);
|
|
633
|
-
}
|
|
634
|
-
return fetchResponse.json();
|
|
635
|
-
});
|
|
636
|
-
return response.data;
|
|
637
|
-
}, _TransakService_transakPost = async function _TransakService_transakPost(path, body, options = {}) {
|
|
638
|
-
const apiKey = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureApiKey).call(this);
|
|
639
|
-
const baseUrl = getTransakApiBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
640
|
-
const url = new URL(path, baseUrl);
|
|
641
|
-
const requestBody = {
|
|
642
|
-
...(body ?? {}),
|
|
643
|
-
apiKey,
|
|
644
|
-
};
|
|
645
|
-
const policy = options.policy ?? __classPrivateFieldGet(this, _TransakService_policy, "f");
|
|
646
|
-
const response = await policy.execute(async () => {
|
|
647
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
648
|
-
method: 'POST',
|
|
649
|
-
headers: __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_getHeaders).call(this),
|
|
650
|
-
body: JSON.stringify(requestBody),
|
|
651
|
-
});
|
|
652
|
-
if (!fetchResponse.ok) {
|
|
653
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_throwTransakApiError).call(this, fetchResponse, url);
|
|
654
|
-
}
|
|
655
|
-
return fetchResponse.json();
|
|
656
|
-
});
|
|
657
|
-
return response.data;
|
|
658
|
-
}, _TransakService_transakPatch = async function _TransakService_transakPatch(path, body) {
|
|
659
|
-
const apiKey = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureApiKey).call(this);
|
|
660
|
-
const baseUrl = getTransakApiBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
661
|
-
const url = new URL(path, baseUrl);
|
|
662
|
-
url.searchParams.set('apiKey', apiKey);
|
|
663
|
-
const response = await __classPrivateFieldGet(this, _TransakService_policy, "f").execute(async () => {
|
|
664
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
665
|
-
method: 'PATCH',
|
|
666
|
-
headers: __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_getHeaders).call(this),
|
|
667
|
-
body: JSON.stringify(body),
|
|
668
|
-
});
|
|
669
|
-
if (!fetchResponse.ok) {
|
|
670
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_throwTransakApiError).call(this, fetchResponse, url);
|
|
671
|
-
}
|
|
672
|
-
return fetchResponse.json();
|
|
673
|
-
});
|
|
674
|
-
return response.data;
|
|
675
|
-
}, _TransakService_transakDelete = async function _TransakService_transakDelete(path, params) {
|
|
676
|
-
const apiKey = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_ensureApiKey).call(this);
|
|
677
|
-
const baseUrl = getTransakApiBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
678
|
-
const url = new URL(path, baseUrl);
|
|
679
|
-
url.searchParams.set('apiKey', apiKey);
|
|
680
|
-
if (params) {
|
|
681
|
-
for (const [key, value] of Object.entries(params)) {
|
|
682
|
-
if (value !== null && value !== undefined) {
|
|
683
|
-
url.searchParams.set(key, value);
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
await __classPrivateFieldGet(this, _TransakService_policy, "f").execute(async () => {
|
|
688
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
689
|
-
method: 'DELETE',
|
|
690
|
-
headers: __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_getHeaders).call(this),
|
|
691
|
-
});
|
|
692
|
-
if (!fetchResponse.ok) {
|
|
693
|
-
await __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_throwTransakApiError).call(this, fetchResponse, url);
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
|
-
}, _TransakService_getRampsApiBaseUrl = function _TransakService_getRampsApiBaseUrl() {
|
|
697
|
-
return __classPrivateFieldGet(this, _TransakService_rampsApiBaseUrlOverride, "f") ?? getRampsBaseUrl(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
698
|
-
}, _TransakService_addRampsCommonParams = function _TransakService_addRampsCommonParams(url) {
|
|
699
|
-
url.searchParams.set('action', 'deposit');
|
|
700
|
-
url.searchParams.set('sdk', RAMPS_SDK_VERSION);
|
|
701
|
-
url.searchParams.set('controller', packageJson.version);
|
|
702
|
-
url.searchParams.set('context', __classPrivateFieldGet(this, _TransakService_context, "f"));
|
|
703
|
-
// In the query string (not headers) so CDN-cached responses vary per
|
|
704
|
-
// client product / version.
|
|
705
|
-
addRampsClientIdentityParams(url, __classPrivateFieldGet(this, _TransakService_clientIdentity, "f"));
|
|
706
|
-
}, _TransakService_ordersApiGet = async function _TransakService_ordersApiGet(path, params) {
|
|
707
|
-
const baseUrl = __classPrivateFieldGet(this, _TransakService_instances, "m", _TransakService_getRampsApiBaseUrl).call(this);
|
|
708
|
-
const providerPath = getRampsProviderPath(__classPrivateFieldGet(this, _TransakService_environment, "f"));
|
|
709
|
-
const url = new URL(`${providerPath}${path}`, baseUrl);
|
|
710
|
-
url.searchParams.set('action', 'deposit');
|
|
711
|
-
url.searchParams.set('context', __classPrivateFieldGet(this, _TransakService_context, "f"));
|
|
712
|
-
// In the query string (not headers) so CDN-cached responses vary per
|
|
713
|
-
// client product / version.
|
|
714
|
-
addRampsClientIdentityParams(url, __classPrivateFieldGet(this, _TransakService_clientIdentity, "f"));
|
|
715
|
-
if (params) {
|
|
716
|
-
for (const [key, value] of Object.entries(params)) {
|
|
717
|
-
if (value !== null && value !== undefined) {
|
|
718
|
-
url.searchParams.set(key, value);
|
|
719
|
-
}
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
const response = await __classPrivateFieldGet(this, _TransakService_policy, "f").execute(async () => {
|
|
723
|
-
const fetchResponse = await __classPrivateFieldGet(this, _TransakService_fetch, "f").call(this, url.toString(), {
|
|
724
|
-
method: 'GET',
|
|
725
|
-
headers: { Accept: 'application/json' },
|
|
726
|
-
});
|
|
727
|
-
if (!fetchResponse.ok) {
|
|
728
|
-
throw new HttpError(fetchResponse.status, `Fetching '${url.toString()}' failed with status '${fetchResponse.status}'`);
|
|
729
|
-
}
|
|
730
|
-
return fetchResponse.json();
|
|
731
|
-
});
|
|
732
|
-
return response;
|
|
733
|
-
};
|
|
734
|
-
//# sourceMappingURL=TransakService.mjs.map
|