btc-wallet 0.3.6 → 0.3.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/dist/config.d.ts +1 -0
 - package/dist/core/btcUtils.d.ts +10 -0
 - package/dist/index.js +123 -35
 - package/dist/index.js.map +3 -3
 - package/esm/index.js +123 -35
 - package/esm/index.js.map +3 -3
 - package/package.json +1 -1
 
    
        package/dist/config.d.ts
    CHANGED
    
    
    
        package/dist/core/btcUtils.d.ts
    CHANGED
    
    | 
         @@ -1,9 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            export declare function getBtcGasPrice(): Promise<number>;
         
     | 
| 
       2 
2 
     | 
    
         
             
            export declare function getBtcBalance(): Promise<{
         
     | 
| 
      
 3 
     | 
    
         
            +
                rawBalance: number;
         
     | 
| 
      
 4 
     | 
    
         
            +
                balance: number;
         
     | 
| 
      
 5 
     | 
    
         
            +
                maxSpendableBalance: number;
         
     | 
| 
      
 6 
     | 
    
         
            +
                availableBalance?: undefined;
         
     | 
| 
      
 7 
     | 
    
         
            +
            } | {
         
     | 
| 
       3 
8 
     | 
    
         
             
                rawBalance: any;
         
     | 
| 
       4 
9 
     | 
    
         
             
                balance: number;
         
     | 
| 
      
 10 
     | 
    
         
            +
                availableBalance: number;
         
     | 
| 
      
 11 
     | 
    
         
            +
                maxSpendableBalance?: undefined;
         
     | 
| 
       5 
12 
     | 
    
         
             
            }>;
         
     | 
| 
       6 
13 
     | 
    
         
             
            export declare function sendBitcoin(address: string, amount: number, feeRate: number): Promise<string>;
         
     | 
| 
      
 14 
     | 
    
         
            +
            export declare function estimateDepositAmount(amount: string, option?: {
         
     | 
| 
      
 15 
     | 
    
         
            +
                isDev: boolean;
         
     | 
| 
      
 16 
     | 
    
         
            +
            }): Promise<string>;
         
     | 
| 
       7 
17 
     | 
    
         
             
            interface ExecuteBTCDepositAndActionParams {
         
     | 
| 
       8 
18 
     | 
    
         
             
                action: {
         
     | 
| 
       9 
19 
     | 
    
         
             
                    receiver_id: string;
         
     | 
    
        package/dist/index.js
    CHANGED
    
    | 
         @@ -90,6 +90,7 @@ __export(src_exports, { 
     | 
|
| 
       90 
90 
     | 
    
         
             
              UnisatConnector: () => UnisatConnector,
         
     | 
| 
       91 
91 
     | 
    
         
             
              WizzConnector: () => WizzConnector,
         
     | 
| 
       92 
92 
     | 
    
         
             
              XverseConnector: () => XverseConnector,
         
     | 
| 
      
 93 
     | 
    
         
            +
              estimateDepositAmount: () => estimateDepositAmount,
         
     | 
| 
       93 
94 
     | 
    
         
             
              executeBTCDepositAndAction: () => executeBTCDepositAndAction,
         
     | 
| 
       94 
95 
     | 
    
         
             
              getBtcBalance: () => getBtcBalance,
         
     | 
| 
       95 
96 
     | 
    
         
             
              getBtcGasPrice: () => getBtcGasPrice,
         
     | 
| 
         @@ -2725,21 +2726,24 @@ var walletConfig = { 
     | 
|
| 
       2725 
2726 
     | 
    
         
             
                token: "nbtc-dev.testnet",
         
     | 
| 
       2726 
2727 
     | 
    
         
             
                accountContractId: "acc-dev.testnet",
         
     | 
| 
       2727 
2728 
     | 
    
         
             
                bridgeContractId: "brg-dev.testnet",
         
     | 
| 
       2728 
     | 
    
         
            -
                walletUrl: "https://wallet-dev.satoshibridge.top"
         
     | 
| 
      
 2729 
     | 
    
         
            +
                walletUrl: "https://wallet-dev.satoshibridge.top",
         
     | 
| 
      
 2730 
     | 
    
         
            +
                gasTokenLimit: "3000"
         
     | 
| 
       2729 
2731 
     | 
    
         
             
              },
         
     | 
| 
       2730 
2732 
     | 
    
         
             
              testnet: {
         
     | 
| 
       2731 
2733 
     | 
    
         
             
                base_url: "https://api.testnet.satoshibridge.top",
         
     | 
| 
       2732 
2734 
     | 
    
         
             
                token: "nbtc2-nsp.testnet",
         
     | 
| 
       2733 
2735 
     | 
    
         
             
                accountContractId: "dev2-nsp.testnet",
         
     | 
| 
       2734 
2736 
     | 
    
         
             
                bridgeContractId: "brg2-nsp.testnet",
         
     | 
| 
       2735 
     | 
    
         
            -
                walletUrl: "https://wallet-test.satoshibridge.top"
         
     | 
| 
      
 2737 
     | 
    
         
            +
                walletUrl: "https://wallet-test.satoshibridge.top",
         
     | 
| 
      
 2738 
     | 
    
         
            +
                gasTokenLimit: "3000"
         
     | 
| 
       2736 
2739 
     | 
    
         
             
              },
         
     | 
| 
       2737 
2740 
     | 
    
         
             
              mainnet: {
         
     | 
| 
       2738 
2741 
     | 
    
         
             
                base_url: "https://api.mainnet.satoshibridge.top",
         
     | 
| 
       2739 
2742 
     | 
    
         
             
                token: "",
         
     | 
| 
       2740 
2743 
     | 
    
         
             
                accountContractId: "",
         
     | 
| 
       2741 
2744 
     | 
    
         
             
                bridgeContractId: "",
         
     | 
| 
       2742 
     | 
    
         
            -
                walletUrl: "https://wallet.satoshibridge.top"
         
     | 
| 
      
 2745 
     | 
    
         
            +
                walletUrl: "https://wallet.satoshibridge.top",
         
     | 
| 
      
 2746 
     | 
    
         
            +
                gasTokenLimit: "3000"
         
     | 
| 
       2743 
2747 
     | 
    
         
             
              }
         
     | 
| 
       2744 
2748 
     | 
    
         
             
            };
         
     | 
| 
       2745 
2749 
     | 
    
         
             
            var nearRpcUrls = {
         
     | 
| 
         @@ -2883,6 +2887,7 @@ function pollTransactionStatuses(network, hashes) { 
     | 
|
| 
       2883 
2887 
     | 
    
         
             
            }
         
     | 
| 
       2884 
2888 
     | 
    
         | 
| 
       2885 
2889 
     | 
    
         
             
            // src/core/setupBTCWallet.ts
         
     | 
| 
      
 2890 
     | 
    
         
            +
            var import_big = __toESM(require("big.js"), 1);
         
     | 
| 
       2886 
2891 
     | 
    
         
             
            var { transfer, functionCall } = import_transactions.actionCreators;
         
     | 
| 
       2887 
2892 
     | 
    
         
             
            var state = {
         
     | 
| 
       2888 
2893 
     | 
    
         
             
              saveAccount(account) {
         
     | 
| 
         @@ -3099,6 +3104,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({ 
     | 
|
| 
       3099 
3104 
     | 
    
         
             
                    currentConfig.base_url,
         
     | 
| 
       3100 
3105 
     | 
    
         
             
                    accountId
         
     | 
| 
       3101 
3106 
     | 
    
         
             
                  );
         
     | 
| 
      
 3107 
     | 
    
         
            +
                  const { transferGasTransaction, useNearPayGas } = yield getGasConfig();
         
     | 
| 
      
 3108 
     | 
    
         
            +
                  if (!useNearPayGas && transferGasTransaction) {
         
     | 
| 
      
 3109 
     | 
    
         
            +
                    params.transactions.unshift(transferGasTransaction);
         
     | 
| 
      
 3110 
     | 
    
         
            +
                  }
         
     | 
| 
       3102 
3111 
     | 
    
         
             
                  const newTransactions = params.transactions.map((transaction, index) => {
         
     | 
| 
       3103 
3112 
     | 
    
         
             
                    let nearNonceNumber = accessKey.nonce + BigInt(1);
         
     | 
| 
       3104 
3113 
     | 
    
         
             
                    if (nearNonceFromApi) {
         
     | 
| 
         @@ -3149,19 +3158,10 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({ 
     | 
|
| 
       3149 
3158 
     | 
    
         
             
                    csna: accountId,
         
     | 
| 
       3150 
3159 
     | 
    
         
             
                    near_transactions: newTransactions.map((t) => t.txHex),
         
     | 
| 
       3151 
3160 
     | 
    
         
             
                    gas_token: currentConfig.token,
         
     | 
| 
       3152 
     | 
    
         
            -
                    gas_limit:  
     | 
| 
       3153 
     | 
    
         
            -
                    use_near_pay_gas:  
     | 
| 
      
 3161 
     | 
    
         
            +
                    gas_limit: currentConfig.gasTokenLimit,
         
     | 
| 
      
 3162 
     | 
    
         
            +
                    use_near_pay_gas: useNearPayGas,
         
     | 
| 
       3154 
3163 
     | 
    
         
             
                    nonce
         
     | 
| 
       3155 
3164 
     | 
    
         
             
                  };
         
     | 
| 
       3156 
     | 
    
         
            -
                  const nearAccount = yield provider.query({
         
     | 
| 
       3157 
     | 
    
         
            -
                    request_type: "view_account",
         
     | 
| 
       3158 
     | 
    
         
            -
                    account_id: accountId,
         
     | 
| 
       3159 
     | 
    
         
            -
                    finality: "final"
         
     | 
| 
       3160 
     | 
    
         
            -
                  });
         
     | 
| 
       3161 
     | 
    
         
            -
                  const availableBalance = parseFloat(nearAccount.amount) / __pow(10, 24);
         
     | 
| 
       3162 
     | 
    
         
            -
                  if (availableBalance > 0.2) {
         
     | 
| 
       3163 
     | 
    
         
            -
                    intention.use_near_pay_gas = true;
         
     | 
| 
       3164 
     | 
    
         
            -
                  }
         
     | 
| 
       3165 
3165 
     | 
    
         
             
                  const strIntention = JSON.stringify(intention);
         
     | 
| 
       3166 
3166 
     | 
    
         
             
                  const signature = yield btcContext.signMessage(strIntention);
         
     | 
| 
       3167 
3167 
     | 
    
         
             
                  const result = yield uploadBTCTx(currentConfig.base_url, {
         
     | 
| 
         @@ -3179,6 +3179,48 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({ 
     | 
|
| 
       3179 
3179 
     | 
    
         
             
                  }
         
     | 
| 
       3180 
3180 
     | 
    
         
             
                });
         
     | 
| 
       3181 
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 
     | 
    
         
            +
              }
         
     | 
| 
       3182 
3224 
     | 
    
         
             
              function initWalletButton(network, wallet2) {
         
     | 
| 
       3183 
3225 
     | 
    
         
             
                return __async(this, null, function* () {
         
     | 
| 
       3184 
3226 
     | 
    
         
             
                  const checkAndSetupWalletButton = () => {
         
     | 
| 
         @@ -3248,7 +3290,7 @@ function toHex(originalString) { 
     | 
|
| 
       3248 
3290 
     | 
    
         
             
            }
         
     | 
| 
       3249 
3291 
     | 
    
         | 
| 
       3250 
3292 
     | 
    
         
             
            // src/core/btcUtils.ts
         
     | 
| 
       3251 
     | 
    
         
            -
            var  
     | 
| 
      
 3293 
     | 
    
         
            +
            var import_big2 = __toESM(require("big.js"), 1);
         
     | 
| 
       3252 
3294 
     | 
    
         
             
            function getBtcProvider() {
         
     | 
| 
       3253 
3295 
     | 
    
         
             
              if (typeof window === "undefined" || !window.btcContext) {
         
     | 
| 
       3254 
3296 
     | 
    
         
             
                throw new Error("BTC Provider is not initialized.");
         
     | 
| 
         @@ -3268,6 +3310,12 @@ function getBtcRpcUrl() { 
     | 
|
| 
       3268 
3310 
     | 
    
         
             
                return btcRpcUrls[network];
         
     | 
| 
       3269 
3311 
     | 
    
         
             
              });
         
     | 
| 
       3270 
3312 
     | 
    
         
             
            }
         
     | 
| 
      
 3313 
     | 
    
         
            +
            function getConfig(isDev) {
         
     | 
| 
      
 3314 
     | 
    
         
            +
              return __async(this, null, function* () {
         
     | 
| 
      
 3315 
     | 
    
         
            +
                const network = yield getNetwork();
         
     | 
| 
      
 3316 
     | 
    
         
            +
                return walletConfig[isDev ? "dev" : network];
         
     | 
| 
      
 3317 
     | 
    
         
            +
              });
         
     | 
| 
      
 3318 
     | 
    
         
            +
            }
         
     | 
| 
       3271 
3319 
     | 
    
         
             
            function nearCall(contractId, methodName, args) {
         
     | 
| 
       3272 
3320 
     | 
    
         
             
              return __async(this, null, function* () {
         
     | 
| 
       3273 
3321 
     | 
    
         
             
                const network = yield getNetwork();
         
     | 
| 
         @@ -3322,13 +3370,20 @@ function getBtcBalance() { 
     | 
|
| 
       3322 
3370 
     | 
    
         
             
                const { account } = yield retryOperation(getBtcProvider, (res2) => !!res2.account);
         
     | 
| 
       3323 
3371 
     | 
    
         
             
                if (!account) {
         
     | 
| 
       3324 
3372 
     | 
    
         
             
                  console.error("BTC Account is not available.");
         
     | 
| 
       3325 
     | 
    
         
            -
                  return { rawBalance: 0, balance: 0 };
         
     | 
| 
      
 3373 
     | 
    
         
            +
                  return { rawBalance: 0, balance: 0, maxSpendableBalance: 0 };
         
     | 
| 
       3326 
3374 
     | 
    
         
             
                }
         
     | 
| 
       3327 
3375 
     | 
    
         
             
                const btcRpcUrl = yield getBtcRpcUrl();
         
     | 
| 
       3328 
3376 
     | 
    
         
             
                const res = yield fetch(`${btcRpcUrl}/address/${account}/utxo`).then((res2) => res2.json());
         
     | 
| 
       3329 
3377 
     | 
    
         
             
                const rawBalance = res == null ? void 0 : res.reduce((acc, cur) => acc + cur.value, 0);
         
     | 
| 
       3330 
3378 
     | 
    
         
             
                const balance = rawBalance / __pow(10, 8);
         
     | 
| 
       3331 
     | 
    
         
            -
                 
     | 
| 
      
 3379 
     | 
    
         
            +
                const feeRate = yield getBtcGasPrice();
         
     | 
| 
      
 3380 
     | 
    
         
            +
                const maxGasFee = feeRate * 250 / __pow(10, 8);
         
     | 
| 
      
 3381 
     | 
    
         
            +
                const availableBalance = Math.max(0, balance - maxGasFee);
         
     | 
| 
      
 3382 
     | 
    
         
            +
                return {
         
     | 
| 
      
 3383 
     | 
    
         
            +
                  rawBalance,
         
     | 
| 
      
 3384 
     | 
    
         
            +
                  balance,
         
     | 
| 
      
 3385 
     | 
    
         
            +
                  availableBalance
         
     | 
| 
      
 3386 
     | 
    
         
            +
                };
         
     | 
| 
       3332 
3387 
     | 
    
         
             
              });
         
     | 
| 
       3333 
3388 
     | 
    
         
             
            }
         
     | 
| 
       3334 
3389 
     | 
    
         
             
            function sendBitcoin(address, amount, feeRate) {
         
     | 
| 
         @@ -3338,6 +3393,20 @@ function sendBitcoin(address, amount, feeRate) { 
     | 
|
| 
       3338 
3393 
     | 
    
         
             
                return txHash;
         
     | 
| 
       3339 
3394 
     | 
    
         
             
              });
         
     | 
| 
       3340 
3395 
     | 
    
         
             
            }
         
     | 
| 
      
 3396 
     | 
    
         
            +
            function estimateDepositAmount(amount, option) {
         
     | 
| 
      
 3397 
     | 
    
         
            +
              return __async(this, null, function* () {
         
     | 
| 
      
 3398 
     | 
    
         
            +
                const config = yield getConfig((option == null ? void 0 : option.isDev) || false);
         
     | 
| 
      
 3399 
     | 
    
         
            +
                const {
         
     | 
| 
      
 3400 
     | 
    
         
            +
                  deposit_bridge_fee: { fee_min, fee_rate }
         
     | 
| 
      
 3401 
     | 
    
         
            +
                } = yield nearCall(
         
     | 
| 
      
 3402 
     | 
    
         
            +
                  config.bridgeContractId,
         
     | 
| 
      
 3403 
     | 
    
         
            +
                  "get_config",
         
     | 
| 
      
 3404 
     | 
    
         
            +
                  {}
         
     | 
| 
      
 3405 
     | 
    
         
            +
                );
         
     | 
| 
      
 3406 
     | 
    
         
            +
                const fee = Math.max(Number(fee_min), Number(amount) * fee_rate);
         
     | 
| 
      
 3407 
     | 
    
         
            +
                return new import_big2.default(amount).minus(fee).toFixed(0);
         
     | 
| 
      
 3408 
     | 
    
         
            +
              });
         
     | 
| 
      
 3409 
     | 
    
         
            +
            }
         
     | 
| 
       3341 
3410 
     | 
    
         
             
            function executeBTCDepositAndAction(_0) {
         
     | 
| 
       3342 
3411 
     | 
    
         
             
              return __async(this, arguments, function* ({
         
     | 
| 
       3343 
3412 
     | 
    
         
             
                action,
         
     | 
| 
         @@ -3346,18 +3415,26 @@ function executeBTCDepositAndAction(_0) { 
     | 
|
| 
       3346 
3415 
     | 
    
         
             
              }) {
         
     | 
| 
       3347 
3416 
     | 
    
         
             
                try {
         
     | 
| 
       3348 
3417 
     | 
    
         
             
                  const { getPublicKey } = getBtcProvider();
         
     | 
| 
       3349 
     | 
    
         
            -
                  const  
     | 
| 
       3350 
     | 
    
         
            -
                  const config = walletConfig[isDev ? "dev" : network];
         
     | 
| 
      
 3418 
     | 
    
         
            +
                  const config = yield getConfig(isDev);
         
     | 
| 
       3351 
3419 
     | 
    
         
             
                  const btcPublicKey = yield getPublicKey();
         
     | 
| 
       3352 
     | 
    
         
            -
                  const _action = Object.assign( 
     | 
| 
      
 3420 
     | 
    
         
            +
                  const _action = Object.assign(
         
     | 
| 
      
 3421 
     | 
    
         
            +
                    {},
         
     | 
| 
      
 3422 
     | 
    
         
            +
                    __spreadProps(__spreadValues({}, action), {
         
     | 
| 
      
 3423 
     | 
    
         
            +
                      gas: new import_big2.default(100).mul(__pow(10, 12)).toFixed(0)
         
     | 
| 
      
 3424 
     | 
    
         
            +
                    })
         
     | 
| 
      
 3425 
     | 
    
         
            +
                  );
         
     | 
| 
       3353 
3426 
     | 
    
         
             
                  if (!btcPublicKey) {
         
     | 
| 
       3354 
3427 
     | 
    
         
             
                    throw new Error("BTC Public Key is not available.");
         
     | 
| 
       3355 
3428 
     | 
    
         
             
                  }
         
     | 
| 
       3356 
3429 
     | 
    
         
             
                  if (!_action.receiver_id) {
         
     | 
| 
       3357 
3430 
     | 
    
         
             
                    throw new Error("action.receiver_id is required");
         
     | 
| 
       3358 
3431 
     | 
    
         
             
                  }
         
     | 
| 
       3359 
     | 
    
         
            -
                   
     | 
| 
       3360 
     | 
    
         
            -
                     
     | 
| 
      
 3432 
     | 
    
         
            +
                  const amountWithFee = yield estimateDepositAmount(_action.amount, {
         
     | 
| 
      
 3433 
     | 
    
         
            +
                    isDev
         
     | 
| 
      
 3434 
     | 
    
         
            +
                  });
         
     | 
| 
      
 3435 
     | 
    
         
            +
                  _action.amount = amountWithFee;
         
     | 
| 
      
 3436 
     | 
    
         
            +
                  if (!_action.amount || !new import_big2.default(_action.amount || 0).gt(0)) {
         
     | 
| 
      
 3437 
     | 
    
         
            +
                    throw new Error("action.amount is required or deposit amount is not enough");
         
     | 
| 
       3361 
3438 
     | 
    
         
             
                  }
         
     | 
| 
       3362 
3439 
     | 
    
         
             
                  const csna = yield nearCall(
         
     | 
| 
       3363 
3440 
     | 
    
         
             
                    config.accountContractId,
         
     | 
| 
         @@ -3366,37 +3443,48 @@ function executeBTCDepositAndAction(_0) { 
     | 
|
| 
       3366 
3443 
     | 
    
         
             
                      btc_public_key: btcPublicKey
         
     | 
| 
       3367 
3444 
     | 
    
         
             
                    }
         
     | 
| 
       3368 
3445 
     | 
    
         
             
                  );
         
     | 
| 
       3369 
     | 
    
         
            -
                  _action.amount = new import_big.default(_action.amount).toString();
         
     | 
| 
       3370 
     | 
    
         
            -
                  _action.gas = new import_big.default(100).mul(__pow(10, 12)).toFixed(0);
         
     | 
| 
       3371 
3446 
     | 
    
         
             
                  const depositMsg = {
         
     | 
| 
       3372 
3447 
     | 
    
         
             
                    recipient_id: csna,
         
     | 
| 
       3373 
3448 
     | 
    
         
             
                    post_actions: [_action]
         
     | 
| 
       3374 
3449 
     | 
    
         
             
                  };
         
     | 
| 
      
 3450 
     | 
    
         
            +
                  const storageDepositMsg = {};
         
     | 
| 
      
 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)) {
         
     | 
| 
      
 3459 
     | 
    
         
            +
                    storageDepositMsg.btc_public_key = btcPublicKey;
         
     | 
| 
      
 3460 
     | 
    
         
            +
                  }
         
     | 
| 
       3375 
3461 
     | 
    
         
             
                  const registerRes = yield nearCall(action.receiver_id, "storage_balance_of", {
         
     | 
| 
       3376 
3462 
     | 
    
         
             
                    account_id: csna
         
     | 
| 
       3377 
3463 
     | 
    
         
             
                  });
         
     | 
| 
       3378 
3464 
     | 
    
         
             
                  if (!(registerRes == null ? void 0 : registerRes.available)) {
         
     | 
| 
       3379 
     | 
    
         
            -
                     
     | 
| 
       3380 
     | 
    
         
            -
                       
     | 
| 
       3381 
     | 
    
         
            -
             
     | 
| 
       3382 
     | 
    
         
            -
             
     | 
| 
       3383 
     | 
    
         
            -
                        registration_only: true
         
     | 
| 
       3384 
     | 
    
         
            -
                      },
         
     | 
| 
       3385 
     | 
    
         
            -
                      btc_public_key: btcPublicKey
         
     | 
| 
      
 3465 
     | 
    
         
            +
                    storageDepositMsg.storage_deposit_msg = {
         
     | 
| 
      
 3466 
     | 
    
         
            +
                      contract_id: action.receiver_id,
         
     | 
| 
      
 3467 
     | 
    
         
            +
                      deposit: new import_big2.default(0.25).mul(__pow(10, 24)).toFixed(0),
         
     | 
| 
      
 3468 
     | 
    
         
            +
                      registration_only: true
         
     | 
| 
       3386 
3469 
     | 
    
         
             
                    };
         
     | 
| 
      
 3470 
     | 
    
         
            +
                  }
         
     | 
| 
      
 3471 
     | 
    
         
            +
                  if (Object.keys(storageDepositMsg).length > 0) {
         
     | 
| 
       3387 
3472 
     | 
    
         
             
                    depositMsg.extra_msg = JSON.stringify(storageDepositMsg);
         
     | 
| 
       3388 
3473 
     | 
    
         
             
                  }
         
     | 
| 
       3389 
     | 
    
         
            -
                  console.log(" 
     | 
| 
      
 3474 
     | 
    
         
            +
                  console.log("get_user_deposit_address params:", { deposit_msg: depositMsg });
         
     | 
| 
       3390 
3475 
     | 
    
         
             
                  const userDepositAddress = yield nearCall(
         
     | 
| 
       3391 
3476 
     | 
    
         
             
                    config.bridgeContractId,
         
     | 
| 
       3392 
3477 
     | 
    
         
             
                    "get_user_deposit_address",
         
     | 
| 
       3393 
3478 
     | 
    
         
             
                    { deposit_msg: depositMsg }
         
     | 
| 
       3394 
3479 
     | 
    
         
             
                  );
         
     | 
| 
       3395 
     | 
    
         
            -
                  console.log("userDepositAddress", userDepositAddress);
         
     | 
| 
       3396 
3480 
     | 
    
         
             
                  const _feeRate = feeRate || (yield getBtcGasPrice());
         
     | 
| 
      
 3481 
     | 
    
         
            +
                  console.log("user deposit address:", userDepositAddress);
         
     | 
| 
      
 3482 
     | 
    
         
            +
                  console.log("deposit amount:", new import_big2.default(action.amount).toNumber());
         
     | 
| 
      
 3483 
     | 
    
         
            +
                  console.log("receive amount:", new import_big2.default(_action.amount).toNumber());
         
     | 
| 
      
 3484 
     | 
    
         
            +
                  console.log("fee rate:", _feeRate);
         
     | 
| 
       3397 
3485 
     | 
    
         
             
                  const txHash = yield sendBitcoin(
         
     | 
| 
       3398 
3486 
     | 
    
         
             
                    userDepositAddress,
         
     | 
| 
       3399 
     | 
    
         
            -
                    new  
     | 
| 
      
 3487 
     | 
    
         
            +
                    new import_big2.default(action.amount).toNumber(),
         
     | 
| 
       3400 
3488 
     | 
    
         
             
                    _feeRate
         
     | 
| 
       3401 
3489 
     | 
    
         
             
                  );
         
     | 
| 
       3402 
3490 
     | 
    
         
             
                  yield receiveDepositMsg(config.base_url, {
         
     | 
| 
         @@ -3417,7 +3505,7 @@ function executeBTCDepositAndAction(_0) { 
     | 
|
| 
       3417 
3505 
     | 
    
         | 
| 
       3418 
3506 
     | 
    
         
             
            // src/index.ts
         
     | 
| 
       3419 
3507 
     | 
    
         
             
            var getVersion = () => {
         
     | 
| 
       3420 
     | 
    
         
            -
              return "0.3. 
     | 
| 
      
 3508 
     | 
    
         
            +
              return "0.3.8";
         
     | 
| 
       3421 
3509 
     | 
    
         
             
            };
         
     | 
| 
       3422 
3510 
     | 
    
         
             
            if (typeof window !== "undefined") {
         
     | 
| 
       3423 
3511 
     | 
    
         
             
              window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
         
     |