btc-wallet 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +60 -6
- package/dist/components/signModal/index.d.ts +1 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/core/bridgeSupplyUtils.d.ts +10 -0
- package/dist/{utils → core}/setupBTCWallet.d.ts +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.js +147 -196
- package/dist/index.js.map +4 -4
- package/dist/utils/ethereumUtils.d.ts +1 -4
- package/dist/utils/index.d.ts +0 -5
- package/esm/index.js +143 -186
- package/esm/index.js.map +4 -4
- package/package.json +1 -1
- package/dist/components/hook.d.ts +0 -1
- package/dist/utils/bridgeSupplyUtils.d.ts +0 -1
- /package/dist/{components → core}/btcWalletSelectorContext.d.ts +0 -0
@@ -1,7 +1,4 @@
|
|
1
|
-
import type {
|
2
|
-
import type { AccountInfo } from '../types/accountInfo';
|
1
|
+
import type { UserOp } from '@particle-network/aa';
|
3
2
|
export declare const pubKeyToEVMAddress: (pubKey: string) => `0x${string}`;
|
4
3
|
export declare const convertSignature: (signature: string) => string;
|
5
4
|
export declare function caculateNativeFee(userOp: UserOp): bigint;
|
6
|
-
export declare const getBTCAAAddress: (smartAccount: SmartAccount, btcAddress: string, name: string, version: string) => Promise<string>;
|
7
|
-
export declare const getBTCAccountInfo: (smartAccount: SmartAccount, btcAddress: string, name: string, version: string) => Promise<AccountInfo>;
|
package/dist/utils/index.d.ts
CHANGED
@@ -1,10 +1,5 @@
|
|
1
1
|
import type { AAOptions } from '@particle-network/aa';
|
2
2
|
export declare function shortString(str: any): string;
|
3
|
-
/**
|
4
|
-
* 复制到剪贴板
|
5
|
-
* @param {string} text
|
6
|
-
* @returns {Promise<void>}
|
7
|
-
*/
|
8
3
|
export declare function copyToClipboard(text: string): Promise<unknown>;
|
9
4
|
export declare const defaultTokenIcon = "https://static.particle.network/token-list/defaultToken/default.png";
|
10
5
|
export declare const ipfsToSrc: (ipfs: string) => string;
|
package/esm/index.js
CHANGED
@@ -681,7 +681,7 @@ var WalletClientProvider = class {
|
|
681
681
|
|
682
682
|
// src/hooks/useETHProvider.ts
|
683
683
|
var useETHProvider = () => {
|
684
|
-
const { evmAccount, smartAccount
|
684
|
+
const { evmAccount, smartAccount } = useConnectProvider();
|
685
685
|
const [chainId, setChainId] = useState();
|
686
686
|
useEffect(() => {
|
687
687
|
if (smartAccount) {
|
@@ -775,7 +775,11 @@ var useETHProvider = () => {
|
|
775
775
|
return (smartAccount == null ? void 0 : smartAccount.provider).publicClient;
|
776
776
|
}, [smartAccount, chainId]);
|
777
777
|
const provider = useMemo(() => {
|
778
|
-
const ethereumProvider = new EthereumProvider(
|
778
|
+
const ethereumProvider = new EthereumProvider(
|
779
|
+
sendUserOp,
|
780
|
+
smartAccount == null ? void 0 : smartAccount.provider,
|
781
|
+
evmAccount
|
782
|
+
);
|
779
783
|
return ethereumProvider;
|
780
784
|
}, [evmAccount, sendUserOp, smartAccount == null ? void 0 : smartAccount.provider]);
|
781
785
|
const walletClient = useMemo(() => {
|
@@ -787,7 +791,6 @@ var useETHProvider = () => {
|
|
787
791
|
provider,
|
788
792
|
evmAccount,
|
789
793
|
account: evmAccount,
|
790
|
-
getSmartAccountInfo,
|
791
794
|
switchChain,
|
792
795
|
chainId,
|
793
796
|
getFeeQuotes,
|
@@ -1085,7 +1088,13 @@ var checkBTCVersion = (accountContracts, accountContractKey, version) => {
|
|
1085
1088
|
var delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
1086
1089
|
|
1087
1090
|
// src/utils/ethereumUtils.ts
|
1088
|
-
import {
|
1091
|
+
import {
|
1092
|
+
bytesToHex,
|
1093
|
+
publicToAddress,
|
1094
|
+
toBytes,
|
1095
|
+
toChecksumAddress,
|
1096
|
+
toRpcSig
|
1097
|
+
} from "@ethereumjs/util";
|
1089
1098
|
import bitcore from "bitcore-lib";
|
1090
1099
|
var pubKeyToEVMAddress = (pubKey) => {
|
1091
1100
|
const address = toChecksumAddress(bytesToHex(publicToAddress(toBytes(`0x${pubKey}`), true)));
|
@@ -1100,57 +1109,6 @@ var convertSignature = (signature) => {
|
|
1100
1109
|
function caculateNativeFee(userOp) {
|
1101
1110
|
return (BigInt(userOp.callGasLimit) + BigInt(userOp.verificationGasLimit) + BigInt(userOp.preVerificationGas)) * BigInt(userOp.maxFeePerGas);
|
1102
1111
|
}
|
1103
|
-
var getBTCAAAddress = (smartAccount, btcAddress, name, version) => __async(void 0, null, function* () {
|
1104
|
-
var _a;
|
1105
|
-
const addresses = yield smartAccount.provider.request({ method: "eth_accounts" });
|
1106
|
-
const owner = addresses[0];
|
1107
|
-
const localKey = `particle_${name}_${version}_${owner}`;
|
1108
|
-
if (typeof window !== "undefined" && localStorage) {
|
1109
|
-
const localAA = localStorage.getItem(localKey);
|
1110
|
-
if (localAA) {
|
1111
|
-
return localAA;
|
1112
|
-
}
|
1113
|
-
}
|
1114
|
-
const btcPublicKey = yield smartAccount.provider.getPublicKey();
|
1115
|
-
const accountInfo = yield smartAccount.sendRpc({
|
1116
|
-
method: "particle_aa_getBTCAccount",
|
1117
|
-
params: [
|
1118
|
-
{
|
1119
|
-
name,
|
1120
|
-
version,
|
1121
|
-
btcPublicKey,
|
1122
|
-
btcAddress
|
1123
|
-
}
|
1124
|
-
]
|
1125
|
-
});
|
1126
|
-
const address = (_a = accountInfo == null ? void 0 : accountInfo[0]) == null ? void 0 : _a.smartAccountAddress;
|
1127
|
-
if (typeof window !== "undefined" && localStorage && address) {
|
1128
|
-
localStorage.setItem(localKey, address);
|
1129
|
-
}
|
1130
|
-
return address;
|
1131
|
-
});
|
1132
|
-
var getBTCAccountInfo = (smartAccount, btcAddress, name, version) => __async(void 0, null, function* () {
|
1133
|
-
const btcPublicKey = yield smartAccount.provider.getPublicKey();
|
1134
|
-
const [accountInfo] = yield smartAccount.sendRpc({
|
1135
|
-
method: "particle_aa_getBTCAccount",
|
1136
|
-
params: [
|
1137
|
-
{
|
1138
|
-
name,
|
1139
|
-
version,
|
1140
|
-
btcPublicKey,
|
1141
|
-
btcAddress
|
1142
|
-
}
|
1143
|
-
]
|
1144
|
-
});
|
1145
|
-
const address = accountInfo.smartAccountAddress;
|
1146
|
-
const addresses = yield smartAccount.provider.request({ method: "eth_accounts" });
|
1147
|
-
const owner = addresses[0];
|
1148
|
-
const localKey = `particle_${name}_${version}_${owner}`;
|
1149
|
-
if (typeof window !== "undefined" && localStorage && address) {
|
1150
|
-
localStorage.setItem(localKey, address);
|
1151
|
-
}
|
1152
|
-
return accountInfo;
|
1153
|
-
});
|
1154
1112
|
|
1155
1113
|
// src/components/copyText/index.tsx
|
1156
1114
|
import { useState as useState4 } from "react";
|
@@ -1420,7 +1378,11 @@ var sign_module_default = classes8;
|
|
1420
1378
|
|
1421
1379
|
// src/components/signModal/index.tsx
|
1422
1380
|
import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
1423
|
-
var SignModal = ({
|
1381
|
+
var SignModal = ({
|
1382
|
+
open,
|
1383
|
+
onClose,
|
1384
|
+
onOpen
|
1385
|
+
}) => {
|
1424
1386
|
const [userOpBundle, setUserOpBundle] = useState5();
|
1425
1387
|
const [notRemindChecked, setNotRemindChecked] = useState5(false);
|
1426
1388
|
const [loading, setLoading] = useState5(false);
|
@@ -1602,10 +1564,12 @@ var SignModal = ({ open, onClose, onOpen }) => {
|
|
1602
1564
|
var _a, _b;
|
1603
1565
|
return ((_b = (_a = item.estimatedChanges.natives) == null ? void 0 : _a[0]) == null ? void 0 : _b.nativeChange) && item.estimatedChanges.natives[0].nativeChange.startsWith("-");
|
1604
1566
|
}
|
1605
|
-
).map(
|
1606
|
-
|
1607
|
-
|
1608
|
-
|
1567
|
+
).map(
|
1568
|
+
(item) => {
|
1569
|
+
var _a, _b, _c, _d;
|
1570
|
+
return BigInt(((_d = (_c = (_b = (_a = item.estimatedChanges) == null ? void 0 : _a.natives) == null ? void 0 : _b[0]) == null ? void 0 : _c.nativeChange) == null ? void 0 : _d.replace("-", "")) || 0);
|
1571
|
+
}
|
1572
|
+
).reduce((accumulator, currentValue) => accumulator + currentValue, BigInt(0));
|
1609
1573
|
if (userOpBundle.userOp.paymasterAndData.length > 2) {
|
1610
1574
|
setDisabled(nativeBalance < nativeChange);
|
1611
1575
|
} else {
|
@@ -1627,37 +1591,52 @@ var SignModal = ({ open, onClose, onOpen }) => {
|
|
1627
1591
|
return JSON.stringify(obj, null, 2);
|
1628
1592
|
}
|
1629
1593
|
}, [requestArguments]);
|
1630
|
-
return /* @__PURE__ */ jsx8(
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1636
|
-
|
1637
|
-
|
1638
|
-
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1651
|
-
|
1652
|
-
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1594
|
+
return /* @__PURE__ */ jsx8(
|
1595
|
+
modal_default,
|
1596
|
+
{
|
1597
|
+
open,
|
1598
|
+
onClose,
|
1599
|
+
isDismissable: false,
|
1600
|
+
contentClassName: sign_module_default.modalContent,
|
1601
|
+
children: /* @__PURE__ */ jsxs5(Fragment3, { children: [
|
1602
|
+
/* @__PURE__ */ jsx8("img", { className: sign_module_default.closeBtn, src: close_default, onClick: closeModal }),
|
1603
|
+
requestArguments && /* @__PURE__ */ jsx8("div", { className: sign_module_default.signTitle, children: requestArguments.method == "personal_sign" /* personalSign */ ? "Sign Message" : "Sign Typed Data" }),
|
1604
|
+
/* @__PURE__ */ jsxs5("div", { className: sign_module_default.chainInfo, children: [
|
1605
|
+
/* @__PURE__ */ jsx8("img", { src: chainInfo == null ? void 0 : chainInfo.icon }),
|
1606
|
+
chainInfo == null ? void 0 : chainInfo.fullname.replace("Mainnet", "")
|
1607
|
+
] }),
|
1608
|
+
/* @__PURE__ */ jsx8("div", { className: sign_module_default.addressContainer, children: /* @__PURE__ */ jsx8(CopyText, { value: evmAccount, style: { textDecorationLine: "none" }, children: /* @__PURE__ */ jsxs5("div", { className: sign_module_default.addressInfo, children: [
|
1609
|
+
shortString(evmAccount),
|
1610
|
+
/* @__PURE__ */ jsx8("img", { src: copy_default })
|
1611
|
+
] }) }) }),
|
1612
|
+
/* @__PURE__ */ jsxs5(
|
1613
|
+
"div",
|
1614
|
+
{
|
1615
|
+
className: sign_module_default.detailsContent + (deserializeResult || requestArguments ? ` ${sign_module_default.fill}` : ""),
|
1616
|
+
children: [
|
1617
|
+
deserializeResult && deserializeResult.map((details, index) => /* @__PURE__ */ jsx8(transactionDetails_default, { details }, `${details.type}-${index}`)),
|
1618
|
+
unsignedMessage && /* @__PURE__ */ jsx8("div", { className: sign_module_default.unsignedMessage, children: unsignedMessage })
|
1619
|
+
]
|
1620
|
+
}
|
1621
|
+
),
|
1622
|
+
gasFee && /* @__PURE__ */ jsx8("div", { className: sign_module_default.estimatedGas, children: `Estimated gas fee: ${formatEther(gasFee)} ${chainInfo == null ? void 0 : chainInfo.nativeCurrency.symbol}` }),
|
1623
|
+
/* @__PURE__ */ jsx8(
|
1624
|
+
button_default,
|
1625
|
+
{
|
1626
|
+
onClick: confirmTx,
|
1627
|
+
className: sign_module_default.signBtn,
|
1628
|
+
isLoading: loading || deserializeLoading,
|
1629
|
+
isDisabled: disabled,
|
1630
|
+
children: deserializeLoading ? "LOADING" : disabled ? "INSUFFICIENT FEE" : "CONFIRM"
|
1631
|
+
}
|
1632
|
+
),
|
1633
|
+
showNotRemind && /* @__PURE__ */ jsxs5("div", { className: sign_module_default.notRemind, onClick: toggleNotRemind, children: [
|
1634
|
+
/* @__PURE__ */ jsx8("img", { src: notRemindChecked ? check_box_default : check_box_blank_default }),
|
1635
|
+
"Do not remind me again"
|
1636
|
+
] })
|
1637
|
+
] })
|
1638
|
+
}
|
1639
|
+
);
|
1661
1640
|
};
|
1662
1641
|
var signModal_default = SignModal;
|
1663
1642
|
|
@@ -1819,7 +1798,11 @@ var ConnectProvider = ({
|
|
1819
1798
|
isModalOpen: connectModalOpen,
|
1820
1799
|
openModal: openConnectModal
|
1821
1800
|
} = useModalStateValue_default();
|
1822
|
-
const {
|
1801
|
+
const {
|
1802
|
+
closeModal: closeSignModal,
|
1803
|
+
isModalOpen: signModalOpen,
|
1804
|
+
openModal: openSignModal
|
1805
|
+
} = useModalStateValue_default();
|
1823
1806
|
const [connectorId, setConnectorId] = useState7();
|
1824
1807
|
const [accounts, setAccounts] = useState7([]);
|
1825
1808
|
const [evmAccount, setEVMAccount] = useState7();
|
@@ -1904,7 +1887,12 @@ var ConnectProvider = ({
|
|
1904
1887
|
}
|
1905
1888
|
if (!window.__bitcoinSmartAccount || (window == null ? void 0 : window.__bitcoinSmartAccount) && ((window == null ? void 0 : window.__bitcoinSmartAccount.smartAccountContract.version) !== accountContract.version || (window == null ? void 0 : window.__bitcoinSmartAccount.smartAccountContract.name) !== accountContract.name)) {
|
1906
1889
|
const smartAccount2 = new SmartAccount(
|
1907
|
-
new AASignerProvider(
|
1890
|
+
new AASignerProvider(
|
1891
|
+
evmSupportChainIds,
|
1892
|
+
options.projectId,
|
1893
|
+
options.clientKey,
|
1894
|
+
options.rpcUrls
|
1895
|
+
),
|
1908
1896
|
options
|
1909
1897
|
);
|
1910
1898
|
smartAccount2.setSmartAccountContract(accountContract);
|
@@ -1914,35 +1902,9 @@ var ConnectProvider = ({
|
|
1914
1902
|
window.__bitcoinSmartAccount.provider.personalSign = signMessage;
|
1915
1903
|
return window.__bitcoinSmartAccount;
|
1916
1904
|
}, [options, evmSupportChainIds, getPublicKey, signMessage, accountContract]);
|
1917
|
-
useEffect5(() => {
|
1918
|
-
if (accounts.length > 0 && smartAccount) {
|
1919
|
-
getBTCAAAddress(smartAccount, accounts[0], accountContract.name, accountContract.version).then((res) => {
|
1920
|
-
setEVMAccount(res);
|
1921
|
-
}).catch((e) => {
|
1922
|
-
setEVMAccount(void 0);
|
1923
|
-
console.error("smartAccount getAddress error", e);
|
1924
|
-
});
|
1925
|
-
} else {
|
1926
|
-
setEVMAccount(void 0);
|
1927
|
-
}
|
1928
|
-
}, [accountContract, accounts, smartAccount]);
|
1929
|
-
const getSmartAccountInfo = useCallback7(() => __async(void 0, null, function* () {
|
1930
|
-
if (accounts.length > 0 && smartAccount) {
|
1931
|
-
const accountInfo = yield getBTCAccountInfo(
|
1932
|
-
smartAccount,
|
1933
|
-
accounts[0],
|
1934
|
-
accountContract.name,
|
1935
|
-
accountContract.version
|
1936
|
-
);
|
1937
|
-
setEVMAccount(accountInfo.smartAccountAddress);
|
1938
|
-
return accountInfo;
|
1939
|
-
}
|
1940
|
-
return void 0;
|
1941
|
-
}), [accounts, smartAccount, accountContract, setEVMAccount]);
|
1942
1905
|
const requestAccount = useCallback7(
|
1943
1906
|
(connector2) => __async(void 0, null, function* () {
|
1944
1907
|
let accounts2 = yield connector2.getAccounts();
|
1945
|
-
console.log("requestAccount start, autoConnect", accounts2, autoConnect);
|
1946
1908
|
if (accounts2.length === 0 && autoConnect) {
|
1947
1909
|
accounts2 = yield connector2.requestAccounts();
|
1948
1910
|
}
|
@@ -1950,23 +1912,18 @@ var ConnectProvider = ({
|
|
1950
1912
|
}),
|
1951
1913
|
[autoConnect]
|
1952
1914
|
);
|
1953
|
-
const requestDirectAccount = useCallback7(
|
1954
|
-
|
1955
|
-
|
1956
|
-
|
1957
|
-
|
1958
|
-
|
1959
|
-
|
1960
|
-
|
1961
|
-
setAccounts(accounts2);
|
1962
|
-
return accounts2;
|
1963
|
-
}),
|
1964
|
-
[]
|
1965
|
-
);
|
1915
|
+
const requestDirectAccount = useCallback7((connector2) => __async(void 0, null, function* () {
|
1916
|
+
let accounts2 = yield connector2.getAccounts();
|
1917
|
+
if (accounts2.length === 0) {
|
1918
|
+
accounts2 = yield connector2.requestAccounts();
|
1919
|
+
}
|
1920
|
+
setAccounts(accounts2);
|
1921
|
+
return accounts2;
|
1922
|
+
}), []);
|
1966
1923
|
useEffect5(() => {
|
1967
1924
|
if (connector) {
|
1968
1925
|
requestAccount(connector).catch((e) => {
|
1969
|
-
console.
|
1926
|
+
console.error("get account error", e);
|
1970
1927
|
setAccounts([]);
|
1971
1928
|
});
|
1972
1929
|
} else {
|
@@ -2096,8 +2053,7 @@ var ConnectProvider = ({
|
|
2096
2053
|
switchNetwork,
|
2097
2054
|
sendBitcoin: sendBitcoin2,
|
2098
2055
|
accountContract,
|
2099
|
-
setAccountContract
|
2100
|
-
getSmartAccountInfo
|
2056
|
+
setAccountContract
|
2101
2057
|
},
|
2102
2058
|
children: [
|
2103
2059
|
children,
|
@@ -2112,8 +2068,8 @@ var useConnectProvider = () => {
|
|
2112
2068
|
return context;
|
2113
2069
|
};
|
2114
2070
|
|
2115
|
-
// src/
|
2116
|
-
import React, { useContext as useContext2, useEffect as
|
2071
|
+
// src/core/btcWalletSelectorContext.tsx
|
2072
|
+
import React, { useContext as useContext2, useEffect as useEffect6, useMemo as useMemo6, useRef, useState as useState8 } from "react";
|
2117
2073
|
|
2118
2074
|
// src/components/confirmBox/Modal.tsx
|
2119
2075
|
import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
@@ -2167,17 +2123,7 @@ function ComfirmBox({ onClose, status = 1, fromChain = {
|
|
2167
2123
|
] });
|
2168
2124
|
}
|
2169
2125
|
|
2170
|
-
// src/
|
2171
|
-
import { useEffect as useEffect6 } from "react";
|
2172
|
-
function InitContextHook() {
|
2173
|
-
const btcContext = useBtcWalletSelector();
|
2174
|
-
useEffect6(() => {
|
2175
|
-
window.btcContext = btcContext;
|
2176
|
-
}, [btcContext]);
|
2177
|
-
return null;
|
2178
|
-
}
|
2179
|
-
|
2180
|
-
// src/components/btcWalletSelectorContext.tsx
|
2126
|
+
// src/core/btcWalletSelectorContext.tsx
|
2181
2127
|
import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
2182
2128
|
var WalletSelectorContext = React.createContext(null);
|
2183
2129
|
function BtcWalletSelectorContextProvider({
|
@@ -2237,11 +2183,18 @@ function BtcWalletSelectorContextProvider({
|
|
2237
2183
|
}
|
2238
2184
|
}
|
2239
2185
|
),
|
2240
|
-
/* @__PURE__ */ jsx12(
|
2186
|
+
/* @__PURE__ */ jsx12(InitBtcWalletSelectorContext, {})
|
2241
2187
|
]
|
2242
2188
|
}
|
2243
2189
|
) });
|
2244
2190
|
}
|
2191
|
+
function InitBtcWalletSelectorContext() {
|
2192
|
+
const context = useBtcWalletSelector();
|
2193
|
+
useEffect6(() => {
|
2194
|
+
window.btcContext = context;
|
2195
|
+
}, [context]);
|
2196
|
+
return null;
|
2197
|
+
}
|
2245
2198
|
function useBtcWalletSelector() {
|
2246
2199
|
const { openConnectModal, openConnectModalAsync, disconnect, requestDirectAccount } = useConnectModal();
|
2247
2200
|
const { accounts, sendBitcoin: sendBitcoin2, getPublicKey, provider, signMessage, connector } = useBTCProvider();
|
@@ -2251,7 +2204,7 @@ function useBtcWalletSelector() {
|
|
2251
2204
|
const providerRef = useRef(null);
|
2252
2205
|
const [updater, setUpdater] = useState8(1);
|
2253
2206
|
const context = useContext2(WalletSelectorContext);
|
2254
|
-
|
2207
|
+
useEffect6(() => {
|
2255
2208
|
if (provider) {
|
2256
2209
|
getPublicKey().then((res) => {
|
2257
2210
|
publicKey.current = res;
|
@@ -2259,10 +2212,10 @@ function useBtcWalletSelector() {
|
|
2259
2212
|
providerRef.current = provider;
|
2260
2213
|
}
|
2261
2214
|
}, [provider, updater]);
|
2262
|
-
|
2215
|
+
useEffect6(() => {
|
2263
2216
|
signMessageFn.current = signMessage;
|
2264
2217
|
}, [signMessage]);
|
2265
|
-
|
2218
|
+
useEffect6(() => {
|
2266
2219
|
const fn = (account) => {
|
2267
2220
|
if (account) {
|
2268
2221
|
getPublicKey().then((res) => {
|
@@ -2296,7 +2249,7 @@ function useBtcWalletSelector() {
|
|
2296
2249
|
autoConnect: () => __async(this, null, function* () {
|
2297
2250
|
let times = 0;
|
2298
2251
|
while (!connectorRef.current) {
|
2299
|
-
yield
|
2252
|
+
yield delay(500);
|
2300
2253
|
if (times++ > 10) {
|
2301
2254
|
return null;
|
2302
2255
|
}
|
@@ -2313,7 +2266,7 @@ function useBtcWalletSelector() {
|
|
2313
2266
|
getPublicKey: () => __async(this, null, function* () {
|
2314
2267
|
let times = 0;
|
2315
2268
|
while (!publicKey.current) {
|
2316
|
-
yield
|
2269
|
+
yield delay(1e3);
|
2317
2270
|
if (times++ > 10) {
|
2318
2271
|
return null;
|
2319
2272
|
}
|
@@ -2329,7 +2282,7 @@ function useBtcWalletSelector() {
|
|
2329
2282
|
getBalance: () => __async(this, null, function* () {
|
2330
2283
|
let times = 0;
|
2331
2284
|
while (!providerRef.current) {
|
2332
|
-
yield
|
2285
|
+
yield delay(500);
|
2333
2286
|
if (times++ > 10) {
|
2334
2287
|
return null;
|
2335
2288
|
}
|
@@ -2340,13 +2293,8 @@ function useBtcWalletSelector() {
|
|
2340
2293
|
sendBitcoin: sendBitcoin2
|
2341
2294
|
};
|
2342
2295
|
}
|
2343
|
-
function sleep(time) {
|
2344
|
-
return new Promise(function(resolve) {
|
2345
|
-
setTimeout(resolve, time);
|
2346
|
-
});
|
2347
|
-
}
|
2348
2296
|
|
2349
|
-
// src/
|
2297
|
+
// src/core/setupBTCWallet.ts
|
2350
2298
|
import { providers, transactions } from "near-api-js";
|
2351
2299
|
import { actionCreators } from "@near-js/transactions";
|
2352
2300
|
import { PublicKey } from "near-api-js/lib/utils/key_pair";
|
@@ -2439,7 +2387,8 @@ function createIframe({
|
|
2439
2387
|
zIndex: "100000",
|
2440
2388
|
boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)",
|
2441
2389
|
borderRadius: "10px",
|
2442
|
-
display: "block"
|
2390
|
+
display: "block",
|
2391
|
+
border: "none"
|
2443
2392
|
}, iframeStyle));
|
2444
2393
|
document.body.appendChild(iframe);
|
2445
2394
|
return iframe;
|
@@ -2457,7 +2406,6 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
2457
2406
|
originalAccountId && iframeSrc.searchParams.set("originalAccountId", originalAccountId);
|
2458
2407
|
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
2459
2408
|
iframe.src = iframeSrc.toString();
|
2460
|
-
console.log("iframe src", iframe.src);
|
2461
2409
|
window.addEventListener("message", (event) => __async(this, null, function* () {
|
2462
2410
|
var _a2, _b;
|
2463
2411
|
if (event.origin !== iframeSrc.origin)
|
@@ -2533,8 +2481,8 @@ var nearRpcUrls = {
|
|
2533
2481
|
]
|
2534
2482
|
};
|
2535
2483
|
var btcRpcUrls = {
|
2536
|
-
mainnet: "https://
|
2537
|
-
testnet: "https://
|
2484
|
+
mainnet: "https://mempool.space/api",
|
2485
|
+
testnet: "https://mempool.space/testnet/api"
|
2538
2486
|
};
|
2539
2487
|
|
2540
2488
|
// src/utils/request.ts
|
@@ -2607,7 +2555,7 @@ function request(url, options) {
|
|
2607
2555
|
});
|
2608
2556
|
}
|
2609
2557
|
|
2610
|
-
// src/
|
2558
|
+
// src/core/setupBTCWallet.ts
|
2611
2559
|
var { transfer, functionCall } = actionCreators;
|
2612
2560
|
var state = {
|
2613
2561
|
saveAccount(account) {
|
@@ -2672,7 +2620,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2672
2620
|
if (!inter) {
|
2673
2621
|
inter = setInterval(() => __async(void 0, null, function* () {
|
2674
2622
|
const btcContext = window.btcContext;
|
2675
|
-
console.log("inter btcContext:", btcContext);
|
2676
2623
|
if (btcContext) {
|
2677
2624
|
clearInterval(inter);
|
2678
2625
|
const context = btcContext.getContext();
|
@@ -2694,12 +2641,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2694
2641
|
});
|
2695
2642
|
}));
|
2696
2643
|
context.on("btcLogOut", (e) => __async(void 0, null, function* () {
|
2697
|
-
console.log(3333);
|
2698
2644
|
emitter.emit("accountsChanged", {
|
2699
2645
|
accounts: []
|
2700
2646
|
});
|
2701
2647
|
}));
|
2702
|
-
console.log("metadata.autoConnect:", metadata);
|
2703
2648
|
if ("autoConnect" in metadata && metadata.autoConnect && localStorage.getItem("near-wallet-selector:selectedWalletId") === '"btc-wallet"') {
|
2704
2649
|
yield btcContext.autoConnect();
|
2705
2650
|
}
|
@@ -2883,7 +2828,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2883
2828
|
btcPubKey: state.getBtcPublicKey(),
|
2884
2829
|
data: toHex(strIntention)
|
2885
2830
|
});
|
2886
|
-
console.log("result:", result);
|
2887
2831
|
if (result.result_code === 0) {
|
2888
2832
|
const hash = newTransactions.map((t) => t.hash);
|
2889
2833
|
console.log("txHash:", hash);
|
@@ -2899,7 +2843,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2899
2843
|
const checkAndSetupWalletButton = () => {
|
2900
2844
|
const accountId = state.getAccount();
|
2901
2845
|
const btcContext = window.btcContext;
|
2902
|
-
console.log("checkAndSetupWalletButton:",
|
2846
|
+
console.log("checkAndSetupWalletButton:", {
|
2847
|
+
nearAccountId: accountId,
|
2848
|
+
btcAccountId: btcContext.account
|
2849
|
+
});
|
2903
2850
|
if (accountId && btcContext.account) {
|
2904
2851
|
setupWalletButton(network, wallet2, btcContext);
|
2905
2852
|
} else {
|
@@ -2995,7 +2942,7 @@ function pollTransactionStatuses(network, hashes) {
|
|
2995
2942
|
});
|
2996
2943
|
}
|
2997
2944
|
|
2998
|
-
// src/
|
2945
|
+
// src/core/bridgeSupplyUtils.ts
|
2999
2946
|
import { providers as providers2 } from "near-api-js";
|
3000
2947
|
import Big from "big.js";
|
3001
2948
|
function nearViewMethod(contractId, methodName, args, network) {
|
@@ -3030,12 +2977,13 @@ function getDepositAddress(btcPublicKey, contractId, network) {
|
|
3030
2977
|
return res;
|
3031
2978
|
});
|
3032
2979
|
}
|
3033
|
-
function getGasPrice(
|
2980
|
+
function getGasPrice(network) {
|
3034
2981
|
return __async(this, null, function* () {
|
3035
2982
|
const defaultFeeRate = 100;
|
3036
2983
|
try {
|
3037
|
-
const
|
3038
|
-
const
|
2984
|
+
const btcRpcUrl = btcRpcUrls[network];
|
2985
|
+
const res = yield fetch(`${btcRpcUrl}/v1/fees/recommended`).then((res2) => res2.json());
|
2986
|
+
const feeRate = res.fastestFee;
|
3039
2987
|
return feeRate || defaultFeeRate;
|
3040
2988
|
} catch (error) {
|
3041
2989
|
return defaultFeeRate;
|
@@ -3064,12 +3012,21 @@ function receiveDepositMsg(_0, _1) {
|
|
3064
3012
|
}
|
3065
3013
|
function checkTransactionStatus(baseUrl, txHash) {
|
3066
3014
|
return __async(this, null, function* () {
|
3067
|
-
const res = yield request(`${baseUrl}/v1/bridgeFromTx?fromTxHash=${txHash}
|
3015
|
+
const res = yield request(`${baseUrl}/v1/bridgeFromTx?fromTxHash=${txHash}`, {
|
3016
|
+
timeout: 6e4,
|
3017
|
+
pollingInterval: 5e3,
|
3018
|
+
maxPollingAttempts: 10,
|
3019
|
+
shouldStopPolling: (res2) => res2.result_code === 0
|
3020
|
+
});
|
3068
3021
|
return res;
|
3069
3022
|
});
|
3070
3023
|
}
|
3071
|
-
function executeBurrowSupply(
|
3072
|
-
return __async(this,
|
3024
|
+
function executeBurrowSupply(_0) {
|
3025
|
+
return __async(this, arguments, function* ({
|
3026
|
+
amount,
|
3027
|
+
feeRate,
|
3028
|
+
environment = "mainnet"
|
3029
|
+
}) {
|
3073
3030
|
try {
|
3074
3031
|
if (typeof window === "undefined" || !window.btcContext) {
|
3075
3032
|
throw new Error("BTC Provider is not initialized.");
|
@@ -3077,17 +3034,18 @@ function executeBurrowSupply(amount, environment) {
|
|
3077
3034
|
const btcProvider = window.btcContext;
|
3078
3035
|
const network = environment === "dev" ? "testnet" : environment;
|
3079
3036
|
const config = walletConfig[environment];
|
3080
|
-
const btcRpcUrl = btcRpcUrls[network];
|
3081
3037
|
const btcPublicKey = yield btcProvider.getPublicKey();
|
3082
3038
|
if (!btcPublicKey) {
|
3083
3039
|
throw new Error("BTC Public Key is not available.");
|
3084
3040
|
}
|
3085
3041
|
const address = yield getDepositAddress(btcPublicKey, config.contractId, network);
|
3086
|
-
const
|
3087
|
-
|
3088
|
-
yield
|
3089
|
-
const
|
3090
|
-
console.log("
|
3042
|
+
const _feeRate = feeRate || (yield getGasPrice(network));
|
3043
|
+
console.log("feeRate", _feeRate);
|
3044
|
+
const txHash = yield sendBitcoin(btcProvider, address, amount, _feeRate);
|
3045
|
+
const receiveDepositMsgRes = yield receiveDepositMsg(config.base_url, { btcPublicKey, txHash });
|
3046
|
+
console.log("receiveDepositMsg resp:", receiveDepositMsgRes);
|
3047
|
+
const checkTransactionStatusRes = yield checkTransactionStatus(config.base_url, txHash);
|
3048
|
+
console.log("checkTransactionStatus resp:", checkTransactionStatusRes);
|
3091
3049
|
} catch (error) {
|
3092
3050
|
console.error("Error executing Bridge+BurrowSupply:", error);
|
3093
3051
|
}
|
@@ -3096,7 +3054,7 @@ function executeBurrowSupply(amount, environment) {
|
|
3096
3054
|
|
3097
3055
|
// src/index.ts
|
3098
3056
|
var getVersion = () => {
|
3099
|
-
return "0.2.
|
3057
|
+
return "0.2.7";
|
3100
3058
|
};
|
3101
3059
|
if (typeof window !== "undefined") {
|
3102
3060
|
window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
|
@@ -3107,7 +3065,6 @@ export {
|
|
3107
3065
|
BtcWalletSelectorContextProvider,
|
3108
3066
|
BybitConnector,
|
3109
3067
|
ConnectProvider,
|
3110
|
-
InitContextHook,
|
3111
3068
|
InjectedConnector,
|
3112
3069
|
OKXConnector,
|
3113
3070
|
TokenPocketConnector,
|