btc-wallet 0.3.22 → 0.3.24
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/config.d.ts +2 -1
- package/dist/core/btcUtils.d.ts +9 -6
- package/dist/core/setupBTCWallet.d.ts +3 -2
- package/dist/index.js +72 -44
- package/dist/index.js.map +3 -3
- package/esm/index.js +72 -44
- package/esm/index.js.map +3 -3
- package/package.json +1 -1
package/esm/index.js
CHANGED
@@ -2731,6 +2731,14 @@ var walletConfig = {
|
|
2731
2731
|
walletUrl: "https://wallet-test.satoshibridge.top",
|
2732
2732
|
bridgeUrl: "https://testnet.satoshibridge.top/"
|
2733
2733
|
},
|
2734
|
+
private_mainnet: {
|
2735
|
+
base_url: "https://api.stg.satoshibridge.top",
|
2736
|
+
token: "nbtc.toalice.near",
|
2737
|
+
accountContractId: "acc.toalice.near",
|
2738
|
+
bridgeContractId: "brg.toalice.near",
|
2739
|
+
walletUrl: "https://wallet-stg.satoshibridge.top",
|
2740
|
+
bridgeUrl: "https://stg.satoshibridge.top/"
|
2741
|
+
},
|
2734
2742
|
mainnet: {
|
2735
2743
|
base_url: "https://api.mainnet.satoshibridge.top",
|
2736
2744
|
token: "nbtc.toalice.near",
|
@@ -3200,10 +3208,9 @@ function getBtcRpcUrl() {
|
|
3200
3208
|
return btcRpcUrls[network];
|
3201
3209
|
});
|
3202
3210
|
}
|
3203
|
-
function getConfig(
|
3211
|
+
function getConfig(env) {
|
3204
3212
|
return __async(this, null, function* () {
|
3205
|
-
|
3206
|
-
return walletConfig[isDev ? "dev" : network];
|
3213
|
+
return walletConfig[env];
|
3207
3214
|
});
|
3208
3215
|
}
|
3209
3216
|
function nearCall(contractId, methodName, args) {
|
@@ -3219,7 +3226,7 @@ function getAccountInfo(csna, accountContractId) {
|
|
3219
3226
|
return accountInfo;
|
3220
3227
|
});
|
3221
3228
|
}
|
3222
|
-
function checkGasTokenBalance(csna, gasToken, minAmount,
|
3229
|
+
function checkGasTokenBalance(csna, gasToken, minAmount, env) {
|
3223
3230
|
return __async(this, null, function* () {
|
3224
3231
|
const amount = yield nearCall(gasToken, "ft_balance_of", { account_id: csna });
|
3225
3232
|
console.log("gas token balance:", amount);
|
@@ -3228,17 +3235,17 @@ function checkGasTokenBalance(csna, gasToken, minAmount, isDev) {
|
|
3228
3235
|
title: "Gas token balance is insufficient",
|
3229
3236
|
message: "Please deposit gas token to continue, will open bridge website."
|
3230
3237
|
});
|
3231
|
-
const config = yield getConfig(
|
3238
|
+
const config = yield getConfig(env);
|
3232
3239
|
window.open(config.bridgeUrl, "_blank");
|
3233
3240
|
throw new Error("Gas token balance is insufficient");
|
3234
3241
|
}
|
3235
3242
|
});
|
3236
3243
|
}
|
3237
|
-
function checkGasTokenArrears(debtInfo,
|
3244
|
+
function checkGasTokenArrears(debtInfo, env, autoDeposit) {
|
3238
3245
|
return __async(this, null, function* () {
|
3239
3246
|
if (!debtInfo)
|
3240
3247
|
return;
|
3241
|
-
const config = yield getConfig(
|
3248
|
+
const config = yield getConfig(env);
|
3242
3249
|
const transferAmount = debtInfo.transfer_amount;
|
3243
3250
|
console.log("get_account debtInfo:", debtInfo);
|
3244
3251
|
const action = {
|
@@ -3253,7 +3260,7 @@ function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
|
|
3253
3260
|
message: "You have gas token arrears, please deposit gas token to continue."
|
3254
3261
|
});
|
3255
3262
|
if (confirmed) {
|
3256
|
-
yield executeBTCDepositAndAction({ action,
|
3263
|
+
yield executeBTCDepositAndAction({ action, env });
|
3257
3264
|
yield Dialog.alert({
|
3258
3265
|
title: "Deposit success",
|
3259
3266
|
message: "Deposit success, will continue to execute transaction."
|
@@ -3263,6 +3270,14 @@ function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
|
|
3263
3270
|
}
|
3264
3271
|
});
|
3265
3272
|
}
|
3273
|
+
function queryGasTokenArrears(env) {
|
3274
|
+
return __async(this, null, function* () {
|
3275
|
+
const config = yield getConfig(env);
|
3276
|
+
const csna = yield getCsnaAccountId(env);
|
3277
|
+
const accountInfo = yield getAccountInfo(csna, config.accountContractId);
|
3278
|
+
return accountInfo == null ? void 0 : accountInfo.debt_info;
|
3279
|
+
});
|
3280
|
+
}
|
3266
3281
|
function getBtcGasPrice() {
|
3267
3282
|
return __async(this, null, function* () {
|
3268
3283
|
const network = yield getNetwork();
|
@@ -3319,7 +3334,7 @@ function estimateDepositAmount(amount, option) {
|
|
3319
3334
|
}
|
3320
3335
|
function getDepositAmount(amount, option) {
|
3321
3336
|
return __async(this, null, function* () {
|
3322
|
-
const config = yield getConfig((option == null ? void 0 : option.
|
3337
|
+
const config = yield getConfig((option == null ? void 0 : option.env) || "mainnet");
|
3323
3338
|
const {
|
3324
3339
|
deposit_bridge_fee: { fee_min, fee_rate }
|
3325
3340
|
} = yield nearCall(
|
@@ -3338,6 +3353,21 @@ function getDepositAmount(amount, option) {
|
|
3338
3353
|
};
|
3339
3354
|
});
|
3340
3355
|
}
|
3356
|
+
function getCsnaAccountId(env) {
|
3357
|
+
return __async(this, null, function* () {
|
3358
|
+
const config = yield getConfig(env);
|
3359
|
+
const { getPublicKey } = getBtcProvider();
|
3360
|
+
const btcPublicKey = yield getPublicKey();
|
3361
|
+
const csna = yield nearCall(
|
3362
|
+
config.accountContractId,
|
3363
|
+
"get_chain_signature_near_account_id",
|
3364
|
+
{
|
3365
|
+
btc_public_key: btcPublicKey
|
3366
|
+
}
|
3367
|
+
);
|
3368
|
+
return csna;
|
3369
|
+
});
|
3370
|
+
}
|
3341
3371
|
function executeBTCDepositAndAction(_0) {
|
3342
3372
|
return __async(this, arguments, function* ({
|
3343
3373
|
action,
|
@@ -3345,12 +3375,12 @@ function executeBTCDepositAndAction(_0) {
|
|
3345
3375
|
feeRate,
|
3346
3376
|
fixedAmount = true,
|
3347
3377
|
pollResult = true,
|
3348
|
-
|
3378
|
+
env = "mainnet"
|
3349
3379
|
}) {
|
3350
3380
|
var _a;
|
3351
3381
|
try {
|
3352
3382
|
const { getPublicKey } = getBtcProvider();
|
3353
|
-
const config = yield getConfig(
|
3383
|
+
const config = yield getConfig(env);
|
3354
3384
|
const btcPublicKey = yield getPublicKey();
|
3355
3385
|
if (!btcPublicKey) {
|
3356
3386
|
throw new Error("BTC Public Key is not available.");
|
@@ -3358,34 +3388,35 @@ function executeBTCDepositAndAction(_0) {
|
|
3358
3388
|
if (!amount && !action) {
|
3359
3389
|
throw new Error("amount or action is required");
|
3360
3390
|
}
|
3361
|
-
const csna = yield
|
3362
|
-
config.accountContractId,
|
3363
|
-
"get_chain_signature_near_account_id",
|
3364
|
-
{
|
3365
|
-
btc_public_key: btcPublicKey
|
3366
|
-
}
|
3367
|
-
);
|
3391
|
+
const csna = yield getCsnaAccountId(env);
|
3368
3392
|
const rawDepositAmount = (_a = action ? action.amount : amount) != null ? _a : "0";
|
3369
3393
|
if (new Big(rawDepositAmount).lt(0)) {
|
3370
3394
|
throw new Error("amount must be greater than 0");
|
3371
3395
|
}
|
3372
3396
|
const { depositAmount, receiveAmount } = yield getDepositAmount(rawDepositAmount, {
|
3373
|
-
|
3397
|
+
env
|
3374
3398
|
});
|
3375
3399
|
const accountInfo = yield getAccountInfo(csna, config.accountContractId);
|
3376
3400
|
const newActions = [];
|
3377
3401
|
const gasLimit = new Big(50).mul(__pow(10, 12)).toFixed(0);
|
3378
|
-
const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info,
|
3402
|
+
const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, env, false);
|
3379
3403
|
if (repayAction) {
|
3380
3404
|
newActions.push(__spreadProps(__spreadValues({}, repayAction), {
|
3381
3405
|
gas: gasLimit
|
3382
3406
|
}));
|
3383
3407
|
}
|
3384
|
-
if (action) {
|
3385
|
-
newActions.push(
|
3386
|
-
|
3387
|
-
|
3388
|
-
|
3408
|
+
if (action || !action && new Big((accountInfo == null ? void 0 : accountInfo.gas_token[config.token]) || 0).lt(MINIMUM_DEPOSIT_AMOUNT_BASE)) {
|
3409
|
+
newActions.push(
|
3410
|
+
action ? __spreadProps(__spreadValues({}, action), {
|
3411
|
+
amount: (repayAction == null ? void 0 : repayAction.amount) && !fixedAmount ? new Big(receiveAmount).minus(repayAction.amount).toString() : receiveAmount.toString(),
|
3412
|
+
gas: gasLimit
|
3413
|
+
}) : {
|
3414
|
+
receiver_id: config.accountContractId,
|
3415
|
+
amount: MINIMUM_DEPOSIT_AMOUNT_BASE.toString(),
|
3416
|
+
msg: JSON.stringify("Deposit"),
|
3417
|
+
gas: gasLimit
|
3418
|
+
}
|
3419
|
+
);
|
3389
3420
|
}
|
3390
3421
|
const depositMsg = {
|
3391
3422
|
recipient_id: csna,
|
@@ -3492,7 +3523,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3492
3523
|
id,
|
3493
3524
|
provider
|
3494
3525
|
}) {
|
3495
|
-
var _a;
|
3496
3526
|
const wallet = {
|
3497
3527
|
signIn,
|
3498
3528
|
signOut,
|
@@ -3503,9 +3533,9 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3503
3533
|
signAndSendTransaction,
|
3504
3534
|
signAndSendTransactions
|
3505
3535
|
};
|
3506
|
-
const
|
3507
|
-
const currentConfig =
|
3508
|
-
const walletNetwork =
|
3536
|
+
const env = options.network.networkId || metadata.env || "mainnet";
|
3537
|
+
const currentConfig = walletConfig[env];
|
3538
|
+
const walletNetwork = ["mainnet", "private_mainnet"].includes(env) ? "mainnet" : "testnet";
|
3509
3539
|
yield initBtcContext();
|
3510
3540
|
function setupBtcContextListeners() {
|
3511
3541
|
return __async(this, null, function* () {
|
@@ -3575,21 +3605,17 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3575
3605
|
}
|
3576
3606
|
function getNearAccountByBtcPublicKey(btcPublicKey) {
|
3577
3607
|
return __async(this, null, function* () {
|
3578
|
-
const
|
3579
|
-
currentConfig.accountContractId,
|
3580
|
-
"get_chain_signature_near_account_id",
|
3581
|
-
{ btc_public_key: btcPublicKey }
|
3582
|
-
);
|
3608
|
+
const csna = yield getCsnaAccountId(env);
|
3583
3609
|
const nearPublicKey = yield nearCall2(
|
3584
3610
|
currentConfig.accountContractId,
|
3585
3611
|
"get_chain_signature_near_account_public_key",
|
3586
3612
|
{ btc_public_key: btcPublicKey }
|
3587
3613
|
);
|
3588
|
-
state.saveAccount(
|
3614
|
+
state.saveAccount(csna);
|
3589
3615
|
state.savePublicKey(nearPublicKey);
|
3590
3616
|
state.saveBtcPublicKey(btcPublicKey);
|
3591
3617
|
return {
|
3592
|
-
nearAddress,
|
3618
|
+
nearAddress: csna,
|
3593
3619
|
nearPublicKey
|
3594
3620
|
};
|
3595
3621
|
});
|
@@ -3669,7 +3695,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3669
3695
|
const btcContext = window.btcContext;
|
3670
3696
|
const accountId = state.getAccount();
|
3671
3697
|
const accountInfo = yield getAccountInfo(accountId, currentConfig.accountContractId);
|
3672
|
-
yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info,
|
3698
|
+
yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, env, true);
|
3673
3699
|
const trans = [...params.transactions];
|
3674
3700
|
console.log("raw trans:", trans);
|
3675
3701
|
const gasTokenBalance = (accountInfo == null ? void 0 : accountInfo.gas_token[currentConfig.token]) || "0";
|
@@ -3680,7 +3706,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3680
3706
|
console.log("transferGasTransaction:", transferGasTransaction);
|
3681
3707
|
console.log("useNearPayGas:", useNearPayGas);
|
3682
3708
|
console.log("gasLimit:", gasLimit);
|
3683
|
-
yield checkGasTokenBalance(accountId, currentConfig.token, gasLimit,
|
3709
|
+
yield checkGasTokenBalance(accountId, currentConfig.token, gasLimit, env);
|
3684
3710
|
if (transferGasTransaction) {
|
3685
3711
|
trans.unshift(transferGasTransaction);
|
3686
3712
|
}
|
@@ -3766,7 +3792,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3766
3792
|
}
|
3767
3793
|
function calculateGasStrategy(gasTokenBalance, transactions2) {
|
3768
3794
|
return __async(this, null, function* () {
|
3769
|
-
var
|
3795
|
+
var _a;
|
3770
3796
|
const accountId = state.getAccount();
|
3771
3797
|
const nearAccount = yield provider.query({
|
3772
3798
|
request_type: "view_account",
|
@@ -3788,7 +3814,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3788
3814
|
);
|
3789
3815
|
console.log("list_gas_token gas tokens:", gasTokens);
|
3790
3816
|
const perTxFee = Math.max(
|
3791
|
-
Number(((
|
3817
|
+
Number(((_a = gasTokens[currentConfig.token]) == null ? void 0 : _a.per_tx_protocol_fee) || 0),
|
3792
3818
|
100
|
3793
3819
|
);
|
3794
3820
|
console.log("perTxFee:", perTxFee);
|
@@ -3879,7 +3905,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3879
3905
|
const btcNetwork = yield btcContext.getNetwork();
|
3880
3906
|
console.log("btcNetwork:", btcNetwork, network);
|
3881
3907
|
const networkMap = {
|
3882
|
-
livenet: ["mainnet"],
|
3908
|
+
livenet: ["mainnet", "private_mainnet"],
|
3883
3909
|
testnet: ["testnet", "dev"]
|
3884
3910
|
};
|
3885
3911
|
if (!networkMap[btcNetwork].includes(network)) {
|
@@ -3902,7 +3928,7 @@ function setupBTCWallet({
|
|
3902
3928
|
deprecated = false,
|
3903
3929
|
autoConnect = true,
|
3904
3930
|
syncLogOut = true,
|
3905
|
-
|
3931
|
+
env = "mainnet"
|
3906
3932
|
} = {}) {
|
3907
3933
|
console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion());
|
3908
3934
|
const btcWallet = () => __async(this, null, function* () {
|
@@ -3918,7 +3944,7 @@ function setupBTCWallet({
|
|
3918
3944
|
available: true,
|
3919
3945
|
autoConnect,
|
3920
3946
|
syncLogOut,
|
3921
|
-
|
3947
|
+
env
|
3922
3948
|
},
|
3923
3949
|
init: BTCWallet
|
3924
3950
|
};
|
@@ -3928,7 +3954,7 @@ function setupBTCWallet({
|
|
3928
3954
|
|
3929
3955
|
// src/index.ts
|
3930
3956
|
var getVersion = () => {
|
3931
|
-
return "0.3.
|
3957
|
+
return "0.3.24";
|
3932
3958
|
};
|
3933
3959
|
if (typeof window !== "undefined") {
|
3934
3960
|
window.__BTC_WALLET_VERSION = getVersion();
|
@@ -3953,8 +3979,10 @@ export {
|
|
3953
3979
|
getAccountInfo,
|
3954
3980
|
getBtcBalance,
|
3955
3981
|
getBtcGasPrice,
|
3982
|
+
getCsnaAccountId,
|
3956
3983
|
getDepositAmount,
|
3957
3984
|
getVersion,
|
3985
|
+
queryGasTokenArrears,
|
3958
3986
|
sendBitcoin,
|
3959
3987
|
setupBTCWallet,
|
3960
3988
|
useAccountContract,
|