@0xsquid/react-hooks 6.4.1-beta.1 → 6.4.2-beta.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.
Files changed (89) 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/error.d.ts +1 -0
  11. package/dist/core/types/error.js.map +1 -1
  12. package/dist/core/types/event.d.ts +24 -1
  13. package/dist/core/types/index.d.ts +0 -1
  14. package/dist/hooks/index.d.ts +0 -3
  15. package/dist/hooks/index.js +0 -3
  16. package/dist/hooks/index.js.map +1 -1
  17. package/dist/hooks/transaction/useExecuteTransaction.js +47 -21
  18. package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -1
  19. package/dist/hooks/transaction/useGetRoute.js +35 -7
  20. package/dist/hooks/transaction/useGetRoute.js.map +1 -1
  21. package/dist/hooks/wallet/useEns.d.ts +1 -0
  22. package/dist/hooks/wallet/useEns.js +13 -1
  23. package/dist/hooks/wallet/useEns.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/services/index.d.ts +1 -1
  28. package/dist/services/index.js +1 -1
  29. package/dist/services/index.js.map +1 -1
  30. package/dist/services/internal/assetsService.d.ts +0 -2
  31. package/dist/services/internal/assetsService.js +1 -7
  32. package/dist/services/internal/assetsService.js.map +1 -1
  33. package/dist/services/internal/errorService.d.ts +13 -21
  34. package/dist/services/internal/errorService.js +104 -77
  35. package/dist/services/internal/errorService.js.map +1 -1
  36. package/dist/services/internal/eventService.d.ts +35 -1
  37. package/dist/services/internal/eventService.js +56 -0
  38. package/dist/services/internal/eventService.js.map +1 -1
  39. package/dist/services/internal/numberService.d.ts +22 -3
  40. package/dist/services/internal/numberService.js +22 -11
  41. package/dist/services/internal/numberService.js.map +1 -1
  42. package/dist/services/internal/transactionService.js +6 -3
  43. package/dist/services/internal/transactionService.js.map +1 -1
  44. package/dist/services/internal/walletService.js +28 -3
  45. package/dist/services/internal/walletService.js.map +1 -1
  46. package/dist/tests/assetsService.test.js +26 -13
  47. package/dist/tests/assetsService.test.js.map +1 -1
  48. package/dist/tests/numberService.test.js +27 -5
  49. package/dist/tests/numberService.test.js.map +1 -1
  50. package/package.json +2 -4
  51. package/dist/core/types/onramps/index.d.ts +0 -2
  52. package/dist/core/types/onramps/index.js +0 -3
  53. package/dist/core/types/onramps/index.js.map +0 -1
  54. package/dist/core/types/onramps/onramp.d.ts +0 -101
  55. package/dist/core/types/onramps/onramp.js +0 -2
  56. package/dist/core/types/onramps/onramp.js.map +0 -1
  57. package/dist/core/types/onramps/revolut.d.ts +0 -92
  58. package/dist/core/types/onramps/revolut.js +0 -2
  59. package/dist/core/types/onramps/revolut.js.map +0 -1
  60. package/dist/hooks/onramp/useFiatToCrypto.d.ts +0 -61
  61. package/dist/hooks/onramp/useFiatToCrypto.js +0 -190
  62. package/dist/hooks/onramp/useFiatToCrypto.js.map +0 -1
  63. package/dist/hooks/store/useFiatTransactionStore.d.ts +0 -20
  64. package/dist/hooks/store/useFiatTransactionStore.js +0 -38
  65. package/dist/hooks/store/useFiatTransactionStore.js.map +0 -1
  66. package/dist/hooks/utils/useUtils.d.ts +0 -7
  67. package/dist/hooks/utils/useUtils.js +0 -20
  68. package/dist/hooks/utils/useUtils.js.map +0 -1
  69. package/dist/services/external/baseAdapter.d.ts +0 -31
  70. package/dist/services/external/baseAdapter.js +0 -20
  71. package/dist/services/external/baseAdapter.js.map +0 -1
  72. package/dist/services/external/index.d.ts +0 -3
  73. package/dist/services/external/index.js +0 -4
  74. package/dist/services/external/index.js.map +0 -1
  75. package/dist/services/external/onramperClientAdapter.d.ts +0 -15
  76. package/dist/services/external/onramperClientAdapter.js +0 -130
  77. package/dist/services/external/onramperClientAdapter.js.map +0 -1
  78. package/dist/services/external/revolutClientAdapter.d.ts +0 -30
  79. package/dist/services/external/revolutClientAdapter.js +0 -195
  80. package/dist/services/external/revolutClientAdapter.js.map +0 -1
  81. package/dist/services/internal/countryCurrencyMap.d.ts +0 -6
  82. package/dist/services/internal/countryCurrencyMap.js +0 -945
  83. package/dist/services/internal/countryCurrencyMap.js.map +0 -1
  84. package/dist/services/internal/fiatToCryptoService.d.ts +0 -24
  85. package/dist/services/internal/fiatToCryptoService.js +0 -65
  86. package/dist/services/internal/fiatToCryptoService.js.map +0 -1
  87. package/dist/tests/revolutClientAdapter.test.d.ts +0 -1
  88. package/dist/tests/revolutClientAdapter.test.js +0 -181
  89. package/dist/tests/revolutClientAdapter.test.js.map +0 -1
@@ -1,31 +0,0 @@
1
- import { ChainData, Token } from "@0xsquid/squid-types";
2
- import { CountryWithCode, ExecuteFiatQuoteResult, ExecuteQuoteClient, FiatCurrencyEnhanced, FiatToCryptoConfig, OnRampQuoteResponse, OnRampTransactionStatus } from "../../core/types/onramps/onramp";
3
- export type ProviderInfo = {
4
- value: string;
5
- key: string;
6
- label: string;
7
- iconUrl: string;
8
- supportedPaymentMethods: readonly string[];
9
- };
10
- export declare abstract class BaseFiatToCryptoAdapter {
11
- abstract readonly key: string;
12
- abstract readonly label: string;
13
- abstract readonly supportedPaymentMethods: readonly string[];
14
- private readonly baseIconUrl;
15
- getInfo(): ProviderInfo;
16
- getCountryData(countryCode: string): CountryWithCode;
17
- getCurrencyData(currencyCode: string): FiatCurrencyEnhanced | undefined;
18
- abstract getQuote(fiatCurrency: string, cryptoCurrencyID: string, amount: number, paymentMethod?: string, region?: string): Promise<OnRampQuoteResponse>;
19
- abstract getTransactionStatus(transactionId: string, walletAddress?: string): Promise<OnRampTransactionStatus>;
20
- abstract executeQuote(executeQuoteRequest: ExecuteQuoteClient): Promise<ExecuteFiatQuoteResult>;
21
- abstract getConfiguration(squidConfig: {
22
- chains: ChainData[];
23
- tokens: Token[];
24
- }): Promise<FiatToCryptoConfig>;
25
- mapPaymentMethod?(method: string): string;
26
- mapConfigResponse?(data: any, squidConfig: {
27
- chains: ChainData[];
28
- tokens: Token[];
29
- }): FiatToCryptoConfig;
30
- mapQuoteResponse?(data: any, fiatCurrency: string, cryptoCurrencyID: string, originalAmount: number): OnRampQuoteResponse;
31
- }
@@ -1,20 +0,0 @@
1
- import { getCountryData, getCurrencyData, } from "../internal/fiatToCryptoService";
2
- export class BaseFiatToCryptoAdapter {
3
- baseIconUrl = "https://raw.githubusercontent.com/0xsquid/assets/main/images/webp128/onramps";
4
- getInfo() {
5
- return {
6
- value: this.key,
7
- key: this.key,
8
- label: this.label,
9
- supportedPaymentMethods: this.supportedPaymentMethods,
10
- iconUrl: `${this.baseIconUrl}/${this.key}.webp`,
11
- };
12
- }
13
- getCountryData(countryCode) {
14
- return getCountryData(countryCode);
15
- }
16
- getCurrencyData(currencyCode) {
17
- return getCurrencyData(currencyCode);
18
- }
19
- }
20
- //# sourceMappingURL=baseAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"baseAdapter.js","sourceRoot":"","sources":["../../../src/services/external/baseAdapter.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,cAAc,EACd,eAAe,GAChB,MAAM,iCAAiC,CAAC;AAUzC,MAAM,OAAgB,uBAAuB;IAO1B,WAAW,GAC1B,8EAA8E,CAAC;IAEjF,OAAO;QACL,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,OAAO;SAChD,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,WAAmB;QAChC,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,YAAoB;QAClC,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;CAsCF"}
@@ -1,3 +0,0 @@
1
- export { OnramperAdapter } from "./onramperClientAdapter";
2
- export { RevolutClientAdapter } from "./revolutClientAdapter";
3
- export { EnsService } from "./ens";
@@ -1,4 +0,0 @@
1
- export { OnramperAdapter } from "./onramperClientAdapter";
2
- export { RevolutClientAdapter } from "./revolutClientAdapter";
3
- export { EnsService } from "./ens";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/external/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC"}
@@ -1,15 +0,0 @@
1
- import { ExecuteFiatQuoteResult, ExecuteQuoteClient, FiatToCryptoConfig, OnRampQuoteResponse, OnRampTransactionStatus } from "../../core/types/onramps/onramp";
2
- import { BaseFiatToCryptoAdapter } from "./baseAdapter";
3
- export declare class OnramperAdapter extends BaseFiatToCryptoAdapter {
4
- readonly key = "onramper";
5
- readonly label = "Onramper";
6
- readonly supportedPaymentMethods: readonly ["credit_card", "bank_transfer"];
7
- private readonly baseUrl;
8
- private readonly apiKey;
9
- private getHeaders;
10
- getQuote(fiatCurrency: string, cryptoCurrency: string, amount: number): Promise<OnRampQuoteResponse>;
11
- getTransactionStatus(transactionId: string): Promise<OnRampTransactionStatus>;
12
- executeQuote(executeQuoteRequest: ExecuteQuoteClient): Promise<ExecuteFiatQuoteResult>;
13
- private getCryptoNetwork;
14
- getConfiguration(): Promise<FiatToCryptoConfig>;
15
- }
@@ -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,6 +0,0 @@
1
- export declare const countryCurrencyMap: {
2
- currencyCode: string;
3
- name: string;
4
- country: string;
5
- countryCode: string;
6
- }[];