@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,57 +0,0 @@
1
- import { useMemo } from "react";
2
- import { chainTypeToNativeTokenAddressMap } from "../../../core/constants";
3
- import { useNativeBalance } from "../../../hooks/tokens/useNativeBalance";
4
- import { parseToBigInt } from "../../../services";
5
- import { calculateMinAmountValueWarnMsg } from "../../../services/internal/estimateService";
6
- import { useSendTransactionGas } from "./useSendTransactionGas";
7
- export function useEstimateSendTransaction({ chain, token, amount, balance, }) {
8
- const { data: estimatedGas = BigInt(0), isLoading } = useSendTransactionGas({
9
- chain,
10
- token,
11
- });
12
- const { nativeBalance } = useNativeBalance(chain);
13
- const isNativeBalanceEnoughToPayGasFees = useMemo(() => {
14
- if (!nativeBalance?.value || !amount || !token?.decimals) {
15
- return false;
16
- }
17
- const isTokenNative = token.address.toLowerCase() ===
18
- chainTypeToNativeTokenAddressMap[token.type].toLowerCase();
19
- if (isTokenNative) {
20
- return (parseToBigInt(amount, token.decimals) + estimatedGas <=
21
- nativeBalance.value);
22
- }
23
- return estimatedGas <= nativeBalance.value;
24
- }, [amount, estimatedGas, nativeBalance?.value, token]);
25
- const isBalanceEnough = useMemo(() => {
26
- if (token?.decimals == null || !balance || !amount)
27
- return false;
28
- return (parseToBigInt(balance, token.decimals) >=
29
- parseToBigInt(amount, token.decimals));
30
- }, [amount, balance, token?.decimals]);
31
- const minAmountValueWarnMsg = useMemo(() => {
32
- if (!token?.address || !nativeBalance?.value || !estimatedGas)
33
- return undefined;
34
- const isFromTokenNative = token.address.toLowerCase() ===
35
- chainTypeToNativeTokenAddressMap[token.type].toLowerCase();
36
- return calculateMinAmountValueWarnMsg({
37
- isFromTokenNative,
38
- nativeTokenBalanceFromChainWei: nativeBalance.value,
39
- sourceChainNativeTokenDecimals: nativeBalance.decimals,
40
- totalFeesInNativeTokenPlusRatio: estimatedGas,
41
- });
42
- }, [
43
- estimatedGas,
44
- nativeBalance?.decimals,
45
- nativeBalance?.value,
46
- token?.address,
47
- token?.type,
48
- ]);
49
- return {
50
- estimatedGas,
51
- isBalanceEnough,
52
- isLoading,
53
- isNativeBalanceEnoughToPayGasFees,
54
- minAmountValueWarnMsg,
55
- };
56
- }
57
- //# sourceMappingURL=useEstimateSendTransactionGas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useEstimateSendTransactionGas.js","sourceRoot":"","sources":["../../../../src/hooks/transaction/send/useEstimateSendTransactionGas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAsBhE,MAAM,UAAU,0BAA0B,CAAC,EACzC,KAAK,EACL,KAAK,EACL,MAAM,EACN,OAAO,GAMR;IACC,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC;QAC1E,KAAK;QACL,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,iCAAiC,GAAG,OAAO,CAAC,GAAG,EAAE;QACrD,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE;YACxD,OAAO,KAAK,CAAC;SACd;QAED,MAAM,aAAa,GACjB,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3B,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7D,IAAI,aAAa,EAAE;YACjB,OAAO,CACL,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,YAAY;gBACpD,aAAa,CAAC,KAAK,CACpB,CAAC;SACH;QAED,OAAO,YAAY,IAAI,aAAa,CAAC,KAAK,CAAC;IAC7C,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAExD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,IAAI,KAAK,EAAE,QAAQ,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAEjE,OAAO,CACL,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;YACtC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CACtC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE;QACzC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,YAAY;YAC3D,OAAO,SAAS,CAAC;QAEnB,MAAM,iBAAiB,GACrB,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3B,gCAAgC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7D,OAAO,8BAA8B,CAAC;YACpC,iBAAiB;YACjB,8BAA8B,EAAE,aAAa,CAAC,KAAK;YACnD,8BAA8B,EAAE,aAAa,CAAC,QAAQ;YACtD,+BAA+B,EAAE,YAAY;SAC9C,CAAC,CAAC;IACL,CAAC,EAAE;QACD,YAAY;QACZ,aAAa,EAAE,QAAQ;QACvB,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,YAAY;QACZ,eAAe;QACf,SAAS;QACT,iCAAiC;QACjC,qBAAqB;KACtB,CAAC;AACJ,CAAC"}
@@ -1,13 +0,0 @@
1
- import { ChainData, Token } from "@0xsquid/squid-types";
2
- interface UseSendTransactionParams {
3
- to: string | undefined;
4
- amount: string | undefined;
5
- token: Token | undefined;
6
- chain: ChainData | undefined;
7
- }
8
- interface UseSendTransactionReturnType {
9
- sendTransaction: () => void;
10
- isSignerReady: boolean;
11
- }
12
- export declare function useSendTransaction({ to, amount, token, chain, }: UseSendTransactionParams): UseSendTransactionReturnType;
13
- export {};
@@ -1,155 +0,0 @@
1
- import { ChainType } from "@0xsquid/squid-types";
2
- import { useMutation, useQueryClient } from "@tanstack/react-query";
3
- import { useCallback } from "react";
4
- import { getPrefixKey, QueryKeys } from "../../../core/queries/queries-keys";
5
- import { HistoryTxType } from "../../../core/types/history";
6
- import { SendTransactionStatus } from "../../../core/types/transaction";
7
- import { useHistoryStore } from "../../../hooks/store/useHistoryStore";
8
- import { useSendTransactionStore, } from "../../../hooks/store/useSendTransactionStore";
9
- import { useNativeTokenForChain } from "../../../hooks/tokens/useNativeTokenForChain";
10
- import { isWalletAddressValid, parseToBigInt } from "../../../services";
11
- import { getWorkingCosmosRpcUrl } from "../../../services/external/rpcService";
12
- import { getTransactionError } from "../../../services/internal/errorService";
13
- import { sendTransactionBitcoin, sendTransactionCosmos, sendTransactionEvm, sendTransactionSolana, } from "../../../services/internal/sendTransaction";
14
- import { useSolanaConnection } from "../../solana/useSolana";
15
- import { useSigner } from "../../wallet/useSigner";
16
- export function useSendTransaction({ to, amount, token, chain, }) {
17
- const { evmSigner, cosmosSigner, solanaSigner, bitcoinSigner, isSignerReady, } = useSigner({
18
- chain,
19
- });
20
- const solanaClient = useSolanaConnection();
21
- const queryClient = useQueryClient();
22
- const { nativeToken } = useNativeTokenForChain(chain);
23
- const getTransaction = useSendTransactionStore((state) => state.getTransaction);
24
- const setTransactionState = useSendTransactionStore((state) => state.setTransactionState);
25
- const persistTransaction = useHistoryStore((state) => state.persistTransaction);
26
- const sendTransactionMutation = useMutation({
27
- mutationFn: async () => {
28
- const allParamsDefined = token && to && amount && chain;
29
- if (!allParamsDefined)
30
- throw new Error("Need all params");
31
- if (token.type !== chain.chainType) {
32
- throw new Error("Invalid token or chain");
33
- }
34
- const isValidDestinationAddress = isWalletAddressValid(chain, to);
35
- if (!isValidDestinationAddress) {
36
- throw new Error("Invalid destination address");
37
- }
38
- const rawAmount = parseToBigInt(amount, token.decimals).toString();
39
- let tx;
40
- switch (token.type) {
41
- case ChainType.EVM:
42
- if (!evmSigner) {
43
- throw new Error("Need EVM signer");
44
- }
45
- tx = await sendTransactionEvm({
46
- to,
47
- amount: rawAmount,
48
- token,
49
- signer: evmSigner,
50
- rpcUrl: chain.rpc,
51
- });
52
- break;
53
- case ChainType.COSMOS:
54
- if (!cosmosSigner) {
55
- throw new Error("Need Cosmos signer");
56
- }
57
- if (!nativeToken) {
58
- throw new Error("Need Cosmos native token");
59
- }
60
- const rpcUrl = await getWorkingCosmosRpcUrl(chain);
61
- tx = await sendTransactionCosmos({
62
- amount: rawAmount,
63
- rpcUrl,
64
- signer: cosmosSigner,
65
- to,
66
- token,
67
- nativeToken,
68
- });
69
- break;
70
- case ChainType.SOLANA:
71
- if (!solanaSigner) {
72
- throw new Error("Need Solana signer");
73
- }
74
- tx = await sendTransactionSolana({
75
- amount: rawAmount,
76
- to,
77
- token,
78
- connection: solanaClient,
79
- signer: solanaSigner,
80
- });
81
- break;
82
- case ChainType.BTC:
83
- if (!bitcoinSigner) {
84
- throw new Error("Need Bitcoin signer");
85
- }
86
- tx = await sendTransactionBitcoin({
87
- amount: rawAmount,
88
- to,
89
- token,
90
- signer: bitcoinSigner,
91
- });
92
- break;
93
- }
94
- return {
95
- amount,
96
- to,
97
- token,
98
- txHash: tx.txHash,
99
- };
100
- },
101
- onMutate: (variables) => {
102
- useSendTransactionStore.setState({
103
- txLocalId: variables.id,
104
- currentTransaction: undefined,
105
- });
106
- },
107
- onError: (error, variables) => {
108
- const currentTx = getTransaction(variables.id);
109
- const errorObject = getTransactionError(error);
110
- setTransactionState(variables.id, {
111
- ...currentTx,
112
- error: errorObject,
113
- });
114
- },
115
- onSuccess: (tx, variables) => {
116
- queryClient.invalidateQueries(getPrefixKey(QueryKeys.Balance));
117
- setTransactionState(variables.id, tx);
118
- persistTransaction({
119
- txType: HistoryTxType.SEND,
120
- data: {
121
- amount: tx.amount,
122
- token: {
123
- address: tx.token.address,
124
- chainId: tx.token.chainId,
125
- decimals: tx.token.decimals,
126
- symbol: tx.token.symbol,
127
- type: tx.token.type,
128
- },
129
- hash: tx.txHash,
130
- timestamp: Date.now(),
131
- toAddress: tx.to,
132
- status: SendTransactionStatus.ONGOING,
133
- },
134
- });
135
- // Check if needed
136
- // Dispatch postSwap event after successful swap
137
- // if (squidRoute && sourceUserAddress && currentTx?.transactionId) {
138
- // dispatchPostSwapEvent(squidRoute, currentTx.transactionId);
139
- // }
140
- },
141
- });
142
- const sendTransaction = useCallback(async () => {
143
- const transactionId = Date.now().toString();
144
- // TODO: add events
145
- // Dispatch preSwap event before executing the swap
146
- // if (squidRoute) {
147
- // dispatchPreSwapEvent(squidRoute);
148
- // }
149
- return sendTransactionMutation.mutate({
150
- id: transactionId,
151
- });
152
- }, [sendTransactionMutation.mutate]);
153
- return { sendTransaction, isSignerReady };
154
- }
155
- //# sourceMappingURL=useSendTransaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSendTransaction.js","sourceRoot":"","sources":["../../../../src/hooks/transaction/send/useSendTransaction.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { ChainData, Token } from "@0xsquid/squid-types";
2
- export declare function useSendTransactionGas({ chain, token, }: {
3
- chain: ChainData | undefined;
4
- token: Token | undefined;
5
- }): import("@tanstack/react-query").UseQueryResult<bigint, unknown>;
@@ -1,67 +0,0 @@
1
- import { ChainType } from "@0xsquid/squid-types";
2
- import { useQuery } from "@tanstack/react-query";
3
- import { Interface } from "ethers";
4
- import { erc20Abi } from "viem";
5
- import { getClient } from "../../../core/client";
6
- import { getFeeRate } from "../../../core/connectors/bitcoin/helpers";
7
- import { nativeEvmTokenAddress } from "../../../core/constants";
8
- import { keys } from "../../../core/queries/queries-keys";
9
- export function useSendTransactionGas({ chain, token, }) {
10
- return useQuery({
11
- queryKey: keys().sendTransactionGas(chain?.chainId, token?.address),
12
- queryFn: async () => {
13
- if (!chain || !token)
14
- throw new Error("Missing params");
15
- switch (chain.chainType) {
16
- case ChainType.EVM: {
17
- const client = await getClient(chain);
18
- const feeData = await client.getFeeData();
19
- if (!feeData.maxFeePerGas)
20
- return BigInt(0);
21
- const dummyAddress = "0x1111111111111111111111111111111111111111";
22
- if (token.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase()) {
23
- const gas = await client.estimateGas({
24
- from: dummyAddress,
25
- to: dummyAddress,
26
- value: 1,
27
- chainId: chain.chainId,
28
- });
29
- return gas * feeData.maxFeePerGas;
30
- }
31
- const erc20Interface = new Interface(erc20Abi);
32
- const data = erc20Interface.encodeFunctionData("transfer", [
33
- dummyAddress,
34
- 1,
35
- ]);
36
- const gas = await client.estimateGas({
37
- from: dummyAddress,
38
- to: token.address,
39
- data,
40
- chainId: chain.chainId,
41
- });
42
- return gas * feeData.maxFeePerGas;
43
- }
44
- case ChainType.COSMOS: {
45
- // TODO: get gas estimation from backend
46
- return BigInt(0);
47
- }
48
- case ChainType.SOLANA: {
49
- // TODO: get gas estimation from backend
50
- return BigInt(5000);
51
- }
52
- case ChainType.BTC: {
53
- const feeRate = await getFeeRate();
54
- // average vBytes for a segwit tx (2 inputs, 2 outputs)
55
- const vBytes = 378;
56
- const feeSats = feeRate * vBytes;
57
- // TODO: get gas estimation from backend?
58
- return BigInt(feeSats);
59
- }
60
- default:
61
- throw new Error(`Gas estimation not implemented for chain type ${chain.chainType}`);
62
- }
63
- },
64
- enabled: !!chain && !!token,
65
- });
66
- }
67
- //# sourceMappingURL=useSendTransactionGas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSendTransactionGas.js","sourceRoot":"","sources":["../../../../src/hooks/transaction/send/useSendTransactionGas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAS,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE1D,MAAM,UAAU,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,GAIN;IACC,OAAO,QAAQ,CAAS;QACtB,QAAQ,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;QACnE,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAExD,QAAQ,KAAK,CAAC,SAAS,EAAE;gBACvB,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC;oBAClB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAgB,KAAK,CAAC,CAAC;oBACrD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;oBAE1C,IAAI,CAAC,OAAO,CAAC,YAAY;wBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;oBAE5C,MAAM,YAAY,GAAG,4CAA4C,CAAC;oBAElE,IACE,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,qBAAqB,CAAC,WAAW,EAAE,EACnE;wBACA,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;4BACnC,IAAI,EAAE,YAAY;4BAClB,EAAE,EAAE,YAAY;4BAChB,KAAK,EAAE,CAAC;4BACR,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC,CAAC;wBAEH,OAAO,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;qBACnC;oBAED,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAE/C,MAAM,IAAI,GAAG,cAAc,CAAC,kBAAkB,CAAC,UAAU,EAAE;wBACzD,YAAY;wBACZ,CAAC;qBACF,CAAC,CAAC;oBAEH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;wBACnC,IAAI,EAAE,YAAY;wBAClB,EAAE,EAAE,KAAK,CAAC,OAAO;wBACjB,IAAI;wBACJ,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAC,CAAC;oBAEH,OAAO,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;iBACnC;gBACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;oBACrB,wCAAwC;oBACxC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;iBAClB;gBACD,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC;oBACrB,wCAAwC;oBACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;iBACrB;gBACD,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC;oBAClB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;oBAEnC,uDAAuD;oBACvD,MAAM,MAAM,GAAG,GAAG,CAAC;oBACnB,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;oBAEjC,yCAAyC;oBACzC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;iBACxB;gBAED;oBACE,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,CAAC,SAAS,EAAE,CACnE,CAAC;aACL;QACH,CAAC;QACD,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK;KAC5B,CAAC,CAAC;AACL,CAAC"}
@@ -1,11 +0,0 @@
1
- import { ChainData } from "@0xsquid/squid-types";
2
- import { SendTransactionStatus } from "../../core/types/transaction";
3
- interface UseSendTransactionStatusParams {
4
- chain: ChainData | undefined;
5
- txHash: string | undefined;
6
- }
7
- interface UseSendTransactionStatusReturnType {
8
- status: SendTransactionStatus | undefined;
9
- }
10
- export declare function useSendTransactionStatus({ chain, txHash, }: UseSendTransactionStatusParams): UseSendTransactionStatusReturnType;
11
- export {};
@@ -1,53 +0,0 @@
1
- import { useQuery } from "@tanstack/react-query";
2
- import { useMemo, useState } from "react";
3
- import { keys } from "../../core/queries/queries-keys";
4
- import { HistoryTxType } from "../../core/types/history";
5
- import { SendTransactionStatus } from "../../core/types/transaction";
6
- import { getSendTransactionStatus } from "../../services/internal/sendTransactionStatus";
7
- import { getSendTxStatusRefetchInterval, isHistoryTransactionEnded, } from "../../services/internal/transactionStatusService";
8
- import { useHistoryStore } from "../store/useHistoryStore";
9
- export function useSendTransactionStatus({ chain, txHash, }) {
10
- const [isTransactionComplete, setIsTransactionComplete] = useState(false);
11
- const replaceTransactionStatus = useHistoryStore((state) => state.replaceTransactionStatus);
12
- const findTransaction = useHistoryStore((state) => state.findTransaction);
13
- const currentHistoryItem = useMemo(() => findTransaction({
14
- transactionId: txHash,
15
- txType: HistoryTxType.SEND,
16
- }), [findTransaction, txHash]);
17
- const { data: status } = useQuery({
18
- queryKey: keys().sendTransactionStatus(txHash, chain?.chainId),
19
- queryFn: async () => {
20
- if (!chain || !txHash)
21
- throw new Error("Chain or txHash not provided");
22
- return getSendTransactionStatus({
23
- chain,
24
- txHash,
25
- });
26
- },
27
- onSuccess: (txStatus) => {
28
- setIsTransactionComplete(txStatus !== SendTransactionStatus.ONGOING);
29
- if (txStatus != null && !!txHash) {
30
- replaceTransactionStatus({
31
- txType: HistoryTxType.SEND,
32
- status: txStatus,
33
- hash: txHash,
34
- });
35
- }
36
- },
37
- refetchInterval: chain
38
- ? getSendTxStatusRefetchInterval(chain.chainType)
39
- : false,
40
- enabled: !!chain &&
41
- !!txHash &&
42
- !isTransactionComplete &&
43
- !!currentHistoryItem &&
44
- !isHistoryTransactionEnded({
45
- data: currentHistoryItem?.data,
46
- txType: HistoryTxType.SEND,
47
- }),
48
- });
49
- return {
50
- status,
51
- };
52
- }
53
- //# sourceMappingURL=useSendTransactionStatus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSendTransactionStatus.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useSendTransactionStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAW3D,MAAM,UAAU,wBAAwB,CAAC,EACvC,KAAK,EACL,MAAM,GACyB;IAC/B,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,wBAAwB,GAAG,eAAe,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAC1C,CAAC;IACF,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAE1E,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CACH,eAAe,CAAC;QACd,aAAa,EAAE,MAAM;QACrB,MAAM,EAAE,aAAa,CAAC,IAAI;KAC3B,CAAC,EACJ,CAAC,eAAe,EAAE,MAAM,CAAC,CAC1B,CAAC;IAEF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAoC;QACnE,QAAQ,EAAE,IAAI,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;QAC9D,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAEvE,OAAO,wBAAwB,CAAC;gBAC9B,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,wBAAwB,CAAC,QAAQ,KAAK,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAErE,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;gBAChC,wBAAwB,CAAC;oBACvB,MAAM,EAAE,aAAa,CAAC,IAAI;oBAC1B,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;aACJ;QACH,CAAC;QACD,eAAe,EAAE,KAAK;YACpB,CAAC,CAAC,8BAA8B,CAAC,KAAK,CAAC,SAAS,CAAC;YACjD,CAAC,CAAC,KAAK;QACT,OAAO,EACL,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,MAAM;YACR,CAAC,qBAAqB;YACtB,CAAC,CAAC,kBAAkB;YACpB,CAAC,yBAAyB,CAAC;gBACzB,IAAI,EAAE,kBAAkB,EAAE,IAAI;gBAC9B,MAAM,EAAE,aAAa,CAAC,IAAI;aAC3B,CAAC;KACL,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- import { SwapTransactionForStatus, TransactionStatus } from "../../core/types/transaction";
2
- interface UseSwapTransactionStatusParams {
3
- transaction?: SwapTransactionForStatus;
4
- retry?: number;
5
- refetchOnWindowFocus?: "always" | boolean;
6
- enabled?: boolean;
7
- }
8
- /**
9
- * Fetch status of a Swap transaction
10
- */
11
- export declare const useSwapTransactionStatus: ({ transaction, retry, refetchOnWindowFocus, enabled, }: UseSwapTransactionStatusParams) => {
12
- transactionStatusQuery: import("@tanstack/react-query").UseQueryResult<import("@0xsquid/squid-types").StatusResponse, Error>;
13
- latestStatus: TransactionStatus;
14
- };
15
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSwapTransactionStatus.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useSwapTransactionStatus.ts"],"names":[],"mappings":"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"}
@@ -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,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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"}