btc-wallet 0.3.7 → 0.3.9
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/config.d.ts +1 -0
- package/dist/index.js +74 -29
- package/dist/index.js.map +3 -3
- package/esm/index.js +74 -29
- package/esm/index.js.map +3 -3
- package/package.json +1 -1
    
        package/dist/config.d.ts
    CHANGED
    
    
    
        package/dist/index.js
    CHANGED
    
    | @@ -2726,21 +2726,24 @@ var walletConfig = { | |
| 2726 2726 | 
             
                token: "nbtc-dev.testnet",
         | 
| 2727 2727 | 
             
                accountContractId: "acc-dev.testnet",
         | 
| 2728 2728 | 
             
                bridgeContractId: "brg-dev.testnet",
         | 
| 2729 | 
            -
                walletUrl: "https://wallet-dev.satoshibridge.top"
         | 
| 2729 | 
            +
                walletUrl: "https://wallet-dev.satoshibridge.top",
         | 
| 2730 | 
            +
                gasTokenLimit: "3000"
         | 
| 2730 2731 | 
             
              },
         | 
| 2731 2732 | 
             
              testnet: {
         | 
| 2732 2733 | 
             
                base_url: "https://api.testnet.satoshibridge.top",
         | 
| 2733 2734 | 
             
                token: "nbtc2-nsp.testnet",
         | 
| 2734 2735 | 
             
                accountContractId: "dev2-nsp.testnet",
         | 
| 2735 2736 | 
             
                bridgeContractId: "brg2-nsp.testnet",
         | 
| 2736 | 
            -
                walletUrl: "https://wallet-test.satoshibridge.top"
         | 
| 2737 | 
            +
                walletUrl: "https://wallet-test.satoshibridge.top",
         | 
| 2738 | 
            +
                gasTokenLimit: "3000"
         | 
| 2737 2739 | 
             
              },
         | 
| 2738 2740 | 
             
              mainnet: {
         | 
| 2739 2741 | 
             
                base_url: "https://api.mainnet.satoshibridge.top",
         | 
| 2740 2742 | 
             
                token: "",
         | 
| 2741 2743 | 
             
                accountContractId: "",
         | 
| 2742 2744 | 
             
                bridgeContractId: "",
         | 
| 2743 | 
            -
                walletUrl: "https://wallet.satoshibridge.top"
         | 
| 2745 | 
            +
                walletUrl: "https://wallet.satoshibridge.top",
         | 
| 2746 | 
            +
                gasTokenLimit: "3000"
         | 
| 2744 2747 | 
             
              }
         | 
| 2745 2748 | 
             
            };
         | 
| 2746 2749 | 
             
            var nearRpcUrls = {
         | 
| @@ -2884,6 +2887,7 @@ function pollTransactionStatuses(network, hashes) { | |
| 2884 2887 | 
             
            }
         | 
| 2885 2888 |  | 
| 2886 2889 | 
             
            // src/core/setupBTCWallet.ts
         | 
| 2890 | 
            +
            var import_big = __toESM(require("big.js"), 1);
         | 
| 2887 2891 | 
             
            var { transfer, functionCall } = import_transactions.actionCreators;
         | 
| 2888 2892 | 
             
            var state = {
         | 
| 2889 2893 | 
             
              saveAccount(account) {
         | 
| @@ -3100,6 +3104,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({ | |
| 3100 3104 | 
             
                    currentConfig.base_url,
         | 
| 3101 3105 | 
             
                    accountId
         | 
| 3102 3106 | 
             
                  );
         | 
| 3107 | 
            +
                  const { transferGasTransaction, useNearPayGas } = yield getGasConfig();
         | 
| 3108 | 
            +
                  if (!useNearPayGas && transferGasTransaction) {
         | 
| 3109 | 
            +
                    params.transactions.unshift(transferGasTransaction);
         | 
| 3110 | 
            +
                  }
         | 
| 3103 3111 | 
             
                  const newTransactions = params.transactions.map((transaction, index) => {
         | 
| 3104 3112 | 
             
                    let nearNonceNumber = accessKey.nonce + BigInt(1);
         | 
| 3105 3113 | 
             
                    if (nearNonceFromApi) {
         | 
| @@ -3150,19 +3158,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({ | |
| 3150 3158 | 
             
                    csna: accountId,
         | 
| 3151 3159 | 
             
                    near_transactions: newTransactions.map((t) => t.txHex),
         | 
| 3152 3160 | 
             
                    gas_token: currentConfig.token,
         | 
| 3153 | 
            -
                    gas_limit:  | 
| 3154 | 
            -
                    use_near_pay_gas:  | 
| 3161 | 
            +
                    gas_limit: currentConfig.gasTokenLimit,
         | 
| 3162 | 
            +
                    use_near_pay_gas: useNearPayGas,
         | 
| 3155 3163 | 
             
                    nonce
         | 
| 3156 3164 | 
             
                  };
         | 
| 3157 | 
            -
                  const nearAccount = yield provider.query({
         | 
| 3158 | 
            -
                    request_type: "view_account",
         | 
| 3159 | 
            -
                    account_id: accountId,
         | 
| 3160 | 
            -
                    finality: "final"
         | 
| 3161 | 
            -
                  });
         | 
| 3162 | 
            -
                  const availableBalance = parseFloat(nearAccount.amount) / __pow(10, 24);
         | 
| 3163 | 
            -
                  if (availableBalance > 0.2) {
         | 
| 3164 | 
            -
                    intention.use_near_pay_gas = true;
         | 
| 3165 | 
            -
                  }
         | 
| 3166 3165 | 
             
                  const strIntention = JSON.stringify(intention);
         | 
| 3167 3166 | 
             
                  const signature = yield btcContext.signMessage(strIntention);
         | 
| 3168 3167 | 
             
                  const result = yield uploadBTCTx(currentConfig.base_url, {
         | 
| @@ -3180,6 +3179,48 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({ | |
| 3180 3179 | 
             
                  }
         | 
| 3181 3180 | 
             
                });
         | 
| 3182 3181 | 
             
              }
         | 
| 3182 | 
            +
              function getGasConfig() {
         | 
| 3183 | 
            +
                return __async(this, null, function* () {
         | 
| 3184 | 
            +
                  const accountId = state.getAccount();
         | 
| 3185 | 
            +
                  const nearAccount = yield provider.query({
         | 
| 3186 | 
            +
                    request_type: "view_account",
         | 
| 3187 | 
            +
                    account_id: accountId,
         | 
| 3188 | 
            +
                    finality: "final"
         | 
| 3189 | 
            +
                  });
         | 
| 3190 | 
            +
                  const availableBalance = parseFloat(nearAccount.amount) / __pow(10, 24);
         | 
| 3191 | 
            +
                  if (availableBalance > 0.2) {
         | 
| 3192 | 
            +
                    return { useNearPayGas: true };
         | 
| 3193 | 
            +
                  } else {
         | 
| 3194 | 
            +
                    const gasTokenBalance = yield nearCall2(currentConfig.token, "ft_balance_of", {
         | 
| 3195 | 
            +
                      account_id: accountId
         | 
| 3196 | 
            +
                    });
         | 
| 3197 | 
            +
                    if (new import_big.default(gasTokenBalance).gt(currentConfig.gasTokenLimit)) {
         | 
| 3198 | 
            +
                      const transferGasTransaction = {
         | 
| 3199 | 
            +
                        signerId: accountId,
         | 
| 3200 | 
            +
                        receiverId: currentConfig.token,
         | 
| 3201 | 
            +
                        actions: [
         | 
| 3202 | 
            +
                          {
         | 
| 3203 | 
            +
                            type: "FunctionCall",
         | 
| 3204 | 
            +
                            params: {
         | 
| 3205 | 
            +
                              methodName: "ft_transfer_call",
         | 
| 3206 | 
            +
                              args: {
         | 
| 3207 | 
            +
                                receiver_id: currentConfig.accountContractId,
         | 
| 3208 | 
            +
                                amount: currentConfig.gasTokenLimit,
         | 
| 3209 | 
            +
                                msg: "Deposit"
         | 
| 3210 | 
            +
                              },
         | 
| 3211 | 
            +
                              gas: new import_big.default(50).mul(__pow(10, 12)).toFixed(0),
         | 
| 3212 | 
            +
                              deposit: "1"
         | 
| 3213 | 
            +
                            }
         | 
| 3214 | 
            +
                          }
         | 
| 3215 | 
            +
                        ]
         | 
| 3216 | 
            +
                      };
         | 
| 3217 | 
            +
                      return { transferGasTransaction, useNearPayGas: false };
         | 
| 3218 | 
            +
                    } else {
         | 
| 3219 | 
            +
                      throw new Error("No enough gas token balance");
         | 
| 3220 | 
            +
                    }
         | 
| 3221 | 
            +
                  }
         | 
| 3222 | 
            +
                });
         | 
| 3223 | 
            +
              }
         | 
| 3183 3224 | 
             
              function initWalletButton(network, wallet2) {
         | 
| 3184 3225 | 
             
                return __async(this, null, function* () {
         | 
| 3185 3226 | 
             
                  const checkAndSetupWalletButton = () => {
         | 
| @@ -3249,7 +3290,7 @@ function toHex(originalString) { | |
| 3249 3290 | 
             
            }
         | 
| 3250 3291 |  | 
| 3251 3292 | 
             
            // src/core/btcUtils.ts
         | 
| 3252 | 
            -
            var  | 
| 3293 | 
            +
            var import_big2 = __toESM(require("big.js"), 1);
         | 
| 3253 3294 | 
             
            function getBtcProvider() {
         | 
| 3254 3295 | 
             
              if (typeof window === "undefined" || !window.btcContext) {
         | 
| 3255 3296 | 
             
                throw new Error("BTC Provider is not initialized.");
         | 
| @@ -3336,7 +3377,7 @@ function getBtcBalance() { | |
| 3336 3377 | 
             
                const rawBalance = res == null ? void 0 : res.reduce((acc, cur) => acc + cur.value, 0);
         | 
| 3337 3378 | 
             
                const balance = rawBalance / __pow(10, 8);
         | 
| 3338 3379 | 
             
                const feeRate = yield getBtcGasPrice();
         | 
| 3339 | 
            -
                const maxGasFee = feeRate *  | 
| 3380 | 
            +
                const maxGasFee = feeRate * 350 / __pow(10, 8);
         | 
| 3340 3381 | 
             
                const availableBalance = Math.max(0, balance - maxGasFee);
         | 
| 3341 3382 | 
             
                return {
         | 
| 3342 3383 | 
             
                  rawBalance,
         | 
| @@ -3363,7 +3404,7 @@ function estimateDepositAmount(amount, option) { | |
| 3363 3404 | 
             
                  {}
         | 
| 3364 3405 | 
             
                );
         | 
| 3365 3406 | 
             
                const fee = Math.max(Number(fee_min), Number(amount) * fee_rate);
         | 
| 3366 | 
            -
                return new  | 
| 3407 | 
            +
                return new import_big2.default(amount).minus(fee).toFixed(0);
         | 
| 3367 3408 | 
             
              });
         | 
| 3368 3409 | 
             
            }
         | 
| 3369 3410 | 
             
            function executeBTCDepositAndAction(_0) {
         | 
| @@ -3379,7 +3420,7 @@ function executeBTCDepositAndAction(_0) { | |
| 3379 3420 | 
             
                  const _action = Object.assign(
         | 
| 3380 3421 | 
             
                    {},
         | 
| 3381 3422 | 
             
                    __spreadProps(__spreadValues({}, action), {
         | 
| 3382 | 
            -
                      gas: new  | 
| 3423 | 
            +
                      gas: new import_big2.default(100).mul(__pow(10, 12)).toFixed(0)
         | 
| 3383 3424 | 
             
                    })
         | 
| 3384 3425 | 
             
                  );
         | 
| 3385 3426 | 
             
                  if (!btcPublicKey) {
         | 
| @@ -3392,7 +3433,7 @@ function executeBTCDepositAndAction(_0) { | |
| 3392 3433 | 
             
                    isDev
         | 
| 3393 3434 | 
             
                  });
         | 
| 3394 3435 | 
             
                  _action.amount = amountWithFee;
         | 
| 3395 | 
            -
                  if (!_action.amount || !new  | 
| 3436 | 
            +
                  if (!_action.amount || !new import_big2.default(_action.amount || 0).gt(0)) {
         | 
| 3396 3437 | 
             
                    throw new Error("action.amount is required or deposit amount is not enough");
         | 
| 3397 3438 | 
             
                  }
         | 
| 3398 3439 | 
             
                  const csna = yield nearCall(
         | 
| @@ -3407,10 +3448,14 @@ function executeBTCDepositAndAction(_0) { | |
| 3407 3448 | 
             
                    post_actions: [_action]
         | 
| 3408 3449 | 
             
                  };
         | 
| 3409 3450 | 
             
                  const storageDepositMsg = {};
         | 
| 3410 | 
            -
                  const accountInfo = yield nearCall( | 
| 3411 | 
            -
                     | 
| 3412 | 
            -
             | 
| 3413 | 
            -
             | 
| 3451 | 
            +
                  const accountInfo = yield nearCall(
         | 
| 3452 | 
            +
                    config.accountContractId,
         | 
| 3453 | 
            +
                    "get_account",
         | 
| 3454 | 
            +
                    {
         | 
| 3455 | 
            +
                      account_id: csna
         | 
| 3456 | 
            +
                    }
         | 
| 3457 | 
            +
                  );
         | 
| 3458 | 
            +
                  if (!(accountInfo == null ? void 0 : accountInfo.nonce)) {
         | 
| 3414 3459 | 
             
                    storageDepositMsg.btc_public_key = btcPublicKey;
         | 
| 3415 3460 | 
             
                  }
         | 
| 3416 3461 | 
             
                  const registerRes = yield nearCall(action.receiver_id, "storage_balance_of", {
         | 
| @@ -3419,14 +3464,14 @@ function executeBTCDepositAndAction(_0) { | |
| 3419 3464 | 
             
                  if (!(registerRes == null ? void 0 : registerRes.available)) {
         | 
| 3420 3465 | 
             
                    storageDepositMsg.storage_deposit_msg = {
         | 
| 3421 3466 | 
             
                      contract_id: action.receiver_id,
         | 
| 3422 | 
            -
                      deposit: new  | 
| 3467 | 
            +
                      deposit: new import_big2.default(0.25).mul(__pow(10, 24)).toFixed(0),
         | 
| 3423 3468 | 
             
                      registration_only: true
         | 
| 3424 3469 | 
             
                    };
         | 
| 3425 3470 | 
             
                  }
         | 
| 3426 3471 | 
             
                  if (Object.keys(storageDepositMsg).length > 0) {
         | 
| 3427 3472 | 
             
                    depositMsg.extra_msg = JSON.stringify(storageDepositMsg);
         | 
| 3428 3473 | 
             
                  }
         | 
| 3429 | 
            -
                  console.log(" | 
| 3474 | 
            +
                  console.log("get_user_deposit_address params:", { deposit_msg: depositMsg });
         | 
| 3430 3475 | 
             
                  const userDepositAddress = yield nearCall(
         | 
| 3431 3476 | 
             
                    config.bridgeContractId,
         | 
| 3432 3477 | 
             
                    "get_user_deposit_address",
         | 
| @@ -3434,12 +3479,12 @@ function executeBTCDepositAndAction(_0) { | |
| 3434 3479 | 
             
                  );
         | 
| 3435 3480 | 
             
                  const _feeRate = feeRate || (yield getBtcGasPrice());
         | 
| 3436 3481 | 
             
                  console.log("user deposit address:", userDepositAddress);
         | 
| 3437 | 
            -
                  console.log("deposit amount:", new  | 
| 3438 | 
            -
                  console.log("receive amount:", new  | 
| 3482 | 
            +
                  console.log("deposit amount:", new import_big2.default(action.amount).toNumber());
         | 
| 3483 | 
            +
                  console.log("receive amount:", new import_big2.default(_action.amount).toNumber());
         | 
| 3439 3484 | 
             
                  console.log("fee rate:", _feeRate);
         | 
| 3440 3485 | 
             
                  const txHash = yield sendBitcoin(
         | 
| 3441 3486 | 
             
                    userDepositAddress,
         | 
| 3442 | 
            -
                    new  | 
| 3487 | 
            +
                    new import_big2.default(action.amount).toNumber(),
         | 
| 3443 3488 | 
             
                    _feeRate
         | 
| 3444 3489 | 
             
                  );
         | 
| 3445 3490 | 
             
                  yield receiveDepositMsg(config.base_url, {
         | 
| @@ -3460,7 +3505,7 @@ function executeBTCDepositAndAction(_0) { | |
| 3460 3505 |  | 
| 3461 3506 | 
             
            // src/index.ts
         | 
| 3462 3507 | 
             
            var getVersion = () => {
         | 
| 3463 | 
            -
              return "0.3. | 
| 3508 | 
            +
              return "0.3.9";
         | 
| 3464 3509 | 
             
            };
         | 
| 3465 3510 | 
             
            if (typeof window !== "undefined") {
         | 
| 3466 3511 | 
             
              window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
         |