@funkit/connect 6.15.4 → 6.15.6
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 +29 -0
- package/dist/consts/bluvo.d.ts +2 -2
- package/dist/consts/meld.d.ts +1 -0
- package/dist/hooks/useCheckoutTransferInit.d.ts +14 -0
- package/dist/hooks/useMinDeposit.d.ts +5 -0
- package/dist/index.css +8 -0
- package/dist/index.js +466 -178
- package/dist/locales/index.d.ts +1 -1
- package/dist/modals/CheckoutModal/Brokerage/BrokerageTwoFA.d.ts +2 -5
- package/dist/modals/CheckoutModal/SourceChange/sourceChange.css.d.ts +2 -0
- package/dist/providers/FunkitBrokerageProvider.d.ts +1 -1
- package/dist/utils/address.d.ts +2 -1
- package/dist/utils/bluvo.d.ts +1 -1
- package/dist/utils/flags/config.d.ts +13 -13
- package/dist/wallets/walletConnectors/index.js +3 -3
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1266,7 +1266,7 @@ function abortCheckoutQuote() {
|
|
|
1266
1266
|
// src/utils/checkout.ts
|
|
1267
1267
|
import {
|
|
1268
1268
|
CheckoutState as CheckoutState2,
|
|
1269
|
-
ETHEREAL_API_KEY as
|
|
1269
|
+
ETHEREAL_API_KEY as ETHEREAL_API_KEY4,
|
|
1270
1270
|
HYENA_API_KEY as HYENA_API_KEY3,
|
|
1271
1271
|
getAssetPriceInfo
|
|
1272
1272
|
} from "@funkit/api-base";
|
|
@@ -1284,6 +1284,7 @@ import {
|
|
|
1284
1284
|
import { getRelayAssetInfo } from "@funkit/fun-relay";
|
|
1285
1285
|
import {
|
|
1286
1286
|
formatCryptoAndStringify,
|
|
1287
|
+
isNumericString,
|
|
1287
1288
|
isTokenAddressEquivalent as isTokenAddressEquivalent3,
|
|
1288
1289
|
isTokenEquivalent as isTokenEquivalent2,
|
|
1289
1290
|
round as round2
|
|
@@ -1513,7 +1514,7 @@ function setFunkitConnectVersion({ version }) {
|
|
|
1513
1514
|
localStorage.setItem(storageKey, version);
|
|
1514
1515
|
}
|
|
1515
1516
|
function getCurrentSdkVersion() {
|
|
1516
|
-
return "6.15.
|
|
1517
|
+
return "6.15.6";
|
|
1517
1518
|
}
|
|
1518
1519
|
function useFingerprint() {
|
|
1519
1520
|
const fingerprint = useCallback2(() => {
|
|
@@ -1885,6 +1886,7 @@ var useFunkitSwitchChains = ({
|
|
|
1885
1886
|
import { exhaustiveCheck, formatAddress as formatAddress2 } from "@funkit/utils";
|
|
1886
1887
|
|
|
1887
1888
|
// src/consts/bluvo.tsx
|
|
1889
|
+
import { ETHEREAL_API_KEY } from "@funkit/api-base";
|
|
1888
1890
|
import React15 from "react";
|
|
1889
1891
|
|
|
1890
1892
|
// src/components/Icons/BinanceIcon.tsx
|
|
@@ -2026,6 +2028,9 @@ var KrakenIcon = ({ size = 24 }) => {
|
|
|
2026
2028
|
};
|
|
2027
2029
|
|
|
2028
2030
|
// src/consts/bluvo.tsx
|
|
2031
|
+
var BLUVO_MIN_DEPOSIT_BY_CUSTOMER = {
|
|
2032
|
+
[ETHEREAL_API_KEY]: 15
|
|
2033
|
+
};
|
|
2029
2034
|
var SUPPORTED_EXCHANGES = [
|
|
2030
2035
|
{ exchange: "coinbase" /* Coinbase */, status: "live" /* Live */ },
|
|
2031
2036
|
{
|
|
@@ -2404,7 +2409,7 @@ import {
|
|
|
2404
2409
|
BANKR_API_KEY,
|
|
2405
2410
|
BASED_API_KEY,
|
|
2406
2411
|
BSX_API_KEY,
|
|
2407
|
-
ETHEREAL_API_KEY,
|
|
2412
|
+
ETHEREAL_API_KEY as ETHEREAL_API_KEY2,
|
|
2408
2413
|
HYENA_API_KEY,
|
|
2409
2414
|
HYPERBEAT_API_KEY,
|
|
2410
2415
|
HYPERDASH_API_KEY,
|
|
@@ -2425,7 +2430,7 @@ function isBankrCustomer(apiKey) {
|
|
|
2425
2430
|
return apiKey === BANKR_API_KEY;
|
|
2426
2431
|
}
|
|
2427
2432
|
function isEtherealCustomer(apiKey) {
|
|
2428
|
-
return apiKey ===
|
|
2433
|
+
return apiKey === ETHEREAL_API_KEY2;
|
|
2429
2434
|
}
|
|
2430
2435
|
function isKatanaCustomer(apiKey) {
|
|
2431
2436
|
return apiKey === KATANA_API_KEY;
|
|
@@ -2454,7 +2459,7 @@ import {
|
|
|
2454
2459
|
BASED_API_KEY as BASED_API_KEY2,
|
|
2455
2460
|
BULLPEN_API_KEY,
|
|
2456
2461
|
CAMBRIA_API_KEY,
|
|
2457
|
-
ETHEREAL_API_KEY as
|
|
2462
|
+
ETHEREAL_API_KEY as ETHEREAL_API_KEY3,
|
|
2458
2463
|
FELIX_API_KEY,
|
|
2459
2464
|
HYENA_API_KEY as HYENA_API_KEY2,
|
|
2460
2465
|
HYPERBEAT_API_KEY as HYPERBEAT_API_KEY2,
|
|
@@ -2546,29 +2551,31 @@ var DEFAULT_BLOCKED_COUNTRIES = [
|
|
|
2546
2551
|
];
|
|
2547
2552
|
var COMMON_SUPPORT_CHAINS_AND_ASSETS = {
|
|
2548
2553
|
// mainnet
|
|
2549
|
-
1: ["USDC", "DAI", "USDT", "ETH", "WETH", "POL", "MATIC", "CBBTC"],
|
|
2554
|
+
1: ["USDC", "DAI", "USDT", "ETH", "WETH", "POL", "MATIC", "CBBTC", "USDe"],
|
|
2550
2555
|
// base
|
|
2551
|
-
8453: ["USDC", "USDT", "DAI", "ETH", "WETH", "CBBTC"],
|
|
2556
|
+
8453: ["USDC", "USDT", "DAI", "ETH", "WETH", "CBBTC", "USDe"],
|
|
2552
2557
|
// arbitrum
|
|
2553
|
-
42161: ["USDC", "USDT", "DAI", "ETH", "WETH", "ARB"],
|
|
2558
|
+
42161: ["USDC", "USDT", "DAI", "ETH", "WETH", "ARB", "USDe"],
|
|
2554
2559
|
// polygon
|
|
2555
2560
|
137: ["USDC", "USDC.e", "USDT", "POL", "MATIC", "DAI", "WETH"],
|
|
2556
2561
|
// optimism
|
|
2557
|
-
10: ["USDC", "USDT", "DAI", "ETH", "WETH"],
|
|
2562
|
+
10: ["USDC", "USDT", "DAI", "ETH", "WETH", "USDe"],
|
|
2558
2563
|
// bsc
|
|
2559
|
-
56: ["USDC", "USDT", "BNB", "WBNB", "ETH", "DAI", "BUSD", "BTCB"]
|
|
2564
|
+
56: ["USDC", "USDT", "BNB", "WBNB", "ETH", "DAI", "BUSD", "BTCB", "USDe"]
|
|
2560
2565
|
};
|
|
2561
2566
|
var QR_CODE_EVM = {
|
|
2562
2567
|
...COMMON_SUPPORT_CHAINS_AND_ASSETS,
|
|
2563
2568
|
// abstract
|
|
2564
2569
|
2741: ["USDC.e", "ETH", "WETH", "USDT"],
|
|
2565
2570
|
// hyperevm. TODO: Consider adding UETH, hbHYPE, stHYPE once their icons are in assets.ts. Also holding back as they are lower mkt cap tokens and would overcrowd our UI.
|
|
2566
|
-
999: ["USDC", "HYPE", "WETH", "USDT", "UBTC", "USDe"]
|
|
2571
|
+
999: ["USDC", "HYPE", "WETH", "USDT", "UBTC", "USDe"],
|
|
2572
|
+
// ethereal
|
|
2573
|
+
5064014: ["USDe"]
|
|
2567
2574
|
};
|
|
2568
2575
|
var QR_CODE_WITH_SOLANA = {
|
|
2569
2576
|
...QR_CODE_EVM,
|
|
2570
2577
|
// solana - only enable once customers are on v5.0.11, anything prior will break
|
|
2571
|
-
1151111081099710: ["SOL", "USDC", "USDT", "TRUMP"]
|
|
2578
|
+
1151111081099710: ["SOL", "USDC", "USDT", "TRUMP", "USDe"]
|
|
2572
2579
|
};
|
|
2573
2580
|
var WITHDRAWAL_CHAINS_AND_ASSETS = {
|
|
2574
2581
|
...COMMON_SUPPORT_CHAINS_AND_ASSETS,
|
|
@@ -2682,14 +2689,15 @@ var flagConfig = {
|
|
|
2682
2689
|
HYPERDASH_API_KEY2,
|
|
2683
2690
|
MONKEY_TILT_API_KEY2,
|
|
2684
2691
|
VENTUALS_API_KEY,
|
|
2685
|
-
|
|
2692
|
+
ETHEREAL_API_KEY3,
|
|
2686
2693
|
AVANTIS_API_KEY2,
|
|
2687
2694
|
MONAD_API_KEY,
|
|
2688
2695
|
BULLPEN_API_KEY,
|
|
2689
2696
|
LIGHTERXYZ_API_KEY2,
|
|
2690
2697
|
PERPL_API_KEY2,
|
|
2691
2698
|
HYPEREDGE_API_KEY,
|
|
2692
|
-
FELIX_API_KEY
|
|
2699
|
+
FELIX_API_KEY,
|
|
2700
|
+
LIGHTERXYZ_API_KEY2
|
|
2693
2701
|
]
|
|
2694
2702
|
}
|
|
2695
2703
|
],
|
|
@@ -2726,7 +2734,26 @@ var flagConfig = {
|
|
|
2726
2734
|
},
|
|
2727
2735
|
[FlagKey.TokenTransferSourceChainsAndAssets]: {
|
|
2728
2736
|
type: "string",
|
|
2729
|
-
default_value: JSON.stringify(QR_CODE_WITH_SOLANA)
|
|
2737
|
+
default_value: JSON.stringify(QR_CODE_WITH_SOLANA),
|
|
2738
|
+
overrides: [
|
|
2739
|
+
{
|
|
2740
|
+
if_any: [
|
|
2741
|
+
{
|
|
2742
|
+
key: "apiKey",
|
|
2743
|
+
type: "isAnyOf",
|
|
2744
|
+
values: [ETHEREAL_API_KEY3]
|
|
2745
|
+
}
|
|
2746
|
+
],
|
|
2747
|
+
// For Ethereal, sort USDe to the front of the list on Arbitrum so it becomes the default
|
|
2748
|
+
value: JSON.stringify({
|
|
2749
|
+
...QR_CODE_WITH_SOLANA,
|
|
2750
|
+
42161: [
|
|
2751
|
+
"USDe",
|
|
2752
|
+
...QR_CODE_WITH_SOLANA[42161].filter((token) => token !== "USDe")
|
|
2753
|
+
]
|
|
2754
|
+
})
|
|
2755
|
+
}
|
|
2756
|
+
]
|
|
2730
2757
|
},
|
|
2731
2758
|
[FlagKey.WithdrawalChainsAndAssets]: {
|
|
2732
2759
|
type: "string",
|
|
@@ -2757,32 +2784,15 @@ var flagConfig = {
|
|
|
2757
2784
|
},
|
|
2758
2785
|
[FlagKey.CheckoutTimeEstimateOverrides]: {
|
|
2759
2786
|
type: "string",
|
|
2760
|
-
default_value:
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
POLYMARKET_API_KEY2,
|
|
2770
|
-
OSTIUM_API_KEY2,
|
|
2771
|
-
BANKR_API_KEY2,
|
|
2772
|
-
KATANA_API_KEY2
|
|
2773
|
-
]
|
|
2774
|
-
}
|
|
2775
|
-
],
|
|
2776
|
-
value: JSON.stringify({
|
|
2777
|
-
["balance" /* ACCOUNT_BALANCE */]: 1 * 60,
|
|
2778
|
-
// 1 minute
|
|
2779
|
-
["brokerage" /* BROKERAGE */]: 2 * 60,
|
|
2780
|
-
// 2 minutes
|
|
2781
|
-
["card" /* CARD */]: 5 * 60
|
|
2782
|
-
// 5 minutes
|
|
2783
|
-
})
|
|
2784
|
-
}
|
|
2785
|
-
]
|
|
2787
|
+
default_value: JSON.stringify({
|
|
2788
|
+
["balance" /* ACCOUNT_BALANCE */]: 1 * 60,
|
|
2789
|
+
// 1 minute
|
|
2790
|
+
["brokerage" /* BROKERAGE */]: 2 * 60,
|
|
2791
|
+
// 2 minutes
|
|
2792
|
+
["card" /* CARD */]: 5 * 60,
|
|
2793
|
+
// 5 minutes
|
|
2794
|
+
["token_transfer" /* TOKEN_TRANSFER */]: 1 * 60
|
|
2795
|
+
})
|
|
2786
2796
|
},
|
|
2787
2797
|
[FlagKey.TokenTransferDefaultChainId]: {
|
|
2788
2798
|
type: "string",
|
|
@@ -2793,7 +2803,7 @@ var flagConfig = {
|
|
|
2793
2803
|
{
|
|
2794
2804
|
key: "apiKey",
|
|
2795
2805
|
type: "isAnyOf",
|
|
2796
|
-
values: [OSTIUM_API_KEY2]
|
|
2806
|
+
values: [OSTIUM_API_KEY2, ETHEREAL_API_KEY3]
|
|
2797
2807
|
}
|
|
2798
2808
|
],
|
|
2799
2809
|
value: arbitrum2.id.toString()
|
|
@@ -2998,7 +3008,7 @@ var flagConfig = {
|
|
|
2998
3008
|
{
|
|
2999
3009
|
if_all: [
|
|
3000
3010
|
{
|
|
3001
|
-
pct:
|
|
3011
|
+
pct: 50,
|
|
3002
3012
|
type: "pctRollout",
|
|
3003
3013
|
key: "userId"
|
|
3004
3014
|
},
|
|
@@ -3009,7 +3019,8 @@ var flagConfig = {
|
|
|
3009
3019
|
POLYMARKET_API_KEY2,
|
|
3010
3020
|
HYPERDASH_API_KEY2,
|
|
3011
3021
|
HYENA_API_KEY2,
|
|
3012
|
-
|
|
3022
|
+
ETHEREAL_API_KEY3,
|
|
3023
|
+
MONAD_API_KEY
|
|
3013
3024
|
]
|
|
3014
3025
|
}
|
|
3015
3026
|
],
|
|
@@ -3087,7 +3098,7 @@ var flagConfig = {
|
|
|
3087
3098
|
VENTUALS_API_KEY,
|
|
3088
3099
|
AVANTIS_API_KEY2,
|
|
3089
3100
|
HYENA_API_KEY2,
|
|
3090
|
-
|
|
3101
|
+
ETHEREAL_API_KEY3,
|
|
3091
3102
|
MONAD_API_KEY
|
|
3092
3103
|
]
|
|
3093
3104
|
}
|
|
@@ -3184,7 +3195,7 @@ var flagConfig = {
|
|
|
3184
3195
|
{
|
|
3185
3196
|
key: "apiKey",
|
|
3186
3197
|
type: "isAnyOf",
|
|
3187
|
-
values: [
|
|
3198
|
+
values: [ETHEREAL_API_KEY3]
|
|
3188
3199
|
}
|
|
3189
3200
|
],
|
|
3190
3201
|
value: false
|
|
@@ -3857,6 +3868,60 @@ async function checkoutTransferFetch(params) {
|
|
|
3857
3868
|
clientMetadata: COMMON_CLIENT_METADATA
|
|
3858
3869
|
});
|
|
3859
3870
|
}
|
|
3871
|
+
function getCheckoutTokenTransferParams({
|
|
3872
|
+
checkoutConfig,
|
|
3873
|
+
userId,
|
|
3874
|
+
recipientAddr,
|
|
3875
|
+
apiKey
|
|
3876
|
+
}) {
|
|
3877
|
+
if (!checkoutConfig) {
|
|
3878
|
+
return;
|
|
3879
|
+
}
|
|
3880
|
+
if (!checkoutConfig.targetChain) {
|
|
3881
|
+
return;
|
|
3882
|
+
}
|
|
3883
|
+
const commonParams = {
|
|
3884
|
+
userId,
|
|
3885
|
+
apiKey,
|
|
3886
|
+
recipientAddr,
|
|
3887
|
+
actionType: checkoutConfig.qrcodeActionType
|
|
3888
|
+
};
|
|
3889
|
+
const dynamicTargetAssetCandidates = checkoutConfig.dynamicTargetAssetCandidates;
|
|
3890
|
+
if (dynamicTargetAssetCandidates?.[0]) {
|
|
3891
|
+
const defaultCandidate = dynamicTargetAssetCandidates.find(
|
|
3892
|
+
(candidate) => candidate.isDefault
|
|
3893
|
+
);
|
|
3894
|
+
if (!defaultCandidate) {
|
|
3895
|
+
logger.error(
|
|
3896
|
+
"No default candidate found for dynamic target asset candidates",
|
|
3897
|
+
void 0,
|
|
3898
|
+
{
|
|
3899
|
+
checkoutConfig
|
|
3900
|
+
}
|
|
3901
|
+
);
|
|
3902
|
+
return;
|
|
3903
|
+
}
|
|
3904
|
+
return {
|
|
3905
|
+
...commonParams,
|
|
3906
|
+
toChainId: defaultCandidate.tokenChainId,
|
|
3907
|
+
toTokenAddress: defaultCandidate.tokenAddress
|
|
3908
|
+
};
|
|
3909
|
+
}
|
|
3910
|
+
if (!checkoutConfig.targetAsset) {
|
|
3911
|
+
return;
|
|
3912
|
+
}
|
|
3913
|
+
if (checkoutConfig.targetAsset === "0x") {
|
|
3914
|
+
return;
|
|
3915
|
+
}
|
|
3916
|
+
if (!checkoutConfig.targetChain) {
|
|
3917
|
+
return;
|
|
3918
|
+
}
|
|
3919
|
+
return {
|
|
3920
|
+
...commonParams,
|
|
3921
|
+
toChainId: checkoutConfig.targetChain,
|
|
3922
|
+
toTokenAddress: checkoutConfig.targetAsset
|
|
3923
|
+
};
|
|
3924
|
+
}
|
|
3860
3925
|
var useCheckoutTransferInit = () => {
|
|
3861
3926
|
const { checkoutItem } = useCheckoutContext();
|
|
3862
3927
|
const checkoutConfig = checkoutItem?.initSettings.config;
|
|
@@ -3864,21 +3929,20 @@ var useCheckoutTransferInit = () => {
|
|
|
3864
3929
|
const { apiKey } = useFunkitConfig();
|
|
3865
3930
|
const isQrCodeEnabled = useFlag(FlagKey4.EnableTokenTransfer, false);
|
|
3866
3931
|
const recipientAddr = checkoutConfig?.customRecipient || walletAddress || "0x";
|
|
3867
|
-
const
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
recipientAddr,
|
|
3932
|
+
const userId = userInfo.id || "";
|
|
3933
|
+
const queryKey = getCheckoutTokenTransferParams({
|
|
3934
|
+
checkoutConfig,
|
|
3935
|
+
userId,
|
|
3872
3936
|
apiKey,
|
|
3873
|
-
|
|
3874
|
-
};
|
|
3937
|
+
recipientAddr
|
|
3938
|
+
});
|
|
3875
3939
|
const postActionOverride = isHyenaCustomer(apiKey);
|
|
3876
3940
|
const isQRCodeEnabledWithPostAction = !!checkoutConfig && // either no post action required
|
|
3877
3941
|
(!isCheckoutPostActionRequired(checkoutConfig) || // or action type is set
|
|
3878
3942
|
!!checkoutConfig?.qrcodeActionType || postActionOverride);
|
|
3879
3943
|
const { data, isFetching } = useQuery3({
|
|
3880
3944
|
queryKey: ["initializeCheckoutTokenTransferAddress", queryKey],
|
|
3881
|
-
queryFn: () =>
|
|
3945
|
+
queryFn: ({ queryKey: [_, queryKey2] }) => queryKey2 ? checkoutTransferFetch(queryKey2) : void 0,
|
|
3882
3946
|
refetchOnWindowFocus: false,
|
|
3883
3947
|
refetchOnMount: false,
|
|
3884
3948
|
enabled: !!queryKey && // Is flag enabled
|
|
@@ -4250,16 +4314,27 @@ function FunkitCheckoutProvider({ children }) {
|
|
|
4250
4314
|
});
|
|
4251
4315
|
depositAddressOrHash = txHash;
|
|
4252
4316
|
} else {
|
|
4253
|
-
const
|
|
4317
|
+
const queryParams = getCheckoutTokenTransferParams({
|
|
4318
|
+
checkoutConfig: checkoutItem.initSettings.config,
|
|
4254
4319
|
userId: userInfo.id || "",
|
|
4255
|
-
toChainId: checkoutItem.initSettings.config.targetChain,
|
|
4256
|
-
toTokenAddress: checkoutItem.initSettings.config.targetAsset,
|
|
4257
4320
|
recipientAddr: getCheckoutRecipient({
|
|
4258
4321
|
config: checkoutItem.initSettings.config,
|
|
4259
4322
|
walletAddress
|
|
4260
4323
|
}),
|
|
4261
4324
|
apiKey: funkitConfig.apiKey
|
|
4262
4325
|
});
|
|
4326
|
+
if (!queryParams) {
|
|
4327
|
+
const missingQueryParamsError = new Error(
|
|
4328
|
+
"Unable to get query params"
|
|
4329
|
+
);
|
|
4330
|
+
logger.error(
|
|
4331
|
+
"directExecutionCheckout:missingQueryParams",
|
|
4332
|
+
missingQueryParamsError,
|
|
4333
|
+
{ ...directExecutionLogContext, directExecutionType }
|
|
4334
|
+
);
|
|
4335
|
+
throw missingQueryParamsError;
|
|
4336
|
+
}
|
|
4337
|
+
const newTransferInit = await checkoutTransferFetch(queryParams);
|
|
4263
4338
|
if (!newTransferInit?.depositAddr) {
|
|
4264
4339
|
const missingDepositAddressError = new Error(
|
|
4265
4340
|
"Unable to get transfer deposit address"
|
|
@@ -4640,12 +4715,17 @@ import { solanaChain as solanaChain2 } from "@funkit/chains";
|
|
|
4640
4715
|
import { formatAddressLastFour } from "@funkit/utils";
|
|
4641
4716
|
import { isAddress as isSolanaAddress } from "@solana/addresses";
|
|
4642
4717
|
import { isAddress } from "viem";
|
|
4643
|
-
var getWalletLabel = (textCustomizations, walletAddress) => {
|
|
4718
|
+
var getWalletLabel = (t, textCustomizations, walletAddress) => {
|
|
4644
4719
|
if (walletAddress) {
|
|
4645
4720
|
const formattedAddress = formatAddressLastFour(walletAddress);
|
|
4646
|
-
return
|
|
4721
|
+
return t("checkout.walletLabelTemplate", {
|
|
4722
|
+
walletLabel: textCustomizations.accountBalance,
|
|
4723
|
+
formattedAddress
|
|
4724
|
+
});
|
|
4647
4725
|
}
|
|
4648
|
-
return
|
|
4726
|
+
return t("checkout.connectWalletLabelTemplate", {
|
|
4727
|
+
walletLabel: textCustomizations.accountBalance
|
|
4728
|
+
});
|
|
4649
4729
|
};
|
|
4650
4730
|
function isAddressSupported(address) {
|
|
4651
4731
|
return isAddress(address) || isSolanaAddress(address);
|
|
@@ -4735,7 +4815,7 @@ async function validateCheckoutConfig(config) {
|
|
|
4735
4815
|
if (config.customRecipient && !isAddressCompatibleWithChain(
|
|
4736
4816
|
config.customRecipient,
|
|
4737
4817
|
Number(config.targetChain)
|
|
4738
|
-
)) {
|
|
4818
|
+
) && !isNumericString(config.customRecipient)) {
|
|
4739
4819
|
return {
|
|
4740
4820
|
isValid: false,
|
|
4741
4821
|
message: "Invalid customRecipient configuration: Has to be a valid address."
|
|
@@ -4968,7 +5048,7 @@ function computeDisplayDestinationToken(checkoutConfig, displayAssetAmount) {
|
|
|
4968
5048
|
stakingTokenIcon
|
|
4969
5049
|
};
|
|
4970
5050
|
}
|
|
4971
|
-
var LZOFT_CUSTOMERS = [
|
|
5051
|
+
var LZOFT_CUSTOMERS = [ETHEREAL_API_KEY4, HYENA_API_KEY3];
|
|
4972
5052
|
function isLayerZeroOftCheckout(apiKey, checkoutItem) {
|
|
4973
5053
|
if (!LZOFT_CUSTOMERS.includes(apiKey)) {
|
|
4974
5054
|
return false;
|
|
@@ -6190,10 +6270,12 @@ function TransactionStatus({
|
|
|
6190
6270
|
textConfigSteps
|
|
6191
6271
|
}) {
|
|
6192
6272
|
const { t } = useFunkitTranslation();
|
|
6193
|
-
const
|
|
6194
|
-
|
|
6195
|
-
|
|
6196
|
-
const finalTextConfigSteps =
|
|
6273
|
+
const finalTextConfigStatus = useMemo10(() => {
|
|
6274
|
+
return textConfigStatus || getDefaultTextConfigStatus(t);
|
|
6275
|
+
}, [t, textConfigStatus]);
|
|
6276
|
+
const finalTextConfigSteps = useMemo10(() => {
|
|
6277
|
+
return textConfigSteps || getDefaultTextConfigSteps(t);
|
|
6278
|
+
}, [t, textConfigSteps]);
|
|
6197
6279
|
const [initialStatus] = useState8(status);
|
|
6198
6280
|
const [initialStep] = useState8(step);
|
|
6199
6281
|
const [scope, animate] = useAnimate();
|
|
@@ -12056,7 +12138,7 @@ var useMaxSlippage = ({
|
|
|
12056
12138
|
// src/utils/bluvo.ts
|
|
12057
12139
|
var ASSETS_LOW_VALUE_THRESHOLD2 = 0.1;
|
|
12058
12140
|
var isBrokerageAsset = (asset) => "minAmount" in asset && "maxAmount" in asset && asset.usdAmount !== null;
|
|
12059
|
-
function getBrokerageMinMax(asset, minTransferLimits) {
|
|
12141
|
+
function getBrokerageMinMax(asset, minTransferLimits, minDeposit = 1) {
|
|
12060
12142
|
const chainId = Number(asset.pickedChainId);
|
|
12061
12143
|
const unitPrice = asset.usdAmount / asset.amount;
|
|
12062
12144
|
const brokerageMin = Number.parseFloat(asset.minAmount);
|
|
@@ -12068,7 +12150,7 @@ function getBrokerageMinMax(asset, minTransferLimits) {
|
|
|
12068
12150
|
minTransferLimits
|
|
12069
12151
|
);
|
|
12070
12152
|
return {
|
|
12071
|
-
minUsd: Math.ceil(Math.max(tokenTransferMin, brokerageMinUsd)),
|
|
12153
|
+
minUsd: Math.ceil(Math.max(tokenTransferMin, brokerageMinUsd, minDeposit)),
|
|
12072
12154
|
maxUsd: brokerageMaxUsd
|
|
12073
12155
|
};
|
|
12074
12156
|
}
|
|
@@ -12280,6 +12362,7 @@ var FunkitBrokerageContext = createContext12(void 0);
|
|
|
12280
12362
|
var FunkitBrokerageProvider = ({
|
|
12281
12363
|
children
|
|
12282
12364
|
}) => {
|
|
12365
|
+
const { apiKey } = useFunkitConfig();
|
|
12283
12366
|
const isSandboxMode = useIsFunkitSandboxMode();
|
|
12284
12367
|
const minTransferRef = useRef13(useMinTransferLimits());
|
|
12285
12368
|
const ORG_ID = isSandboxMode ? STAGE_ORG_ID : PROD_ORG_ID;
|
|
@@ -12322,8 +12405,12 @@ var FunkitBrokerageProvider = ({
|
|
|
12322
12405
|
if (!selectedBrokerageAsset || !isBrokerageAsset(selectedBrokerageAsset)) {
|
|
12323
12406
|
return null;
|
|
12324
12407
|
}
|
|
12325
|
-
return getBrokerageMinMax(
|
|
12326
|
-
|
|
12408
|
+
return getBrokerageMinMax(
|
|
12409
|
+
selectedBrokerageAsset,
|
|
12410
|
+
minTransferRef.current,
|
|
12411
|
+
BLUVO_MIN_DEPOSIT_BY_CUSTOMER[apiKey]
|
|
12412
|
+
);
|
|
12413
|
+
}, [selectedBrokerageAsset, apiKey]);
|
|
12327
12414
|
function getAuthConnectedExchanges() {
|
|
12328
12415
|
if (typeof localStorage !== "undefined") {
|
|
12329
12416
|
const connections = localStorage.getItem(LOCAL_STORAGE_KEY) || void 0;
|
|
@@ -14230,11 +14317,13 @@ var useWalletLabel = () => {
|
|
|
14230
14317
|
const { walletAddress } = useGeneralWallet();
|
|
14231
14318
|
const { textCustomizations, apiKey } = useFunkitConfig();
|
|
14232
14319
|
const { checkoutItem } = useCheckoutContext();
|
|
14320
|
+
const { t } = useFunkitTranslation();
|
|
14233
14321
|
if (isOstiumCustomer(apiKey) && walletAddress && checkoutItem) {
|
|
14234
14322
|
const { config } = checkoutItem.initSettings;
|
|
14235
14323
|
return `Swap to ${config.targetAssetTicker}`;
|
|
14236
14324
|
}
|
|
14237
|
-
|
|
14325
|
+
const label = getWalletLabel(t, textCustomizations, walletAddress);
|
|
14326
|
+
return t("sourceChange.walletDisplayLabel", { walletLabel: label });
|
|
14238
14327
|
};
|
|
14239
14328
|
|
|
14240
14329
|
// src/modals/CheckoutModal/useWalletAssetHoldings.ts
|
|
@@ -17959,6 +18048,7 @@ import {
|
|
|
17959
18048
|
import React114, { useCallback as useCallback22, useEffect as useEffect32, useMemo as useMemo24, useState as useState33 } from "react";
|
|
17960
18049
|
|
|
17961
18050
|
// src/components/FunCheckoutHistory/FunDirectExecutionHistoryDetail.tsx
|
|
18051
|
+
import { hyperEvmChain as hyperEvmChain2 } from "@funkit/chains";
|
|
17962
18052
|
import {
|
|
17963
18053
|
formatAddress as formatAddress4,
|
|
17964
18054
|
formatTimestamp as formatTimestamp2,
|
|
@@ -18029,17 +18119,21 @@ var FunRedirectButton = ({
|
|
|
18029
18119
|
}
|
|
18030
18120
|
);
|
|
18031
18121
|
};
|
|
18122
|
+
var normalizePath = (path) => {
|
|
18123
|
+
return path.startsWith("/") ? path.slice(1) : path;
|
|
18124
|
+
};
|
|
18032
18125
|
var AddressRedirectButton = ({
|
|
18033
18126
|
chainId,
|
|
18034
18127
|
address,
|
|
18035
18128
|
customRedirectUrl
|
|
18036
18129
|
}) => {
|
|
18037
18130
|
const explorerInfo = FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO12[chainId]?.explorerInfo;
|
|
18131
|
+
const addressPath = normalizePath(explorerInfo?.path?.address || "address");
|
|
18038
18132
|
return /* @__PURE__ */ React109.createElement(
|
|
18039
18133
|
FunRedirectButton,
|
|
18040
18134
|
{
|
|
18041
18135
|
color: "tertiaryText",
|
|
18042
|
-
to: customRedirectUrl ?? `${explorerInfo?.url}
|
|
18136
|
+
to: customRedirectUrl ?? `${explorerInfo?.url}/${addressPath}/${address}`
|
|
18043
18137
|
}
|
|
18044
18138
|
);
|
|
18045
18139
|
};
|
|
@@ -18049,11 +18143,12 @@ var TransactionRedirectButton = ({
|
|
|
18049
18143
|
customRedirectUrl
|
|
18050
18144
|
}) => {
|
|
18051
18145
|
const explorerInfo = FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO12[chainId]?.explorerInfo;
|
|
18146
|
+
const txPath = normalizePath(explorerInfo?.path?.tx || "tx");
|
|
18052
18147
|
return /* @__PURE__ */ React109.createElement(
|
|
18053
18148
|
FunRedirectButton,
|
|
18054
18149
|
{
|
|
18055
18150
|
color: "tertiaryText",
|
|
18056
|
-
to: customRedirectUrl ?? `${explorerInfo?.url}
|
|
18151
|
+
to: customRedirectUrl ?? `${explorerInfo?.url}/${txPath}/${txHash}`
|
|
18057
18152
|
}
|
|
18058
18153
|
);
|
|
18059
18154
|
};
|
|
@@ -18540,7 +18635,7 @@ function DirectExecutionOrderDetailSection({
|
|
|
18540
18635
|
} = useMultiStepDirectExecutionStatus(directExecution, disabled);
|
|
18541
18636
|
const { txHash: fromTxHash, fromChainId } = directExecution;
|
|
18542
18637
|
const createdTime = getDirectExecutionCreatedTimeMs(directExecution);
|
|
18543
|
-
const
|
|
18638
|
+
const toChainId = getLzOftDestinationChain(latestDirectExecution) ?? latestDirectExecution.toChainId;
|
|
18544
18639
|
const listenerInfoTxHashes = latestDirectExecution.listenerInfo?.txHashes || [];
|
|
18545
18640
|
const toTxHash = (
|
|
18546
18641
|
// BE appends additional hashes outside of relay flow via listenerInfo.txHashes
|
|
@@ -18559,6 +18654,14 @@ function DirectExecutionOrderDetailSection({
|
|
|
18559
18654
|
status: isFailed ? t("directExecution.statusFailed") : isRefunded ? t("directExecution.statusRefunded") : t("directExecution.statusFilled")
|
|
18560
18655
|
})), /* @__PURE__ */ React113.createElement(Text, { color: "tertiaryText", size: "12" }, getTimestamp2(updatedTime))));
|
|
18561
18656
|
}
|
|
18657
|
+
var lzOftChainEnumToChainId = {
|
|
18658
|
+
hyperliquid: hyperEvmChain2.id
|
|
18659
|
+
};
|
|
18660
|
+
function getLzOftDestinationChain(de) {
|
|
18661
|
+
const lzData = de.listenerInfo?.layerzeroExecutionStatusResponse?.data?.[0];
|
|
18662
|
+
const lzChainEnum = lzData?.pathway?.receiver.chain;
|
|
18663
|
+
return lzChainEnum && lzOftChainEnumToChainId[lzChainEnum]?.toString();
|
|
18664
|
+
}
|
|
18562
18665
|
|
|
18563
18666
|
// src/hooks/queries/useRecentDirectExecutions.ts
|
|
18564
18667
|
import {
|
|
@@ -19080,11 +19183,11 @@ function BrokerageTwoFA({
|
|
|
19080
19183
|
});
|
|
19081
19184
|
return quote;
|
|
19082
19185
|
};
|
|
19083
|
-
const handleFatalErrorState = (
|
|
19084
|
-
logger.error(`${logPrefix2}handleFatalErrorState`,
|
|
19085
|
-
|
|
19186
|
+
const handleFatalErrorState = (error) => {
|
|
19187
|
+
logger.error(`${logPrefix2}handleFatalErrorState`, error, {
|
|
19188
|
+
bluvoContext: bluvoClient?.context
|
|
19086
19189
|
});
|
|
19087
|
-
setExecutionError(
|
|
19190
|
+
setExecutionError(t("brokerage.somethingWentWrong"));
|
|
19088
19191
|
setScreen(1 /* TWO_FACTOR */);
|
|
19089
19192
|
setIsQuoteExpired(true);
|
|
19090
19193
|
};
|
|
@@ -19096,19 +19199,13 @@ function BrokerageTwoFA({
|
|
|
19096
19199
|
const handleEnterTwoFactor = async (finalOtpInput, _quoteId, attempt = 1) => {
|
|
19097
19200
|
const walletId = bluvoClient.context?.walletId;
|
|
19098
19201
|
if (!walletId) {
|
|
19099
|
-
|
|
19100
|
-
walletId
|
|
19101
|
-
});
|
|
19102
|
-
handleFatalErrorState();
|
|
19202
|
+
handleFatalErrorState(new Error("No wallet ID found"));
|
|
19103
19203
|
return;
|
|
19104
19204
|
}
|
|
19105
19205
|
const idempotencyKey = uuidv4();
|
|
19106
19206
|
const quoteId = _quoteId || bluvoClient.context?.quote?.id;
|
|
19107
19207
|
if (!quoteId) {
|
|
19108
|
-
|
|
19109
|
-
quoteId
|
|
19110
|
-
});
|
|
19111
|
-
handleFatalErrorState();
|
|
19208
|
+
handleFatalErrorState(new Error("No quote ID found"));
|
|
19112
19209
|
return;
|
|
19113
19210
|
}
|
|
19114
19211
|
try {
|
|
@@ -19165,7 +19262,7 @@ function BrokerageTwoFA({
|
|
|
19165
19262
|
code: error.errorCode
|
|
19166
19263
|
}
|
|
19167
19264
|
);
|
|
19168
|
-
handleFatalErrorState(
|
|
19265
|
+
handleFatalErrorState(error);
|
|
19169
19266
|
return;
|
|
19170
19267
|
}
|
|
19171
19268
|
const newResponse = await bluvoExecuteWithdrawal2({
|
|
@@ -19181,7 +19278,7 @@ function BrokerageTwoFA({
|
|
|
19181
19278
|
attempt + 1
|
|
19182
19279
|
);
|
|
19183
19280
|
}
|
|
19184
|
-
handleFatalErrorState(
|
|
19281
|
+
handleFatalErrorState(error);
|
|
19185
19282
|
return;
|
|
19186
19283
|
}
|
|
19187
19284
|
case TypeEnum2.WITHDRAWAL_KYC_REQUIRED: {
|
|
@@ -19189,11 +19286,13 @@ function BrokerageTwoFA({
|
|
|
19189
19286
|
return;
|
|
19190
19287
|
}
|
|
19191
19288
|
default:
|
|
19192
|
-
handleFatalErrorState(error
|
|
19289
|
+
handleFatalErrorState(error);
|
|
19193
19290
|
return;
|
|
19194
19291
|
}
|
|
19195
19292
|
}
|
|
19196
|
-
handleFatalErrorState(
|
|
19293
|
+
handleFatalErrorState(
|
|
19294
|
+
error instanceof Error ? error : new Error("Unable to execute withdrawal due to unknown error")
|
|
19295
|
+
);
|
|
19197
19296
|
}
|
|
19198
19297
|
};
|
|
19199
19298
|
const handleCompletion = useEffectEvent(async (finalOtpInput) => {
|
|
@@ -22430,13 +22529,86 @@ var useMeldDefaultCurrency = (paymentMethod) => {
|
|
|
22430
22529
|
// src/hooks/queries/useMeldLimits.ts
|
|
22431
22530
|
import { getMeldFiatLimits } from "@funkit/api-base";
|
|
22432
22531
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify6 } from "@funkit/utils";
|
|
22532
|
+
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
22533
|
+
|
|
22534
|
+
// src/consts/meld.ts
|
|
22535
|
+
var MELD_MIN_LIMIT_BUFFER = 5;
|
|
22536
|
+
var getMeldProviderIconUrl = (provider) => `https://sdk-cdn.fun.xyz/images/meld/${provider.toLowerCase()}.svg`;
|
|
22537
|
+
var getCurrencySymbol = (currencyCode) => {
|
|
22538
|
+
const formatter = new Intl.NumberFormat("en-US", {
|
|
22539
|
+
style: "currency",
|
|
22540
|
+
currency: currencyCode,
|
|
22541
|
+
currencyDisplay: "narrowSymbol"
|
|
22542
|
+
});
|
|
22543
|
+
return formatter.formatToParts(1).find(({ type }) => type === "currency")?.value ?? currencyCode;
|
|
22544
|
+
};
|
|
22545
|
+
|
|
22546
|
+
// src/utils/getExchangeRate.ts
|
|
22547
|
+
var DEFAULT_BIPS_MARKUP = 500;
|
|
22548
|
+
var getExchangeRate = (currency, currencyExchangeRates, bipsMarkup = DEFAULT_BIPS_MARKUP) => {
|
|
22549
|
+
if (!currency || !currencyExchangeRates) {
|
|
22550
|
+
return void 0;
|
|
22551
|
+
}
|
|
22552
|
+
if (currency === "USD") {
|
|
22553
|
+
return 1;
|
|
22554
|
+
}
|
|
22555
|
+
const exchangeRate = currency in currencyExchangeRates ? currencyExchangeRates[currency] : void 0;
|
|
22556
|
+
if (!exchangeRate) {
|
|
22557
|
+
return void 0;
|
|
22558
|
+
}
|
|
22559
|
+
return exchangeRate * (1 + bipsMarkup / 1e4);
|
|
22560
|
+
};
|
|
22561
|
+
|
|
22562
|
+
// src/hooks/useFiatExchangeRates.ts
|
|
22563
|
+
import { getFiatExchangeRates } from "@funkit/api-base";
|
|
22433
22564
|
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
22565
|
+
function useFiatExchangeRates(enabled = true) {
|
|
22566
|
+
const { data, isLoading, error } = useQuery17({
|
|
22567
|
+
queryKey: ["fiatExchangeRates"],
|
|
22568
|
+
queryFn: () => getFiatExchangeRates(),
|
|
22569
|
+
refetchOnMount: false,
|
|
22570
|
+
refetchOnReconnect: false,
|
|
22571
|
+
refetchOnWindowFocus: false,
|
|
22572
|
+
gcTime: 1e3 * 60 * 60,
|
|
22573
|
+
// 1 hour
|
|
22574
|
+
enabled
|
|
22575
|
+
});
|
|
22576
|
+
return { data, isLoading, error };
|
|
22577
|
+
}
|
|
22578
|
+
|
|
22579
|
+
// src/hooks/useMinDeposit.ts
|
|
22580
|
+
function useMinCheckoutDeposit({
|
|
22581
|
+
currency = "USD",
|
|
22582
|
+
paymentMethod
|
|
22583
|
+
}) {
|
|
22584
|
+
const { checkoutItem } = useCheckoutContext();
|
|
22585
|
+
const { data: exchangeRates } = useFiatExchangeRates(
|
|
22586
|
+
!!checkoutItem && currency !== "USD"
|
|
22587
|
+
);
|
|
22588
|
+
if (!checkoutItem) {
|
|
22589
|
+
logger.warn("useMinCheckoutDeposit: No checkout item found");
|
|
22590
|
+
return 0;
|
|
22591
|
+
}
|
|
22592
|
+
const { getMinDepositUSD, ...config } = checkoutItem.initSettings.config;
|
|
22593
|
+
const exchangeRate = getExchangeRate(currency, exchangeRates, 0) || 1;
|
|
22594
|
+
const tokenChainId = config.targetChain;
|
|
22595
|
+
const tokenAddress = config.targetAsset;
|
|
22596
|
+
const minDepositUsd = getMinDepositUSD?.({ tokenChainId, tokenAddress }) || 0;
|
|
22597
|
+
const minDeposit = minDepositUsd * exchangeRate;
|
|
22598
|
+
if (paymentMethod === "card" /* CARD */ && minDeposit) {
|
|
22599
|
+
const meldBuffer = MELD_MIN_LIMIT_BUFFER * exchangeRate;
|
|
22600
|
+
return minDeposit + meldBuffer;
|
|
22601
|
+
}
|
|
22602
|
+
return minDeposit;
|
|
22603
|
+
}
|
|
22604
|
+
|
|
22605
|
+
// src/hooks/queries/useMeldLimits.ts
|
|
22434
22606
|
var useMeldLimits = (isEnabled = true) => {
|
|
22435
22607
|
const { apiKey } = useFunkitConfig();
|
|
22436
22608
|
const { userIpInfo } = useFunkitUserIp();
|
|
22437
22609
|
const cryptoCurrency = useMeldCryptoCurrencyCode();
|
|
22438
22610
|
const countryCode = userIpInfo?.alpha2;
|
|
22439
|
-
const query =
|
|
22611
|
+
const query = useQuery18({
|
|
22440
22612
|
queryKey: ["meld", "limits", countryCode, cryptoCurrency],
|
|
22441
22613
|
queryFn: async () => {
|
|
22442
22614
|
if (!apiKey || !countryCode) {
|
|
@@ -22464,9 +22636,18 @@ var useMeldLimits = (isEnabled = true) => {
|
|
|
22464
22636
|
};
|
|
22465
22637
|
var useMeldLimit = (fiatCurrency) => {
|
|
22466
22638
|
const query = useMeldLimits();
|
|
22639
|
+
const minCheckoutDeposit = useMinCheckoutDeposit({
|
|
22640
|
+
currency: fiatCurrency,
|
|
22641
|
+
paymentMethod: "card" /* CARD */
|
|
22642
|
+
});
|
|
22643
|
+
let limit = query.data?.find((limit2) => limit2.currencyCode === fiatCurrency);
|
|
22644
|
+
if (limit) {
|
|
22645
|
+
const minAmt = Math.ceil(Math.max(minCheckoutDeposit, limit.minimumAmount));
|
|
22646
|
+
limit = { ...limit, minimumAmount: minAmt };
|
|
22647
|
+
}
|
|
22467
22648
|
return {
|
|
22468
22649
|
...query,
|
|
22469
|
-
data:
|
|
22650
|
+
data: limit
|
|
22470
22651
|
};
|
|
22471
22652
|
};
|
|
22472
22653
|
var useMeldLimitError = (amount, fiatCurrency) => {
|
|
@@ -22508,23 +22689,6 @@ var useMeldLimitError = (amount, fiatCurrency) => {
|
|
|
22508
22689
|
return void 0;
|
|
22509
22690
|
};
|
|
22510
22691
|
|
|
22511
|
-
// src/hooks/useFiatExchangeRates.ts
|
|
22512
|
-
import { getFiatExchangeRates } from "@funkit/api-base";
|
|
22513
|
-
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
22514
|
-
function useFiatExchangeRates(enabled = true) {
|
|
22515
|
-
const { data, isLoading, error } = useQuery18({
|
|
22516
|
-
queryKey: ["fiatExchangeRates"],
|
|
22517
|
-
queryFn: () => getFiatExchangeRates(),
|
|
22518
|
-
refetchOnMount: false,
|
|
22519
|
-
refetchOnReconnect: false,
|
|
22520
|
-
refetchOnWindowFocus: false,
|
|
22521
|
-
gcTime: 1e3 * 60 * 60,
|
|
22522
|
-
// 1 hour
|
|
22523
|
-
enabled
|
|
22524
|
-
});
|
|
22525
|
-
return { data, isLoading, error };
|
|
22526
|
-
}
|
|
22527
|
-
|
|
22528
22692
|
// src/modals/CheckoutModal/InputAmount/InputAmountLoaded.tsx
|
|
22529
22693
|
import {
|
|
22530
22694
|
FlagKey as FlagKey20,
|
|
@@ -23478,22 +23642,6 @@ var YouPayYouReceiveBottomBarLayoutWrapper = ({
|
|
|
23478
23642
|
);
|
|
23479
23643
|
};
|
|
23480
23644
|
|
|
23481
|
-
// src/utils/getExchangeRate.ts
|
|
23482
|
-
var DEFAULT_BIPS_MARKUP = 500;
|
|
23483
|
-
var getExchangeRate = (currency, currencyExchangeRates, bipsMarkup = DEFAULT_BIPS_MARKUP) => {
|
|
23484
|
-
if (!currency || !currencyExchangeRates) {
|
|
23485
|
-
return void 0;
|
|
23486
|
-
}
|
|
23487
|
-
if (currency === "USD") {
|
|
23488
|
-
return 1;
|
|
23489
|
-
}
|
|
23490
|
-
const exchangeRate = currency in currencyExchangeRates ? currencyExchangeRates[currency] : void 0;
|
|
23491
|
-
if (!exchangeRate) {
|
|
23492
|
-
return void 0;
|
|
23493
|
-
}
|
|
23494
|
-
return exchangeRate * (1 + bipsMarkup / 1e4);
|
|
23495
|
-
};
|
|
23496
|
-
|
|
23497
23645
|
// src/components/Icons/SwitchIcon.tsx
|
|
23498
23646
|
import React156 from "react";
|
|
23499
23647
|
var SwitchIcon = () => {
|
|
@@ -24315,19 +24463,6 @@ import {
|
|
|
24315
24463
|
formatCurrencyAndStringify as formatCurrencyAndStringify8
|
|
24316
24464
|
} from "@funkit/utils";
|
|
24317
24465
|
import React159 from "react";
|
|
24318
|
-
|
|
24319
|
-
// src/consts/meld.ts
|
|
24320
|
-
var getMeldProviderIconUrl = (provider) => `https://sdk-cdn.fun.xyz/images/meld/${provider.toLowerCase()}.svg`;
|
|
24321
|
-
var getCurrencySymbol = (currencyCode) => {
|
|
24322
|
-
const formatter = new Intl.NumberFormat("en-US", {
|
|
24323
|
-
style: "currency",
|
|
24324
|
-
currency: currencyCode,
|
|
24325
|
-
currencyDisplay: "narrowSymbol"
|
|
24326
|
-
});
|
|
24327
|
-
return formatter.formatToParts(1).find(({ type }) => type === "currency")?.value ?? currencyCode;
|
|
24328
|
-
};
|
|
24329
|
-
|
|
24330
|
-
// src/components/MeldQuoteItem/MeldQuoteItem.tsx
|
|
24331
24466
|
var providerLabelMap = {
|
|
24332
24467
|
COINBASEPAY: "Coinbase Pay",
|
|
24333
24468
|
MOONPAY: "MoonPay",
|
|
@@ -24697,7 +24832,7 @@ var useMeldQuotes = (sourceAmount, fiatCurrency, meldEnabled = true) => {
|
|
|
24697
24832
|
// src/modals/CheckoutModal/SourceChange/useUpdateSourceAssetForCard.ts
|
|
24698
24833
|
import {
|
|
24699
24834
|
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO as FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO13,
|
|
24700
|
-
hyperEvmChain as
|
|
24835
|
+
hyperEvmChain as hyperEvmChain3,
|
|
24701
24836
|
katanaChain
|
|
24702
24837
|
} from "@funkit/chains";
|
|
24703
24838
|
import { getTokenAddressBySymbolAndChainId as getTokenAddressBySymbolAndChainId2 } from "@funkit/core";
|
|
@@ -24716,7 +24851,7 @@ var pickSourceAssetForCard = async (checkoutItem, userIpInfo) => {
|
|
|
24716
24851
|
zksync2.id.toString(),
|
|
24717
24852
|
mantle.id.toString(),
|
|
24718
24853
|
katanaChain.id.toString(),
|
|
24719
|
-
|
|
24854
|
+
hyperEvmChain3.id.toString()
|
|
24720
24855
|
]
|
|
24721
24856
|
);
|
|
24722
24857
|
const wethAddrOnTargetChain = (await getTokenAddressBySymbolAndChainId2("weth", moonpayChainId)).toLowerCase();
|
|
@@ -26314,7 +26449,7 @@ function MeldRedirect({
|
|
|
26314
26449
|
import {
|
|
26315
26450
|
FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST as FUNKIT_CONNECT_SUPPORTED_CHECKOUT_CHAINS_INFO_LIST2,
|
|
26316
26451
|
etherealChain,
|
|
26317
|
-
hyperEvmChain as
|
|
26452
|
+
hyperEvmChain as hyperEvmChain4
|
|
26318
26453
|
} from "@funkit/chains";
|
|
26319
26454
|
import { formatCurrencyAndStringify as formatCurrencyAndStringify11, isTokenEquivalent as isTokenEquivalent8 } from "@funkit/utils";
|
|
26320
26455
|
import React173, { useEffect as useEffect45, useMemo as useMemo39, useState as useState53 } from "react";
|
|
@@ -27089,7 +27224,7 @@ function isTreatedAsNativeToken(apiKey, asset, dynamicTargetAssetCandidates) {
|
|
|
27089
27224
|
}
|
|
27090
27225
|
if (isHyenaCustomer(apiKey)) {
|
|
27091
27226
|
if (isTokenEquivalent8({
|
|
27092
|
-
firstTokenChainId:
|
|
27227
|
+
firstTokenChainId: hyperEvmChain4.id.toString(),
|
|
27093
27228
|
firstTokenAddress: "0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34",
|
|
27094
27229
|
secondTokenChainId: asset.pickedChainId,
|
|
27095
27230
|
secondTokenAddress: asset.tokenAddress
|
|
@@ -27135,6 +27270,10 @@ var DefiPurchaseSection = ({ config }) => {
|
|
|
27135
27270
|
);
|
|
27136
27271
|
};
|
|
27137
27272
|
|
|
27273
|
+
// src/modals/CheckoutModal/SourceChange/sourceChange.css.ts
|
|
27274
|
+
var WITH_EMPTY_STATE_DATA_ATTRIBUTE = "data-with-empty-state";
|
|
27275
|
+
var emptyStateStyles = "_14kf6rb0";
|
|
27276
|
+
|
|
27138
27277
|
// src/modals/CheckoutModal/SourceChange/SourceChange.tsx
|
|
27139
27278
|
var SourceChangeInfo = {
|
|
27140
27279
|
Component: SourceChange,
|
|
@@ -27465,15 +27604,36 @@ function SourceChange({
|
|
|
27465
27604
|
);
|
|
27466
27605
|
}
|
|
27467
27606
|
const bottomSectionRef = useBottomSectionRef();
|
|
27468
|
-
return /* @__PURE__ */ React175.createElement(React175.Fragment, null, isDefiMode ? /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "28" }, /* @__PURE__ */ React175.createElement(DefiPurchaseSection, { config: checkoutItem.initSettings.config }), /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "16" }, /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "4" }, /* @__PURE__ */ React175.createElement(Text, { size: "13", color: "secondaryText" }, t("sourceChange.selectPaymentMethod")), preferred.map(renderSource)), /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "4" }, /* @__PURE__ */ React175.createElement(Text, { size: "13", color: "secondaryText" }, t("sourceChange.moreOptions")), moreSources.map(renderSource)))) : /* @__PURE__ */ React175.createElement(
|
|
27469
|
-
|
|
27607
|
+
return /* @__PURE__ */ React175.createElement(React175.Fragment, null, isDefiMode ? /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "28" }, /* @__PURE__ */ React175.createElement(DefiPurchaseSection, { config: checkoutItem.initSettings.config }), /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "16" }, /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "4" }, /* @__PURE__ */ React175.createElement(Text, { size: "13", color: "secondaryText" }, t("sourceChange.selectPaymentMethod")), preferred.map(renderSource)), /* @__PURE__ */ React175.createElement(Box, { display: "flex", flexDirection: "column", gap: "4" }, /* @__PURE__ */ React175.createElement(Text, { size: "13", color: "secondaryText" }, t("sourceChange.moreOptions")), moreSources.map(renderSource)))) : /* @__PURE__ */ React175.createElement(React175.Fragment, null, /* @__PURE__ */ React175.createElement(
|
|
27608
|
+
Box,
|
|
27470
27609
|
{
|
|
27471
|
-
|
|
27472
|
-
|
|
27473
|
-
|
|
27474
|
-
|
|
27610
|
+
display: "flex",
|
|
27611
|
+
flexDirection: "column",
|
|
27612
|
+
gap: "4",
|
|
27613
|
+
...{
|
|
27614
|
+
[WITH_EMPTY_STATE_DATA_ATTRIBUTE]: true
|
|
27615
|
+
}
|
|
27616
|
+
},
|
|
27617
|
+
preferred.map(renderSource),
|
|
27618
|
+
preferred.length > 0 && moreSources.length > 0 && /* @__PURE__ */ React175.createElement(
|
|
27619
|
+
FunDivider,
|
|
27620
|
+
{
|
|
27621
|
+
label: t("sourceChange.more"),
|
|
27622
|
+
marginTop: "8",
|
|
27623
|
+
marginBottom: "8",
|
|
27624
|
+
borderColor: "selectedOptionBorder"
|
|
27625
|
+
}
|
|
27626
|
+
),
|
|
27627
|
+
moreSources.map(renderSource),
|
|
27628
|
+
/* @__PURE__ */ React175.createElement(PayPal, null)
|
|
27629
|
+
), /* @__PURE__ */ React175.createElement(Box, { className: emptyStateStyles }, /* @__PURE__ */ React175.createElement(
|
|
27630
|
+
FunNoResults,
|
|
27631
|
+
{
|
|
27632
|
+
text: t("checkout.noAvailableTokensMessage"),
|
|
27633
|
+
title: t("checkout.noAvailableTokens"),
|
|
27634
|
+
variant: "actionable"
|
|
27475
27635
|
}
|
|
27476
|
-
)
|
|
27636
|
+
))), bottomSectionRef && createPortal18(
|
|
27477
27637
|
/* @__PURE__ */ React175.createElement(
|
|
27478
27638
|
Dialog.BottomBar,
|
|
27479
27639
|
{
|
|
@@ -30470,32 +30630,42 @@ function usePaymentMethodIcon(paymentMethod, iconSize = DEFAULT_PAYMENT_METHOD_I
|
|
|
30470
30630
|
}
|
|
30471
30631
|
var usePaymentMethodInfoLabel = (methodInfo, iconSize = DEFAULT_PAYMENT_METHOD_ICON_SIZE) => {
|
|
30472
30632
|
const { textCustomizations } = useFunkitConfig();
|
|
30633
|
+
const { t } = useFunkitTranslation();
|
|
30473
30634
|
const paymentIcon = usePaymentMethodIcon(methodInfo.paymentMethod, iconSize);
|
|
30474
30635
|
if (methodInfo.paymentMethod === "card" /* CARD */) {
|
|
30475
30636
|
return { text: "", icon: /* @__PURE__ */ React209.createElement(CombinedCreditCardOptionsIcon, null) };
|
|
30476
30637
|
}
|
|
30477
30638
|
if (methodInfo.paymentMethod === "brokerage" /* BROKERAGE */) {
|
|
30478
30639
|
const icon2 = getExchangeIcon(methodInfo.exchange, iconSize);
|
|
30479
|
-
|
|
30640
|
+
const brokerageLabel = methodInfo.title;
|
|
30641
|
+
const text = t("sourceChange.brokerageDisplayLabel", {
|
|
30642
|
+
brokerageLabel
|
|
30643
|
+
});
|
|
30644
|
+
return { text, icon: icon2 };
|
|
30480
30645
|
}
|
|
30481
30646
|
if (methodInfo.paymentMethod === "virtual_bank" /* VIRTUAL_BANK */) {
|
|
30647
|
+
const virtualFiatLabel = getFiatAccountLabel(
|
|
30648
|
+
methodInfo.title,
|
|
30649
|
+
methodInfo.matchingFiatAccount
|
|
30650
|
+
);
|
|
30651
|
+
const text = t("sourceChange.virtualFiatDisplayLabel", {
|
|
30652
|
+
virtualFiatLabel
|
|
30653
|
+
});
|
|
30654
|
+
const icon2 = /* @__PURE__ */ React209.createElement(
|
|
30655
|
+
PaymentMethodIcon,
|
|
30656
|
+
{
|
|
30657
|
+
keyIconSize: iconSize,
|
|
30658
|
+
paymentIcon: /* @__PURE__ */ React209.createElement(BankIconActive, { size: iconSize })
|
|
30659
|
+
}
|
|
30660
|
+
);
|
|
30482
30661
|
return {
|
|
30483
|
-
text
|
|
30484
|
-
|
|
30485
|
-
methodInfo.matchingFiatAccount
|
|
30486
|
-
),
|
|
30487
|
-
icon: /* @__PURE__ */ React209.createElement(
|
|
30488
|
-
PaymentMethodIcon,
|
|
30489
|
-
{
|
|
30490
|
-
keyIconSize: iconSize,
|
|
30491
|
-
paymentIcon: /* @__PURE__ */ React209.createElement(BankIconActive, { size: iconSize })
|
|
30492
|
-
}
|
|
30493
|
-
)
|
|
30662
|
+
text,
|
|
30663
|
+
icon: icon2
|
|
30494
30664
|
};
|
|
30495
30665
|
}
|
|
30496
30666
|
const icon = /* @__PURE__ */ React209.createElement(Box, { display: "flex", alignItems: "center", justifyContent: "center" }, paymentIcon);
|
|
30497
30667
|
if (methodInfo.paymentMethod === "balance" /* ACCOUNT_BALANCE */) {
|
|
30498
|
-
const label = getWalletLabel(textCustomizations, methodInfo.description);
|
|
30668
|
+
const label = getWalletLabel(t, textCustomizations, methodInfo.description);
|
|
30499
30669
|
return { text: label, icon };
|
|
30500
30670
|
}
|
|
30501
30671
|
return { text: methodInfo.title, icon };
|
|
@@ -35482,6 +35652,87 @@ var useUpdateActiveFunkitCheckout = () => {
|
|
|
35482
35652
|
import i18n from "i18next";
|
|
35483
35653
|
import { initReactI18next } from "react-i18next";
|
|
35484
35654
|
|
|
35655
|
+
// src/locales/translations/buy_en.json
|
|
35656
|
+
var buy_en_default = {
|
|
35657
|
+
inputAmount: {
|
|
35658
|
+
depositMaxBalance: "Buy with max balance",
|
|
35659
|
+
maximumDeposit: "{{amount}} maximum purchase",
|
|
35660
|
+
minimumDeposit: "{{amount}} minimum purchase"
|
|
35661
|
+
},
|
|
35662
|
+
checkoutConfirmation: {
|
|
35663
|
+
depositMaxBalance: "Buy with max balance"
|
|
35664
|
+
},
|
|
35665
|
+
payment: {
|
|
35666
|
+
depositWithPayPal: "Buy with PayPal",
|
|
35667
|
+
depositWithCard: "Buy with Card"
|
|
35668
|
+
},
|
|
35669
|
+
common: {
|
|
35670
|
+
depositsLive: "{{tokenName}} purchases are live!",
|
|
35671
|
+
depositsLiveTryNow: "{{tokenName}} purchases are live! <TryNowLink>Try now</TryNowLink>"
|
|
35672
|
+
},
|
|
35673
|
+
disclaimer: {
|
|
35674
|
+
cardDisclaimer: "This transaction occurs in two steps. MoonPay powers only your purchase of {{depositToken}} ({{sourceChainName}}) which {{orgName}} then {{tokenActionDescription}}."
|
|
35675
|
+
},
|
|
35676
|
+
transferToken: {
|
|
35677
|
+
minDepositAmountTooltip: "Minimum purchase amount required for the selected chain.",
|
|
35678
|
+
yourDepositAddress: "Your purchase address",
|
|
35679
|
+
depositAddressOriginalRecipient: "Send any accepted token to this address",
|
|
35680
|
+
depositAddressUniversal: "Send any accepted token to this address and it will auto swap to {{targetToken}} in your account"
|
|
35681
|
+
},
|
|
35682
|
+
transaction: {
|
|
35683
|
+
depositSuccessful: "Purchase successful",
|
|
35684
|
+
depositSuccessfulDescription: "Your funds were successfully received.",
|
|
35685
|
+
depositReceivedPending: "Purchase received and pending...",
|
|
35686
|
+
depositCompleted: "Purchase completed",
|
|
35687
|
+
depositReceivedProcessing: "Purchase is processing...",
|
|
35688
|
+
depositWillBeCredited: "Your purchase will be credited to your account shortly.",
|
|
35689
|
+
depositHasBeenCredited: "Your purchase has been credited to your account.",
|
|
35690
|
+
depositRefundedOrReprocessed: "Your purchase has been refunded or reprocessed. Feel free to reach out for an update.",
|
|
35691
|
+
issueOccurredWithDeposit: "An issue occurred with your purchase. Please try again.",
|
|
35692
|
+
depositDidntCompleteFull: `Your purchase didn't complete. <ContactSupportLink text="Contact us" /> for more info.`,
|
|
35693
|
+
depositDelayedFundsSafeFull: 'Your purchase is delayed but funds are safe. <ContactSupportLink text="Contact us" /> for more info.',
|
|
35694
|
+
depositExpired: "Purchase expired",
|
|
35695
|
+
depositDidntCompleteError: "Your purchase didn't complete due to an error.",
|
|
35696
|
+
depositDidntCompleteFundsSafe: "Your purchase didn't complete. Your funds are safe your order will process shortly. Feel free to reach out for an update.",
|
|
35697
|
+
depositBeingProcessedFull: 'Your purchase is being processed. <ContactSupportLink text="Contact us" /> for more info.',
|
|
35698
|
+
depositingIntoAccount: "Purchasing into your account...",
|
|
35699
|
+
waitingForExchangeToSendFunds: "Waiting for {{exchangeName}} to send funds..."
|
|
35700
|
+
},
|
|
35701
|
+
checkoutHistory: {
|
|
35702
|
+
depositAddress: "Purchase address",
|
|
35703
|
+
newDeposit: "Buy More"
|
|
35704
|
+
},
|
|
35705
|
+
directExecution: {
|
|
35706
|
+
depositTx: "Purchase tx"
|
|
35707
|
+
},
|
|
35708
|
+
directExecutionNotif: {
|
|
35709
|
+
depositTransactionInitiated: "Purchase transaction initiated",
|
|
35710
|
+
depositCompletedNotification: "You will receive a notification here once the purchase is completed."
|
|
35711
|
+
},
|
|
35712
|
+
fees: {
|
|
35713
|
+
yourGasCostsTooltip: "Amount paid to send assets to your purchase address."
|
|
35714
|
+
},
|
|
35715
|
+
virtualFiatAccount: {
|
|
35716
|
+
transferDetails: "You will be provided with the transfer details for SEPA payments. Once processed, the funds you will send to the account will be automatically purchased to your {{appName}} account."
|
|
35717
|
+
},
|
|
35718
|
+
textCustomizations: {
|
|
35719
|
+
virtualFiat: "Buy with SEPA",
|
|
35720
|
+
transferTokens: "Buy with QR Code",
|
|
35721
|
+
debitOrCredit: "Buy with Card",
|
|
35722
|
+
brokerageOrExchange: "Buy with Exchange"
|
|
35723
|
+
},
|
|
35724
|
+
sourceChange: {
|
|
35725
|
+
brokerageDisplayLabel: "Buy with {{brokerageLabel}}",
|
|
35726
|
+
walletDisplayLabel: "Buy with Wallet",
|
|
35727
|
+
virtualFiatDisplayLabel: "Buy with SEPA"
|
|
35728
|
+
},
|
|
35729
|
+
relay: {
|
|
35730
|
+
confirmTransaction: "Confirm transaction",
|
|
35731
|
+
waitingForConfirmation: "Waiting for confirmation",
|
|
35732
|
+
transactionConfirmed: "Transaction confirmed"
|
|
35733
|
+
}
|
|
35734
|
+
};
|
|
35735
|
+
|
|
35485
35736
|
// src/locales/translations/en.json
|
|
35486
35737
|
var en_default = {
|
|
35487
35738
|
checkout: {
|
|
@@ -35489,7 +35740,9 @@ var en_default = {
|
|
|
35489
35740
|
noAvailableTokensMessage: "You don't have any crypto tokens in your wallet. Top up or transfer crypto to your wallet to continue.",
|
|
35490
35741
|
topUpWallet: "Top up wallet",
|
|
35491
35742
|
refundProcessing: "Funds were withdrawn, but the transaction didn't complete. A refund is being processed.",
|
|
35492
|
-
orderRefunded: "Your order was refunded."
|
|
35743
|
+
orderRefunded: "Your order was refunded.",
|
|
35744
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
35745
|
+
connectWalletLabelTemplate: "Connect {{walletLabel}}"
|
|
35493
35746
|
},
|
|
35494
35747
|
inputAmount: {
|
|
35495
35748
|
availableBalanceTooltip: "Your available balance after fees",
|
|
@@ -35903,7 +36156,10 @@ var en_default = {
|
|
|
35903
36156
|
sourceChange: {
|
|
35904
36157
|
selectPaymentMethod: "Select payment method",
|
|
35905
36158
|
moreOptions: "More options",
|
|
35906
|
-
more: "more"
|
|
36159
|
+
more: "more",
|
|
36160
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
36161
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
36162
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
35907
36163
|
},
|
|
35908
36164
|
quote: {
|
|
35909
36165
|
preparingYourQuote: "Preparing your quote...",
|
|
@@ -35993,7 +36249,9 @@ var es_default = {
|
|
|
35993
36249
|
noAvailableTokensMessage: "No tienes ning\xFAn token cripto en tu billetera. Recarga o transfiere cripto a tu billetera para continuar.",
|
|
35994
36250
|
topUpWallet: "Recargar billetera",
|
|
35995
36251
|
refundProcessing: "Los fondos fueron retirados, pero la transacci\xF3n no se complet\xF3. Se est\xE1 procesando un reembolso.",
|
|
35996
|
-
orderRefunded: "Tu pedido fue reembolsado."
|
|
36252
|
+
orderRefunded: "Tu pedido fue reembolsado.",
|
|
36253
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
36254
|
+
connectWalletLabelTemplate: "Conectar {{walletLabel}}"
|
|
35997
36255
|
},
|
|
35998
36256
|
inputAmount: {
|
|
35999
36257
|
availableBalanceTooltip: "Tu saldo disponible despu\xE9s de las comisiones",
|
|
@@ -36407,7 +36665,10 @@ var es_default = {
|
|
|
36407
36665
|
sourceChange: {
|
|
36408
36666
|
selectPaymentMethod: "Seleccionar m\xE9todo de pago",
|
|
36409
36667
|
moreOptions: "M\xE1s opciones",
|
|
36410
|
-
more: "m\xE1s"
|
|
36668
|
+
more: "m\xE1s",
|
|
36669
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
36670
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
36671
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
36411
36672
|
},
|
|
36412
36673
|
quote: {
|
|
36413
36674
|
preparingYourQuote: "Preparando tu cotizaci\xF3n...",
|
|
@@ -36497,7 +36758,9 @@ var ja_default = {
|
|
|
36497
36758
|
noAvailableTokensMessage: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u30C8\u30FC\u30AF\u30F3\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u7D9A\u884C\u3059\u308B\u306B\u306F\u3001\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u6697\u53F7\u8CC7\u7523\u3092\u30C1\u30E3\u30FC\u30B8\u307E\u305F\u306F\u9001\u91D1\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
36498
36759
|
topUpWallet: "\u30A6\u30A9\u30EC\u30C3\u30C8\u306B\u30C1\u30E3\u30FC\u30B8",
|
|
36499
36760
|
refundProcessing: "\u8CC7\u91D1\u306F\u5F15\u304D\u51FA\u3055\u308C\u307E\u3057\u305F\u304C\u3001\u53D6\u5F15\u306F\u5B8C\u4E86\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u8FD4\u91D1\u51E6\u7406\u4E2D\u3067\u3059\u3002",
|
|
36500
|
-
orderRefunded: "\u3054\u6CE8\u6587\u306F\u8FD4\u91D1\u3055\u308C\u307E\u3057\u305F\u3002"
|
|
36761
|
+
orderRefunded: "\u3054\u6CE8\u6587\u306F\u8FD4\u91D1\u3055\u308C\u307E\u3057\u305F\u3002",
|
|
36762
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
36763
|
+
connectWalletLabelTemplate: "{{walletLabel}}\u3092\u63A5\u7D9A"
|
|
36501
36764
|
},
|
|
36502
36765
|
inputAmount: {
|
|
36503
36766
|
availableBalanceTooltip: "\u624B\u6570\u6599\u3092\u5DEE\u3057\u5F15\u3044\u305F\u5F8C\u306E\u5229\u7528\u53EF\u80FD\u6B8B\u9AD8",
|
|
@@ -36911,7 +37174,10 @@ var ja_default = {
|
|
|
36911
37174
|
sourceChange: {
|
|
36912
37175
|
selectPaymentMethod: "\u652F\u6255\u3044\u65B9\u6CD5\u3092\u9078\u629E",
|
|
36913
37176
|
moreOptions: "\u305D\u306E\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3",
|
|
36914
|
-
more: "\u3082\u3063\u3068\u898B\u308B"
|
|
37177
|
+
more: "\u3082\u3063\u3068\u898B\u308B",
|
|
37178
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
37179
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
37180
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
36915
37181
|
},
|
|
36916
37182
|
quote: {
|
|
36917
37183
|
preparingYourQuote: "\u898B\u7A4D\u3082\u308A\u3092\u6E96\u5099\u4E2D...",
|
|
@@ -37001,7 +37267,9 @@ var ko_default = {
|
|
|
37001
37267
|
noAvailableTokensMessage: "\uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0 \uD1A0\uD070\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. \uACC4\uC18D\uD558\uB824\uBA74 \uC9C0\uAC11\uC5D0 \uC554\uD638\uD654\uD3D0\uB97C \uCDA9\uC804\uD558\uAC70\uB098 \uC804\uC1A1\uD558\uC138\uC694.",
|
|
37002
37268
|
topUpWallet: "\uC9C0\uAC11 \uCDA9\uC804",
|
|
37003
37269
|
refundProcessing: "\uC790\uAE08\uC774 \uCD9C\uAE08\uB418\uC5C8\uC9C0\uB9CC \uAC70\uB798\uAC00 \uC644\uB8CC\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. \uD658\uBD88\uC774 \uCC98\uB9AC\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4.",
|
|
37004
|
-
orderRefunded: "\uC8FC\uBB38\uC774 \uD658\uBD88\uB418\uC5C8\uC2B5\uB2C8\uB2E4."
|
|
37270
|
+
orderRefunded: "\uC8FC\uBB38\uC774 \uD658\uBD88\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
|
|
37271
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
37272
|
+
connectWalletLabelTemplate: "{{walletLabel}} \uC5F0\uACB0"
|
|
37005
37273
|
},
|
|
37006
37274
|
inputAmount: {
|
|
37007
37275
|
availableBalanceTooltip: "\uC218\uC218\uB8CC\uB97C \uC81C\uC678\uD55C \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uC794\uC561",
|
|
@@ -37415,7 +37683,10 @@ var ko_default = {
|
|
|
37415
37683
|
sourceChange: {
|
|
37416
37684
|
selectPaymentMethod: "\uACB0\uC81C \uBC29\uBC95 \uC120\uD0DD",
|
|
37417
37685
|
moreOptions: "\uB354 \uB9CE\uC740 \uC635\uC158",
|
|
37418
|
-
more: "\uB354 \uBCF4\uAE30"
|
|
37686
|
+
more: "\uB354 \uBCF4\uAE30",
|
|
37687
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
37688
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
37689
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
37419
37690
|
},
|
|
37420
37691
|
quote: {
|
|
37421
37692
|
preparingYourQuote: "\uACAC\uC801 \uC900\uBE44 \uC911...",
|
|
@@ -37505,7 +37776,9 @@ var ru_default = {
|
|
|
37505
37776
|
noAvailableTokensMessage: "\u0423 \u0432\u0430\u0441 \u043D\u0435\u0442 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u043D\u044B\u0445 \u0442\u043E\u043A\u0435\u043D\u043E\u0432 \u0432 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0435. \u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0432\u0435\u0434\u0438\u0442\u0435 \u043A\u0440\u0438\u043F\u0442\u043E\u0432\u0430\u043B\u044E\u0442\u0443 \u0432 \u043A\u043E\u0448\u0435\u043B\u0451\u043A \u0434\u043B\u044F \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0435\u043D\u0438\u044F.",
|
|
37506
37777
|
topUpWallet: "\u041F\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043A\u043E\u0448\u0435\u043B\u0451\u043A",
|
|
37507
37778
|
refundProcessing: "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0431\u044B\u043B\u0438 \u0432\u044B\u0432\u0435\u0434\u0435\u043D\u044B, \u043D\u043E \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u044F \u043D\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430. \u041E\u0431\u0440\u0430\u0431\u0430\u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u0432\u043E\u0437\u0432\u0440\u0430\u0442.",
|
|
37508
|
-
orderRefunded: "\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0431\u044B\u043B \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D."
|
|
37779
|
+
orderRefunded: "\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0431\u044B\u043B \u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0451\u043D.",
|
|
37780
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
37781
|
+
connectWalletLabelTemplate: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C {{walletLabel}}"
|
|
37509
37782
|
},
|
|
37510
37783
|
inputAmount: {
|
|
37511
37784
|
availableBalanceTooltip: "\u0412\u0430\u0448 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0439 \u0431\u0430\u043B\u0430\u043D\u0441 \u043F\u043E\u0441\u043B\u0435 \u043A\u043E\u043C\u0438\u0441\u0441\u0438\u0439",
|
|
@@ -37919,7 +38192,10 @@ var ru_default = {
|
|
|
37919
38192
|
sourceChange: {
|
|
37920
38193
|
selectPaymentMethod: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u043F\u043E\u0441\u043E\u0431 \u043E\u043F\u043B\u0430\u0442\u044B",
|
|
37921
38194
|
moreOptions: "\u0411\u043E\u043B\u044C\u0448\u0435 \u043E\u043F\u0446\u0438\u0439",
|
|
37922
|
-
more: "\u0431\u043E\u043B\u044C\u0448\u0435"
|
|
38195
|
+
more: "\u0431\u043E\u043B\u044C\u0448\u0435",
|
|
38196
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
38197
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
38198
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
37923
38199
|
},
|
|
37924
38200
|
quote: {
|
|
37925
38201
|
preparingYourQuote: "\u041F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043A\u0430 \u0432\u0430\u0448\u0435\u0439 \u043A\u043E\u0442\u0438\u0440\u043E\u0432\u043A\u0438...",
|
|
@@ -38009,7 +38285,9 @@ var tr_default = {
|
|
|
38009
38285
|
noAvailableTokensMessage: "C\xFCzdan\u0131n\u0131zda kripto token bulunmamaktad\u0131r. Devam etmek i\xE7in c\xFCzdan\u0131n\u0131za para yat\u0131r\u0131n veya kripto transfer edin.",
|
|
38010
38286
|
topUpWallet: "C\xFCzdana para y\xFCkle",
|
|
38011
38287
|
refundProcessing: "Fonlar \xE7ekildi, ancak i\u015Flem tamamlanmad\u0131. \u0130ade i\u015Flemi yap\u0131l\u0131yor.",
|
|
38012
|
-
orderRefunded: "Sipari\u015Finiz iade edildi."
|
|
38288
|
+
orderRefunded: "Sipari\u015Finiz iade edildi.",
|
|
38289
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
38290
|
+
connectWalletLabelTemplate: "{{walletLabel}} Ba\u011Fla"
|
|
38013
38291
|
},
|
|
38014
38292
|
inputAmount: {
|
|
38015
38293
|
availableBalanceTooltip: "\xDCcretler sonras\u0131 kullan\u0131labilir bakiyeniz",
|
|
@@ -38423,7 +38701,10 @@ var tr_default = {
|
|
|
38423
38701
|
sourceChange: {
|
|
38424
38702
|
selectPaymentMethod: "\xD6deme y\xF6ntemi se\xE7in",
|
|
38425
38703
|
moreOptions: "Daha fazla se\xE7enek",
|
|
38426
|
-
more: "daha fazla"
|
|
38704
|
+
more: "daha fazla",
|
|
38705
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
38706
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
38707
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
38427
38708
|
},
|
|
38428
38709
|
quote: {
|
|
38429
38710
|
preparingYourQuote: "Teklifiniz haz\u0131rlan\u0131yor...",
|
|
@@ -38513,7 +38794,9 @@ var zh_default = {
|
|
|
38513
38794
|
noAvailableTokensMessage: "\u60A8\u7684\u94B1\u5305\u4E2D\u6CA1\u6709\u4EFB\u4F55\u52A0\u5BC6\u4EE3\u5E01\u3002\u5145\u503C\u6216\u8F6C\u8D26\u52A0\u5BC6\u8D27\u5E01\u5230\u60A8\u7684\u94B1\u5305\u4EE5\u7EE7\u7EED\u3002",
|
|
38514
38795
|
topUpWallet: "\u5145\u503C\u94B1\u5305",
|
|
38515
38796
|
refundProcessing: "\u8D44\u91D1\u5DF2\u63D0\u53D6\uFF0C\u4F46\u4EA4\u6613\u672A\u5B8C\u6210\u3002\u6B63\u5728\u5904\u7406\u9000\u6B3E\u3002",
|
|
38516
|
-
orderRefunded: "\u60A8\u7684\u8BA2\u5355\u5DF2\u9000\u6B3E\u3002"
|
|
38797
|
+
orderRefunded: "\u60A8\u7684\u8BA2\u5355\u5DF2\u9000\u6B3E\u3002",
|
|
38798
|
+
walletLabelTemplate: "{{walletLabel}} ({{formattedAddress}})",
|
|
38799
|
+
connectWalletLabelTemplate: "\u8FDE\u63A5 {{walletLabel}}"
|
|
38517
38800
|
},
|
|
38518
38801
|
inputAmount: {
|
|
38519
38802
|
availableBalanceTooltip: "\u6263\u9664\u624B\u7EED\u8D39\u540E\u7684\u53EF\u7528\u4F59\u989D",
|
|
@@ -38927,7 +39210,10 @@ var zh_default = {
|
|
|
38927
39210
|
sourceChange: {
|
|
38928
39211
|
selectPaymentMethod: "\u9009\u62E9\u652F\u4ED8\u65B9\u5F0F",
|
|
38929
39212
|
moreOptions: "\u66F4\u591A\u9009\u9879",
|
|
38930
|
-
more: "\u66F4\u591A"
|
|
39213
|
+
more: "\u66F4\u591A",
|
|
39214
|
+
walletDisplayLabel: "{{walletLabel}}",
|
|
39215
|
+
brokerageDisplayLabel: "{{brokerageLabel}}",
|
|
39216
|
+
virtualFiatDisplayLabel: "{{virtualFiatLabel}}"
|
|
38931
39217
|
},
|
|
38932
39218
|
quote: {
|
|
38933
39219
|
preparingYourQuote: "\u6B63\u5728\u51C6\u5907\u60A8\u7684\u62A5\u4EF7...",
|
|
@@ -39019,7 +39305,8 @@ var localeMapping = {
|
|
|
39019
39305
|
ja: "ja",
|
|
39020
39306
|
tr: "tr",
|
|
39021
39307
|
es: "es",
|
|
39022
|
-
ru: "ru"
|
|
39308
|
+
ru: "ru",
|
|
39309
|
+
buy_en: "buy_en"
|
|
39023
39310
|
};
|
|
39024
39311
|
var resources = {
|
|
39025
39312
|
en: {
|
|
@@ -39030,7 +39317,8 @@ var resources = {
|
|
|
39030
39317
|
ja: { translation: ja_default },
|
|
39031
39318
|
tr: { translation: tr_default },
|
|
39032
39319
|
es: { translation: es_default },
|
|
39033
|
-
ru: { translation: ru_default }
|
|
39320
|
+
ru: { translation: ru_default },
|
|
39321
|
+
buy_en: { translation: buy_en_default }
|
|
39034
39322
|
};
|
|
39035
39323
|
i18n.use(initReactI18next).init({
|
|
39036
39324
|
resources,
|