btc-wallet 0.3.23 → 0.3.26

Sign up to get free protection for your applications and to get access to all the features.
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();