@0xsquid/react-hooks 6.4.1-beta.0 → 6.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/core/constants.d.ts +14 -0
  2. package/dist/core/constants.js +14 -0
  3. package/dist/core/constants.js.map +1 -1
  4. package/dist/core/index.d.ts +1 -1
  5. package/dist/core/index.js +1 -1
  6. package/dist/core/index.js.map +1 -1
  7. package/dist/core/queries/queries-keys.d.ts +1 -7
  8. package/dist/core/queries/queries-keys.js +0 -24
  9. package/dist/core/queries/queries-keys.js.map +1 -1
  10. package/dist/core/types/index.d.ts +0 -1
  11. package/dist/hooks/index.d.ts +0 -3
  12. package/dist/hooks/index.js +0 -3
  13. package/dist/hooks/index.js.map +1 -1
  14. package/dist/hooks/transaction/useGetRoute.js +11 -6
  15. package/dist/hooks/transaction/useGetRoute.js.map +1 -1
  16. package/dist/hooks/wallet/useEns.d.ts +1 -0
  17. package/dist/hooks/wallet/useEns.js +13 -1
  18. package/dist/hooks/wallet/useEns.js.map +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/services/index.d.ts +1 -1
  23. package/dist/services/index.js +1 -1
  24. package/dist/services/index.js.map +1 -1
  25. package/dist/services/internal/assetsService.d.ts +0 -2
  26. package/dist/services/internal/assetsService.js +1 -7
  27. package/dist/services/internal/assetsService.js.map +1 -1
  28. package/dist/services/internal/numberService.d.ts +22 -3
  29. package/dist/services/internal/numberService.js +22 -11
  30. package/dist/services/internal/numberService.js.map +1 -1
  31. package/dist/services/internal/transactionService.js +6 -3
  32. package/dist/services/internal/transactionService.js.map +1 -1
  33. package/dist/tests/assetsService.test.js +26 -13
  34. package/dist/tests/assetsService.test.js.map +1 -1
  35. package/dist/tests/numberService.test.js +27 -5
  36. package/dist/tests/numberService.test.js.map +1 -1
  37. package/package.json +2 -4
  38. package/dist/core/types/onramps/index.d.ts +0 -2
  39. package/dist/core/types/onramps/index.js +0 -3
  40. package/dist/core/types/onramps/index.js.map +0 -1
  41. package/dist/core/types/onramps/onramp.d.ts +0 -99
  42. package/dist/core/types/onramps/onramp.js +0 -2
  43. package/dist/core/types/onramps/onramp.js.map +0 -1
  44. package/dist/core/types/onramps/revolut.d.ts +0 -92
  45. package/dist/core/types/onramps/revolut.js +0 -2
  46. package/dist/core/types/onramps/revolut.js.map +0 -1
  47. package/dist/hooks/onramp/useFiatToCrypto.d.ts +0 -61
  48. package/dist/hooks/onramp/useFiatToCrypto.js +0 -189
  49. package/dist/hooks/onramp/useFiatToCrypto.js.map +0 -1
  50. package/dist/hooks/store/useFiatTransactionStore.d.ts +0 -20
  51. package/dist/hooks/store/useFiatTransactionStore.js +0 -38
  52. package/dist/hooks/store/useFiatTransactionStore.js.map +0 -1
  53. package/dist/hooks/utils/useUtils.d.ts +0 -7
  54. package/dist/hooks/utils/useUtils.js +0 -20
  55. package/dist/hooks/utils/useUtils.js.map +0 -1
  56. package/dist/services/external/baseAdapter.d.ts +0 -31
  57. package/dist/services/external/baseAdapter.js +0 -20
  58. package/dist/services/external/baseAdapter.js.map +0 -1
  59. package/dist/services/external/index.d.ts +0 -3
  60. package/dist/services/external/index.js +0 -4
  61. package/dist/services/external/index.js.map +0 -1
  62. package/dist/services/external/onramperClientAdapter.d.ts +0 -15
  63. package/dist/services/external/onramperClientAdapter.js +0 -130
  64. package/dist/services/external/onramperClientAdapter.js.map +0 -1
  65. package/dist/services/external/revolutClientAdapter.d.ts +0 -30
  66. package/dist/services/external/revolutClientAdapter.js +0 -195
  67. package/dist/services/external/revolutClientAdapter.js.map +0 -1
  68. package/dist/services/internal/fiatToCryptoService.d.ts +0 -26
  69. package/dist/services/internal/fiatToCryptoService.js +0 -57
  70. package/dist/services/internal/fiatToCryptoService.js.map +0 -1
  71. package/dist/tests/revolutClientAdapter.test.d.ts +0 -1
  72. package/dist/tests/revolutClientAdapter.test.js +0 -181
  73. package/dist/tests/revolutClientAdapter.test.js.map +0 -1
@@ -1,130 +0,0 @@
1
- import axios from "axios";
2
- import { BaseFiatToCryptoAdapter } from "./baseAdapter";
3
- export class OnramperAdapter extends BaseFiatToCryptoAdapter {
4
- key = "onramper";
5
- label = "Onramper";
6
- supportedPaymentMethods = ["credit_card", "bank_transfer"];
7
- baseUrl = "https://api.onramper.com";
8
- apiKey = "ONRAMPER_API_KEY";
9
- getHeaders() {
10
- return {
11
- Authorization: this.apiKey,
12
- "Content-Type": "application/json",
13
- };
14
- }
15
- async getQuote(fiatCurrency, cryptoCurrency, amount) {
16
- try {
17
- const { data } = await axios.get(`${this.baseUrl}/quotes/${fiatCurrency.toLowerCase()}/${cryptoCurrency.toLowerCase()}`, {
18
- params: {
19
- amount,
20
- paymentMethod: "creditcard",
21
- },
22
- headers: this.getHeaders(),
23
- });
24
- // Get the best quote from available options
25
- const bestQuote = data[0];
26
- if (!bestQuote) {
27
- throw new Error("No quotes available from Onramper");
28
- }
29
- const totalFees = bestQuote.networkFee + bestQuote.transactionFee;
30
- const percentageFee = (totalFees / amount) * 100;
31
- return {
32
- fiatCurrency: fiatCurrency.toUpperCase(),
33
- cryptoCurrencyID: cryptoCurrency.toUpperCase(),
34
- amount,
35
- fees: {
36
- fixed: totalFees,
37
- percentage: percentageFee,
38
- },
39
- cryptoAmount: bestQuote.payout,
40
- };
41
- }
42
- catch (error) {
43
- if (axios.isAxiosError(error)) {
44
- throw new Error(error.response?.data?.message || "Failed to get quote from Onramper");
45
- }
46
- throw error;
47
- }
48
- }
49
- async getTransactionStatus(transactionId) {
50
- try {
51
- const { data } = await axios.get(`${this.baseUrl}/transactions/${transactionId}`, {
52
- headers: this.getHeaders(),
53
- });
54
- const statusMap = {
55
- pending: "processing",
56
- completed: "completed",
57
- failed: "failed",
58
- };
59
- return {
60
- transactionId: data.transactionId,
61
- status: statusMap[data.status] || "processing",
62
- createdAt: data.statusDate,
63
- updatedAt: data.statusDate,
64
- errorMessage: null,
65
- transactionHash: data.transactionHash || undefined,
66
- };
67
- }
68
- catch (error) {
69
- if (axios.isAxiosError(error)) {
70
- throw new Error(error.response?.data?.message ||
71
- "Failed to get transaction status from Onramper");
72
- }
73
- throw error;
74
- }
75
- }
76
- async executeQuote(executeQuoteRequest) {
77
- try {
78
- const { data } = await axios.post(`${this.baseUrl}/transactions`, {
79
- fiatCurrency: executeQuoteRequest.fiatCurrency,
80
- cryptoCurrency: executeQuoteRequest.cryptoCurrencyID,
81
- amount: executeQuoteRequest.amount,
82
- walletAddress: executeQuoteRequest.walletAddress,
83
- paymentMethod: executeQuoteRequest.paymentMethod,
84
- }, {
85
- headers: this.getHeaders(),
86
- });
87
- return {
88
- redirectUrl: data.redirectUrl,
89
- orderId: data.transactionId,
90
- };
91
- }
92
- catch (error) {
93
- if (axios.isAxiosError(error)) {
94
- throw new Error(error.response?.data?.message ||
95
- "Failed to execute quote with Onramper");
96
- }
97
- throw error;
98
- }
99
- }
100
- getCryptoNetwork(cryptoCurrency) {
101
- const networkMap = {
102
- BTC: "bitcoin",
103
- ETH: "ethereum",
104
- SOL: "solana",
105
- };
106
- return networkMap[cryptoCurrency.toUpperCase()] || "ethereum";
107
- }
108
- async getConfiguration() {
109
- try {
110
- const { data } = await axios.get(`${this.baseUrl}/config`, {
111
- headers: this.getHeaders(),
112
- });
113
- // Add flag URLs to country data
114
- return {
115
- supportedCountries: data.supportedCountries || [],
116
- supportedCurrencies: data.supportedCurrencies || [],
117
- supportedPaymentMethods: [...this.supportedPaymentMethods],
118
- supportedTokens: data.supportedTokens || [],
119
- };
120
- }
121
- catch (error) {
122
- if (axios.isAxiosError(error)) {
123
- throw new Error(error.response?.data?.message ||
124
- "Failed to fetch Onramper configuration");
125
- }
126
- throw error;
127
- }
128
- }
129
- }
130
- //# sourceMappingURL=onramperClientAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"onramperClientAdapter.js","sourceRoot":"","sources":["../../../src/services/external/onramperClientAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { ChainData, Token } from "@0xsquid/squid-types";
2
- import { ExecuteFiatQuoteResult, ExecuteQuoteClient, FiatToCryptoConfig, OnRampQuoteResponse, OnRampTransactionStatus } from "../../core/types/onramps/onramp";
3
- import { RevolutConfig, RevolutQuoteResponse } from "../../core/types/onramps/revolut";
4
- import { BaseFiatToCryptoAdapter } from "./baseAdapter";
5
- export declare class RevolutClientAdapter extends BaseFiatToCryptoAdapter {
6
- readonly key = "revolut";
7
- readonly label = "Revolut";
8
- readonly supportedPaymentMethods: readonly ["card", "revolut", "apple-pay", "google-pay"];
9
- private readonly baseUrl;
10
- private findMatchingChain;
11
- private findMatchingToken;
12
- private filterAndMapTokens;
13
- mapConfigResponse(data: RevolutConfig, squidConfig: {
14
- chains: ChainData[];
15
- tokens: Token[];
16
- }): FiatToCryptoConfig;
17
- mapQuoteResponse(data: RevolutQuoteResponse, fiatCurrency: string, cryptoCurrencyID: string, originalAmount: number): OnRampQuoteResponse;
18
- mapPaymentMethod(method: string): string;
19
- calculateTotalFees(data: RevolutQuoteResponse, amount: number): {
20
- totalFees: number;
21
- percentageFee: number;
22
- };
23
- getQuote(fiatCurrency: string, cryptoCurrencyID: string, amount: number, paymentMethod?: string, region?: string): Promise<OnRampQuoteResponse>;
24
- getTransactionStatus(transactionId: string, walletAddress: string): Promise<OnRampTransactionStatus>;
25
- executeQuote(params: ExecuteQuoteClient): Promise<ExecuteFiatQuoteResult>;
26
- getConfiguration(squidConfig: {
27
- chains: ChainData[];
28
- tokens: Token[];
29
- }): Promise<FiatToCryptoConfig>;
30
- }
@@ -1,195 +0,0 @@
1
- import axios from "axios";
2
- import { v4 as uuidv4 } from "uuid";
3
- import { nativeEvmTokenAddress } from "../../core/constants";
4
- import { BaseFiatToCryptoAdapter } from "./baseAdapter";
5
- export class RevolutClientAdapter extends BaseFiatToCryptoAdapter {
6
- key = "revolut";
7
- label = "Revolut";
8
- supportedPaymentMethods = [
9
- "card",
10
- "revolut",
11
- "apple-pay",
12
- "google-pay",
13
- ];
14
- baseUrl = "https://squid-app-v2-git-feat-api-fiat-onramp-0xsquid.vercel.app/api/fiat-to-crypto/revolut";
15
- findMatchingChain(revolutBlockchain, chains) {
16
- return chains.find((c) => c.networkIdentifier.toUpperCase() === revolutBlockchain);
17
- }
18
- findMatchingToken(params) {
19
- const { revolutToken, chain, tokens } = params;
20
- // Filter tokens by chain first
21
- const chainTokens = tokens.filter((t) => t.chainId === chain.chainId);
22
- if (revolutToken.smartContractAddress) {
23
- // For tokens with contract address (EVM tokens)
24
- return chainTokens.find((t) => t.address?.toLowerCase() ===
25
- revolutToken.smartContractAddress?.toLowerCase());
26
- }
27
- // For native tokens (BTC, ETH, etc.)
28
- return chainTokens.find((t) => t.address?.toLowerCase() === nativeEvmTokenAddress &&
29
- t.symbol.toUpperCase() === revolutToken.currency.toUpperCase());
30
- }
31
- filterAndMapTokens(revolutTokens, squidConfig) {
32
- return revolutTokens
33
- .map((revolutToken) => {
34
- const chain = this.findMatchingChain(revolutToken.blockchain, squidConfig.chains);
35
- if (!chain)
36
- return null;
37
- const token = this.findMatchingToken({
38
- revolutToken,
39
- chain,
40
- tokens: squidConfig.tokens,
41
- });
42
- if (!token)
43
- return null;
44
- return { ...token, cryptoCurrencyID: revolutToken.id };
45
- })
46
- .filter((token) => token !== null);
47
- }
48
- mapConfigResponse(data, squidConfig) {
49
- try {
50
- // Transform country codes into enhanced country info
51
- const supportedCountries = data.countries
52
- .map((code) => this.getCountryData(code))
53
- .filter((country) => country !== null);
54
- // Transform currencies with additional data
55
- const currencies = (data.fiat || [])
56
- .map((fc) => {
57
- const currencyData = this.getCurrencyData(fc.currency);
58
- if (!currencyData)
59
- return null;
60
- return {
61
- ...currencyData,
62
- minLimit: fc.min_limit,
63
- maxLimit: fc.max_limit,
64
- };
65
- })
66
- .filter((currency) => currency !== null);
67
- // Filter and map tokens that exist in both systems
68
- const allowedTokens = this.filterAndMapTokens(data.crypto, squidConfig);
69
- return {
70
- supportedCountries,
71
- supportedCurrencies: currencies,
72
- supportedPaymentMethods: data.payment_methods,
73
- supportedTokens: allowedTokens,
74
- };
75
- }
76
- catch (error) {
77
- console.error("[Revolut Adapter] Error mapping config response:", error);
78
- // Return empty but valid config instead of throwing
79
- return {
80
- supportedCountries: [],
81
- supportedCurrencies: [],
82
- supportedPaymentMethods: [],
83
- supportedTokens: [],
84
- };
85
- }
86
- }
87
- mapQuoteResponse(data, fiatCurrency, cryptoCurrencyID, originalAmount) {
88
- const { totalFees, percentageFee } = this.calculateTotalFees(data, originalAmount);
89
- return {
90
- fiatCurrency,
91
- cryptoCurrencyID,
92
- amount: originalAmount,
93
- fees: {
94
- fixed: totalFees,
95
- percentage: percentageFee,
96
- },
97
- cryptoAmount: data.crypto.amount,
98
- };
99
- }
100
- mapPaymentMethod(method) {
101
- const methodMap = {
102
- credit_card: "card",
103
- bank_transfer: "revolut",
104
- apple_pay: "apple-pay",
105
- google_pay: "google-pay",
106
- };
107
- return methodMap[method] || "card";
108
- }
109
- calculateTotalFees(data, amount) {
110
- const totalFees = Number((data.service_fee.amount +
111
- data.network_fee.amount +
112
- data.partner_fee.amount).toFixed(2));
113
- const percentageFee = Number(((totalFees / amount) * 100).toFixed(2));
114
- return { totalFees, percentageFee };
115
- }
116
- async getQuote(fiatCurrency, cryptoCurrencyID, amount, paymentMethod = "card", region = "GB") {
117
- try {
118
- const { data } = await axios.get(`${this.baseUrl}/quote`, {
119
- params: {
120
- fiatCurrency,
121
- cryptoCurrencyID,
122
- amount,
123
- paymentMethod: this.mapPaymentMethod(paymentMethod),
124
- region,
125
- },
126
- });
127
- const { totalFees, percentageFee } = this.calculateTotalFees(data, amount);
128
- return {
129
- fiatCurrency,
130
- cryptoCurrencyID,
131
- amount,
132
- fees: {
133
- fixed: totalFees,
134
- percentage: percentageFee,
135
- },
136
- cryptoAmount: data.crypto.amount,
137
- };
138
- }
139
- catch (error) {
140
- throw new Error("Failed to get quote from Revolut");
141
- }
142
- }
143
- async getTransactionStatus(transactionId, walletAddress) {
144
- try {
145
- const { data } = await axios.get(`${this.baseUrl}/status/${transactionId}`, {
146
- params: {
147
- wallet: walletAddress,
148
- },
149
- });
150
- return {
151
- transactionId: data.transactionId,
152
- status: data.status,
153
- createdAt: data.createdAt,
154
- updatedAt: data.updatedAt,
155
- transactionHash: data.transactionHash,
156
- };
157
- }
158
- catch (error) {
159
- throw new Error("Failed to get transaction status");
160
- }
161
- }
162
- async executeQuote(params) {
163
- try {
164
- const orderId = uuidv4();
165
- const serverParams = {
166
- orderId,
167
- fiatCurrency: params.fiatCurrency,
168
- cryptoCurrencyID: params.cryptoCurrencyID,
169
- amount: params.amount,
170
- walletAddress: params.walletAddress,
171
- paymentMethod: this.mapPaymentMethod(params.paymentMethod),
172
- region: params.region || "GB",
173
- // partnerRedirectUrl: "",
174
- };
175
- const { data } = await axios.post(`${this.baseUrl}/execute`, serverParams);
176
- return {
177
- redirectUrl: data.redirectUrl,
178
- orderId,
179
- };
180
- }
181
- catch (error) {
182
- throw new Error("Failed to execute quote");
183
- }
184
- }
185
- async getConfiguration(squidConfig) {
186
- try {
187
- const { data } = await axios.get(`${this.baseUrl}/config`);
188
- return this.mapConfigResponse(data, squidConfig);
189
- }
190
- catch (error) {
191
- throw new Error("Failed to fetch Revolut configuration");
192
- }
193
- }
194
- }
195
- //# sourceMappingURL=revolutClientAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"revolutClientAdapter.js","sourceRoot":"","sources":["../../../src/services/external/revolutClientAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { CountryWithCode, ExecuteFiatQuoteResult, ExecuteQuoteClient, FiatCurrencyEnhanced, FiatToCryptoConfig, FiatToCryptoProvider, OnRampQuoteResponse, OnRampTransactionStatus } from "../../core/types/onramps/onramp";
2
- import { ChainData, Token } from "@0xsquid/squid-types";
3
- export declare class FiatToCryptoService {
4
- private provider;
5
- constructor(provider: FiatToCryptoProvider | undefined);
6
- static getProviderInfo(provider: FiatToCryptoProvider): import("../external/baseAdapter").ProviderInfo;
7
- getQuote(fiatCurrency: string, cryptoCurrencyID: string, amount: number, paymentMethod?: string, region?: string): Promise<OnRampQuoteResponse>;
8
- getTransactionStatus(transactionId: string, walletAddress: string): Promise<OnRampTransactionStatus>;
9
- executeQuote(executeQuoteRequest: ExecuteQuoteClient): Promise<ExecuteFiatQuoteResult>;
10
- getConfiguration(squidConfig: {
11
- chains: ChainData[];
12
- tokens: Token[];
13
- }): Promise<FiatToCryptoConfig>;
14
- }
15
- /**
16
- * Get country data from country code
17
- * @param countryCode - The country code (e.g., "US", "GB")
18
- * @returns Country details including name, flag URL, and other information
19
- */
20
- export declare function getCountryData(countryCode: string): CountryWithCode;
21
- /**
22
- * Get currency data from currency code
23
- * @param currencyCode - The currency code (e.g., "USD", "EUR")
24
- * @returns Currency details including symbol and denomination, or undefined if no symbol is found
25
- */
26
- export declare function getCurrencyData(currencyCode: string): FiatCurrencyEnhanced | undefined;
@@ -1,57 +0,0 @@
1
- import { countries } from "countries-list";
2
- import getSymbolFromCurrency from "currency-symbol-map";
3
- export class FiatToCryptoService {
4
- provider;
5
- constructor(provider) {
6
- if (!provider) {
7
- throw new Error("Provider is required");
8
- }
9
- this.provider = provider;
10
- }
11
- static getProviderInfo(provider) {
12
- return provider.getInfo();
13
- }
14
- async getQuote(fiatCurrency, cryptoCurrencyID, amount, paymentMethod = "card", region = "GB") {
15
- return this.provider.getQuote(fiatCurrency, cryptoCurrencyID, amount, paymentMethod, region);
16
- }
17
- async getTransactionStatus(transactionId, walletAddress) {
18
- return this.provider.getTransactionStatus(transactionId, walletAddress);
19
- }
20
- async executeQuote(executeQuoteRequest) {
21
- return this.provider.executeQuote(executeQuoteRequest);
22
- }
23
- async getConfiguration(squidConfig) {
24
- return this.provider.getConfiguration(squidConfig);
25
- }
26
- }
27
- /**
28
- * Get country data from country code
29
- * @param countryCode - The country code (e.g., "US", "GB")
30
- * @returns Country details including name, flag URL, and other information
31
- */
32
- export function getCountryData(countryCode) {
33
- const countryCodeUpper = countryCode.toUpperCase();
34
- const countryCodeLower = countryCode.toLowerCase();
35
- return {
36
- ...countries[countryCodeUpper],
37
- code: countryCodeUpper,
38
- flagUrl: countryCodeLower
39
- ? `https://flagcdn.com/w40/${countryCodeLower}.png`
40
- : "",
41
- };
42
- }
43
- /**
44
- * Get currency data from currency code
45
- * @param currencyCode - The currency code (e.g., "USD", "EUR")
46
- * @returns Currency details including symbol and denomination, or undefined if no symbol is found
47
- */
48
- export function getCurrencyData(currencyCode) {
49
- const symbol = getSymbolFromCurrency(currencyCode);
50
- if (!symbol)
51
- return undefined;
52
- return {
53
- denomination: currencyCode,
54
- symbol,
55
- };
56
- }
57
- //# sourceMappingURL=fiatToCryptoService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fiatToCryptoService.js","sourceRoot":"","sources":["../../../src/services/internal/fiatToCryptoService.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,qBAAqB,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,mBAAmB;IACtB,QAAQ,CAAuB;IAEvC,YAAY,QAA0C;QACpD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,QAA8B;QACnD,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,YAAoB,EACpB,gBAAwB,EACxB,MAAc,EACd,gBAAwB,MAAM,EAC9B,SAAiB,IAAI;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAC3B,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,aAAqB,EACrB,aAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,mBAAuC;QAEvC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAGtB;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,gBAAgB,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAEnD,OAAO;QACL,GAAG,SAAS,CAAC,gBAA0C,CAAC;QACxD,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,gBAAgB;YACvB,CAAC,CAAC,2BAA2B,gBAAgB,MAAM;YACnD,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAoB;IAEpB,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,OAAO;QACL,YAAY,EAAE,YAAY;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,181 +0,0 @@
1
- import { RevolutClientAdapter } from "../services/external/revolutClientAdapter";
2
- import { fetchNativeSquidData } from "./fetchSquidData";
3
- describe("RevolutClientAdapter", () => {
4
- let adapter;
5
- let realSquid = undefined;
6
- let REAL_CHAINS = [];
7
- let REAL_TOKENS = [];
8
- beforeAll(async () => {
9
- realSquid = await fetchNativeSquidData();
10
- REAL_CHAINS = realSquid?.chains ?? [];
11
- REAL_TOKENS = realSquid?.tokens ?? [];
12
- });
13
- beforeEach(() => {
14
- adapter = new RevolutClientAdapter();
15
- });
16
- describe("calculateTotalFees", () => {
17
- test("should correctly calculate total fees and percentage for EUR quote", () => {
18
- const mockQuoteResponse = {
19
- service_fee: {
20
- amount: 25.33,
21
- currency: "EUR",
22
- },
23
- network_fee: {
24
- amount: 0.29,
25
- currency: "EUR",
26
- },
27
- crypto: {
28
- amount: 1009.278933,
29
- currencyId: "USDC-ETH",
30
- },
31
- partner_fee: {
32
- amount: 9.74,
33
- currency: "EUR",
34
- },
35
- };
36
- const amount = 1000; // Original amount in EUR
37
- const { totalFees, percentageFee } = adapter.calculateTotalFees(mockQuoteResponse, amount);
38
- // Total fees should be 25.33 + 0.29 + 9.74 = 35.36
39
- expect(totalFees).toBe(35.36);
40
- // Percentage should be (35.36 / 1000) * 100 = 3.54%
41
- expect(percentageFee).toBe(3.54);
42
- });
43
- test("should handle zero fees", () => {
44
- const mockQuoteResponse = {
45
- service_fee: {
46
- amount: 0,
47
- currency: "EUR",
48
- },
49
- network_fee: {
50
- amount: 0,
51
- currency: "EUR",
52
- },
53
- crypto: {
54
- amount: 1000,
55
- currencyId: "USDC-ETH",
56
- },
57
- partner_fee: {
58
- amount: 0,
59
- currency: "EUR",
60
- },
61
- };
62
- const amount = 1000;
63
- const { totalFees, percentageFee } = adapter.calculateTotalFees(mockQuoteResponse, amount);
64
- expect(totalFees).toBe(0);
65
- expect(percentageFee).toBe(0);
66
- });
67
- test("should handle very small fees", () => {
68
- const mockQuoteResponse = {
69
- service_fee: {
70
- amount: 0.001,
71
- currency: "EUR",
72
- },
73
- network_fee: {
74
- amount: 0.002,
75
- currency: "EUR",
76
- },
77
- crypto: {
78
- amount: 100,
79
- currencyId: "USDC-ETH",
80
- },
81
- partner_fee: {
82
- amount: 0.003,
83
- currency: "EUR",
84
- },
85
- };
86
- const amount = 100;
87
- const { totalFees, percentageFee } = adapter.calculateTotalFees(mockQuoteResponse, amount);
88
- expect(totalFees).toBe(0.01); // 0.001 + 0.002 + 0.003 = 0.006, rounded to 0.01
89
- expect(percentageFee).toBe(0.01); // (0.01 / 100) * 100 = 0.01%
90
- });
91
- test("should handle different currencies with same calculation", () => {
92
- const mockQuoteResponse = {
93
- service_fee: {
94
- amount: 25.33,
95
- currency: "USD", // Changed to USD
96
- },
97
- network_fee: {
98
- amount: 0.29,
99
- currency: "USD",
100
- },
101
- crypto: {
102
- amount: 1009.278933,
103
- currencyId: "USDC-ETH",
104
- },
105
- partner_fee: {
106
- amount: 9.74,
107
- currency: "USD",
108
- },
109
- };
110
- const amount = 1000;
111
- const { totalFees, percentageFee } = adapter.calculateTotalFees(mockQuoteResponse, amount);
112
- expect(totalFees).toBe(35.36);
113
- expect(percentageFee).toBe(3.54);
114
- });
115
- });
116
- describe("mapConfigResponse", () => {
117
- test("should correctly map Revolut config to internal format", () => {
118
- const mockRevolutConfig = {
119
- version: "2.0",
120
- countries: ["GB", "FR", "DE"],
121
- fiat: [
122
- { currency: "EUR", min_limit: 10, max_limit: 1000 },
123
- { currency: "USD", min_limit: 10, max_limit: 1000 },
124
- ],
125
- crypto: [
126
- {
127
- id: "ETH",
128
- currency: "ETH",
129
- blockchain: "ETHEREUM",
130
- },
131
- {
132
- id: "USDC-ETH",
133
- currency: "USDC",
134
- blockchain: "ETHEREUM",
135
- smartContractAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
136
- },
137
- ],
138
- payment_methods: ["card", "revolut"],
139
- };
140
- const result = adapter.mapConfigResponse(mockRevolutConfig, {
141
- chains: REAL_CHAINS,
142
- tokens: REAL_TOKENS,
143
- });
144
- expect(result.supportedCountries).toHaveLength(3);
145
- expect(result.supportedCurrencies).toHaveLength(2);
146
- expect(result.supportedTokens).toHaveLength(2);
147
- expect(result.supportedPaymentMethods).toEqual(["card", "revolut"]);
148
- });
149
- });
150
- describe("findMatchingToken", () => {
151
- test("should match both EVM native tokens and tokens with contract addresses", () => {
152
- const mockRevolutConfig = {
153
- version: "2.0",
154
- countries: ["GB"],
155
- fiat: [{ currency: "USD", min_limit: 10, max_limit: 1000 }],
156
- crypto: [
157
- {
158
- id: "ETH",
159
- currency: "ETH",
160
- blockchain: "ETHEREUM",
161
- },
162
- {
163
- id: "USDC-ETH",
164
- currency: "USDC",
165
- blockchain: "ETHEREUM",
166
- smartContractAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
167
- },
168
- ],
169
- payment_methods: ["card"],
170
- };
171
- const result = adapter.mapConfigResponse(mockRevolutConfig, {
172
- chains: REAL_CHAINS,
173
- tokens: REAL_TOKENS,
174
- });
175
- expect(result.supportedTokens).toHaveLength(2);
176
- expect(result.supportedTokens.find((t) => t.symbol === "ETH")).toBeDefined();
177
- expect(result.supportedTokens.find((t) => t.symbol === "USDC")).toBeDefined();
178
- });
179
- });
180
- });
181
- //# sourceMappingURL=revolutClientAdapter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"revolutClientAdapter.test.js","sourceRoot":"","sources":["../../src/tests/revolutClientAdapter.test.ts"],"names":[],"mappings":"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"}