btc-wallet 0.3.14 → 0.3.16

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/esm/index.js CHANGED
@@ -2686,21 +2686,24 @@ var walletConfig = {
2686
2686
  token: "nbtc-dev.testnet",
2687
2687
  accountContractId: "acc-dev.testnet",
2688
2688
  bridgeContractId: "brg-dev.testnet",
2689
- walletUrl: "https://wallet-dev.satoshibridge.top"
2689
+ walletUrl: "https://wallet-dev.satoshibridge.top",
2690
+ bridgeUrl: "https://dev.satoshibridge.top/"
2690
2691
  },
2691
2692
  testnet: {
2692
2693
  base_url: "https://api.testnet.satoshibridge.top",
2693
2694
  token: "nbtc2-nsp.testnet",
2694
- accountContractId: "dev2-nsp.testnet",
2695
+ accountContractId: "acc2-nsp.testnet",
2695
2696
  bridgeContractId: "brg2-nsp.testnet",
2696
- walletUrl: "https://wallet-test.satoshibridge.top"
2697
+ walletUrl: "https://wallet-test.satoshibridge.top",
2698
+ bridgeUrl: "https://testnet.satoshibridge.top/"
2697
2699
  },
2698
2700
  mainnet: {
2699
2701
  base_url: "https://api.mainnet.satoshibridge.top",
2700
- token: "",
2701
- accountContractId: "",
2702
- bridgeContractId: "",
2703
- walletUrl: "https://wallet.satoshibridge.top"
2702
+ token: "nbtc.toalice.near",
2703
+ accountContractId: "acc.toalice.near",
2704
+ bridgeContractId: "brg.toalice.near",
2705
+ walletUrl: "https://wallet.satoshibridge.top",
2706
+ bridgeUrl: "https://www.satoshibridge.top/"
2704
2707
  }
2705
2708
  };
2706
2709
  var nearRpcUrls = {
@@ -2828,7 +2831,13 @@ function request(url, options) {
2828
2831
  if (options.shouldStopPolling(data)) {
2829
2832
  return data;
2830
2833
  }
2831
- throw new Error("Polling should continue");
2834
+ if (options.maxPollingAttempts && options.maxPollingAttempts > 0) {
2835
+ yield new Promise((resolve) => setTimeout(resolve, options.pollingInterval));
2836
+ return request(url, __spreadProps(__spreadValues({}, options), {
2837
+ maxPollingAttempts: options.maxPollingAttempts - 1
2838
+ }));
2839
+ }
2840
+ throw new Error("Polling failed: maximum attempts reached without meeting the condition");
2832
2841
  }
2833
2842
  if (cacheKey) {
2834
2843
  cache.set(cacheKey, { timestamp: Date.now(), data });
@@ -3135,6 +3144,8 @@ Dialog.style = `
3135
3144
  `;
3136
3145
 
3137
3146
  // src/core/btcUtils.ts
3147
+ var MINIMUM_DEPOSIT_AMOUNT = 5e3;
3148
+ var MINIMUM_DEPOSIT_AMOUNT_BASE = 1e3;
3138
3149
  function getBtcProvider() {
3139
3150
  if (typeof window === "undefined" || !window.btcContext) {
3140
3151
  throw new Error("BTC Provider is not initialized.");
@@ -3169,9 +3180,25 @@ function nearCall(contractId, methodName, args) {
3169
3180
  function getAccountInfo(csna, accountContractId) {
3170
3181
  return __async(this, null, function* () {
3171
3182
  const accountInfo = yield nearCall(accountContractId, "get_account", { account_id: csna });
3183
+ console.log("get_account accountInfo:", accountInfo);
3172
3184
  return accountInfo;
3173
3185
  });
3174
3186
  }
3187
+ function checkGasTokenBalance(csna, gasToken, isDev) {
3188
+ return __async(this, null, function* () {
3189
+ const amount = yield nearCall(gasToken, "ft_balance_of", { account_id: csna });
3190
+ console.log("gas token balance:", amount);
3191
+ if (new Big(amount).lte(MINIMUM_DEPOSIT_AMOUNT_BASE)) {
3192
+ yield Dialog.confirm({
3193
+ title: "Gas token balance is insufficient",
3194
+ message: "Please deposit gas token to continue, will open bridge website."
3195
+ });
3196
+ const config = yield getConfig(isDev);
3197
+ window.open(config.bridgeUrl, "_blank");
3198
+ throw new Error("Gas token balance is insufficient");
3199
+ }
3200
+ });
3201
+ }
3175
3202
  function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
3176
3203
  return __async(this, null, function* () {
3177
3204
  if (!debtInfo)
@@ -3224,16 +3251,17 @@ function getBtcBalance() {
3224
3251
  }
3225
3252
  const btcRpcUrl = yield getBtcRpcUrl();
3226
3253
  const utxos = yield fetch(`${btcRpcUrl}/address/${account}/utxo`).then((res) => res.json());
3254
+ const btcDecimals = 8;
3227
3255
  const rawBalance = (utxos == null ? void 0 : utxos.reduce((acc, cur) => acc + cur.value, 0)) || 0;
3228
- const balance = rawBalance / __pow(10, 8);
3256
+ const balance = rawBalance / __pow(10, btcDecimals);
3229
3257
  const feeRate = yield getBtcGasPrice();
3230
3258
  const inputSize = ((utxos == null ? void 0 : utxos.length) || 0) * 66;
3231
3259
  const outputSize = 34;
3232
3260
  const overheadSize = 10;
3233
3261
  const estimatedTxSize = inputSize + outputSize + overheadSize;
3234
- const estimatedFee = estimatedTxSize * feeRate / __pow(10, 8);
3235
- console.log("estimated fee:", estimatedFee);
3236
- const availableBalance = Math.max(0, balance - estimatedFee);
3262
+ const estimatedFee = estimatedTxSize * feeRate;
3263
+ const availableRawBalance = (rawBalance - estimatedFee).toFixed(0);
3264
+ const availableBalance = new Big(availableRawBalance).div(__pow(10, btcDecimals)).round(btcDecimals, Big.roundDown).toNumber();
3237
3265
  return {
3238
3266
  rawBalance,
3239
3267
  balance,
@@ -3248,8 +3276,6 @@ function sendBitcoin(address, amount, feeRate) {
3248
3276
  return txHash;
3249
3277
  });
3250
3278
  }
3251
- var MINIMUM_DEPOSIT_AMOUNT = 5e3;
3252
- var MINIMUM_DEPOSIT_AMOUNT_BASE = 1e3;
3253
3279
  function estimateDepositAmount(amount, option) {
3254
3280
  return __async(this, null, function* () {
3255
3281
  const { receiveAmount } = yield getDepositAmount(amount, __spreadProps(__spreadValues({}, option), { isEstimate: true }));
@@ -3312,7 +3338,7 @@ function executeBTCDepositAndAction(_0) {
3312
3338
  const accountInfo = yield getAccountInfo(csna, config.accountContractId);
3313
3339
  const newActions = [];
3314
3340
  const gasLimit = new Big(50).mul(__pow(10, 12)).toFixed(0);
3315
- const repayAction = yield checkGasTokenArrears(accountInfo.debt_info, isDev, false);
3341
+ const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, isDev, false);
3316
3342
  if (repayAction) {
3317
3343
  newActions.push(__spreadProps(__spreadValues({}, repayAction), {
3318
3344
  gas: gasLimit
@@ -3581,10 +3607,11 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3581
3607
  const btcContext = window.btcContext;
3582
3608
  const accountId = state.getAccount();
3583
3609
  const accountInfo = yield getAccountInfo(accountId, currentConfig.accountContractId);
3584
- yield checkGasTokenArrears(accountInfo.debt_info, isDev, true);
3610
+ yield checkGasTokenBalance(accountId, currentConfig.token, isDev);
3611
+ yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, isDev, true);
3585
3612
  const trans = [...params.transactions];
3586
3613
  console.log("raw trans:", trans);
3587
- const gasTokenBalance = accountInfo.gas_token[currentConfig.token] || "0";
3614
+ const gasTokenBalance = (accountInfo == null ? void 0 : accountInfo.gas_token[currentConfig.token]) || "0";
3588
3615
  const { transferGasTransaction, useNearPayGas, gasLimit } = yield calculateGasStrategy(
3589
3616
  gasTokenBalance,
3590
3617
  trans
@@ -3600,7 +3627,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3600
3627
  trans.map((transaction, index) => convertTransactionToTxHex(transaction, index))
3601
3628
  );
3602
3629
  const nonceFromApi = yield getNonce(currentConfig.base_url, accountId);
3603
- const nonce = Number(nonceFromApi) > Number(accountInfo.nonce) ? String(nonceFromApi) : String(accountInfo.nonce);
3630
+ const nonce = Number(nonceFromApi) > Number(accountInfo == null ? void 0 : accountInfo.nonce) ? String(nonceFromApi) : String(accountInfo == null ? void 0 : accountInfo.nonce);
3604
3631
  const intention = {
3605
3632
  chain_id: "397",
3606
3633
  csna: accountId,
@@ -3817,6 +3844,7 @@ function setupBTCWallet({
3817
3844
  syncLogOut = true,
3818
3845
  isDev = false
3819
3846
  } = {}) {
3847
+ console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion());
3820
3848
  const btcWallet = () => __async(this, null, function* () {
3821
3849
  return {
3822
3850
  id: "btc-wallet",
@@ -3840,10 +3868,10 @@ function setupBTCWallet({
3840
3868
 
3841
3869
  // src/index.ts
3842
3870
  var getVersion = () => {
3843
- return "0.3.14";
3871
+ return "0.3.16";
3844
3872
  };
3845
3873
  if (typeof window !== "undefined") {
3846
- window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
3874
+ window.__BTC_WALLET_VERSION = getVersion();
3847
3875
  }
3848
3876
  export {
3849
3877
  BaseConnector,
@@ -3859,6 +3887,7 @@ export {
3859
3887
  WizzConnector,
3860
3888
  XverseConnector,
3861
3889
  checkGasTokenArrears,
3890
+ checkGasTokenBalance,
3862
3891
  estimateDepositAmount,
3863
3892
  executeBTCDepositAndAction,
3864
3893
  getAccountInfo,