btc-wallet 0.2.6 → 0.2.8
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/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 +149 -197
- 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 +145 -187
- 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({
|
@@ -2185,6 +2131,7 @@ function BtcWalletSelectorContextProvider({
|
|
2185
2131
|
autoConnect = false
|
2186
2132
|
}) {
|
2187
2133
|
const [isProcessing, setIsProcessing] = useState8(false);
|
2134
|
+
const connectors = [new UnisatConnector(), new XverseConnector()];
|
2188
2135
|
const walletSelectorContextValue = useMemo6(() => {
|
2189
2136
|
const simpleFn = {};
|
2190
2137
|
return {
|
@@ -2224,7 +2171,7 @@ function BtcWalletSelectorContextProvider({
|
|
2224
2171
|
}
|
2225
2172
|
},
|
2226
2173
|
autoConnect: false,
|
2227
|
-
connectors
|
2174
|
+
connectors,
|
2228
2175
|
children: [
|
2229
2176
|
children,
|
2230
2177
|
isProcessing && /* @__PURE__ */ jsx12(
|
@@ -2237,11 +2184,18 @@ function BtcWalletSelectorContextProvider({
|
|
2237
2184
|
}
|
2238
2185
|
}
|
2239
2186
|
),
|
2240
|
-
/* @__PURE__ */ jsx12(
|
2187
|
+
/* @__PURE__ */ jsx12(InitBtcWalletSelectorContext, {})
|
2241
2188
|
]
|
2242
2189
|
}
|
2243
2190
|
) });
|
2244
2191
|
}
|
2192
|
+
function InitBtcWalletSelectorContext() {
|
2193
|
+
const context = useBtcWalletSelector();
|
2194
|
+
useEffect6(() => {
|
2195
|
+
window.btcContext = context;
|
2196
|
+
}, [context]);
|
2197
|
+
return null;
|
2198
|
+
}
|
2245
2199
|
function useBtcWalletSelector() {
|
2246
2200
|
const { openConnectModal, openConnectModalAsync, disconnect, requestDirectAccount } = useConnectModal();
|
2247
2201
|
const { accounts, sendBitcoin: sendBitcoin2, getPublicKey, provider, signMessage, connector } = useBTCProvider();
|
@@ -2251,7 +2205,7 @@ function useBtcWalletSelector() {
|
|
2251
2205
|
const providerRef = useRef(null);
|
2252
2206
|
const [updater, setUpdater] = useState8(1);
|
2253
2207
|
const context = useContext2(WalletSelectorContext);
|
2254
|
-
|
2208
|
+
useEffect6(() => {
|
2255
2209
|
if (provider) {
|
2256
2210
|
getPublicKey().then((res) => {
|
2257
2211
|
publicKey.current = res;
|
@@ -2259,10 +2213,10 @@ function useBtcWalletSelector() {
|
|
2259
2213
|
providerRef.current = provider;
|
2260
2214
|
}
|
2261
2215
|
}, [provider, updater]);
|
2262
|
-
|
2216
|
+
useEffect6(() => {
|
2263
2217
|
signMessageFn.current = signMessage;
|
2264
2218
|
}, [signMessage]);
|
2265
|
-
|
2219
|
+
useEffect6(() => {
|
2266
2220
|
const fn = (account) => {
|
2267
2221
|
if (account) {
|
2268
2222
|
getPublicKey().then((res) => {
|
@@ -2296,7 +2250,7 @@ function useBtcWalletSelector() {
|
|
2296
2250
|
autoConnect: () => __async(this, null, function* () {
|
2297
2251
|
let times = 0;
|
2298
2252
|
while (!connectorRef.current) {
|
2299
|
-
yield
|
2253
|
+
yield delay(500);
|
2300
2254
|
if (times++ > 10) {
|
2301
2255
|
return null;
|
2302
2256
|
}
|
@@ -2313,7 +2267,7 @@ function useBtcWalletSelector() {
|
|
2313
2267
|
getPublicKey: () => __async(this, null, function* () {
|
2314
2268
|
let times = 0;
|
2315
2269
|
while (!publicKey.current) {
|
2316
|
-
yield
|
2270
|
+
yield delay(1e3);
|
2317
2271
|
if (times++ > 10) {
|
2318
2272
|
return null;
|
2319
2273
|
}
|
@@ -2329,7 +2283,7 @@ function useBtcWalletSelector() {
|
|
2329
2283
|
getBalance: () => __async(this, null, function* () {
|
2330
2284
|
let times = 0;
|
2331
2285
|
while (!providerRef.current) {
|
2332
|
-
yield
|
2286
|
+
yield delay(500);
|
2333
2287
|
if (times++ > 10) {
|
2334
2288
|
return null;
|
2335
2289
|
}
|
@@ -2340,13 +2294,8 @@ function useBtcWalletSelector() {
|
|
2340
2294
|
sendBitcoin: sendBitcoin2
|
2341
2295
|
};
|
2342
2296
|
}
|
2343
|
-
function sleep(time) {
|
2344
|
-
return new Promise(function(resolve) {
|
2345
|
-
setTimeout(resolve, time);
|
2346
|
-
});
|
2347
|
-
}
|
2348
2297
|
|
2349
|
-
// src/
|
2298
|
+
// src/core/setupBTCWallet.ts
|
2350
2299
|
import { providers, transactions } from "near-api-js";
|
2351
2300
|
import { actionCreators } from "@near-js/transactions";
|
2352
2301
|
import { PublicKey } from "near-api-js/lib/utils/key_pair";
|
@@ -2439,7 +2388,8 @@ function createIframe({
|
|
2439
2388
|
zIndex: "100000",
|
2440
2389
|
boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)",
|
2441
2390
|
borderRadius: "10px",
|
2442
|
-
display: "block"
|
2391
|
+
display: "block",
|
2392
|
+
border: "none"
|
2443
2393
|
}, iframeStyle));
|
2444
2394
|
document.body.appendChild(iframe);
|
2445
2395
|
return iframe;
|
@@ -2457,7 +2407,6 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
2457
2407
|
originalAccountId && iframeSrc.searchParams.set("originalAccountId", originalAccountId);
|
2458
2408
|
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
2459
2409
|
iframe.src = iframeSrc.toString();
|
2460
|
-
console.log("iframe src", iframe.src);
|
2461
2410
|
window.addEventListener("message", (event) => __async(this, null, function* () {
|
2462
2411
|
var _a2, _b;
|
2463
2412
|
if (event.origin !== iframeSrc.origin)
|
@@ -2533,8 +2482,8 @@ var nearRpcUrls = {
|
|
2533
2482
|
]
|
2534
2483
|
};
|
2535
2484
|
var btcRpcUrls = {
|
2536
|
-
mainnet: "https://
|
2537
|
-
testnet: "https://
|
2485
|
+
mainnet: "https://mempool.space/api",
|
2486
|
+
testnet: "https://mempool.space/testnet/api"
|
2538
2487
|
};
|
2539
2488
|
|
2540
2489
|
// src/utils/request.ts
|
@@ -2607,7 +2556,7 @@ function request(url, options) {
|
|
2607
2556
|
});
|
2608
2557
|
}
|
2609
2558
|
|
2610
|
-
// src/
|
2559
|
+
// src/core/setupBTCWallet.ts
|
2611
2560
|
var { transfer, functionCall } = actionCreators;
|
2612
2561
|
var state = {
|
2613
2562
|
saveAccount(account) {
|
@@ -2672,7 +2621,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2672
2621
|
if (!inter) {
|
2673
2622
|
inter = setInterval(() => __async(void 0, null, function* () {
|
2674
2623
|
const btcContext = window.btcContext;
|
2675
|
-
console.log("inter btcContext:", btcContext);
|
2676
2624
|
if (btcContext) {
|
2677
2625
|
clearInterval(inter);
|
2678
2626
|
const context = btcContext.getContext();
|
@@ -2694,12 +2642,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2694
2642
|
});
|
2695
2643
|
}));
|
2696
2644
|
context.on("btcLogOut", (e) => __async(void 0, null, function* () {
|
2697
|
-
console.log(3333);
|
2698
2645
|
emitter.emit("accountsChanged", {
|
2699
2646
|
accounts: []
|
2700
2647
|
});
|
2701
2648
|
}));
|
2702
|
-
console.log("metadata.autoConnect:", metadata);
|
2703
2649
|
if ("autoConnect" in metadata && metadata.autoConnect && localStorage.getItem("near-wallet-selector:selectedWalletId") === '"btc-wallet"') {
|
2704
2650
|
yield btcContext.autoConnect();
|
2705
2651
|
}
|
@@ -2883,7 +2829,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2883
2829
|
btcPubKey: state.getBtcPublicKey(),
|
2884
2830
|
data: toHex(strIntention)
|
2885
2831
|
});
|
2886
|
-
console.log("result:", result);
|
2887
2832
|
if (result.result_code === 0) {
|
2888
2833
|
const hash = newTransactions.map((t) => t.hash);
|
2889
2834
|
console.log("txHash:", hash);
|
@@ -2899,7 +2844,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2899
2844
|
const checkAndSetupWalletButton = () => {
|
2900
2845
|
const accountId = state.getAccount();
|
2901
2846
|
const btcContext = window.btcContext;
|
2902
|
-
console.log("checkAndSetupWalletButton:",
|
2847
|
+
console.log("checkAndSetupWalletButton:", {
|
2848
|
+
nearAccountId: accountId,
|
2849
|
+
btcAccountId: btcContext.account
|
2850
|
+
});
|
2903
2851
|
if (accountId && btcContext.account) {
|
2904
2852
|
setupWalletButton(network, wallet2, btcContext);
|
2905
2853
|
} else {
|
@@ -2995,7 +2943,7 @@ function pollTransactionStatuses(network, hashes) {
|
|
2995
2943
|
});
|
2996
2944
|
}
|
2997
2945
|
|
2998
|
-
// src/
|
2946
|
+
// src/core/bridgeSupplyUtils.ts
|
2999
2947
|
import { providers as providers2 } from "near-api-js";
|
3000
2948
|
import Big from "big.js";
|
3001
2949
|
function nearViewMethod(contractId, methodName, args, network) {
|
@@ -3030,12 +2978,13 @@ function getDepositAddress(btcPublicKey, contractId, network) {
|
|
3030
2978
|
return res;
|
3031
2979
|
});
|
3032
2980
|
}
|
3033
|
-
function getGasPrice(
|
2981
|
+
function getGasPrice(network) {
|
3034
2982
|
return __async(this, null, function* () {
|
3035
2983
|
const defaultFeeRate = 100;
|
3036
2984
|
try {
|
3037
|
-
const
|
3038
|
-
const
|
2985
|
+
const btcRpcUrl = btcRpcUrls[network];
|
2986
|
+
const res = yield fetch(`${btcRpcUrl}/v1/fees/recommended`).then((res2) => res2.json());
|
2987
|
+
const feeRate = res.fastestFee;
|
3039
2988
|
return feeRate || defaultFeeRate;
|
3040
2989
|
} catch (error) {
|
3041
2990
|
return defaultFeeRate;
|
@@ -3064,12 +3013,21 @@ function receiveDepositMsg(_0, _1) {
|
|
3064
3013
|
}
|
3065
3014
|
function checkTransactionStatus(baseUrl, txHash) {
|
3066
3015
|
return __async(this, null, function* () {
|
3067
|
-
const res = yield request(`${baseUrl}/v1/bridgeFromTx?fromTxHash=${txHash}
|
3016
|
+
const res = yield request(`${baseUrl}/v1/bridgeFromTx?fromTxHash=${txHash}`, {
|
3017
|
+
timeout: 6e4,
|
3018
|
+
pollingInterval: 5e3,
|
3019
|
+
maxPollingAttempts: 10,
|
3020
|
+
shouldStopPolling: (res2) => res2.result_code === 0
|
3021
|
+
});
|
3068
3022
|
return res;
|
3069
3023
|
});
|
3070
3024
|
}
|
3071
|
-
function executeBurrowSupply(
|
3072
|
-
return __async(this,
|
3025
|
+
function executeBurrowSupply(_0) {
|
3026
|
+
return __async(this, arguments, function* ({
|
3027
|
+
amount,
|
3028
|
+
feeRate,
|
3029
|
+
environment = "mainnet"
|
3030
|
+
}) {
|
3073
3031
|
try {
|
3074
3032
|
if (typeof window === "undefined" || !window.btcContext) {
|
3075
3033
|
throw new Error("BTC Provider is not initialized.");
|
@@ -3077,17 +3035,18 @@ function executeBurrowSupply(amount, environment) {
|
|
3077
3035
|
const btcProvider = window.btcContext;
|
3078
3036
|
const network = environment === "dev" ? "testnet" : environment;
|
3079
3037
|
const config = walletConfig[environment];
|
3080
|
-
const btcRpcUrl = btcRpcUrls[network];
|
3081
3038
|
const btcPublicKey = yield btcProvider.getPublicKey();
|
3082
3039
|
if (!btcPublicKey) {
|
3083
3040
|
throw new Error("BTC Public Key is not available.");
|
3084
3041
|
}
|
3085
3042
|
const address = yield getDepositAddress(btcPublicKey, config.contractId, network);
|
3086
|
-
const
|
3087
|
-
|
3088
|
-
yield
|
3089
|
-
const
|
3090
|
-
console.log("
|
3043
|
+
const _feeRate = feeRate || (yield getGasPrice(network));
|
3044
|
+
console.log("feeRate", _feeRate);
|
3045
|
+
const txHash = yield sendBitcoin(btcProvider, address, amount, _feeRate);
|
3046
|
+
const receiveDepositMsgRes = yield receiveDepositMsg(config.base_url, { btcPublicKey, txHash });
|
3047
|
+
console.log("receiveDepositMsg resp:", receiveDepositMsgRes);
|
3048
|
+
const checkTransactionStatusRes = yield checkTransactionStatus(config.base_url, txHash);
|
3049
|
+
console.log("checkTransactionStatus resp:", checkTransactionStatusRes);
|
3091
3050
|
} catch (error) {
|
3092
3051
|
console.error("Error executing Bridge+BurrowSupply:", error);
|
3093
3052
|
}
|
@@ -3096,7 +3055,7 @@ function executeBurrowSupply(amount, environment) {
|
|
3096
3055
|
|
3097
3056
|
// src/index.ts
|
3098
3057
|
var getVersion = () => {
|
3099
|
-
return "0.2.
|
3058
|
+
return "0.2.8";
|
3100
3059
|
};
|
3101
3060
|
if (typeof window !== "undefined") {
|
3102
3061
|
window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
|
@@ -3107,7 +3066,6 @@ export {
|
|
3107
3066
|
BtcWalletSelectorContextProvider,
|
3108
3067
|
BybitConnector,
|
3109
3068
|
ConnectProvider,
|
3110
|
-
InitContextHook,
|
3111
3069
|
InjectedConnector,
|
3112
3070
|
OKXConnector,
|
3113
3071
|
TokenPocketConnector,
|