@0xsquid/react-hooks 6.4.1-beta.4 → 6.4.1-onramp-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 (136) hide show
  1. package/dist/core/connectors/bitcoin/helpers.d.ts +0 -15
  2. package/dist/core/connectors/bitcoin/helpers.js +1 -6
  3. package/dist/core/connectors/bitcoin/helpers.js.map +1 -1
  4. package/dist/core/constants.d.ts +3 -1
  5. package/dist/core/constants.js +3 -6
  6. package/dist/core/constants.js.map +1 -1
  7. package/dist/core/index.d.ts +1 -1
  8. package/dist/core/index.js +1 -1
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/core/providers/SolanaProvider.d.ts +2 -0
  11. package/dist/core/providers/SolanaProvider.js.map +1 -1
  12. package/dist/core/queries/queries-keys.d.ts +26 -11
  13. package/dist/core/queries/queries-keys.js +81 -31
  14. package/dist/core/queries/queries-keys.js.map +1 -1
  15. package/dist/core/types/error.d.ts +4 -4
  16. package/dist/core/types/error.js.map +1 -1
  17. package/dist/core/types/event.d.ts +8 -0
  18. package/dist/core/types/index.d.ts +2 -4
  19. package/dist/core/types/index.js +1 -2
  20. package/dist/core/types/index.js.map +1 -1
  21. package/dist/core/types/onramps/onramp.d.ts +76 -2
  22. package/dist/core/types/transaction.d.ts +32 -10
  23. package/dist/core/types/transaction.js +0 -6
  24. package/dist/core/types/transaction.js.map +1 -1
  25. package/dist/core/wagmiConfig.js +8 -2
  26. package/dist/core/wagmiConfig.js.map +1 -1
  27. package/dist/hooks/cosmos/useCosmos.d.ts +0 -9
  28. package/dist/hooks/cosmos/useCosmos.js +18 -25
  29. package/dist/hooks/cosmos/useCosmos.js.map +1 -1
  30. package/dist/hooks/cosmos/useCosmosForChain.d.ts +1 -1
  31. package/dist/hooks/cosmos/useCosmosForChain.js +11 -7
  32. package/dist/hooks/cosmos/useCosmosForChain.js.map +1 -1
  33. package/dist/hooks/index.d.ts +2 -7
  34. package/dist/hooks/index.js +2 -7
  35. package/dist/hooks/index.js.map +1 -1
  36. package/dist/hooks/onramp/useFiatToCrypto.d.ts +52 -44
  37. package/dist/hooks/onramp/useFiatToCrypto.js +160 -83
  38. package/dist/hooks/onramp/useFiatToCrypto.js.map +1 -1
  39. package/dist/hooks/solana/useSolana.d.ts +1 -2
  40. package/dist/hooks/solana/useSolana.js +2 -4
  41. package/dist/hooks/solana/useSolana.js.map +1 -1
  42. package/dist/hooks/store/useFiatTransactionStore.d.ts +20 -0
  43. package/dist/hooks/store/useFiatTransactionStore.js +39 -0
  44. package/dist/hooks/store/useFiatTransactionStore.js.map +1 -0
  45. package/dist/hooks/store/useHistoryStore.d.ts +13 -33
  46. package/dist/hooks/store/useHistoryStore.js +32 -120
  47. package/dist/hooks/store/useHistoryStore.js.map +1 -1
  48. package/dist/hooks/transaction/useAllTransactionsStatus.d.ts +3 -34
  49. package/dist/hooks/transaction/useAllTransactionsStatus.js +61 -130
  50. package/dist/hooks/transaction/useAllTransactionsStatus.js.map +1 -1
  51. package/dist/hooks/transaction/useApproval.js +2 -2
  52. package/dist/hooks/transaction/useApproval.js.map +1 -1
  53. package/dist/hooks/transaction/useEstimate.d.ts +1 -1
  54. package/dist/hooks/transaction/useExecuteTransaction.d.ts +1 -1
  55. package/dist/hooks/transaction/useExecuteTransaction.js +43 -40
  56. package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -1
  57. package/dist/hooks/transaction/useSingleTransaction.d.ts +10 -0
  58. package/dist/hooks/transaction/{useSwapTransactionStatus.js → useSingleTransaction.js} +17 -40
  59. package/dist/hooks/transaction/useSingleTransaction.js.map +1 -0
  60. package/dist/hooks/user/useHistory.d.ts +9 -11
  61. package/dist/hooks/user/useHistory.js +47 -39
  62. package/dist/hooks/user/useHistory.js.map +1 -1
  63. package/dist/hooks/wallet/useMultiChainWallet.d.ts +0 -1
  64. package/dist/hooks/wallet/useMultiChainWallet.js +0 -18
  65. package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
  66. package/dist/hooks/wallet/useSigner.d.ts +7 -7
  67. package/dist/hooks/wallet/useSigner.js +13 -37
  68. package/dist/hooks/wallet/useSigner.js.map +1 -1
  69. package/dist/services/external/index.d.ts +0 -2
  70. package/dist/services/external/index.js +0 -2
  71. package/dist/services/external/index.js.map +1 -1
  72. package/dist/services/external/onrampAdapter.d.ts +12 -0
  73. package/dist/services/external/onrampAdapter.js +41 -0
  74. package/dist/services/external/onrampAdapter.js.map +1 -0
  75. package/dist/services/internal/errorService.d.ts +7 -3
  76. package/dist/services/internal/errorService.js.map +1 -1
  77. package/dist/services/internal/estimateService.js +3 -3
  78. package/dist/services/internal/estimateService.js.map +1 -1
  79. package/dist/services/internal/eventService.d.ts +16 -0
  80. package/dist/services/internal/eventService.js +14 -0
  81. package/dist/services/internal/eventService.js.map +1 -1
  82. package/dist/services/internal/fiatToCryptoService.d.ts +1 -14
  83. package/dist/services/internal/fiatToCryptoService.js +0 -29
  84. package/dist/services/internal/fiatToCryptoService.js.map +1 -1
  85. package/dist/services/internal/numberService.d.ts +1 -1
  86. package/dist/services/internal/numberService.js.map +1 -1
  87. package/dist/services/internal/transactionService.d.ts +36 -8
  88. package/dist/services/internal/transactionService.js +26 -27
  89. package/dist/services/internal/transactionService.js.map +1 -1
  90. package/dist/services/internal/transactionStatusService.d.ts +5 -16
  91. package/dist/services/internal/transactionStatusService.js +5 -78
  92. package/dist/services/internal/transactionStatusService.js.map +1 -1
  93. package/dist/tests/transactionService.test.js +18 -18
  94. package/dist/tests/transactionService.test.js.map +1 -1
  95. package/package.json +1 -1
  96. package/dist/core/client/index.d.ts +0 -12
  97. package/dist/core/client/index.js +0 -30
  98. package/dist/core/client/index.js.map +0 -1
  99. package/dist/core/types/history.d.ts +0 -82
  100. package/dist/core/types/history.js +0 -7
  101. package/dist/core/types/history.js.map +0 -1
  102. package/dist/hooks/store/useSendTransactionStore.d.ts +0 -20
  103. package/dist/hooks/store/useSendTransactionStore.js +0 -21
  104. package/dist/hooks/store/useSendTransactionStore.js.map +0 -1
  105. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.d.ts +0 -27
  106. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js +0 -57
  107. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js.map +0 -1
  108. package/dist/hooks/transaction/send/useSendTransaction.d.ts +0 -13
  109. package/dist/hooks/transaction/send/useSendTransaction.js +0 -155
  110. package/dist/hooks/transaction/send/useSendTransaction.js.map +0 -1
  111. package/dist/hooks/transaction/send/useSendTransactionGas.d.ts +0 -5
  112. package/dist/hooks/transaction/send/useSendTransactionGas.js +0 -67
  113. package/dist/hooks/transaction/send/useSendTransactionGas.js.map +0 -1
  114. package/dist/hooks/transaction/useSendTransactionStatus.d.ts +0 -11
  115. package/dist/hooks/transaction/useSendTransactionStatus.js +0 -53
  116. package/dist/hooks/transaction/useSendTransactionStatus.js.map +0 -1
  117. package/dist/hooks/transaction/useSwapTransactionStatus.d.ts +0 -15
  118. package/dist/hooks/transaction/useSwapTransactionStatus.js.map +0 -1
  119. package/dist/services/external/baseAdapter.d.ts +0 -31
  120. package/dist/services/external/baseAdapter.js +0 -20
  121. package/dist/services/external/baseAdapter.js.map +0 -1
  122. package/dist/services/external/onramperClientAdapter.d.ts +0 -15
  123. package/dist/services/external/onramperClientAdapter.js +0 -130
  124. package/dist/services/external/onramperClientAdapter.js.map +0 -1
  125. package/dist/services/external/revolutClientAdapter.d.ts +0 -30
  126. package/dist/services/external/revolutClientAdapter.js +0 -195
  127. package/dist/services/external/revolutClientAdapter.js.map +0 -1
  128. package/dist/services/internal/sendTransaction.d.ts +0 -35
  129. package/dist/services/internal/sendTransaction.js +0 -66
  130. package/dist/services/internal/sendTransaction.js.map +0 -1
  131. package/dist/services/internal/sendTransactionStatus.d.ts +0 -6
  132. package/dist/services/internal/sendTransactionStatus.js +0 -90
  133. package/dist/services/internal/sendTransactionStatus.js.map +0 -1
  134. package/dist/tests/revolutClientAdapter.test.d.ts +0 -1
  135. package/dist/tests/revolutClientAdapter.test.js +0 -181
  136. package/dist/tests/revolutClientAdapter.test.js.map +0 -1
@@ -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 { BETA_INTERNAL_API_BASE_URL, DEFAULT_COUNTRY_CODE, 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 = `${BETA_INTERNAL_API_BASE_URL}/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 = DEFAULT_COUNTRY_CODE) {
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 || DEFAULT_COUNTRY_CODE,
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,35 +0,0 @@
1
- import { Token } from "@0xsquid/squid-types";
2
- import { Adapter as SolanaAdapter } from "@solana/wallet-adapter-base";
3
- import { JsonRpcSigner } from "ethers";
4
- import { OfflineSigner } from "@cosmjs/proto-signing";
5
- import { Connection as SolanaConnection } from "@solana/web3.js";
6
- import { BitcoinConnector } from "../../core/connectors/bitcoin";
7
- interface SendTransactionParams {
8
- to: string;
9
- amount: string;
10
- token: Token;
11
- }
12
- export interface SendTransactionResponse {
13
- txHash: string;
14
- }
15
- interface SendTransactionEvmParams extends SendTransactionParams {
16
- signer: JsonRpcSigner;
17
- rpcUrl: string;
18
- }
19
- export declare function sendTransactionEvm({ to, amount, token, signer, rpcUrl, }: SendTransactionEvmParams): Promise<SendTransactionResponse>;
20
- interface SendTransactionCosmosParams extends SendTransactionParams {
21
- signer: OfflineSigner;
22
- rpcUrl: string;
23
- nativeToken: Token;
24
- }
25
- export declare function sendTransactionCosmos({ amount, rpcUrl, signer, to, token, nativeToken, }: SendTransactionCosmosParams): Promise<SendTransactionResponse>;
26
- interface SendTxSolanaParams extends SendTransactionParams {
27
- signer: SolanaAdapter;
28
- connection: SolanaConnection;
29
- }
30
- export declare function sendTransactionSolana({ signer, amount, to, token, connection, }: SendTxSolanaParams): Promise<SendTransactionResponse>;
31
- interface SendTxBitcoinParams extends SendTransactionParams {
32
- signer: BitcoinConnector;
33
- }
34
- export declare function sendTransactionBitcoin({ amount, signer, to, }: SendTxBitcoinParams): Promise<SendTransactionResponse>;
35
- export {};
@@ -1,66 +0,0 @@
1
- import { Contract, JsonRpcProvider } from "ethers";
2
- import { nativeEvmTokenAddress } from "../../core/constants";
3
- import { coin } from "@cosmjs/proto-signing";
4
- import { SigningStargateClient, } from "@cosmjs/stargate";
5
- import { erc20Abi } from "viem";
6
- import { executeSolanaTransfer } from "./solanaService";
7
- export async function sendTransactionEvm({ to, amount, token, signer, rpcUrl, }) {
8
- const isNativeToken = token.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
9
- if (isNativeToken) {
10
- const tx = await signer.sendTransaction({
11
- to,
12
- value: amount,
13
- chainId: Number(token.chainId),
14
- });
15
- return {
16
- txHash: tx.hash,
17
- };
18
- }
19
- const provider = new JsonRpcProvider(rpcUrl);
20
- const erc20Contract = new Contract(token.address, erc20Abi, provider);
21
- const encodedTransferCall = erc20Contract.interface.encodeFunctionData("transfer", [to, amount]);
22
- const tx = await signer.sendTransaction({
23
- to: token.address,
24
- data: encodedTransferCall,
25
- chainId: Number(token.chainId),
26
- });
27
- return {
28
- txHash: tx.hash,
29
- };
30
- }
31
- export async function sendTransactionCosmos({ amount, rpcUrl, signer, to, token, nativeToken, }) {
32
- const accounts = await signer.getAccounts();
33
- const signingClient = await SigningStargateClient.connectWithSigner(rpcUrl, signer);
34
- const senderAddress = accounts[0].address;
35
- const coins = [coin(amount, token.address)];
36
- const fee = {
37
- amount: [coin("500", nativeToken.address)],
38
- gas: "150000",
39
- };
40
- const sendMsg = {
41
- typeUrl: "/cosmos.bank.v1beta1.MsgSend",
42
- value: {
43
- fromAddress: senderAddress,
44
- toAddress: to,
45
- amount: coins,
46
- },
47
- };
48
- const txHash = await signingClient.signAndBroadcastSync(senderAddress, [sendMsg], fee);
49
- return { txHash };
50
- }
51
- export async function sendTransactionSolana({ signer, amount, to, token, connection, }) {
52
- const amountBn = BigInt(amount);
53
- const txHash = await executeSolanaTransfer({
54
- amount: amountBn,
55
- connection,
56
- signer,
57
- target: to,
58
- sourceToken: token,
59
- });
60
- return { txHash };
61
- }
62
- export async function sendTransactionBitcoin({ amount, signer, to, }) {
63
- const { txHash } = await signer.sendBTC(to, Number(amount));
64
- return { txHash };
65
- }
66
- //# sourceMappingURL=sendTransaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sendTransaction.js","sourceRoot":"","sources":["../../../src/services/internal/sendTransaction.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import { ChainData } from "@0xsquid/squid-types";
2
- import { SendTransactionStatus } from "../../core/types/transaction";
3
- export declare function getSendTransactionStatus({ chain, txHash, }: {
4
- chain: ChainData;
5
- txHash: string;
6
- }): Promise<SendTransactionStatus>;
@@ -1,90 +0,0 @@
1
- import { ChainType } from "@0xsquid/squid-types";
2
- import { AxiosError } from "axios";
3
- import { getClient } from "../../core/client";
4
- import { getTransactionStatus as getBtcTxStatus } from "../../core/connectors/bitcoin/helpers";
5
- import { SendTransactionStatus } from "../../core/types/transaction";
6
- async function getTxStatusEvm({ chain, txHash, }) {
7
- const client = await getClient(chain);
8
- const receipt = await client.getTransactionReceipt(txHash);
9
- if (!receipt)
10
- return SendTransactionStatus.ONGOING;
11
- switch (receipt.status) {
12
- case 0:
13
- return SendTransactionStatus.ERROR;
14
- case 1:
15
- return SendTransactionStatus.SUCCESS;
16
- }
17
- return SendTransactionStatus.ONGOING;
18
- }
19
- async function getTxStatusCosmos({ txHash, chain, }) {
20
- const client = await getClient(chain);
21
- const tx = await client.getTx(txHash);
22
- if (!tx) {
23
- return SendTransactionStatus.ONGOING;
24
- }
25
- if (tx.code === 0) {
26
- return SendTransactionStatus.SUCCESS;
27
- }
28
- return SendTransactionStatus.ERROR;
29
- }
30
- async function getTxStatusSolana({ txHash, chain, }) {
31
- const client = await getClient(chain);
32
- const txStatus = await client.getSignatureStatus(txHash, {
33
- searchTransactionHistory: true,
34
- });
35
- if (!txStatus.value) {
36
- return SendTransactionStatus.ONGOING;
37
- }
38
- if (txStatus.value.err) {
39
- return SendTransactionStatus.ERROR;
40
- }
41
- switch (txStatus.value.confirmationStatus) {
42
- case "processed":
43
- case "confirmed":
44
- return SendTransactionStatus.ONGOING;
45
- case "finalized":
46
- return SendTransactionStatus.SUCCESS;
47
- }
48
- return SendTransactionStatus.ONGOING;
49
- }
50
- async function getTxStatusBitcoin({ txHash, }) {
51
- try {
52
- const response = await getBtcTxStatus(txHash);
53
- if (response.status.confirmed) {
54
- return SendTransactionStatus.SUCCESS;
55
- }
56
- return SendTransactionStatus.ONGOING;
57
- }
58
- catch (error) {
59
- if (error instanceof AxiosError) {
60
- if (/transaction not found/i.test(error.message)) {
61
- return SendTransactionStatus.ONGOING;
62
- }
63
- }
64
- throw error;
65
- }
66
- }
67
- export async function getSendTransactionStatus({ chain, txHash, }) {
68
- switch (chain.chainType) {
69
- case ChainType.EVM:
70
- return getTxStatusEvm({
71
- txHash,
72
- chain,
73
- });
74
- case ChainType.COSMOS:
75
- return getTxStatusCosmos({
76
- txHash,
77
- chain,
78
- });
79
- case ChainType.SOLANA:
80
- return getTxStatusSolana({
81
- txHash,
82
- chain,
83
- });
84
- case ChainType.BTC:
85
- return getTxStatusBitcoin({
86
- txHash,
87
- });
88
- }
89
- }
90
- //# sourceMappingURL=sendTransactionStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sendTransactionStatus.js","sourceRoot":"","sources":["../../../src/services/internal/sendTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -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":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,OAA6B,CAAC;IAClC,IAAI,SAAS,GAAsB,SAAS,CAAC;IAC7C,IAAI,WAAW,GAAgB,EAAE,CAAC;IAClC,IAAI,WAAW,GAAY,EAAE,CAAC;IAE9B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;QACzC,WAAW,GAAG,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC;QACtC,WAAW,GAAG,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC9E,MAAM,iBAAiB,GAAyB;gBAC9C,WAAW,EAAE;oBACX,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;iBAChB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,UAAU;iBACvB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;iBAChB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,yBAAyB;YAC9C,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAC7D,iBAAiB,EACjB,MAAM,CACP,CAAC;YAEF,mDAAmD;YACnD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,oDAAoD;YACpD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACnC,MAAM,iBAAiB,GAAyB;gBAC9C,WAAW,EAAE;oBACX,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,KAAK;iBAChB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,UAAU;iBACvB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,KAAK;iBAChB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAC7D,iBAAiB,EACjB,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,MAAM,iBAAiB,GAAyB;gBAC9C,WAAW,EAAE;oBACX,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;iBAChB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,GAAG;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK;iBAChB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,GAAG,CAAC;YACnB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAC7D,iBAAiB,EACjB,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iDAAiD;YAC/E,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;YACpE,MAAM,iBAAiB,GAAyB;gBAC9C,WAAW,EAAE;oBACX,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK,EAAE,iBAAiB;iBACnC;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;iBAChB;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,UAAU;iBACvB;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,KAAK;iBAChB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAC7D,iBAAiB,EACjB,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAClE,MAAM,iBAAiB,GAAkB;gBACvC,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC7B,IAAI,EAAE;oBACJ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;oBACnD,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;iBACpD;gBACD,MAAM,EAAE;oBACN;wBACE,EAAE,EAAE,KAAK;wBACT,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,UAAU;qBACvB;oBACD;wBACE,EAAE,EAAE,UAAU;wBACd,QAAQ,EAAE,MAAM;wBAChB,UAAU,EAAE,UAAU;wBACtB,oBAAoB,EAAE,4CAA4C;qBACnE;iBACF;gBACD,eAAe,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;aACrC,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;gBAC1D,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;YAClF,MAAM,iBAAiB,GAAkB;gBACvC,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAC3D,MAAM,EAAE;oBACN;wBACE,EAAE,EAAE,KAAK;wBACT,QAAQ,EAAE,KAAK;wBACf,UAAU,EAAE,UAAU;qBACvB;oBACD;wBACE,EAAE,EAAE,UAAU;wBACd,QAAQ,EAAE,MAAM;wBAChB,UAAU,EAAE,UAAU;wBACtB,oBAAoB,EAAE,4CAA4C;qBACnE;iBACF;gBACD,eAAe,EAAE,CAAC,MAAM,CAAC;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAAE;gBAC1D,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CACJ,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CACvD,CAAC,WAAW,EAAE,CAAC;YAChB,MAAM,CACJ,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CACxD,CAAC,WAAW,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}