btc-wallet 0.3.22 → 0.3.24
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 +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,
|