@0xsquid/react-hooks 6.7.0-beta.0 → 6.7.0-rollup-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.
- package/dist/hooks/index.d.ts +5 -4
- package/dist/index.esm.js +16892 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +17096 -6
- package/dist/index.js.map +1 -1
- package/dist/secretService-Cc7emxDy.js +162 -0
- package/dist/secretService-Cc7emxDy.js.map +1 -0
- package/dist/{services/external/secretService.js → secretService-SEqSyHG0.js} +37 -8
- package/dist/secretService-SEqSyHG0.js.map +1 -0
- package/package.json +18 -4
- package/dist/core/abis/ics20.json +0 -128
- package/dist/core/connectors/bitcoin/errors/index.js +0 -22
- package/dist/core/connectors/bitcoin/errors/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/helpers.js +0 -86
- package/dist/core/connectors/bitcoin/helpers.js.map +0 -1
- package/dist/core/connectors/bitcoin/index.js +0 -2
- package/dist/core/connectors/bitcoin/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/index.js +0 -4
- package/dist/core/connectors/bitcoin/wallets/index.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/keplr.js +0 -28
- package/dist/core/connectors/bitcoin/wallets/keplr.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/phantom.js +0 -56
- package/dist/core/connectors/bitcoin/wallets/phantom.js.map +0 -1
- package/dist/core/connectors/bitcoin/wallets/unisat.js +0 -28
- package/dist/core/connectors/bitcoin/wallets/unisat.js.map +0 -1
- package/dist/core/constants.js +0 -144
- package/dist/core/constants.js.map +0 -1
- package/dist/core/externalLinks.js +0 -21
- package/dist/core/externalLinks.js.map +0 -1
- package/dist/core/index.js +0 -4
- package/dist/core/index.js.map +0 -1
- package/dist/core/multicall3.js +0 -442
- package/dist/core/multicall3.js.map +0 -1
- package/dist/core/providers/CosmosProvider.js +0 -13
- package/dist/core/providers/CosmosProvider.js.map +0 -1
- package/dist/core/providers/SolanaProvider.js +0 -15
- package/dist/core/providers/SolanaProvider.js.map +0 -1
- package/dist/core/providers/SuiProvider.js +0 -15
- package/dist/core/providers/SuiProvider.js.map +0 -1
- package/dist/core/queries/queries-keys.js +0 -204
- package/dist/core/queries/queries-keys.js.map +0 -1
- package/dist/core/queries/react-query-config.js +0 -11
- package/dist/core/queries/react-query-config.js.map +0 -1
- package/dist/core/types/config.js +0 -2
- package/dist/core/types/config.js.map +0 -1
- package/dist/core/types/dex.js +0 -33
- package/dist/core/types/dex.js.map +0 -1
- package/dist/core/types/error.js +0 -12
- package/dist/core/types/error.js.map +0 -1
- package/dist/core/types/event.js +0 -2
- package/dist/core/types/event.js.map +0 -1
- package/dist/core/types/index.js +0 -2
- package/dist/core/types/index.js.map +0 -1
- package/dist/core/types/rpc.js +0 -2
- package/dist/core/types/rpc.js.map +0 -1
- package/dist/core/types/sui.js +0 -2
- package/dist/core/types/sui.js.map +0 -1
- package/dist/core/types/swap.js +0 -2
- package/dist/core/types/swap.js.map +0 -1
- package/dist/core/types/tokens.js +0 -2
- package/dist/core/types/tokens.js.map +0 -1
- package/dist/core/types/transaction.js +0 -41
- package/dist/core/types/transaction.js.map +0 -1
- package/dist/core/types/wallet.js +0 -26
- package/dist/core/types/wallet.js.map +0 -1
- package/dist/core/wagmiConfig.js +0 -60
- package/dist/core/wagmiConfig.js.map +0 -1
- package/dist/core/wallets.js +0 -549
- package/dist/core/wallets.js.map +0 -1
- package/dist/hooks/chains/useSquidChains.js +0 -107
- package/dist/hooks/chains/useSquidChains.js.map +0 -1
- package/dist/hooks/client/useClient.js +0 -6
- package/dist/hooks/client/useClient.js.map +0 -1
- package/dist/hooks/cosmos/useCosmos.js +0 -172
- package/dist/hooks/cosmos/useCosmos.js.map +0 -1
- package/dist/hooks/cosmos/useCosmosForChain.js +0 -33
- package/dist/hooks/cosmos/useCosmosForChain.js.map +0 -1
- package/dist/hooks/index.js +0 -44
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/navigation/useKeyboardNavigation.js +0 -67
- package/dist/hooks/navigation/useKeyboardNavigation.js.map +0 -1
- package/dist/hooks/query/useSquidQueryClient.js +0 -23
- package/dist/hooks/query/useSquidQueryClient.js.map +0 -1
- package/dist/hooks/solana/useSolana.js +0 -104
- package/dist/hooks/solana/useSolana.js.map +0 -1
- package/dist/hooks/squid/useSquid.js +0 -55
- package/dist/hooks/squid/useSquid.js.map +0 -1
- package/dist/hooks/store/useAddressBookStore.js +0 -26
- package/dist/hooks/store/useAddressBookStore.js.map +0 -1
- package/dist/hooks/store/useAssetsColorsStore.js +0 -7
- package/dist/hooks/store/useAssetsColorsStore.js.map +0 -1
- package/dist/hooks/store/useDepositAddressStore.js +0 -12
- package/dist/hooks/store/useDepositAddressStore.js.map +0 -1
- package/dist/hooks/store/useFavoriteTokensStore.js +0 -28
- package/dist/hooks/store/useFavoriteTokensStore.js.map +0 -1
- package/dist/hooks/store/useHistoryStore.js +0 -41
- package/dist/hooks/store/useHistoryStore.js.map +0 -1
- package/dist/hooks/store/useSquidStore.js +0 -56
- package/dist/hooks/store/useSquidStore.js.map +0 -1
- package/dist/hooks/store/useWalletStore.js +0 -42
- package/dist/hooks/store/useWalletStore.js.map +0 -1
- package/dist/hooks/sui/useSui.js +0 -28
- package/dist/hooks/sui/useSui.js.map +0 -1
- package/dist/hooks/sui/useSuiClient.js +0 -16
- package/dist/hooks/sui/useSuiClient.js.map +0 -1
- package/dist/hooks/sui/useSuiWallets.js +0 -42
- package/dist/hooks/sui/useSuiWallets.js.map +0 -1
- package/dist/hooks/swap/useDepositAddress.js +0 -63
- package/dist/hooks/swap/useDepositAddress.js.map +0 -1
- package/dist/hooks/swap/useSwap.js +0 -209
- package/dist/hooks/swap/useSwap.js.map +0 -1
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js +0 -103
- package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +0 -1
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +0 -119
- package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +0 -1
- package/dist/hooks/tokens/useBalance.js +0 -136
- package/dist/hooks/tokens/useBalance.js.map +0 -1
- package/dist/hooks/tokens/useMultiChainBalance.js +0 -68
- package/dist/hooks/tokens/useMultiChainBalance.js.map +0 -1
- package/dist/hooks/tokens/useMultipleTokenPrices.js +0 -46
- package/dist/hooks/tokens/useMultipleTokenPrices.js.map +0 -1
- package/dist/hooks/tokens/useNativeBalance.js +0 -217
- package/dist/hooks/tokens/useNativeBalance.js.map +0 -1
- package/dist/hooks/tokens/useNativeTokenForChain.js +0 -28
- package/dist/hooks/tokens/useNativeTokenForChain.js.map +0 -1
- package/dist/hooks/tokens/useSingleTokenPrice.js +0 -38
- package/dist/hooks/tokens/useSingleTokenPrice.js.map +0 -1
- package/dist/hooks/tokens/useSquidTokens.js +0 -80
- package/dist/hooks/tokens/useSquidTokens.js.map +0 -1
- package/dist/hooks/tokens/useTokenHistoricalData.js +0 -23
- package/dist/hooks/tokens/useTokenHistoricalData.js.map +0 -1
- package/dist/hooks/transaction/useAllTransactionsStatus.js +0 -68
- package/dist/hooks/transaction/useAllTransactionsStatus.js.map +0 -1
- package/dist/hooks/transaction/useApproval.js +0 -223
- package/dist/hooks/transaction/useApproval.js.map +0 -1
- package/dist/hooks/transaction/useErc20Allowance.js +0 -43
- package/dist/hooks/transaction/useErc20Allowance.js.map +0 -1
- package/dist/hooks/transaction/useEstimate.js +0 -118
- package/dist/hooks/transaction/useEstimate.js.map +0 -1
- package/dist/hooks/transaction/useEstimatePriceImpact.js +0 -31
- package/dist/hooks/transaction/useEstimatePriceImpact.js.map +0 -1
- package/dist/hooks/transaction/useExecuteTransaction.js +0 -605
- package/dist/hooks/transaction/useExecuteTransaction.js.map +0 -1
- package/dist/hooks/transaction/useGetRoute.js +0 -224
- package/dist/hooks/transaction/useGetRoute.js.map +0 -1
- package/dist/hooks/transaction/useIcs20Allowance.js +0 -40
- package/dist/hooks/transaction/useIcs20Allowance.js.map +0 -1
- package/dist/hooks/transaction/useRouteWarnings.js +0 -19
- package/dist/hooks/transaction/useRouteWarnings.js.map +0 -1
- package/dist/hooks/transaction/useSingleTransaction.js +0 -91
- package/dist/hooks/transaction/useSingleTransaction.js.map +0 -1
- package/dist/hooks/user/useAvatar.js +0 -34
- package/dist/hooks/user/useAvatar.js.map +0 -1
- package/dist/hooks/user/useHistory.js +0 -106
- package/dist/hooks/user/useHistory.js.map +0 -1
- package/dist/hooks/user/useUserParams.js +0 -33
- package/dist/hooks/user/useUserParams.js.map +0 -1
- package/dist/hooks/wallet/useAddToken.js +0 -49
- package/dist/hooks/wallet/useAddToken.js.map +0 -1
- package/dist/hooks/wallet/useAutoConnect.js +0 -74
- package/dist/hooks/wallet/useAutoConnect.js.map +0 -1
- package/dist/hooks/wallet/useEns.js +0 -69
- package/dist/hooks/wallet/useEns.js.map +0 -1
- package/dist/hooks/wallet/useGnosisContext.js +0 -78
- package/dist/hooks/wallet/useGnosisContext.js.map +0 -1
- package/dist/hooks/wallet/useIntegratorContext.js +0 -39
- package/dist/hooks/wallet/useIntegratorContext.js.map +0 -1
- package/dist/hooks/wallet/useMultiChainWallet.js +0 -175
- package/dist/hooks/wallet/useMultiChainWallet.js.map +0 -1
- package/dist/hooks/wallet/useSigner.js +0 -76
- package/dist/hooks/wallet/useSigner.js.map +0 -1
- package/dist/hooks/wallet/useWallet.js +0 -206
- package/dist/hooks/wallet/useWallet.js.map +0 -1
- package/dist/hooks/wallet/useWallets.js +0 -36
- package/dist/hooks/wallet/useWallets.js.map +0 -1
- package/dist/provider/index.js +0 -113
- package/dist/provider/index.js.map +0 -1
- package/dist/services/external/ens.js +0 -66
- package/dist/services/external/ens.js.map +0 -1
- package/dist/services/external/rpcService.js +0 -421
- package/dist/services/external/rpcService.js.map +0 -1
- package/dist/services/external/secretService.js.map +0 -1
- package/dist/services/external/suiRpcClient.js +0 -80
- package/dist/services/external/suiRpcClient.js.map +0 -1
- package/dist/services/external/tokenDataService.js +0 -108
- package/dist/services/external/tokenDataService.js.map +0 -1
- package/dist/services/index.js +0 -16
- package/dist/services/index.js.map +0 -1
- package/dist/services/internal/apiService.js +0 -21
- package/dist/services/internal/apiService.js.map +0 -1
- package/dist/services/internal/assetsService.js +0 -586
- package/dist/services/internal/assetsService.js.map +0 -1
- package/dist/services/internal/bitcoinService.js +0 -51
- package/dist/services/internal/bitcoinService.js.map +0 -1
- package/dist/services/internal/configService.js +0 -215
- package/dist/services/internal/configService.js.map +0 -1
- package/dist/services/internal/cosmosService.js +0 -141
- package/dist/services/internal/cosmosService.js.map +0 -1
- package/dist/services/internal/errorService.js +0 -188
- package/dist/services/internal/errorService.js.map +0 -1
- package/dist/services/internal/estimateService.js +0 -221
- package/dist/services/internal/estimateService.js.map +0 -1
- package/dist/services/internal/eventService.js +0 -156
- package/dist/services/internal/eventService.js.map +0 -1
- package/dist/services/internal/evmService.js +0 -42
- package/dist/services/internal/evmService.js.map +0 -1
- package/dist/services/internal/numberService.js +0 -171
- package/dist/services/internal/numberService.js.map +0 -1
- package/dist/services/internal/priceService.js +0 -53
- package/dist/services/internal/priceService.js.map +0 -1
- package/dist/services/internal/searchService.js +0 -98
- package/dist/services/internal/searchService.js.map +0 -1
- package/dist/services/internal/solanaService.js +0 -109
- package/dist/services/internal/solanaService.js.map +0 -1
- package/dist/services/internal/suiService.js +0 -119
- package/dist/services/internal/suiService.js.map +0 -1
- package/dist/services/internal/transactionService.js +0 -207
- package/dist/services/internal/transactionService.js.map +0 -1
- package/dist/services/internal/transactionStatusService.js +0 -315
- package/dist/services/internal/transactionStatusService.js.map +0 -1
- package/dist/services/internal/walletService.js +0 -464
- package/dist/services/internal/walletService.js.map +0 -1
- package/dist/tests/apiService.test.js +0 -40
- package/dist/tests/apiService.test.js.map +0 -1
- package/dist/tests/assetsService.test.js +0 -500
- package/dist/tests/assetsService.test.js.map +0 -1
- package/dist/tests/configService.test.js +0 -673
- package/dist/tests/configService.test.js.map +0 -1
- package/dist/tests/estimateService.test.js +0 -355
- package/dist/tests/estimateService.test.js.map +0 -1
- package/dist/tests/fetchSquidData.js +0 -36
- package/dist/tests/fetchSquidData.js.map +0 -1
- package/dist/tests/jest-svg-transform.d.ts +0 -0
- package/dist/tests/jest-svg-transform.js +0 -21
- package/dist/tests/jest-svg-transform.js.map +0 -1
- package/dist/tests/numberService.test.js +0 -135
- package/dist/tests/numberService.test.js.map +0 -1
- package/dist/tests/priceService.test.js +0 -38
- package/dist/tests/priceService.test.js.map +0 -1
- package/dist/tests/sample.json +0 -0
- package/dist/tests/searchService.test.js +0 -92
- package/dist/tests/searchService.test.js.map +0 -1
- package/dist/tests/swapConfig.test.js +0 -332
- package/dist/tests/swapConfig.test.js.map +0 -1
- package/dist/tests/transactionService.test.js +0 -53
- package/dist/tests/transactionService.test.js.map +0 -1
- package/dist/tests/transactionStatusService.test.js +0 -165
- package/dist/tests/transactionStatusService.test.js.map +0 -1
- package/dist/tests/walletService.test.js +0 -264
- package/dist/tests/walletService.test.js.map +0 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var stargate = require('@cosmjs/stargate');
|
|
4
|
+
var secretjs = require('secretjs');
|
|
5
|
+
var index = require('./index.js');
|
|
6
|
+
require('@0xsquid/squid-types');
|
|
7
|
+
require('react');
|
|
8
|
+
require('ethers');
|
|
9
|
+
require('viem');
|
|
10
|
+
require('axios');
|
|
11
|
+
require('bignumber.js');
|
|
12
|
+
require('wagmi/connectors');
|
|
13
|
+
require('@cosmjs/encoding');
|
|
14
|
+
require('fuse.js');
|
|
15
|
+
require('@solana/spl-token');
|
|
16
|
+
require('@solana/web3.js');
|
|
17
|
+
require('bitcoinjs-lib');
|
|
18
|
+
require('@bitcoinerlab/secp256k1');
|
|
19
|
+
require('@mysten/wallet-standard');
|
|
20
|
+
require('zustand');
|
|
21
|
+
require('zustand/middleware');
|
|
22
|
+
require('@tanstack/react-query');
|
|
23
|
+
require('wagmi');
|
|
24
|
+
require('@safe-global/safe-apps-sdk');
|
|
25
|
+
require('@solana/wallet-adapter-phantom');
|
|
26
|
+
require('@mysten/slush-wallet');
|
|
27
|
+
require('@cosmjs/cosmwasm-stargate');
|
|
28
|
+
require('@mysten/sui/transactions');
|
|
29
|
+
require('@injectivelabs/sdk-ts/dist/cjs/core/stargate');
|
|
30
|
+
require('@mysten/sui/client');
|
|
31
|
+
require('@0xsquid/sdk');
|
|
32
|
+
require('viem/chains');
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Fetch secret network token balance
|
|
36
|
+
* Using the permit signature, see permit function for more details
|
|
37
|
+
* @param secretJS
|
|
38
|
+
* @param contract
|
|
39
|
+
* @param chainId
|
|
40
|
+
* @param walletAddress
|
|
41
|
+
* @param permit
|
|
42
|
+
* @returns
|
|
43
|
+
*/
|
|
44
|
+
const getTokenBalance = async (secretJS, contract, permit) => {
|
|
45
|
+
if (permit) {
|
|
46
|
+
const msg = {
|
|
47
|
+
balance: {},
|
|
48
|
+
};
|
|
49
|
+
const result = await secretJS.query.compute.queryContract({
|
|
50
|
+
contract_address: contract.address,
|
|
51
|
+
code_hash: contract.codeHash,
|
|
52
|
+
query: {
|
|
53
|
+
with_permit: {
|
|
54
|
+
query: msg,
|
|
55
|
+
permit,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
return -1;
|
|
62
|
+
};
|
|
63
|
+
const getPermit = async (chainId, contracts, address) => {
|
|
64
|
+
const contractsString = contracts.join("_");
|
|
65
|
+
const permKey = `perm_${chainId}_${contractsString}_${address}`;
|
|
66
|
+
let permit;
|
|
67
|
+
const permitStored = window.localStorage.getItem(permKey);
|
|
68
|
+
if (permitStored)
|
|
69
|
+
permit = JSON.parse(permitStored);
|
|
70
|
+
// Not able to fetch permit signature from local storage,
|
|
71
|
+
// Ask user to sign message
|
|
72
|
+
if (!permit) {
|
|
73
|
+
try {
|
|
74
|
+
const result = await window.keplr.signAmino(chainId, address, {
|
|
75
|
+
chain_id: chainId,
|
|
76
|
+
account_number: "0",
|
|
77
|
+
sequence: "0",
|
|
78
|
+
fee: {
|
|
79
|
+
amount: [{ denom: "uscrt", amount: "0" }],
|
|
80
|
+
gas: "1",
|
|
81
|
+
},
|
|
82
|
+
msgs: [
|
|
83
|
+
{
|
|
84
|
+
type: "query_permit",
|
|
85
|
+
value: {
|
|
86
|
+
permit_name: "secret-bridge-balance",
|
|
87
|
+
allowed_tokens: contracts,
|
|
88
|
+
permissions: ["balance"],
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
memo: "",
|
|
93
|
+
}, {
|
|
94
|
+
preferNoSetFee: true,
|
|
95
|
+
preferNoSetMemo: true,
|
|
96
|
+
});
|
|
97
|
+
permit = {
|
|
98
|
+
params: {
|
|
99
|
+
permit_name: "secret-bridge-balance",
|
|
100
|
+
allowed_tokens: contracts,
|
|
101
|
+
chain_id: chainId,
|
|
102
|
+
permissions: ["balance"],
|
|
103
|
+
},
|
|
104
|
+
signature: result.signature,
|
|
105
|
+
};
|
|
106
|
+
window.localStorage.setItem(permKey, JSON.stringify(permit));
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
console.error("--- PERMIT ERROR ---");
|
|
110
|
+
console.error(err);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return permit;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Fetches the secret balance of the user
|
|
117
|
+
* This has a different logic than the other balances because Secret network hides the balance of the user by design
|
|
118
|
+
* So we need to fetch the balance in a different way
|
|
119
|
+
*/
|
|
120
|
+
const fetchAllSecretBalances = async (chainData, userAddress, secretTokens, keplr) => {
|
|
121
|
+
if (!keplr)
|
|
122
|
+
return [];
|
|
123
|
+
// Enables app to utilize keplr's secret utilities
|
|
124
|
+
await keplr.enable(index.CHAIN_IDS.SECRET);
|
|
125
|
+
// Create a client that handles the query encryption
|
|
126
|
+
const client = new secretjs.SecretNetworkClient({
|
|
127
|
+
url: chainData.rest,
|
|
128
|
+
chainId: index.CHAIN_IDS.SECRET,
|
|
129
|
+
wallet: keplr.getOfflineSignerOnlyAmino(index.CHAIN_IDS.SECRET),
|
|
130
|
+
encryptionUtils: keplr.getEnigmaUtils(index.CHAIN_IDS.SECRET),
|
|
131
|
+
walletAddress: userAddress,
|
|
132
|
+
});
|
|
133
|
+
// Get secret tokens
|
|
134
|
+
const permit = await getPermit(index.CHAIN_IDS.SECRET, secretTokens.map((st) => st.address), userAddress);
|
|
135
|
+
// Fetching all balances in parallel
|
|
136
|
+
const privateTokens = await Promise.all(secretTokens
|
|
137
|
+
.filter((t) => !!t.codeHash)
|
|
138
|
+
.map(async (token) => {
|
|
139
|
+
const result = (await getTokenBalance(client, {
|
|
140
|
+
address: token.address,
|
|
141
|
+
codeHash: token.codeHash ?? "",
|
|
142
|
+
}, permit));
|
|
143
|
+
return {
|
|
144
|
+
...token,
|
|
145
|
+
balance: index.formatBNToReadable(BigInt(result.balance.amount), token?.decimals),
|
|
146
|
+
};
|
|
147
|
+
}));
|
|
148
|
+
// Use Stargate getBalance for SCRT
|
|
149
|
+
const stargateClient = await stargate.StargateClient.connect(chainData.rpc);
|
|
150
|
+
const nativeSecretToken = secretTokens.find((t) => t.address === "uscrt");
|
|
151
|
+
const publicTokenBalance = await stargateClient.getBalance(userAddress, "uscrt");
|
|
152
|
+
const publicTokenWithBalance = {
|
|
153
|
+
...nativeSecretToken,
|
|
154
|
+
balance: index.formatBNToReadable(BigInt(publicTokenBalance.amount), nativeSecretToken?.decimals ?? 18),
|
|
155
|
+
};
|
|
156
|
+
return [...privateTokens, publicTokenWithBalance];
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
exports.fetchAllSecretBalances = fetchAllSecretBalances;
|
|
160
|
+
exports.getPermit = getPermit;
|
|
161
|
+
exports.getTokenBalance = getTokenBalance;
|
|
162
|
+
//# sourceMappingURL=secretService-Cc7emxDy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretService-Cc7emxDy.js","sources":["../src/services/external/secretService.ts"],"sourcesContent":["import type { ChainData, CosmosChain, Token } from \"@0xsquid/squid-types\";\nimport { StargateClient } from \"@cosmjs/stargate\";\nimport type { Keplr } from \"@keplr-wallet/types\";\nimport { SecretNetworkClient } from \"secretjs\";\nimport { CHAIN_IDS } from \"../../core/constants\";\nimport type { TokenWithBalance } from \"../../core/types/tokens\";\nimport type { TypedWindow } from \"../../core/types/wallet\";\nimport { formatBNToReadable } from \"../internal/numberService\";\n\n/**\n * Fetch secret network token balance\n * Using the permit signature, see permit function for more details\n * @param secretJS\n * @param contract\n * @param chainId\n * @param walletAddress\n * @param permit\n * @returns\n */\nexport const getTokenBalance = async (\n secretJS: SecretNetworkClient,\n contract: { address: string; codeHash: string },\n permit: any\n) => {\n if (permit) {\n const msg = {\n balance: {},\n };\n\n const result = await secretJS.query.compute.queryContract({\n contract_address: contract.address,\n code_hash: contract.codeHash,\n query: {\n with_permit: {\n query: msg,\n permit,\n },\n },\n });\n return result;\n }\n return -1;\n};\n\nexport const getPermit = async (\n chainId: string,\n contracts: any[],\n address: string\n) => {\n const contractsString = contracts.join(\"_\");\n const permKey = `perm_${chainId}_${contractsString}_${address}`;\n let permit: any;\n\n const permitStored = window.localStorage.getItem(permKey);\n if (permitStored) permit = JSON.parse(permitStored);\n\n // Not able to fetch permit signature from local storage,\n // Ask user to sign message\n if (!permit) {\n try {\n const result = await (window as TypedWindow).keplr.signAmino(\n chainId,\n address,\n {\n chain_id: chainId,\n account_number: \"0\",\n sequence: \"0\",\n fee: {\n amount: [{ denom: \"uscrt\", amount: \"0\" }],\n gas: \"1\",\n },\n msgs: [\n {\n type: \"query_permit\",\n value: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n permissions: [\"balance\"],\n },\n },\n ],\n memo: \"\",\n },\n {\n preferNoSetFee: true,\n preferNoSetMemo: true,\n }\n );\n permit = {\n params: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n chain_id: chainId,\n permissions: [\"balance\"],\n },\n signature: result.signature,\n };\n window.localStorage.setItem(permKey, JSON.stringify(permit));\n } catch (err) {\n console.error(\"--- PERMIT ERROR ---\");\n console.error(err);\n }\n }\n return permit;\n};\n\n/**\n * Fetches the secret balance of the user\n * This has a different logic than the other balances because Secret network hides the balance of the user by design\n * So we need to fetch the balance in a different way\n */\nexport const fetchAllSecretBalances = async (\n chainData: ChainData,\n userAddress: string,\n secretTokens: (Token & { codeHash?: string })[],\n keplr?: Keplr\n): Promise<TokenWithBalance[]> => {\n if (!keplr) return [];\n // Enables app to utilize keplr's secret utilities\n await keplr.enable(CHAIN_IDS.SECRET);\n // Create a client that handles the query encryption\n const client = new SecretNetworkClient({\n url: (chainData as CosmosChain).rest,\n chainId: CHAIN_IDS.SECRET,\n wallet: keplr.getOfflineSignerOnlyAmino(CHAIN_IDS.SECRET),\n encryptionUtils: keplr.getEnigmaUtils(CHAIN_IDS.SECRET),\n walletAddress: userAddress,\n });\n\n // Get secret tokens\n\n const permit = await getPermit(\n CHAIN_IDS.SECRET,\n secretTokens.map((st) => st.address),\n userAddress\n );\n\n // Fetching all balances in parallel\n const privateTokens = await Promise.all(\n secretTokens\n .filter((t) => !!t.codeHash)\n .map(async (token) => {\n const result = (await getTokenBalance(\n client,\n {\n address: token.address,\n codeHash: token.codeHash ?? \"\",\n },\n permit\n )) as { balance: { amount: string } };\n\n return {\n ...token,\n balance: formatBNToReadable(\n BigInt(result.balance.amount),\n token?.decimals\n ),\n } as TokenWithBalance;\n })\n );\n\n // Use Stargate getBalance for SCRT\n const stargateClient = await StargateClient.connect(chainData.rpc);\n const nativeSecretToken = secretTokens.find((t) => t.address === \"uscrt\");\n\n const publicTokenBalance = await stargateClient.getBalance(\n userAddress,\n \"uscrt\"\n );\n\n const publicTokenWithBalance = {\n ...nativeSecretToken,\n balance: formatBNToReadable(\n BigInt(publicTokenBalance.amount),\n nativeSecretToken?.decimals ?? 18\n ),\n } as TokenWithBalance;\n\n return [...privateTokens, publicTokenWithBalance];\n};\n"],"names":["CHAIN_IDS","SecretNetworkClient","formatBNToReadable","StargateClient"],"mappings":"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"}
|
|
@@ -1,7 +1,34 @@
|
|
|
1
|
-
import { StargateClient } from
|
|
2
|
-
import { SecretNetworkClient } from
|
|
3
|
-
import { CHAIN_IDS } from
|
|
4
|
-
import
|
|
1
|
+
import { StargateClient } from '@cosmjs/stargate';
|
|
2
|
+
import { SecretNetworkClient } from 'secretjs';
|
|
3
|
+
import { CHAIN_IDS, formatBNToReadable } from './index.esm.js';
|
|
4
|
+
import '@0xsquid/squid-types';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'ethers';
|
|
7
|
+
import 'viem';
|
|
8
|
+
import 'axios';
|
|
9
|
+
import 'bignumber.js';
|
|
10
|
+
import 'wagmi/connectors';
|
|
11
|
+
import '@cosmjs/encoding';
|
|
12
|
+
import 'fuse.js';
|
|
13
|
+
import '@solana/spl-token';
|
|
14
|
+
import '@solana/web3.js';
|
|
15
|
+
import 'bitcoinjs-lib';
|
|
16
|
+
import '@bitcoinerlab/secp256k1';
|
|
17
|
+
import '@mysten/wallet-standard';
|
|
18
|
+
import 'zustand';
|
|
19
|
+
import 'zustand/middleware';
|
|
20
|
+
import '@tanstack/react-query';
|
|
21
|
+
import 'wagmi';
|
|
22
|
+
import '@safe-global/safe-apps-sdk';
|
|
23
|
+
import '@solana/wallet-adapter-phantom';
|
|
24
|
+
import '@mysten/slush-wallet';
|
|
25
|
+
import '@cosmjs/cosmwasm-stargate';
|
|
26
|
+
import '@mysten/sui/transactions';
|
|
27
|
+
import '@injectivelabs/sdk-ts/dist/cjs/core/stargate';
|
|
28
|
+
import '@mysten/sui/client';
|
|
29
|
+
import '@0xsquid/sdk';
|
|
30
|
+
import 'viem/chains';
|
|
31
|
+
|
|
5
32
|
/**
|
|
6
33
|
* Fetch secret network token balance
|
|
7
34
|
* Using the permit signature, see permit function for more details
|
|
@@ -12,7 +39,7 @@ import { formatBNToReadable } from "../internal/numberService";
|
|
|
12
39
|
* @param permit
|
|
13
40
|
* @returns
|
|
14
41
|
*/
|
|
15
|
-
|
|
42
|
+
const getTokenBalance = async (secretJS, contract, permit) => {
|
|
16
43
|
if (permit) {
|
|
17
44
|
const msg = {
|
|
18
45
|
balance: {},
|
|
@@ -31,7 +58,7 @@ export const getTokenBalance = async (secretJS, contract, permit) => {
|
|
|
31
58
|
}
|
|
32
59
|
return -1;
|
|
33
60
|
};
|
|
34
|
-
|
|
61
|
+
const getPermit = async (chainId, contracts, address) => {
|
|
35
62
|
const contractsString = contracts.join("_");
|
|
36
63
|
const permKey = `perm_${chainId}_${contractsString}_${address}`;
|
|
37
64
|
let permit;
|
|
@@ -88,7 +115,7 @@ export const getPermit = async (chainId, contracts, address) => {
|
|
|
88
115
|
* This has a different logic than the other balances because Secret network hides the balance of the user by design
|
|
89
116
|
* So we need to fetch the balance in a different way
|
|
90
117
|
*/
|
|
91
|
-
|
|
118
|
+
const fetchAllSecretBalances = async (chainData, userAddress, secretTokens, keplr) => {
|
|
92
119
|
if (!keplr)
|
|
93
120
|
return [];
|
|
94
121
|
// Enables app to utilize keplr's secret utilities
|
|
@@ -126,4 +153,6 @@ export const fetchAllSecretBalances = async (chainData, userAddress, secretToken
|
|
|
126
153
|
};
|
|
127
154
|
return [...privateTokens, publicTokenWithBalance];
|
|
128
155
|
};
|
|
129
|
-
|
|
156
|
+
|
|
157
|
+
export { fetchAllSecretBalances, getPermit, getTokenBalance };
|
|
158
|
+
//# sourceMappingURL=secretService-SEqSyHG0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretService-SEqSyHG0.js","sources":["../src/services/external/secretService.ts"],"sourcesContent":["import type { ChainData, CosmosChain, Token } from \"@0xsquid/squid-types\";\nimport { StargateClient } from \"@cosmjs/stargate\";\nimport type { Keplr } from \"@keplr-wallet/types\";\nimport { SecretNetworkClient } from \"secretjs\";\nimport { CHAIN_IDS } from \"../../core/constants\";\nimport type { TokenWithBalance } from \"../../core/types/tokens\";\nimport type { TypedWindow } from \"../../core/types/wallet\";\nimport { formatBNToReadable } from \"../internal/numberService\";\n\n/**\n * Fetch secret network token balance\n * Using the permit signature, see permit function for more details\n * @param secretJS\n * @param contract\n * @param chainId\n * @param walletAddress\n * @param permit\n * @returns\n */\nexport const getTokenBalance = async (\n secretJS: SecretNetworkClient,\n contract: { address: string; codeHash: string },\n permit: any\n) => {\n if (permit) {\n const msg = {\n balance: {},\n };\n\n const result = await secretJS.query.compute.queryContract({\n contract_address: contract.address,\n code_hash: contract.codeHash,\n query: {\n with_permit: {\n query: msg,\n permit,\n },\n },\n });\n return result;\n }\n return -1;\n};\n\nexport const getPermit = async (\n chainId: string,\n contracts: any[],\n address: string\n) => {\n const contractsString = contracts.join(\"_\");\n const permKey = `perm_${chainId}_${contractsString}_${address}`;\n let permit: any;\n\n const permitStored = window.localStorage.getItem(permKey);\n if (permitStored) permit = JSON.parse(permitStored);\n\n // Not able to fetch permit signature from local storage,\n // Ask user to sign message\n if (!permit) {\n try {\n const result = await (window as TypedWindow).keplr.signAmino(\n chainId,\n address,\n {\n chain_id: chainId,\n account_number: \"0\",\n sequence: \"0\",\n fee: {\n amount: [{ denom: \"uscrt\", amount: \"0\" }],\n gas: \"1\",\n },\n msgs: [\n {\n type: \"query_permit\",\n value: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n permissions: [\"balance\"],\n },\n },\n ],\n memo: \"\",\n },\n {\n preferNoSetFee: true,\n preferNoSetMemo: true,\n }\n );\n permit = {\n params: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n chain_id: chainId,\n permissions: [\"balance\"],\n },\n signature: result.signature,\n };\n window.localStorage.setItem(permKey, JSON.stringify(permit));\n } catch (err) {\n console.error(\"--- PERMIT ERROR ---\");\n console.error(err);\n }\n }\n return permit;\n};\n\n/**\n * Fetches the secret balance of the user\n * This has a different logic than the other balances because Secret network hides the balance of the user by design\n * So we need to fetch the balance in a different way\n */\nexport const fetchAllSecretBalances = async (\n chainData: ChainData,\n userAddress: string,\n secretTokens: (Token & { codeHash?: string })[],\n keplr?: Keplr\n): Promise<TokenWithBalance[]> => {\n if (!keplr) return [];\n // Enables app to utilize keplr's secret utilities\n await keplr.enable(CHAIN_IDS.SECRET);\n // Create a client that handles the query encryption\n const client = new SecretNetworkClient({\n url: (chainData as CosmosChain).rest,\n chainId: CHAIN_IDS.SECRET,\n wallet: keplr.getOfflineSignerOnlyAmino(CHAIN_IDS.SECRET),\n encryptionUtils: keplr.getEnigmaUtils(CHAIN_IDS.SECRET),\n walletAddress: userAddress,\n });\n\n // Get secret tokens\n\n const permit = await getPermit(\n CHAIN_IDS.SECRET,\n secretTokens.map((st) => st.address),\n userAddress\n );\n\n // Fetching all balances in parallel\n const privateTokens = await Promise.all(\n secretTokens\n .filter((t) => !!t.codeHash)\n .map(async (token) => {\n const result = (await getTokenBalance(\n client,\n {\n address: token.address,\n codeHash: token.codeHash ?? \"\",\n },\n permit\n )) as { balance: { amount: string } };\n\n return {\n ...token,\n balance: formatBNToReadable(\n BigInt(result.balance.amount),\n token?.decimals\n ),\n } as TokenWithBalance;\n })\n );\n\n // Use Stargate getBalance for SCRT\n const stargateClient = await StargateClient.connect(chainData.rpc);\n const nativeSecretToken = secretTokens.find((t) => t.address === \"uscrt\");\n\n const publicTokenBalance = await stargateClient.getBalance(\n userAddress,\n \"uscrt\"\n );\n\n const publicTokenWithBalance = {\n ...nativeSecretToken,\n balance: formatBNToReadable(\n BigInt(publicTokenBalance.amount),\n nativeSecretToken?.decimals ?? 18\n ),\n } as TokenWithBalance;\n\n return [...privateTokens, publicTokenWithBalance];\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsquid/react-hooks",
|
|
3
|
-
"version": "6.7.0-beta.0",
|
|
3
|
+
"version": "6.7.0-rollup-beta.0",
|
|
4
4
|
"description": "Squid hooks monorepo",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
-
"module": "dist/index.js",
|
|
7
|
+
"module": "dist/index.esm.js",
|
|
8
8
|
"type": "module",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.esm.js",
|
|
12
|
+
"require": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
9
16
|
"files": [
|
|
10
17
|
"dist",
|
|
11
18
|
"README.md"
|
|
@@ -16,12 +23,12 @@
|
|
|
16
23
|
},
|
|
17
24
|
"scripts": {
|
|
18
25
|
"clean": "rimraf dist",
|
|
19
|
-
"build": "yarn clean &&
|
|
26
|
+
"build": "yarn clean && rollup -c rollup.config.js && node scripts/copyAssets.js",
|
|
20
27
|
"lint": "eslint . --ext .js,.jsx,.ts,.tsx",
|
|
21
28
|
"lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
|
|
22
29
|
"test": "node --experimental-vm-modules node_modules/.bin/jest",
|
|
23
30
|
"release": "release-it",
|
|
24
|
-
"release:pre": "release-it --preRelease=beta",
|
|
31
|
+
"release:pre": "release-it --preRelease=rollup-beta",
|
|
25
32
|
"release:ci": "release-it --ci",
|
|
26
33
|
"release:dry": "release-it --dry-run",
|
|
27
34
|
"packlib": "rm -f squid-hooks-lib-*.tgz && yarn build && yarn pack --filename squid-hooks-lib-$(date +%s).tgz"
|
|
@@ -76,6 +83,12 @@
|
|
|
76
83
|
"@types/node": "18.7.23",
|
|
77
84
|
"@types/react": "^18.3.3",
|
|
78
85
|
"@types/react-dom": "^18.3.0",
|
|
86
|
+
"@rollup/plugin-commonjs": "^25.0.7",
|
|
87
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
88
|
+
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
89
|
+
"@rollup/plugin-typescript": "^11.1.6",
|
|
90
|
+
"rollup": "^4.18.0",
|
|
91
|
+
"rollup-plugin-dts": "^6.1.1",
|
|
79
92
|
"@typescript-eslint/eslint-plugin": "7.5.0",
|
|
80
93
|
"@typescript-eslint/parser": "7.5.0",
|
|
81
94
|
"autoprefixer": "9",
|
|
@@ -101,6 +114,7 @@
|
|
|
101
114
|
"rimraf": "5.0.5",
|
|
102
115
|
"ts-jest": "29.1.0",
|
|
103
116
|
"ts-loader": "9.4.1",
|
|
117
|
+
"tslib": "^2.6.3",
|
|
104
118
|
"ts-node": "10.9.2",
|
|
105
119
|
"typescript": "5.1.3"
|
|
106
120
|
},
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"inputs": [
|
|
4
|
-
{
|
|
5
|
-
"internalType": "address",
|
|
6
|
-
"name": "grantee",
|
|
7
|
-
"type": "address"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"internalType": "address",
|
|
11
|
-
"name": "granter",
|
|
12
|
-
"type": "address"
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"name": "allowance",
|
|
16
|
-
"outputs": [
|
|
17
|
-
{
|
|
18
|
-
"components": [
|
|
19
|
-
{
|
|
20
|
-
"internalType": "string",
|
|
21
|
-
"name": "sourcePort",
|
|
22
|
-
"type": "string"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"internalType": "string",
|
|
26
|
-
"name": "sourceChannel",
|
|
27
|
-
"type": "string"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"components": [
|
|
31
|
-
{
|
|
32
|
-
"internalType": "string",
|
|
33
|
-
"name": "denom",
|
|
34
|
-
"type": "string"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"internalType": "uint256",
|
|
38
|
-
"name": "amount",
|
|
39
|
-
"type": "uint256"
|
|
40
|
-
}
|
|
41
|
-
],
|
|
42
|
-
"internalType": "struct Coin[]",
|
|
43
|
-
"name": "spendLimit",
|
|
44
|
-
"type": "tuple[]"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"internalType": "string[]",
|
|
48
|
-
"name": "allowList",
|
|
49
|
-
"type": "string[]"
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"internalType": "string[]",
|
|
53
|
-
"name": "allowedPacketData",
|
|
54
|
-
"type": "string[]"
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"internalType": "struct ICS20Allocation[]",
|
|
58
|
-
"name": "allocations",
|
|
59
|
-
"type": "tuple[]"
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"stateMutability": "view",
|
|
63
|
-
"type": "function"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"inputs": [
|
|
67
|
-
{
|
|
68
|
-
"internalType": "address",
|
|
69
|
-
"name": "grantee",
|
|
70
|
-
"type": "address"
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"components": [
|
|
74
|
-
{
|
|
75
|
-
"internalType": "string",
|
|
76
|
-
"name": "sourcePort",
|
|
77
|
-
"type": "string"
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
"internalType": "string",
|
|
81
|
-
"name": "sourceChannel",
|
|
82
|
-
"type": "string"
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"components": [
|
|
86
|
-
{
|
|
87
|
-
"internalType": "string",
|
|
88
|
-
"name": "denom",
|
|
89
|
-
"type": "string"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"internalType": "uint256",
|
|
93
|
-
"name": "amount",
|
|
94
|
-
"type": "uint256"
|
|
95
|
-
}
|
|
96
|
-
],
|
|
97
|
-
"internalType": "struct Coin[]",
|
|
98
|
-
"name": "spendLimit",
|
|
99
|
-
"type": "tuple[]"
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"internalType": "string[]",
|
|
103
|
-
"name": "allowList",
|
|
104
|
-
"type": "string[]"
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"internalType": "string[]",
|
|
108
|
-
"name": "allowedPacketData",
|
|
109
|
-
"type": "string[]"
|
|
110
|
-
}
|
|
111
|
-
],
|
|
112
|
-
"internalType": "struct ICS20Allocation[]",
|
|
113
|
-
"name": "allocations",
|
|
114
|
-
"type": "tuple[]"
|
|
115
|
-
}
|
|
116
|
-
],
|
|
117
|
-
"name": "approve",
|
|
118
|
-
"outputs": [
|
|
119
|
-
{
|
|
120
|
-
"internalType": "bool",
|
|
121
|
-
"name": "approved",
|
|
122
|
-
"type": "bool"
|
|
123
|
-
}
|
|
124
|
-
],
|
|
125
|
-
"stateMutability": "nonpayable",
|
|
126
|
-
"type": "function"
|
|
127
|
-
}
|
|
128
|
-
]
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
class BitcoinConnectorError extends Error {
|
|
2
|
-
constructor(message) {
|
|
3
|
-
super(message);
|
|
4
|
-
this.name = "BitcoinConnectorError";
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
export class BitcoinConnectorProviderNotFoundError extends BitcoinConnectorError {
|
|
8
|
-
constructor(providerName) {
|
|
9
|
-
super(`Bitcoin provider ${providerName} not found`);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class BitcoinConnectorTransactionFailedError extends BitcoinConnectorError {
|
|
13
|
-
constructor() {
|
|
14
|
-
super("Bitcoin transaction failed");
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export class BitcoinConnectorInvalidAccountError extends BitcoinConnectorError {
|
|
18
|
-
constructor() {
|
|
19
|
-
super("Bitcoin account is invalid");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/connectors/bitcoin/errors/index.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAsB,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,qCAAsC,SAAQ,qBAAqB;IAC9E,YAAY,YAAoB;QAC9B,KAAK,CAAC,oBAAoB,YAAY,YAAY,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,OAAO,sCAAuC,SAAQ,qBAAqB;IAC/E;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,mCAAoC,SAAQ,qBAAqB;IAC5E;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import * as ecc from "@bitcoinerlab/secp256k1";
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
import * as bitcoin from "bitcoinjs-lib";
|
|
4
|
-
bitcoin.initEccLib(ecc);
|
|
5
|
-
const network = bitcoin.networks.bitcoin;
|
|
6
|
-
export const fromHexString = (hexString) => {
|
|
7
|
-
const matches = hexString.match(/.{1,2}/g);
|
|
8
|
-
if (!matches) {
|
|
9
|
-
throw new Error("Invalid hex string");
|
|
10
|
-
}
|
|
11
|
-
return Uint8Array.from(matches.map((byte) => parseInt(byte, 16)));
|
|
12
|
-
};
|
|
13
|
-
export async function createSendBtcPsbt(senderAddress, recipientAddress, amount) {
|
|
14
|
-
const feeRate = await getFeeRate();
|
|
15
|
-
const utxos = await getAddressUtxos(senderAddress);
|
|
16
|
-
if (!utxos) {
|
|
17
|
-
throw new Error("No UTXOs found");
|
|
18
|
-
}
|
|
19
|
-
// Sort UTXOs by value in descending order
|
|
20
|
-
// This ensures that we select the UTXOs with the highest value first
|
|
21
|
-
// to optimize the transaction size
|
|
22
|
-
const sortedUtxos = utxos.sort((a, b) => b.value - a.value);
|
|
23
|
-
// Sum up the values of the UTXOs up to the desired amount
|
|
24
|
-
let inputAmount = 0;
|
|
25
|
-
const inputs = [];
|
|
26
|
-
for (const utxo of sortedUtxos) {
|
|
27
|
-
inputAmount += utxo.value;
|
|
28
|
-
inputs.push(utxo);
|
|
29
|
-
if (inputAmount >= amount)
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
if (inputAmount < amount)
|
|
33
|
-
throw new Error("Insufficient balance");
|
|
34
|
-
const outputsCount = 2; // Only two outputs, recipient and change outputs
|
|
35
|
-
// Calculate fee based on the byte size of the total inputs and outputs
|
|
36
|
-
// Approximate transaction size = (inputs * 150 bytes + outputs * 34 bytes + 10 bytes overhead)
|
|
37
|
-
const transactionSize = inputs.length * 150 + outputsCount * 34 + 10;
|
|
38
|
-
const fee = feeRate * transactionSize;
|
|
39
|
-
const satsNeeded = fee + amount;
|
|
40
|
-
const psbt = new bitcoin.Psbt({ network });
|
|
41
|
-
let amountGathered = 0;
|
|
42
|
-
for (const utxo of sortedUtxos) {
|
|
43
|
-
const { txid, vout, value } = utxo;
|
|
44
|
-
const script = bitcoin.address.toOutputScript(senderAddress, network);
|
|
45
|
-
psbt.addInput({
|
|
46
|
-
hash: txid,
|
|
47
|
-
index: vout,
|
|
48
|
-
witnessUtxo: {
|
|
49
|
-
script,
|
|
50
|
-
value: BigInt(value),
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
amountGathered += value;
|
|
54
|
-
if (amountGathered >= satsNeeded) {
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
psbt.addOutput({
|
|
59
|
-
address: recipientAddress,
|
|
60
|
-
value: BigInt(amount),
|
|
61
|
-
});
|
|
62
|
-
if (amountGathered > satsNeeded) {
|
|
63
|
-
psbt.addOutput({
|
|
64
|
-
address: senderAddress,
|
|
65
|
-
value: BigInt(amountGathered - satsNeeded),
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
psbtHex: psbt.toHex(),
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
export async function broadcastTx(txHex) {
|
|
73
|
-
return axios
|
|
74
|
-
.post(`https://mempool.space/api/tx`, txHex)
|
|
75
|
-
.then((res) => res.data);
|
|
76
|
-
}
|
|
77
|
-
async function getAddressUtxos(address) {
|
|
78
|
-
return axios
|
|
79
|
-
.get(`https://mempool.space/api/address/${address}/utxo`)
|
|
80
|
-
.then((response) => response.data);
|
|
81
|
-
}
|
|
82
|
-
async function getFeeRate() {
|
|
83
|
-
const response = await axios.get("https://mempool.space/api/v1/fees/recommended");
|
|
84
|
-
return response.data.halfHourFee;
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/core/connectors/bitcoin/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/connectors/bitcoin/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/connectors/bitcoin/wallets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { BitcoinConnectorInvalidAccountError, BitcoinConnectorProviderNotFoundError, BitcoinConnectorTransactionFailedError, } from "../errors";
|
|
2
|
-
export class KeplrConnector {
|
|
3
|
-
get getProvider() {
|
|
4
|
-
const provider = window?.bitcoin_keplr;
|
|
5
|
-
if (!provider) {
|
|
6
|
-
throw new BitcoinConnectorProviderNotFoundError("Keplr");
|
|
7
|
-
}
|
|
8
|
-
return provider;
|
|
9
|
-
}
|
|
10
|
-
async sendBTC(to, amount) {
|
|
11
|
-
const txHash = await this.getProvider.sendBitcoin(to, amount);
|
|
12
|
-
if (!txHash) {
|
|
13
|
-
throw new BitcoinConnectorTransactionFailedError();
|
|
14
|
-
}
|
|
15
|
-
return { txHash };
|
|
16
|
-
}
|
|
17
|
-
async requestAccount() {
|
|
18
|
-
const accounts = await this.getProvider.requestAccounts();
|
|
19
|
-
const account = accounts[0];
|
|
20
|
-
if (typeof account !== "string") {
|
|
21
|
-
throw new BitcoinConnectorInvalidAccountError();
|
|
22
|
-
}
|
|
23
|
-
return {
|
|
24
|
-
address: account,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=keplr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keplr.js","sourceRoot":"","sources":["../../../../../src/core/connectors/bitcoin/wallets/keplr.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mCAAmC,EACnC,qCAAqC,EACrC,sCAAsC,GACvC,MAAM,WAAW,CAAC;AAEnB,MAAM,OAAO,cAAc;IACzB,IAAW,WAAW;QACpB,MAAM,QAAQ,GAAI,MAAc,EAAE,aAAa,CAAC;QAEhD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,qCAAqC,CAAC,OAAO,CAAC,CAAC;SAC1D;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,MAAc;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,sCAAsC,EAAE,CAAC;SACpD;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,QAAQ,GAAa,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QAEpE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,MAAM,IAAI,mCAAmC,EAAE,CAAC;SACjD;QAED,OAAO;YACL,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;CACF"}
|