btc-wallet 0.3.23 → 0.3.26

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 CHANGED
@@ -1,29 +1,44 @@
1
1
  # BTC Wallet
2
2
 
3
- BTC Wallet is a toolkit that enables the use of Bitcoin on the NEAR blockchain through the Satoshi protocol. It provides seamless integration for managing Bitcoin transactions and interactions within the NEAR ecosystem.
4
-
5
- ## Features
6
-
7
- - **NEAR Integration**: Leverage the Satoshi protocol to use Bitcoin on the NEAR blockchain.
3
+ BTC Wallet is a toolkit that enables Bitcoin usage on the NEAR blockchain through the Satoshi protocol.
8
4
 
9
5
  ## Installation
10
6
 
11
- Install `btc-wallet` using npm or yarn:
12
-
13
7
  ```bash
14
8
  pnpm install btc-wallet
15
- or
9
+ # or
16
10
  yarn add btc-wallet
17
11
  ```
18
12
 
19
- ## Usage
13
+ ## API Reference
20
14
 
21
- ### Initialize BTC Wallet
15
+ ### `BtcWalletSelectorContextProvider` and `setupBTCWallet`
22
16
 
23
- To use BTC Wallet in your project, wrap your application with the `BtcWalletSelectorContextProvider`:
17
+ Initialize and integrate BTC wallet with NEAR wallet selector.
18
+
19
+ ```typescript
20
+ // 1. Setup wallet selector with BTC wallet module
21
+ import { setupWalletSelector } from '@near-wallet-selector/core';
22
+ import { setupBTCWallet } from 'btc-wallet';
23
+
24
+ const selector = await setupWalletSelector({
25
+ network: 'mainnet', // or 'testnet'
26
+ debug: true,
27
+ modules: [
28
+ setupBTCWallet({
29
+ iconUrl?: string, // optional: custom wallet icon URL
30
+ deprecated?: boolean, // optional: mark as deprecated
31
+ autoConnect?: boolean, // optional: enable auto-connect, defaults to true
32
+ syncLogOut?: boolean, // optional: sync logout across tabs, defaults to true
33
+ env?: 'mainnet' | 'testnet' | 'private_mainnet' | 'dev' // optional: defaults to NEAR network environment
34
+ }),
35
+ // setup other wallets...
36
+ ],
37
+ });
38
+
39
+ // 2. Wrap your app with BtcWalletSelectorContextProvider
40
+ import { BtcWalletSelectorContextProvider } from 'btc-wallet';
24
41
 
25
- ```javascript
26
- import BtcWalletSelectorContextProvider from 'btc-wallet';
27
42
  function App() {
28
43
  return (
29
44
  <BtcWalletSelectorContextProvider>
@@ -33,31 +48,61 @@ function App() {
33
48
  }
34
49
  ```
35
50
 
36
- ### Setup Wallet Selector
51
+ ### `executeBTCDepositAndAction`
52
+
53
+ Execute a native BTC deposit to receive corresponding BTC tokens on NEAR through the Satoshi bridge. You must provide either `action` or `amount`, but not both.
54
+
55
+ ```typescript
56
+ interface ExecuteBTCDepositAndActionParams<T extends boolean = true> {
57
+ // Option 1: For dApp one-click BTC deposit and action
58
+ action?: {
59
+ receiver_id: string; // receiver account on NEAR
60
+ amount: string; // amount to deposit
61
+ msg: string; // message for the transaction
62
+ };
63
+
64
+ // Option 2: For direct Satoshi bridge deposit
65
+ amount?: string; // amount to deposit to Satoshi bridge
66
+
67
+ // Common optional parameters
68
+ feeRate?: number; // optional: custom fee rate for the BTC transaction
69
+ fixedAmount?: boolean; // optional: whether to use fixed amount
70
+ env?: 'mainnet' | 'testnet' | 'private_mainnet' | 'dev'; // optional: defaults to NEAR network environment
71
+ pollResult?: T; // optional: whether to poll for transaction result
72
+ }
37
73
 
38
- Integrate BTC Wallet with NEAR's wallet selector:
74
+ // Example 1: dApp one-click BTC deposit
75
+ await executeBTCDepositAndAction({
76
+ action: {
77
+ receiver_id: 'account.near',
78
+ amount: '1000000', // in smallest units
79
+ msg: 'Deposit'
80
+ },
81
+ feeRate: 5
82
+ });
39
83
 
40
- ```javascript
41
- import { setupWalletSelector } from '@near-wallet-selector/core';
42
- import { setupBTCWallet } from 'btc-wallet';
43
- setupWalletSelector({
44
- network: 'mainnet', // or 'testnet'
45
- modules: [setupBTCWallet()],
84
+ // Example 2: Direct Satoshi bridge deposit
85
+ await executeBTCDepositAndAction({
86
+ amount: '1000000', // amount to deposit to Satoshi bridge
87
+ feeRate: 5
46
88
  });
47
89
  ```
48
90
 
49
- ### Execute Burrow Supply
91
+ ### `getBtcBalance`
50
92
 
51
- To execute a Burrow supply operation, use the `executeBurrowSupply` function:
93
+ Get the native BTC balance for a given Bitcoin address.
52
94
 
53
- ```javascript
54
- import { executeBurrowSupply } from 'btc-wallet';
55
- executeBurrowSupply({
56
- amount: '0.01', // BTC amount
57
- environment: 'mainnet', // or 'testnet'
58
- }).then(() => {
59
- console.log('Burrow supply executed successfully');
60
- }).catch((error) => {
61
- console.error('Error executing Burrow supply:', error);
62
- });
95
+ ```typescript
96
+ import { getBtcBalance } from 'btc-wallet';
97
+
98
+ const balance = await getBtcBalance(address: string);
99
+ // Returns balance in satoshis
63
100
  ```
101
+
102
+ ## Requirements
103
+
104
+ - React 17.0.0 or higher
105
+
106
+ ## License
107
+
108
+ This project is licensed under the MIT License - see the LICENSE file for details.
package/dist/config.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export declare const walletConfig: Record<string, {
1
+ export type ENV = 'mainnet' | 'testnet' | 'private_mainnet' | 'dev';
2
+ export declare const walletConfig: Record<ENV, {
2
3
  base_url: string;
3
4
  token: string;
4
5
  accountContractId: string;
@@ -1,3 +1,4 @@
1
+ import type { ENV } from '../config';
1
2
  import type { FinalExecutionOutcome } from '@near-wallet-selector/core';
2
3
  export interface DebtInfo {
3
4
  gas_token_id: string;
@@ -10,14 +11,14 @@ export declare function getAccountInfo(csna: string, accountContractId: string):
10
11
  gas_token: Record<string, string>;
11
12
  debt_info?: DebtInfo;
12
13
  } | undefined>;
13
- export declare function checkGasTokenBalance(csna: string, gasToken: string, minAmount: string, isDev: boolean): Promise<void>;
14
+ export declare function checkGasTokenBalance(csna: string, gasToken: string, minAmount: string, env: ENV): Promise<void>;
14
15
  type CheckGasTokenArrearsReturnType<T extends boolean> = T extends true ? void : {
15
16
  receiver_id: string;
16
17
  amount: string;
17
18
  msg: string;
18
19
  } | undefined;
19
- export declare function checkGasTokenArrears<T extends boolean>(debtInfo: DebtInfo | undefined, isDev: boolean, autoDeposit?: T): Promise<CheckGasTokenArrearsReturnType<T>>;
20
- export declare function queryGasTokenArrears(isDev?: boolean): Promise<DebtInfo | undefined>;
20
+ export declare function checkGasTokenArrears<T extends boolean>(debtInfo: DebtInfo | undefined, env: ENV, autoDeposit?: T): Promise<CheckGasTokenArrearsReturnType<T>>;
21
+ export declare function queryGasTokenArrears(env: ENV): Promise<DebtInfo | undefined>;
21
22
  export declare function getBtcGasPrice(): Promise<number>;
22
23
  export declare function getBtcBalance(): Promise<{
23
24
  rawBalance: number;
@@ -32,17 +33,17 @@ export declare function getBtcBalance(): Promise<{
32
33
  }>;
33
34
  export declare function sendBitcoin(address: string, amount: number, feeRate: number): Promise<string>;
34
35
  export declare function estimateDepositAmount(amount: string, option?: {
35
- isDev?: boolean;
36
+ env?: ENV;
36
37
  }): Promise<number>;
37
38
  export declare function getDepositAmount(amount: string, option?: {
38
39
  isEstimate?: boolean;
39
- isDev?: boolean;
40
+ env?: ENV;
40
41
  }): Promise<{
41
42
  depositAmount: number;
42
43
  receiveAmount: number;
43
44
  fee: number;
44
45
  }>;
45
- export declare function getCsnaAccountId(isDev?: boolean): Promise<string>;
46
+ export declare function getCsnaAccountId(env: ENV): Promise<string>;
46
47
  interface ExecuteBTCDepositAndActionParams<T extends boolean = true> {
47
48
  action?: {
48
49
  receiver_id: string;
@@ -52,12 +53,12 @@ interface ExecuteBTCDepositAndActionParams<T extends boolean = true> {
52
53
  amount?: string;
53
54
  feeRate?: number;
54
55
  fixedAmount?: boolean;
55
- isDev?: boolean;
56
+ env?: ENV;
56
57
  pollResult?: T;
57
58
  }
58
59
  /**
59
60
  * @param T - if true, return the poll result, otherwise return the btcTxHash
60
61
  */
61
62
  type ExecuteBTCDepositAndActionReturn<T extends boolean> = T extends true ? FinalExecutionOutcome[] : string;
62
- export declare function executeBTCDepositAndAction<T extends boolean = true>({ action, amount, feeRate, fixedAmount, pollResult, isDev, }: ExecuteBTCDepositAndActionParams<T>): Promise<ExecuteBTCDepositAndActionReturn<T>>;
63
+ export declare function executeBTCDepositAndAction<T extends boolean = true>({ action, amount, feeRate, fixedAmount, pollResult, env, }: ExecuteBTCDepositAndActionParams<T>): Promise<ExecuteBTCDepositAndActionReturn<T>>;
63
64
  export {};
@@ -1,5 +1,6 @@
1
1
  import type { InjectedWallet, WalletModuleFactory } from '@near-wallet-selector/core';
2
2
  import type { useBtcWalletSelector } from './btcWalletSelectorContext';
3
+ import type { ENV } from '../config';
3
4
  declare global {
4
5
  interface Window {
5
6
  btcContext: ReturnType<typeof useBtcWalletSelector>;
@@ -10,9 +11,9 @@ interface BTCWalletParams {
10
11
  deprecated?: boolean;
11
12
  autoConnect?: boolean;
12
13
  syncLogOut?: boolean;
13
- isDev?: boolean;
14
+ env?: ENV;
14
15
  }
15
- export declare function setupBTCWallet({ iconUrl, deprecated, autoConnect, syncLogOut, isDev, }?: BTCWalletParams | undefined): WalletModuleFactory<InjectedWallet>;
16
+ export declare function setupBTCWallet({ iconUrl, deprecated, autoConnect, syncLogOut, env, }?: BTCWalletParams | undefined): WalletModuleFactory<InjectedWallet>;
16
17
  declare const _default: {
17
18
  setupBTCWallet: typeof setupBTCWallet;
18
19
  };
package/dist/index.js CHANGED
@@ -2616,19 +2616,63 @@ var import_utils7 = require("@near-js/utils");
2616
2616
  var import_bs58 = __toESM(require("bs58"), 1);
2617
2617
  var import_js_sha256 = require("js-sha256");
2618
2618
 
2619
- // src/utils/initWalletButton.ts
2620
- var walletUrlConfig = {
2621
- dev: "https://wallet-dev.satoshibridge.top",
2622
- testnet: "https://wallet-test.satoshibridge.top",
2623
- mainnet: "https://wallet.satoshibridge.top"
2619
+ // src/config.ts
2620
+ var walletConfig = {
2621
+ dev: {
2622
+ base_url: "https://api.dev.satoshibridge.top",
2623
+ token: "nbtc-dev.testnet",
2624
+ accountContractId: "acc-dev.testnet",
2625
+ bridgeContractId: "brg-dev.testnet",
2626
+ walletUrl: "https://wallet-dev.satoshibridge.top",
2627
+ bridgeUrl: "https://dev.satoshibridge.top/"
2628
+ },
2629
+ testnet: {
2630
+ base_url: "https://api.testnet.satoshibridge.top",
2631
+ token: "nbtc2-nsp.testnet",
2632
+ accountContractId: "acc2-nsp.testnet",
2633
+ bridgeContractId: "brg2-nsp.testnet",
2634
+ walletUrl: "https://wallet-test.satoshibridge.top",
2635
+ bridgeUrl: "https://testnet.satoshibridge.top/"
2636
+ },
2637
+ private_mainnet: {
2638
+ base_url: "https://api.stg.satoshibridge.top",
2639
+ token: "nbtc.toalice.near",
2640
+ accountContractId: "acc.toalice.near",
2641
+ bridgeContractId: "brg.toalice.near",
2642
+ walletUrl: "https://wallet-stg.satoshibridge.top",
2643
+ bridgeUrl: "https://stg.satoshibridge.top/"
2644
+ },
2645
+ mainnet: {
2646
+ base_url: "https://api.mainnet.satoshibridge.top",
2647
+ token: "nbtc.toalice.near",
2648
+ accountContractId: "acc.toalice.near",
2649
+ bridgeContractId: "brg.toalice.near",
2650
+ walletUrl: "https://wallet.satoshibridge.top",
2651
+ bridgeUrl: "https://www.satoshibridge.top/"
2652
+ }
2653
+ };
2654
+ var nearRpcUrls = {
2655
+ mainnet: [
2656
+ "https://near.lava.build",
2657
+ "https://rpc.mainnet.near.org",
2658
+ "https://free.rpc.fastnear.com",
2659
+ "https://near.drpc.org"
2660
+ ],
2661
+ testnet: ["https://rpc.testnet.near.org"]
2662
+ };
2663
+ var btcRpcUrls = {
2664
+ mainnet: "https://mempool.space/api",
2665
+ testnet: "https://mempool.space/testnet/api"
2624
2666
  };
2625
- function setupWalletButton(network, wallet, originalWallet) {
2667
+
2668
+ // src/utils/initWalletButton.ts
2669
+ function setupWalletButton(env, wallet, originalWallet) {
2626
2670
  console.log("setupWalletButton");
2627
2671
  if (document.getElementById("satoshi-wallet-button")) {
2628
2672
  return;
2629
2673
  }
2630
2674
  const iframe = createIframe({
2631
- iframeUrl: walletUrlConfig[network],
2675
+ iframeUrl: walletConfig[env].walletUrl,
2632
2676
  iframeStyle: { width: "400px", height: "650px" }
2633
2677
  });
2634
2678
  iframe.addEventListener("mouseenter", () => {
@@ -2759,47 +2803,6 @@ function removeWalletButton() {
2759
2803
  iframe == null ? void 0 : iframe.remove();
2760
2804
  }
2761
2805
 
2762
- // src/config.ts
2763
- var walletConfig = {
2764
- dev: {
2765
- base_url: "https://api.dev.satoshibridge.top",
2766
- token: "nbtc-dev.testnet",
2767
- accountContractId: "acc-dev.testnet",
2768
- bridgeContractId: "brg-dev.testnet",
2769
- walletUrl: "https://wallet-dev.satoshibridge.top",
2770
- bridgeUrl: "https://dev.satoshibridge.top/"
2771
- },
2772
- testnet: {
2773
- base_url: "https://api.testnet.satoshibridge.top",
2774
- token: "nbtc2-nsp.testnet",
2775
- accountContractId: "acc2-nsp.testnet",
2776
- bridgeContractId: "brg2-nsp.testnet",
2777
- walletUrl: "https://wallet-test.satoshibridge.top",
2778
- bridgeUrl: "https://testnet.satoshibridge.top/"
2779
- },
2780
- mainnet: {
2781
- base_url: "https://api.mainnet.satoshibridge.top",
2782
- token: "nbtc.toalice.near",
2783
- accountContractId: "acc.toalice.near",
2784
- bridgeContractId: "brg.toalice.near",
2785
- walletUrl: "https://wallet.satoshibridge.top",
2786
- bridgeUrl: "https://www.satoshibridge.top/"
2787
- }
2788
- };
2789
- var nearRpcUrls = {
2790
- mainnet: [
2791
- "https://near.lava.build",
2792
- "https://rpc.mainnet.near.org",
2793
- "https://free.rpc.fastnear.com",
2794
- "https://near.drpc.org"
2795
- ],
2796
- testnet: ["https://rpc.testnet.near.org"]
2797
- };
2798
- var btcRpcUrls = {
2799
- mainnet: "https://mempool.space/api",
2800
- testnet: "https://mempool.space/testnet/api"
2801
- };
2802
-
2803
2806
  // src/utils/nearUtils.ts
2804
2807
  var import_near_api_js = require("near-api-js");
2805
2808
  function nearCallFunction(contractId, methodName, args, options) {
@@ -3246,10 +3249,9 @@ function getBtcRpcUrl() {
3246
3249
  return btcRpcUrls[network];
3247
3250
  });
3248
3251
  }
3249
- function getConfig(isDev) {
3252
+ function getConfig(env) {
3250
3253
  return __async(this, null, function* () {
3251
- const network = yield getNetwork();
3252
- return walletConfig[isDev ? "dev" : network];
3254
+ return walletConfig[env];
3253
3255
  });
3254
3256
  }
3255
3257
  function nearCall(contractId, methodName, args) {
@@ -3265,7 +3267,7 @@ function getAccountInfo(csna, accountContractId) {
3265
3267
  return accountInfo;
3266
3268
  });
3267
3269
  }
3268
- function checkGasTokenBalance(csna, gasToken, minAmount, isDev) {
3270
+ function checkGasTokenBalance(csna, gasToken, minAmount, env) {
3269
3271
  return __async(this, null, function* () {
3270
3272
  const amount = yield nearCall(gasToken, "ft_balance_of", { account_id: csna });
3271
3273
  console.log("gas token balance:", amount);
@@ -3274,17 +3276,17 @@ function checkGasTokenBalance(csna, gasToken, minAmount, isDev) {
3274
3276
  title: "Gas token balance is insufficient",
3275
3277
  message: "Please deposit gas token to continue, will open bridge website."
3276
3278
  });
3277
- const config = yield getConfig(isDev);
3279
+ const config = yield getConfig(env);
3278
3280
  window.open(config.bridgeUrl, "_blank");
3279
3281
  throw new Error("Gas token balance is insufficient");
3280
3282
  }
3281
3283
  });
3282
3284
  }
3283
- function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
3285
+ function checkGasTokenArrears(debtInfo, env, autoDeposit) {
3284
3286
  return __async(this, null, function* () {
3285
3287
  if (!debtInfo)
3286
3288
  return;
3287
- const config = yield getConfig(isDev);
3289
+ const config = yield getConfig(env);
3288
3290
  const transferAmount = debtInfo.transfer_amount;
3289
3291
  console.log("get_account debtInfo:", debtInfo);
3290
3292
  const action = {
@@ -3299,7 +3301,7 @@ function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
3299
3301
  message: "You have gas token arrears, please deposit gas token to continue."
3300
3302
  });
3301
3303
  if (confirmed) {
3302
- yield executeBTCDepositAndAction({ action, isDev });
3304
+ yield executeBTCDepositAndAction({ action, env });
3303
3305
  yield Dialog.alert({
3304
3306
  title: "Deposit success",
3305
3307
  message: "Deposit success, will continue to execute transaction."
@@ -3309,10 +3311,10 @@ function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
3309
3311
  }
3310
3312
  });
3311
3313
  }
3312
- function queryGasTokenArrears(isDev) {
3314
+ function queryGasTokenArrears(env) {
3313
3315
  return __async(this, null, function* () {
3314
- const config = yield getConfig(isDev || false);
3315
- const csna = yield getCsnaAccountId(isDev);
3316
+ const config = yield getConfig(env);
3317
+ const csna = yield getCsnaAccountId(env);
3316
3318
  const accountInfo = yield getAccountInfo(csna, config.accountContractId);
3317
3319
  return accountInfo == null ? void 0 : accountInfo.debt_info;
3318
3320
  });
@@ -3373,7 +3375,7 @@ function estimateDepositAmount(amount, option) {
3373
3375
  }
3374
3376
  function getDepositAmount(amount, option) {
3375
3377
  return __async(this, null, function* () {
3376
- const config = yield getConfig((option == null ? void 0 : option.isDev) || false);
3378
+ const config = yield getConfig((option == null ? void 0 : option.env) || "mainnet");
3377
3379
  const {
3378
3380
  deposit_bridge_fee: { fee_min, fee_rate }
3379
3381
  } = yield nearCall(
@@ -3392,9 +3394,9 @@ function getDepositAmount(amount, option) {
3392
3394
  };
3393
3395
  });
3394
3396
  }
3395
- function getCsnaAccountId(isDev) {
3397
+ function getCsnaAccountId(env) {
3396
3398
  return __async(this, null, function* () {
3397
- const config = yield getConfig(isDev || false);
3399
+ const config = yield getConfig(env);
3398
3400
  const { getPublicKey } = getBtcProvider();
3399
3401
  const btcPublicKey = yield getPublicKey();
3400
3402
  const csna = yield nearCall(
@@ -3414,12 +3416,12 @@ function executeBTCDepositAndAction(_0) {
3414
3416
  feeRate,
3415
3417
  fixedAmount = true,
3416
3418
  pollResult = true,
3417
- isDev = false
3419
+ env = "mainnet"
3418
3420
  }) {
3419
3421
  var _a;
3420
3422
  try {
3421
3423
  const { getPublicKey } = getBtcProvider();
3422
- const config = yield getConfig(isDev);
3424
+ const config = yield getConfig(env);
3423
3425
  const btcPublicKey = yield getPublicKey();
3424
3426
  if (!btcPublicKey) {
3425
3427
  throw new Error("BTC Public Key is not available.");
@@ -3427,18 +3429,18 @@ function executeBTCDepositAndAction(_0) {
3427
3429
  if (!amount && !action) {
3428
3430
  throw new Error("amount or action is required");
3429
3431
  }
3430
- const csna = yield getCsnaAccountId(isDev);
3432
+ const csna = yield getCsnaAccountId(env);
3431
3433
  const rawDepositAmount = (_a = action ? action.amount : amount) != null ? _a : "0";
3432
3434
  if (new import_big.default(rawDepositAmount).lt(0)) {
3433
3435
  throw new Error("amount must be greater than 0");
3434
3436
  }
3435
3437
  const { depositAmount, receiveAmount } = yield getDepositAmount(rawDepositAmount, {
3436
- isDev
3438
+ env
3437
3439
  });
3438
3440
  const accountInfo = yield getAccountInfo(csna, config.accountContractId);
3439
3441
  const newActions = [];
3440
3442
  const gasLimit = new import_big.default(50).mul(__pow(10, 12)).toFixed(0);
3441
- const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, isDev, false);
3443
+ const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, env, false);
3442
3444
  if (repayAction) {
3443
3445
  newActions.push(__spreadProps(__spreadValues({}, repayAction), {
3444
3446
  gas: gasLimit
@@ -3562,7 +3564,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3562
3564
  id,
3563
3565
  provider
3564
3566
  }) {
3565
- var _a;
3566
3567
  const wallet = {
3567
3568
  signIn,
3568
3569
  signOut,
@@ -3573,9 +3574,9 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3573
3574
  signAndSendTransaction,
3574
3575
  signAndSendTransactions
3575
3576
  };
3576
- const isDev = (_a = "isDev" in metadata && metadata.isDev) != null ? _a : false;
3577
- const currentConfig = isDev ? walletConfig.dev : walletConfig[options.network.networkId];
3578
- const walletNetwork = isDev ? "dev" : options.network.networkId;
3577
+ const env = metadata.env || options.network.networkId || "mainnet";
3578
+ const currentConfig = walletConfig[env];
3579
+ const walletNetwork = ["mainnet", "private_mainnet"].includes(env) ? "mainnet" : "testnet";
3579
3580
  yield initBtcContext();
3580
3581
  function setupBtcContextListeners() {
3581
3582
  return __async(this, null, function* () {
@@ -3584,7 +3585,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3584
3585
  const accountId = state.getAccount();
3585
3586
  const btcContext = window.btcContext;
3586
3587
  if (accountId && btcContext.account) {
3587
- setupWalletButton(walletNetwork, wallet, btcContext);
3588
+ setupWalletButton(env, wallet, btcContext);
3588
3589
  } else {
3589
3590
  removeWalletButton();
3590
3591
  setTimeout(() => {
@@ -3645,7 +3646,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3645
3646
  }
3646
3647
  function getNearAccountByBtcPublicKey(btcPublicKey) {
3647
3648
  return __async(this, null, function* () {
3648
- const csna = yield getCsnaAccountId(isDev);
3649
+ const csna = yield getCsnaAccountId(env);
3649
3650
  const nearPublicKey = yield nearCall2(
3650
3651
  currentConfig.accountContractId,
3651
3652
  "get_chain_signature_near_account_public_key",
@@ -3735,7 +3736,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3735
3736
  const btcContext = window.btcContext;
3736
3737
  const accountId = state.getAccount();
3737
3738
  const accountInfo = yield getAccountInfo(accountId, currentConfig.accountContractId);
3738
- yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, isDev, true);
3739
+ yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, env, true);
3739
3740
  const trans = [...params.transactions];
3740
3741
  console.log("raw trans:", trans);
3741
3742
  const gasTokenBalance = (accountInfo == null ? void 0 : accountInfo.gas_token[currentConfig.token]) || "0";
@@ -3746,7 +3747,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3746
3747
  console.log("transferGasTransaction:", transferGasTransaction);
3747
3748
  console.log("useNearPayGas:", useNearPayGas);
3748
3749
  console.log("gasLimit:", gasLimit);
3749
- yield checkGasTokenBalance(accountId, currentConfig.token, gasLimit, isDev);
3750
+ yield checkGasTokenBalance(accountId, currentConfig.token, gasLimit, env);
3750
3751
  if (transferGasTransaction) {
3751
3752
  trans.unshift(transferGasTransaction);
3752
3753
  }
@@ -3832,7 +3833,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3832
3833
  }
3833
3834
  function calculateGasStrategy(gasTokenBalance, transactions2) {
3834
3835
  return __async(this, null, function* () {
3835
- var _a2;
3836
+ var _a;
3836
3837
  const accountId = state.getAccount();
3837
3838
  const nearAccount = yield provider.query({
3838
3839
  request_type: "view_account",
@@ -3854,7 +3855,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3854
3855
  );
3855
3856
  console.log("list_gas_token gas tokens:", gasTokens);
3856
3857
  const perTxFee = Math.max(
3857
- Number(((_a2 = gasTokens[currentConfig.token]) == null ? void 0 : _a2.per_tx_protocol_fee) || 0),
3858
+ Number(((_a = gasTokens[currentConfig.token]) == null ? void 0 : _a.per_tx_protocol_fee) || 0),
3858
3859
  100
3859
3860
  );
3860
3861
  console.log("perTxFee:", perTxFee);
@@ -3943,9 +3944,8 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
3943
3944
  if (!btcContext.account)
3944
3945
  return;
3945
3946
  const btcNetwork = yield btcContext.getNetwork();
3946
- console.log("btcNetwork:", btcNetwork, network);
3947
3947
  const networkMap = {
3948
- livenet: ["mainnet"],
3948
+ livenet: ["mainnet", "private_mainnet"],
3949
3949
  testnet: ["testnet", "dev"]
3950
3950
  };
3951
3951
  if (!networkMap[btcNetwork].includes(network)) {
@@ -3968,9 +3968,9 @@ function setupBTCWallet({
3968
3968
  deprecated = false,
3969
3969
  autoConnect = true,
3970
3970
  syncLogOut = true,
3971
- isDev = false
3971
+ env = "mainnet"
3972
3972
  } = {}) {
3973
- console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion());
3973
+ console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion(), "env:", env);
3974
3974
  const btcWallet = () => __async(this, null, function* () {
3975
3975
  return {
3976
3976
  id: "btc-wallet",
@@ -3984,7 +3984,7 @@ function setupBTCWallet({
3984
3984
  available: true,
3985
3985
  autoConnect,
3986
3986
  syncLogOut,
3987
- isDev
3987
+ env
3988
3988
  },
3989
3989
  init: BTCWallet
3990
3990
  };
@@ -3994,7 +3994,7 @@ function setupBTCWallet({
3994
3994
 
3995
3995
  // src/index.ts
3996
3996
  var getVersion = () => {
3997
- return "0.3.23";
3997
+ return "0.3.26";
3998
3998
  };
3999
3999
  if (typeof window !== "undefined") {
4000
4000
  window.__BTC_WALLET_VERSION = getVersion();