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/dist/config.d.ts
CHANGED
package/dist/core/btcUtils.d.ts
CHANGED
@@ -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,13 +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,
|
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,
|
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>;
|
20
22
|
export declare function getBtcGasPrice(): Promise<number>;
|
21
23
|
export declare function getBtcBalance(): Promise<{
|
22
24
|
rawBalance: number;
|
@@ -31,16 +33,17 @@ export declare function getBtcBalance(): Promise<{
|
|
31
33
|
}>;
|
32
34
|
export declare function sendBitcoin(address: string, amount: number, feeRate: number): Promise<string>;
|
33
35
|
export declare function estimateDepositAmount(amount: string, option?: {
|
34
|
-
|
36
|
+
env?: ENV;
|
35
37
|
}): Promise<number>;
|
36
38
|
export declare function getDepositAmount(amount: string, option?: {
|
37
39
|
isEstimate?: boolean;
|
38
|
-
|
40
|
+
env?: ENV;
|
39
41
|
}): Promise<{
|
40
42
|
depositAmount: number;
|
41
43
|
receiveAmount: number;
|
42
44
|
fee: number;
|
43
45
|
}>;
|
46
|
+
export declare function getCsnaAccountId(env: ENV): Promise<string>;
|
44
47
|
interface ExecuteBTCDepositAndActionParams<T extends boolean = true> {
|
45
48
|
action?: {
|
46
49
|
receiver_id: string;
|
@@ -50,12 +53,12 @@ interface ExecuteBTCDepositAndActionParams<T extends boolean = true> {
|
|
50
53
|
amount?: string;
|
51
54
|
feeRate?: number;
|
52
55
|
fixedAmount?: boolean;
|
53
|
-
|
56
|
+
env?: ENV;
|
54
57
|
pollResult?: T;
|
55
58
|
}
|
56
59
|
/**
|
57
60
|
* @param T - if true, return the poll result, otherwise return the btcTxHash
|
58
61
|
*/
|
59
62
|
type ExecuteBTCDepositAndActionReturn<T extends boolean> = T extends true ? FinalExecutionOutcome[] : string;
|
60
|
-
export declare function executeBTCDepositAndAction<T extends boolean = true>({ action, amount, feeRate, fixedAmount, pollResult,
|
63
|
+
export declare function executeBTCDepositAndAction<T extends boolean = true>({ action, amount, feeRate, fixedAmount, pollResult, env, }: ExecuteBTCDepositAndActionParams<T>): Promise<ExecuteBTCDepositAndActionReturn<T>>;
|
61
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
|
-
|
14
|
+
env?: ENV;
|
14
15
|
}
|
15
|
-
export declare function setupBTCWallet({ iconUrl, deprecated, autoConnect, syncLogOut,
|
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
@@ -97,8 +97,10 @@ __export(src_exports, {
|
|
97
97
|
getAccountInfo: () => getAccountInfo,
|
98
98
|
getBtcBalance: () => getBtcBalance,
|
99
99
|
getBtcGasPrice: () => getBtcGasPrice,
|
100
|
+
getCsnaAccountId: () => getCsnaAccountId,
|
100
101
|
getDepositAmount: () => getDepositAmount,
|
101
102
|
getVersion: () => getVersion,
|
103
|
+
queryGasTokenArrears: () => queryGasTokenArrears,
|
102
104
|
sendBitcoin: () => sendBitcoin,
|
103
105
|
setupBTCWallet: () => setupBTCWallet,
|
104
106
|
useAccountContract: () => useAccountContract,
|
@@ -2775,6 +2777,14 @@ var walletConfig = {
|
|
2775
2777
|
walletUrl: "https://wallet-test.satoshibridge.top",
|
2776
2778
|
bridgeUrl: "https://testnet.satoshibridge.top/"
|
2777
2779
|
},
|
2780
|
+
private_mainnet: {
|
2781
|
+
base_url: "https://api.stg.satoshibridge.top",
|
2782
|
+
token: "nbtc.toalice.near",
|
2783
|
+
accountContractId: "acc.toalice.near",
|
2784
|
+
bridgeContractId: "brg.toalice.near",
|
2785
|
+
walletUrl: "https://wallet-stg.satoshibridge.top",
|
2786
|
+
bridgeUrl: "https://stg.satoshibridge.top/"
|
2787
|
+
},
|
2778
2788
|
mainnet: {
|
2779
2789
|
base_url: "https://api.mainnet.satoshibridge.top",
|
2780
2790
|
token: "nbtc.toalice.near",
|
@@ -3244,10 +3254,9 @@ function getBtcRpcUrl() {
|
|
3244
3254
|
return btcRpcUrls[network];
|
3245
3255
|
});
|
3246
3256
|
}
|
3247
|
-
function getConfig(
|
3257
|
+
function getConfig(env) {
|
3248
3258
|
return __async(this, null, function* () {
|
3249
|
-
|
3250
|
-
return walletConfig[isDev ? "dev" : network];
|
3259
|
+
return walletConfig[env];
|
3251
3260
|
});
|
3252
3261
|
}
|
3253
3262
|
function nearCall(contractId, methodName, args) {
|
@@ -3263,7 +3272,7 @@ function getAccountInfo(csna, accountContractId) {
|
|
3263
3272
|
return accountInfo;
|
3264
3273
|
});
|
3265
3274
|
}
|
3266
|
-
function checkGasTokenBalance(csna, gasToken, minAmount,
|
3275
|
+
function checkGasTokenBalance(csna, gasToken, minAmount, env) {
|
3267
3276
|
return __async(this, null, function* () {
|
3268
3277
|
const amount = yield nearCall(gasToken, "ft_balance_of", { account_id: csna });
|
3269
3278
|
console.log("gas token balance:", amount);
|
@@ -3272,17 +3281,17 @@ function checkGasTokenBalance(csna, gasToken, minAmount, isDev) {
|
|
3272
3281
|
title: "Gas token balance is insufficient",
|
3273
3282
|
message: "Please deposit gas token to continue, will open bridge website."
|
3274
3283
|
});
|
3275
|
-
const config = yield getConfig(
|
3284
|
+
const config = yield getConfig(env);
|
3276
3285
|
window.open(config.bridgeUrl, "_blank");
|
3277
3286
|
throw new Error("Gas token balance is insufficient");
|
3278
3287
|
}
|
3279
3288
|
});
|
3280
3289
|
}
|
3281
|
-
function checkGasTokenArrears(debtInfo,
|
3290
|
+
function checkGasTokenArrears(debtInfo, env, autoDeposit) {
|
3282
3291
|
return __async(this, null, function* () {
|
3283
3292
|
if (!debtInfo)
|
3284
3293
|
return;
|
3285
|
-
const config = yield getConfig(
|
3294
|
+
const config = yield getConfig(env);
|
3286
3295
|
const transferAmount = debtInfo.transfer_amount;
|
3287
3296
|
console.log("get_account debtInfo:", debtInfo);
|
3288
3297
|
const action = {
|
@@ -3297,7 +3306,7 @@ function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
|
|
3297
3306
|
message: "You have gas token arrears, please deposit gas token to continue."
|
3298
3307
|
});
|
3299
3308
|
if (confirmed) {
|
3300
|
-
yield executeBTCDepositAndAction({ action,
|
3309
|
+
yield executeBTCDepositAndAction({ action, env });
|
3301
3310
|
yield Dialog.alert({
|
3302
3311
|
title: "Deposit success",
|
3303
3312
|
message: "Deposit success, will continue to execute transaction."
|
@@ -3307,6 +3316,14 @@ function checkGasTokenArrears(debtInfo, isDev, autoDeposit) {
|
|
3307
3316
|
}
|
3308
3317
|
});
|
3309
3318
|
}
|
3319
|
+
function queryGasTokenArrears(env) {
|
3320
|
+
return __async(this, null, function* () {
|
3321
|
+
const config = yield getConfig(env);
|
3322
|
+
const csna = yield getCsnaAccountId(env);
|
3323
|
+
const accountInfo = yield getAccountInfo(csna, config.accountContractId);
|
3324
|
+
return accountInfo == null ? void 0 : accountInfo.debt_info;
|
3325
|
+
});
|
3326
|
+
}
|
3310
3327
|
function getBtcGasPrice() {
|
3311
3328
|
return __async(this, null, function* () {
|
3312
3329
|
const network = yield getNetwork();
|
@@ -3363,7 +3380,7 @@ function estimateDepositAmount(amount, option) {
|
|
3363
3380
|
}
|
3364
3381
|
function getDepositAmount(amount, option) {
|
3365
3382
|
return __async(this, null, function* () {
|
3366
|
-
const config = yield getConfig((option == null ? void 0 : option.
|
3383
|
+
const config = yield getConfig((option == null ? void 0 : option.env) || "mainnet");
|
3367
3384
|
const {
|
3368
3385
|
deposit_bridge_fee: { fee_min, fee_rate }
|
3369
3386
|
} = yield nearCall(
|
@@ -3382,6 +3399,21 @@ function getDepositAmount(amount, option) {
|
|
3382
3399
|
};
|
3383
3400
|
});
|
3384
3401
|
}
|
3402
|
+
function getCsnaAccountId(env) {
|
3403
|
+
return __async(this, null, function* () {
|
3404
|
+
const config = yield getConfig(env);
|
3405
|
+
const { getPublicKey } = getBtcProvider();
|
3406
|
+
const btcPublicKey = yield getPublicKey();
|
3407
|
+
const csna = yield nearCall(
|
3408
|
+
config.accountContractId,
|
3409
|
+
"get_chain_signature_near_account_id",
|
3410
|
+
{
|
3411
|
+
btc_public_key: btcPublicKey
|
3412
|
+
}
|
3413
|
+
);
|
3414
|
+
return csna;
|
3415
|
+
});
|
3416
|
+
}
|
3385
3417
|
function executeBTCDepositAndAction(_0) {
|
3386
3418
|
return __async(this, arguments, function* ({
|
3387
3419
|
action,
|
@@ -3389,12 +3421,12 @@ function executeBTCDepositAndAction(_0) {
|
|
3389
3421
|
feeRate,
|
3390
3422
|
fixedAmount = true,
|
3391
3423
|
pollResult = true,
|
3392
|
-
|
3424
|
+
env = "mainnet"
|
3393
3425
|
}) {
|
3394
3426
|
var _a;
|
3395
3427
|
try {
|
3396
3428
|
const { getPublicKey } = getBtcProvider();
|
3397
|
-
const config = yield getConfig(
|
3429
|
+
const config = yield getConfig(env);
|
3398
3430
|
const btcPublicKey = yield getPublicKey();
|
3399
3431
|
if (!btcPublicKey) {
|
3400
3432
|
throw new Error("BTC Public Key is not available.");
|
@@ -3402,34 +3434,35 @@ function executeBTCDepositAndAction(_0) {
|
|
3402
3434
|
if (!amount && !action) {
|
3403
3435
|
throw new Error("amount or action is required");
|
3404
3436
|
}
|
3405
|
-
const csna = yield
|
3406
|
-
config.accountContractId,
|
3407
|
-
"get_chain_signature_near_account_id",
|
3408
|
-
{
|
3409
|
-
btc_public_key: btcPublicKey
|
3410
|
-
}
|
3411
|
-
);
|
3437
|
+
const csna = yield getCsnaAccountId(env);
|
3412
3438
|
const rawDepositAmount = (_a = action ? action.amount : amount) != null ? _a : "0";
|
3413
3439
|
if (new import_big.default(rawDepositAmount).lt(0)) {
|
3414
3440
|
throw new Error("amount must be greater than 0");
|
3415
3441
|
}
|
3416
3442
|
const { depositAmount, receiveAmount } = yield getDepositAmount(rawDepositAmount, {
|
3417
|
-
|
3443
|
+
env
|
3418
3444
|
});
|
3419
3445
|
const accountInfo = yield getAccountInfo(csna, config.accountContractId);
|
3420
3446
|
const newActions = [];
|
3421
3447
|
const gasLimit = new import_big.default(50).mul(__pow(10, 12)).toFixed(0);
|
3422
|
-
const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info,
|
3448
|
+
const repayAction = yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, env, false);
|
3423
3449
|
if (repayAction) {
|
3424
3450
|
newActions.push(__spreadProps(__spreadValues({}, repayAction), {
|
3425
3451
|
gas: gasLimit
|
3426
3452
|
}));
|
3427
3453
|
}
|
3428
|
-
if (action) {
|
3429
|
-
newActions.push(
|
3430
|
-
|
3431
|
-
|
3432
|
-
|
3454
|
+
if (action || !action && new import_big.default((accountInfo == null ? void 0 : accountInfo.gas_token[config.token]) || 0).lt(MINIMUM_DEPOSIT_AMOUNT_BASE)) {
|
3455
|
+
newActions.push(
|
3456
|
+
action ? __spreadProps(__spreadValues({}, action), {
|
3457
|
+
amount: (repayAction == null ? void 0 : repayAction.amount) && !fixedAmount ? new import_big.default(receiveAmount).minus(repayAction.amount).toString() : receiveAmount.toString(),
|
3458
|
+
gas: gasLimit
|
3459
|
+
}) : {
|
3460
|
+
receiver_id: config.accountContractId,
|
3461
|
+
amount: MINIMUM_DEPOSIT_AMOUNT_BASE.toString(),
|
3462
|
+
msg: JSON.stringify("Deposit"),
|
3463
|
+
gas: gasLimit
|
3464
|
+
}
|
3465
|
+
);
|
3433
3466
|
}
|
3434
3467
|
const depositMsg = {
|
3435
3468
|
recipient_id: csna,
|
@@ -3536,7 +3569,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3536
3569
|
id,
|
3537
3570
|
provider
|
3538
3571
|
}) {
|
3539
|
-
var _a;
|
3540
3572
|
const wallet = {
|
3541
3573
|
signIn,
|
3542
3574
|
signOut,
|
@@ -3547,9 +3579,9 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3547
3579
|
signAndSendTransaction,
|
3548
3580
|
signAndSendTransactions
|
3549
3581
|
};
|
3550
|
-
const
|
3551
|
-
const currentConfig =
|
3552
|
-
const walletNetwork =
|
3582
|
+
const env = options.network.networkId || metadata.env || "mainnet";
|
3583
|
+
const currentConfig = walletConfig[env];
|
3584
|
+
const walletNetwork = ["mainnet", "private_mainnet"].includes(env) ? "mainnet" : "testnet";
|
3553
3585
|
yield initBtcContext();
|
3554
3586
|
function setupBtcContextListeners() {
|
3555
3587
|
return __async(this, null, function* () {
|
@@ -3619,21 +3651,17 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3619
3651
|
}
|
3620
3652
|
function getNearAccountByBtcPublicKey(btcPublicKey) {
|
3621
3653
|
return __async(this, null, function* () {
|
3622
|
-
const
|
3623
|
-
currentConfig.accountContractId,
|
3624
|
-
"get_chain_signature_near_account_id",
|
3625
|
-
{ btc_public_key: btcPublicKey }
|
3626
|
-
);
|
3654
|
+
const csna = yield getCsnaAccountId(env);
|
3627
3655
|
const nearPublicKey = yield nearCall2(
|
3628
3656
|
currentConfig.accountContractId,
|
3629
3657
|
"get_chain_signature_near_account_public_key",
|
3630
3658
|
{ btc_public_key: btcPublicKey }
|
3631
3659
|
);
|
3632
|
-
state.saveAccount(
|
3660
|
+
state.saveAccount(csna);
|
3633
3661
|
state.savePublicKey(nearPublicKey);
|
3634
3662
|
state.saveBtcPublicKey(btcPublicKey);
|
3635
3663
|
return {
|
3636
|
-
nearAddress,
|
3664
|
+
nearAddress: csna,
|
3637
3665
|
nearPublicKey
|
3638
3666
|
};
|
3639
3667
|
});
|
@@ -3713,7 +3741,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3713
3741
|
const btcContext = window.btcContext;
|
3714
3742
|
const accountId = state.getAccount();
|
3715
3743
|
const accountInfo = yield getAccountInfo(accountId, currentConfig.accountContractId);
|
3716
|
-
yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info,
|
3744
|
+
yield checkGasTokenArrears(accountInfo == null ? void 0 : accountInfo.debt_info, env, true);
|
3717
3745
|
const trans = [...params.transactions];
|
3718
3746
|
console.log("raw trans:", trans);
|
3719
3747
|
const gasTokenBalance = (accountInfo == null ? void 0 : accountInfo.gas_token[currentConfig.token]) || "0";
|
@@ -3724,7 +3752,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3724
3752
|
console.log("transferGasTransaction:", transferGasTransaction);
|
3725
3753
|
console.log("useNearPayGas:", useNearPayGas);
|
3726
3754
|
console.log("gasLimit:", gasLimit);
|
3727
|
-
yield checkGasTokenBalance(accountId, currentConfig.token, gasLimit,
|
3755
|
+
yield checkGasTokenBalance(accountId, currentConfig.token, gasLimit, env);
|
3728
3756
|
if (transferGasTransaction) {
|
3729
3757
|
trans.unshift(transferGasTransaction);
|
3730
3758
|
}
|
@@ -3810,7 +3838,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3810
3838
|
}
|
3811
3839
|
function calculateGasStrategy(gasTokenBalance, transactions2) {
|
3812
3840
|
return __async(this, null, function* () {
|
3813
|
-
var
|
3841
|
+
var _a;
|
3814
3842
|
const accountId = state.getAccount();
|
3815
3843
|
const nearAccount = yield provider.query({
|
3816
3844
|
request_type: "view_account",
|
@@ -3832,7 +3860,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3832
3860
|
);
|
3833
3861
|
console.log("list_gas_token gas tokens:", gasTokens);
|
3834
3862
|
const perTxFee = Math.max(
|
3835
|
-
Number(((
|
3863
|
+
Number(((_a = gasTokens[currentConfig.token]) == null ? void 0 : _a.per_tx_protocol_fee) || 0),
|
3836
3864
|
100
|
3837
3865
|
);
|
3838
3866
|
console.log("perTxFee:", perTxFee);
|
@@ -3923,7 +3951,7 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
3923
3951
|
const btcNetwork = yield btcContext.getNetwork();
|
3924
3952
|
console.log("btcNetwork:", btcNetwork, network);
|
3925
3953
|
const networkMap = {
|
3926
|
-
livenet: ["mainnet"],
|
3954
|
+
livenet: ["mainnet", "private_mainnet"],
|
3927
3955
|
testnet: ["testnet", "dev"]
|
3928
3956
|
};
|
3929
3957
|
if (!networkMap[btcNetwork].includes(network)) {
|
@@ -3946,7 +3974,7 @@ function setupBTCWallet({
|
|
3946
3974
|
deprecated = false,
|
3947
3975
|
autoConnect = true,
|
3948
3976
|
syncLogOut = true,
|
3949
|
-
|
3977
|
+
env = "mainnet"
|
3950
3978
|
} = {}) {
|
3951
3979
|
console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion());
|
3952
3980
|
const btcWallet = () => __async(this, null, function* () {
|
@@ -3962,7 +3990,7 @@ function setupBTCWallet({
|
|
3962
3990
|
available: true,
|
3963
3991
|
autoConnect,
|
3964
3992
|
syncLogOut,
|
3965
|
-
|
3993
|
+
env
|
3966
3994
|
},
|
3967
3995
|
init: BTCWallet
|
3968
3996
|
};
|
@@ -3972,7 +4000,7 @@ function setupBTCWallet({
|
|
3972
4000
|
|
3973
4001
|
// src/index.ts
|
3974
4002
|
var getVersion = () => {
|
3975
|
-
return "0.3.
|
4003
|
+
return "0.3.24";
|
3976
4004
|
};
|
3977
4005
|
if (typeof window !== "undefined") {
|
3978
4006
|
window.__BTC_WALLET_VERSION = getVersion();
|