btc-wallet 0.5.3-beta → 0.5.5-beta
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +55 -11
- package/dist/index.js.map +2 -2
- package/esm/index.js +55 -11
- package/esm/index.js.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -3405,6 +3405,9 @@ function getCsnaAccountId(env) {
|
|
3405
3405
|
const config = yield getConfig(env);
|
3406
3406
|
const { getPublicKey } = getBtcProvider();
|
3407
3407
|
const btcPublicKey = yield getPublicKey();
|
3408
|
+
if (!btcPublicKey) {
|
3409
|
+
throw new Error("BTC Public Key is not available.");
|
3410
|
+
}
|
3408
3411
|
const csna = yield nearCall(
|
3409
3412
|
config.accountContractId,
|
3410
3413
|
"get_chain_signature_near_account_id",
|
@@ -3523,7 +3526,7 @@ function executeBTCDepositAndAction(_0) {
|
|
3523
3526
|
}
|
3524
3527
|
function checkSatoshiWhitelist(btcAccountId, env = "mainnet") {
|
3525
3528
|
return __async(this, null, function* () {
|
3526
|
-
if (env !== "
|
3529
|
+
if (env !== "mainnet")
|
3527
3530
|
return;
|
3528
3531
|
const hasShownNotice = localStorage.getItem("btc-wallet-private-mainnet-notice");
|
3529
3532
|
if (!hasShownNotice) {
|
@@ -4046,6 +4049,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4046
4049
|
yield checkBtcNetwork(walletNetwork);
|
4047
4050
|
if (!state.isValid()) {
|
4048
4051
|
state.clear();
|
4052
|
+
console.log("setupBtcContextListeners clear");
|
4049
4053
|
}
|
4050
4054
|
validateWalletState();
|
4051
4055
|
const btcContext = window.btcContext;
|
@@ -4068,6 +4072,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4068
4072
|
context.on("updatePublicKey", (btcPublicKey) => __async(this, null, function* () {
|
4069
4073
|
console.log("updatePublicKey");
|
4070
4074
|
state.clear();
|
4075
|
+
console.log("updatePublicKey clear");
|
4071
4076
|
try {
|
4072
4077
|
const { nearAddress, nearPublicKey } = yield getNearAccountByBtcPublicKey(btcPublicKey);
|
4073
4078
|
if (!nearAddress || !nearPublicKey) {
|
@@ -4079,8 +4084,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4079
4084
|
yield handleConnectionUpdate();
|
4080
4085
|
} catch (error) {
|
4081
4086
|
console.error("Error updating public key:", error);
|
4082
|
-
state.clear();
|
4083
|
-
emitter.emit("accountsChanged", { accounts: [] });
|
4084
4087
|
}
|
4085
4088
|
}));
|
4086
4089
|
context.on("btcLoginError", () => __async(this, null, function* () {
|
@@ -4325,17 +4328,58 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4325
4328
|
}
|
4326
4329
|
function calculateGasStrategy(gasTokenBalance, transactions2) {
|
4327
4330
|
return __async(this, null, function* () {
|
4331
|
+
var _a;
|
4328
4332
|
const accountId = state.getAccount();
|
4333
|
+
const nearAccount = yield provider.query({
|
4334
|
+
request_type: "view_account",
|
4335
|
+
account_id: accountId,
|
4336
|
+
finality: "final"
|
4337
|
+
});
|
4338
|
+
const availableBalance = parseFloat(nearAccount.amount) / __pow(10, 24);
|
4339
|
+
console.log("available near balance:", availableBalance);
|
4340
|
+
console.log("available gas token balance:", gasTokenBalance);
|
4329
4341
|
const convertTx = yield Promise.all(
|
4330
4342
|
transactions2.map((transaction, index) => convertTransactionToTxHex(transaction, index))
|
4331
4343
|
);
|
4332
|
-
|
4333
|
-
|
4334
|
-
|
4335
|
-
|
4336
|
-
|
4337
|
-
|
4338
|
-
|
4344
|
+
if (availableBalance > 0.5) {
|
4345
|
+
console.log("near balance is enough, get the protocol fee of each transaction");
|
4346
|
+
const gasTokens = yield nearCall2(
|
4347
|
+
currentConfig.accountContractId,
|
4348
|
+
"list_gas_token",
|
4349
|
+
{ token_ids: [currentConfig.token] }
|
4350
|
+
);
|
4351
|
+
console.log("list_gas_token gas tokens:", gasTokens);
|
4352
|
+
const perTxFee = Math.max(
|
4353
|
+
Number(((_a = gasTokens[currentConfig.token]) == null ? void 0 : _a.per_tx_protocol_fee) || 0),
|
4354
|
+
100
|
4355
|
+
);
|
4356
|
+
console.log("perTxFee:", perTxFee);
|
4357
|
+
const protocolFee = new import_big2.default(perTxFee || "0").mul(convertTx.length).toFixed(0);
|
4358
|
+
console.log("protocolFee:", protocolFee);
|
4359
|
+
if (new import_big2.default(gasTokenBalance).gte(protocolFee)) {
|
4360
|
+
console.log("use near pay gas and enough gas token balance");
|
4361
|
+
return { useNearPayGas: true, gasLimit: protocolFee };
|
4362
|
+
} else {
|
4363
|
+
console.log("use near pay gas and not enough gas token balance");
|
4364
|
+
const transferTx = yield createGasTokenTransfer(accountId, protocolFee);
|
4365
|
+
return recalculateGasWithTransfer(transferTx, convertTx, true, perTxFee.toString());
|
4366
|
+
}
|
4367
|
+
} else {
|
4368
|
+
console.log("near balance is not enough, predict the gas token amount required");
|
4369
|
+
const adjustedGas = yield getPredictedGasAmount(
|
4370
|
+
currentConfig.accountContractId,
|
4371
|
+
currentConfig.token,
|
4372
|
+
convertTx.map((t) => t.txHex)
|
4373
|
+
);
|
4374
|
+
if (new import_big2.default(gasTokenBalance).gte(adjustedGas)) {
|
4375
|
+
console.log("use gas token and gas token balance is enough");
|
4376
|
+
return { useNearPayGas: false, gasLimit: adjustedGas };
|
4377
|
+
} else {
|
4378
|
+
console.log("use gas token and gas token balance is not enough, need to transfer");
|
4379
|
+
const transferTx = yield createGasTokenTransfer(accountId, adjustedGas);
|
4380
|
+
return recalculateGasWithTransfer(transferTx, convertTx, false);
|
4381
|
+
}
|
4382
|
+
}
|
4339
4383
|
});
|
4340
4384
|
}
|
4341
4385
|
function convertTransactionToTxHex(transaction, index = 0) {
|
@@ -4440,7 +4484,7 @@ function setupBTCWallet({
|
|
4440
4484
|
|
4441
4485
|
// src/index.ts
|
4442
4486
|
var getVersion = () => {
|
4443
|
-
return "0.5.
|
4487
|
+
return "0.5.5-beta";
|
4444
4488
|
};
|
4445
4489
|
if (typeof window !== "undefined") {
|
4446
4490
|
window.__BTC_WALLET_VERSION = getVersion();
|