btc-wallet 0.5.53-beta → 0.5.56-beta
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/README.md +25 -16
- package/dist/core/setupBTCWallet/index.d.ts +2 -1
- package/dist/core/setupModal.d.ts +7 -1
- package/dist/index.js +190 -97
- package/dist/index.js.map +3 -3
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/initWalletButton.d.ts +7 -1
- package/dist/utils/satoshi.d.ts +4 -1
- package/esm/index.js +188 -95
- package/esm/index.js.map +3 -3
- package/package.json +1 -1
package/esm/index.js
CHANGED
@@ -164,6 +164,51 @@ function isMobile() {
|
|
164
164
|
}
|
165
165
|
return false;
|
166
166
|
}
|
167
|
+
function safeJSONParse(str) {
|
168
|
+
try {
|
169
|
+
return JSON.parse(str);
|
170
|
+
} catch (e) {
|
171
|
+
console.error("safeJSONParse", e);
|
172
|
+
return void 0;
|
173
|
+
}
|
174
|
+
}
|
175
|
+
function safeJSONStringify(obj) {
|
176
|
+
try {
|
177
|
+
return JSON.stringify(obj);
|
178
|
+
} catch (e) {
|
179
|
+
console.error("safeJSONStringify", e);
|
180
|
+
return void 0;
|
181
|
+
}
|
182
|
+
}
|
183
|
+
function storageStore(namespace, options) {
|
184
|
+
if (typeof window === "undefined")
|
185
|
+
return;
|
186
|
+
const _namespace = namespace || "SATOSHI_WALLET_DEFAULT";
|
187
|
+
const storage5 = (options == null ? void 0 : options.storage) || (window == null ? void 0 : window.localStorage);
|
188
|
+
const namespaceKey = (key) => {
|
189
|
+
return _namespace + ":" + key;
|
190
|
+
};
|
191
|
+
return {
|
192
|
+
set(key, value) {
|
193
|
+
const _value = safeJSONStringify(value);
|
194
|
+
_value ? storage5.setItem(namespaceKey(key), _value) : storage5.removeItem(namespaceKey(key));
|
195
|
+
},
|
196
|
+
get(key) {
|
197
|
+
const _value = storage5.getItem(namespaceKey(key));
|
198
|
+
return _value ? safeJSONParse(_value) : void 0;
|
199
|
+
},
|
200
|
+
remove(key) {
|
201
|
+
storage5.removeItem(namespaceKey(key));
|
202
|
+
},
|
203
|
+
clearAll: function clearAll() {
|
204
|
+
for (const key in storage5) {
|
205
|
+
if (key.startsWith(namespace + ":")) {
|
206
|
+
storage5.removeItem(key);
|
207
|
+
}
|
208
|
+
}
|
209
|
+
}
|
210
|
+
};
|
211
|
+
}
|
167
212
|
|
168
213
|
// src/utils/Dialog.ts
|
169
214
|
var Dialog = class {
|
@@ -433,7 +478,7 @@ var MobileWalletConnect = class {
|
|
433
478
|
case "okx":
|
434
479
|
return `okx://wallet/dapp/url?dappUrl=${encodeURIComponent(url)}`;
|
435
480
|
case "bitget":
|
436
|
-
return `
|
481
|
+
return `bitkeep://bkconnect?action=dapp&url=${encodeURIComponent(url)}`;
|
437
482
|
case "xverse":
|
438
483
|
return `xverse://browser?url=${encodeURIComponent(url)}`;
|
439
484
|
default:
|
@@ -519,9 +564,13 @@ var InjectedConnector = class extends BaseConnector {
|
|
519
564
|
}
|
520
565
|
requestAccounts() {
|
521
566
|
return __async(this, null, function* () {
|
522
|
-
if (isMobile()
|
523
|
-
|
524
|
-
|
567
|
+
if (isMobile()) {
|
568
|
+
try {
|
569
|
+
this.getProvider();
|
570
|
+
} catch (error) {
|
571
|
+
yield MobileWalletConnect.redirectToWallet(this.metadata.id);
|
572
|
+
return [];
|
573
|
+
}
|
525
574
|
}
|
526
575
|
const accounts = yield this.getProviderOrThrow().requestAccounts();
|
527
576
|
console.log("network:", yield this.getNetwork());
|
@@ -706,6 +755,7 @@ import EventEmitter from "events";
|
|
706
755
|
var xverse_default = "data:image/png;base64,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";
|
707
756
|
|
708
757
|
// src/connector/xverse.ts
|
758
|
+
var storage = storageStore("SATOSHI_WALLET_XVERSE");
|
709
759
|
var _network, _event;
|
710
760
|
var XverseConnector = class extends BaseConnector {
|
711
761
|
constructor() {
|
@@ -731,7 +781,7 @@ var XverseConnector = class extends BaseConnector {
|
|
731
781
|
walletType
|
732
782
|
}));
|
733
783
|
console.log("\u{1F680} ~ XverseConnector ~ loadAccounts ~ res:", addresses);
|
734
|
-
|
784
|
+
storage == null ? void 0 : storage.set(`${network}:addresses`, addresses);
|
735
785
|
return addresses;
|
736
786
|
});
|
737
787
|
__privateGet(this, _event).setMaxListeners(100);
|
@@ -766,9 +816,9 @@ var XverseConnector = class extends BaseConnector {
|
|
766
816
|
}
|
767
817
|
getAddresses() {
|
768
818
|
return __async(this, null, function* () {
|
769
|
-
const data =
|
819
|
+
const data = storage == null ? void 0 : storage.get(`${__privateGet(this, _network)}:addresses`);
|
770
820
|
if (data) {
|
771
|
-
return
|
821
|
+
return data;
|
772
822
|
}
|
773
823
|
return [];
|
774
824
|
});
|
@@ -853,8 +903,7 @@ var XverseConnector = class extends BaseConnector {
|
|
853
903
|
});
|
854
904
|
}
|
855
905
|
disconnect() {
|
856
|
-
|
857
|
-
localStorage.removeItem("btc-connect-xverse-addresses-Testnet");
|
906
|
+
storage == null ? void 0 : storage.remove(`${__privateGet(this, _network)}:addresses`);
|
858
907
|
}
|
859
908
|
};
|
860
909
|
_network = new WeakMap();
|
@@ -867,6 +916,7 @@ import EventEmitter2 from "events";
|
|
867
916
|
var magicEden_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAgCAYAAABZyotbAAADGklEQVR42sVYTW7aQBT+ZsZk0yy8jWoqIxWK1E16A3KDcoLACRqkGKFugE0VAVLgBElOQHqC0BPUm0q0EMVVoWxZNCsYv25MlR/AY2O73xKZefO9ed+b7w0DgFm+ZrquPCdCAYAOwAbQM0btS0SIaa5aJ6AEIhPR49Ge2SxfM6Urb0B4Fowx1nj5o9WMhpTVJ8J7xA3OKsb3VpdNs9YFAaVN30VBbpqr1omogWQwXyxeZDhhexaJqDHNVetho8zyNTNBUgCga9qfQ+5pCnGQuzMbunTlDf4DuOqHYcjtpe7P12k3XjAnPe4MeJC/BCH3+431YZt249KXEPwIANgka1HgnPg0lFm+Zkopv6qU+aasAzQImPSfy+V+N+M05gCghQnrnRw2kfN0pYdPPOlCiObB8MyJXWOqZTnNVesR6EqXUt7cmQ09cWLryE2yVsm/tTOHXLensLyZSt33Q7eQMBpbpznO+dUmB/ME74xR255kTy8BdqywetcYtSqJntjDk5NS3vmRIqKmMWrbALBYLE88f+e3+kmYO1SF2ADRYJAed/6VacbpzoUQRTDmqCTu1+vTQqTEiKhJRDsaYeYIIcpPfz0YnjmC8yMAc4Vyr0deiulxp7ELOSK3vKl1HwzPHCIqKixTCNIllTUWlhwRNdPjztZy1jTNQcQI1DxCkHukq40uRckoM2flKmLpit5Gy2F19RSulEoXuuuiEtuJreCN3+Wwunr2VKBQzq9uW9eJ3GPbyKnoSnUAJRc9v3KO/II2Ru1LIUQGoCsANmO4BlD220iAAdRO37ZPwuxN27X7eOUWaO7aS92fk6+umCMEL4bdVySWKgjUBlDmCMGPdhlbtCRJeQOogl5Il1LWJ1kryPJfhBCDVTISJSal7CsOoDqCPyuUpJTOJGsVjVHbTqwUJ1mrBOAw5jAmgH7SGjtOKI45efvx0JfYcrlvRxKOJfsMx33mrUEQf7bdPeBzMpSYY3z7ZHMAlfXzkJrXU26/QnRVhspdsfKU7EEbvgBQ8Ehe7/r8taXdFzy96WBMj+ycQLbrUm9l5f4C3RupufZdcK8AAAAASUVORK5CYII=";
|
868
917
|
|
869
918
|
// src/connector/magicEden.ts
|
919
|
+
var storage2 = storageStore("SATOSHI_WALLET_MAGICEDEN");
|
870
920
|
var _network2, _event2;
|
871
921
|
var MagicEdenConnector = class extends BaseConnector {
|
872
922
|
constructor() {
|
@@ -900,7 +950,7 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
900
950
|
};
|
901
951
|
getAddress(getAddressOptions).catch((error) => reject(error));
|
902
952
|
});
|
903
|
-
|
953
|
+
storage2 == null ? void 0 : storage2.set(`${network}:addresses`, addresses);
|
904
954
|
return addresses;
|
905
955
|
});
|
906
956
|
__privateGet(this, _event2).setMaxListeners(100);
|
@@ -927,10 +977,9 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
927
977
|
if (!this.isReady()) {
|
928
978
|
throw new Error(`${this.metadata.name} is not install!`);
|
929
979
|
}
|
930
|
-
const data =
|
980
|
+
const data = storage2 == null ? void 0 : storage2.get(`${__privateGet(this, _network2)}:addresses`);
|
931
981
|
if (data) {
|
932
|
-
|
933
|
-
return addresses.map((item) => item.address);
|
982
|
+
return data.map((item) => item.address);
|
934
983
|
} else {
|
935
984
|
return [];
|
936
985
|
}
|
@@ -941,10 +990,9 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
941
990
|
if (!this.isReady()) {
|
942
991
|
throw new Error(`${this.metadata.name} is not install!`);
|
943
992
|
}
|
944
|
-
const data =
|
993
|
+
const data = storage2 == null ? void 0 : storage2.get(`${__privateGet(this, _network2)}:addresses`);
|
945
994
|
if (data) {
|
946
|
-
|
947
|
-
return addresses[0].publicKey;
|
995
|
+
return data[0].publicKey;
|
948
996
|
} else {
|
949
997
|
return "";
|
950
998
|
}
|
@@ -1057,8 +1105,7 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
1057
1105
|
});
|
1058
1106
|
}
|
1059
1107
|
disconnect() {
|
1060
|
-
|
1061
|
-
localStorage.removeItem("btc-connect-magicEden-addresses-Testnet");
|
1108
|
+
storage2 == null ? void 0 : storage2.remove(`${__privateGet(this, _network2)}:addresses`);
|
1062
1109
|
}
|
1063
1110
|
};
|
1064
1111
|
_network2 = new WeakMap();
|
@@ -1152,13 +1199,14 @@ var useConnector = () => {
|
|
1152
1199
|
const { connectors, setConnectorId } = useConnectProvider();
|
1153
1200
|
const connect = useCallback2(
|
1154
1201
|
(connectorId) => __async(void 0, null, function* () {
|
1202
|
+
var _a;
|
1155
1203
|
const connector = connectors.find((item) => item.metadata.id === connectorId);
|
1156
1204
|
if (!connector) {
|
1157
1205
|
throw new Error(`connector id ${connectorId} not found`);
|
1158
1206
|
}
|
1159
1207
|
const accounts = yield connector.requestAccounts();
|
1160
1208
|
if (accounts.length > 0) {
|
1161
|
-
|
1209
|
+
(_a = storageStore()) == null ? void 0 : _a.set("current-connector-id", connector.metadata.id);
|
1162
1210
|
setConnectorId(connector.metadata.id);
|
1163
1211
|
}
|
1164
1212
|
}),
|
@@ -2321,10 +2369,11 @@ var ConnectProvider = ({
|
|
2321
2369
|
version: ((_c = options.aaOptions.accountContracts[((_b = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _b[0]) || "BTC"]) == null ? void 0 : _c[0].version) || "1.0.0"
|
2322
2370
|
});
|
2323
2371
|
const getConnectorId = useCallback7(() => {
|
2372
|
+
var _a2;
|
2324
2373
|
if (typeof window === "undefined") {
|
2325
2374
|
return "";
|
2326
2375
|
}
|
2327
|
-
const id =
|
2376
|
+
const id = (_a2 = storageStore()) == null ? void 0 : _a2.get("current-connector-id");
|
2328
2377
|
return id != null ? id : "";
|
2329
2378
|
}, []);
|
2330
2379
|
const getConnector = useCallback7(() => {
|
@@ -2466,7 +2515,8 @@ var ConnectProvider = ({
|
|
2466
2515
|
}
|
2467
2516
|
}, [connectorId, connectors]);
|
2468
2517
|
const disconnect = useCallback7(() => {
|
2469
|
-
|
2518
|
+
var _a2;
|
2519
|
+
(_a2 = storageStore()) == null ? void 0 : _a2.remove("current-connector-id");
|
2470
2520
|
txConfirmUtils_default.reset();
|
2471
2521
|
if (connector) {
|
2472
2522
|
connector.disconnect();
|
@@ -2655,7 +2705,9 @@ function BtcWalletSelectorContextProvider({
|
|
2655
2705
|
new UnisatConnector(),
|
2656
2706
|
new XverseConnector(),
|
2657
2707
|
new OKXConnector(),
|
2658
|
-
new BitgetConnector()
|
2708
|
+
new BitgetConnector(),
|
2709
|
+
new MagicEdenConnector(),
|
2710
|
+
new BybitConnector()
|
2659
2711
|
];
|
2660
2712
|
const walletSelectorContextValue = useMemo6(() => {
|
2661
2713
|
const simpleFn = {};
|
@@ -3090,36 +3142,37 @@ var STORAGE_KEYS = {
|
|
3090
3142
|
PUBLIC_KEY: "btc-wallet-publickey",
|
3091
3143
|
BTC_PUBLIC_KEY: "btc-wallet-btc-publickey"
|
3092
3144
|
};
|
3145
|
+
var storage3 = storageStore("SATOSHI_WALLET_ACCOUNT");
|
3093
3146
|
var state_default = {
|
3094
3147
|
saveAccount(account) {
|
3095
3148
|
if (!account) {
|
3096
3149
|
this.removeAccount();
|
3097
3150
|
return;
|
3098
3151
|
}
|
3099
|
-
|
3152
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.ACCOUNT, account);
|
3100
3153
|
},
|
3101
3154
|
removeAccount() {
|
3102
|
-
|
3155
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.ACCOUNT);
|
3103
3156
|
},
|
3104
3157
|
savePublicKey(publicKey) {
|
3105
3158
|
if (!publicKey) {
|
3106
3159
|
this.removePublicKey();
|
3107
3160
|
return;
|
3108
3161
|
}
|
3109
|
-
|
3162
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.PUBLIC_KEY, publicKey);
|
3110
3163
|
},
|
3111
3164
|
removePublicKey() {
|
3112
|
-
|
3165
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.PUBLIC_KEY);
|
3113
3166
|
},
|
3114
3167
|
saveBtcPublicKey(publicKey) {
|
3115
3168
|
if (!publicKey) {
|
3116
3169
|
this.removeBtcPublicKey();
|
3117
3170
|
return;
|
3118
3171
|
}
|
3119
|
-
|
3172
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.BTC_PUBLIC_KEY, publicKey);
|
3120
3173
|
},
|
3121
3174
|
removeBtcPublicKey() {
|
3122
|
-
|
3175
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.BTC_PUBLIC_KEY);
|
3123
3176
|
},
|
3124
3177
|
clear() {
|
3125
3178
|
this.removeAccount();
|
@@ -3135,13 +3188,13 @@ var state_default = {
|
|
3135
3188
|
this.savePublicKey(publicKey);
|
3136
3189
|
},
|
3137
3190
|
getAccount() {
|
3138
|
-
return
|
3191
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.ACCOUNT)) || "";
|
3139
3192
|
},
|
3140
3193
|
getPublicKey() {
|
3141
|
-
return
|
3194
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.PUBLIC_KEY)) || "";
|
3142
3195
|
},
|
3143
3196
|
getBtcPublicKey() {
|
3144
|
-
return
|
3197
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.BTC_PUBLIC_KEY)) || "";
|
3145
3198
|
},
|
3146
3199
|
isValid() {
|
3147
3200
|
const account = this.getAccount();
|
@@ -3466,7 +3519,8 @@ function calculateGasStrategy(_0) {
|
|
3466
3519
|
return __async(this, arguments, function* ({
|
3467
3520
|
csna,
|
3468
3521
|
transactions: transactions2,
|
3469
|
-
env
|
3522
|
+
env,
|
3523
|
+
gasStrategy = "auto"
|
3470
3524
|
}) {
|
3471
3525
|
var _a;
|
3472
3526
|
const currentConfig = getWalletConfig(env);
|
@@ -3498,6 +3552,7 @@ function calculateGasStrategy(_0) {
|
|
3498
3552
|
const nearAvailableBalance = new Big(nearBalance).minus(transferAmount.near).toNumber();
|
3499
3553
|
console.log("available near balance:", nearAvailableBalance);
|
3500
3554
|
console.log("available gas token balance:", gasTokenBalance);
|
3555
|
+
console.log("gas strategy:", gasStrategy);
|
3501
3556
|
const convertTx = yield Promise.all(
|
3502
3557
|
transactions2.map(
|
3503
3558
|
(transaction, index) => convertTransactionToTxHex({
|
@@ -3509,8 +3564,20 @@ function calculateGasStrategy(_0) {
|
|
3509
3564
|
})
|
3510
3565
|
)
|
3511
3566
|
);
|
3512
|
-
|
3513
|
-
|
3567
|
+
let useNearPayGas = false;
|
3568
|
+
let perTxFee;
|
3569
|
+
if (gasStrategy === "near") {
|
3570
|
+
console.log("Forcing NEAR as gas token based on gasStrategy");
|
3571
|
+
useNearPayGas = true;
|
3572
|
+
} else if (gasStrategy === "btc") {
|
3573
|
+
console.log("Forcing BTC token as gas token based on gasStrategy");
|
3574
|
+
useNearPayGas = false;
|
3575
|
+
} else if (nearAvailableBalance > 0.5) {
|
3576
|
+
console.log("NEAR balance is enough, using NEAR to pay for gas");
|
3577
|
+
useNearPayGas = true;
|
3578
|
+
}
|
3579
|
+
let gasAmount;
|
3580
|
+
if (useNearPayGas) {
|
3514
3581
|
const gasTokens = yield nearCallFunction(
|
3515
3582
|
currentConfig.accountContractId,
|
3516
3583
|
"list_gas_token",
|
@@ -3518,39 +3585,29 @@ function calculateGasStrategy(_0) {
|
|
3518
3585
|
{ network: currentConfig.network }
|
3519
3586
|
);
|
3520
3587
|
console.log("list_gas_token gas tokens:", gasTokens);
|
3521
|
-
const
|
3522
|
-
|
3523
|
-
100
|
3524
|
-
);
|
3588
|
+
const fee = Math.max(Number(((_a = gasTokens[currentConfig.btcToken]) == null ? void 0 : _a.per_tx_protocol_fee) || 0), 100);
|
3589
|
+
perTxFee = fee.toString();
|
3525
3590
|
console.log("perTxFee:", perTxFee);
|
3526
|
-
|
3527
|
-
console.log("protocolFee:", protocolFee);
|
3528
|
-
const transferTx = yield createGasTokenTransfer({ csna, amount: protocolFee, env });
|
3529
|
-
return recalculateGasWithTransfer({
|
3530
|
-
csna,
|
3531
|
-
transferTx,
|
3532
|
-
transactions: convertTx,
|
3533
|
-
useNearPayGas: true,
|
3534
|
-
perTxFee: perTxFee.toString(),
|
3535
|
-
env
|
3536
|
-
});
|
3591
|
+
gasAmount = new Big(perTxFee || "0").mul(convertTx.length).toFixed(0);
|
3537
3592
|
} else {
|
3538
|
-
|
3539
|
-
const adjustedGas = yield getPredictedGasAmount({
|
3593
|
+
gasAmount = yield getPredictedGasAmount({
|
3540
3594
|
accountContractId: currentConfig.accountContractId,
|
3541
3595
|
tokenId: currentConfig.btcToken,
|
3542
3596
|
transactions: convertTx.map((t) => t.txHex),
|
3543
3597
|
env
|
3544
3598
|
});
|
3545
|
-
const transferTx = yield createGasTokenTransfer({ csna, amount: adjustedGas, env });
|
3546
|
-
return recalculateGasWithTransfer({
|
3547
|
-
csna,
|
3548
|
-
transferTx,
|
3549
|
-
transactions: convertTx,
|
3550
|
-
useNearPayGas: false,
|
3551
|
-
env
|
3552
|
-
});
|
3553
3599
|
}
|
3600
|
+
console.log("useNearPayGas:", useNearPayGas);
|
3601
|
+
console.log("gasAmount:", gasAmount);
|
3602
|
+
const transferTx = yield createGasTokenTransfer({ csna, amount: gasAmount, env });
|
3603
|
+
return recalculateGasWithTransfer({
|
3604
|
+
csna,
|
3605
|
+
transferTx,
|
3606
|
+
transactions: convertTx,
|
3607
|
+
useNearPayGas,
|
3608
|
+
perTxFee,
|
3609
|
+
env
|
3610
|
+
});
|
3554
3611
|
});
|
3555
3612
|
}
|
3556
3613
|
function createGasTokenTransfer(_0) {
|
@@ -3837,11 +3894,13 @@ function getCsnaAccountId(env) {
|
|
3837
3894
|
});
|
3838
3895
|
}
|
3839
3896
|
function checkDepositDisabledAddress() {
|
3840
|
-
|
3897
|
+
var _a;
|
3898
|
+
const data = (_a = storageStore("SATOSHI_WALLET_XVERSE")) == null ? void 0 : _a.get(
|
3899
|
+
`Mainnet:addresses`
|
3900
|
+
);
|
3841
3901
|
if (!data)
|
3842
3902
|
return;
|
3843
|
-
const
|
3844
|
-
const address = addresses == null ? void 0 : addresses[0];
|
3903
|
+
const address = data == null ? void 0 : data[0];
|
3845
3904
|
if (address.walletType === "ledger" && !["p2wpkh", "p2sh"].includes(address.addressType)) {
|
3846
3905
|
throw new Error("Ledger is only supported for p2wpkh and p2sh address");
|
3847
3906
|
}
|
@@ -3878,7 +3937,7 @@ function executeBTCDepositAndAction(_0) {
|
|
3878
3937
|
throw new Error("Deposit amount or action is required");
|
3879
3938
|
}
|
3880
3939
|
const csna = yield getCsnaAccountId(env);
|
3881
|
-
const depositAmount =
|
3940
|
+
const depositAmount = new Big2(amount || (action == null ? void 0 : action.amount) || 0).round(0, Big2.roundDown).toNumber();
|
3882
3941
|
console.log("depositAmount", depositAmount);
|
3883
3942
|
if (depositAmount <= 0) {
|
3884
3943
|
throw new Error("Invalid deposit amount");
|
@@ -3982,13 +4041,14 @@ function checkSatoshiWhitelist(btcAccountId, env = "mainnet") {
|
|
3982
4041
|
return __async(this, null, function* () {
|
3983
4042
|
if (env !== "mainnet")
|
3984
4043
|
return;
|
3985
|
-
const
|
4044
|
+
const storage5 = storageStore();
|
4045
|
+
const hasShownNotice = storage5 == null ? void 0 : storage5.get("private-mainnet-notice");
|
3986
4046
|
if (!hasShownNotice) {
|
3987
4047
|
Dialog.alert({
|
3988
4048
|
title: "Notice",
|
3989
4049
|
message: "You are currently using Satoshi Private Mainnet. This is a private version for testing. Please try a small amount of assets in Ramp"
|
3990
4050
|
});
|
3991
|
-
|
4051
|
+
storage5 == null ? void 0 : storage5.set("private-mainnet-notice", "true");
|
3992
4052
|
}
|
3993
4053
|
if (!btcAccountId)
|
3994
4054
|
return;
|
@@ -4318,7 +4378,13 @@ function uint8ArrayToHex(uint8Array) {
|
|
4318
4378
|
}
|
4319
4379
|
|
4320
4380
|
// src/utils/initWalletButton.ts
|
4321
|
-
|
4381
|
+
var storage4 = storageStore("SATOSHI_WALLET_BUTTON");
|
4382
|
+
function setupWalletButton({
|
4383
|
+
env,
|
4384
|
+
nearWallet,
|
4385
|
+
btcWallet,
|
4386
|
+
walletUrl
|
4387
|
+
}) {
|
4322
4388
|
console.log(`setupWalletButton ${walletUrl || ""}`);
|
4323
4389
|
if (document.getElementById("satoshi-wallet-button")) {
|
4324
4390
|
return;
|
@@ -4341,23 +4407,25 @@ function setupWalletButton(env, wallet, originalWallet, walletUrl) {
|
|
4341
4407
|
closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
|
4342
4408
|
iframe
|
4343
4409
|
});
|
4344
|
-
setupButtonClickHandler(button, iframe,
|
4410
|
+
setupButtonClickHandler(button, iframe, nearWallet, btcWallet);
|
4345
4411
|
}
|
4346
4412
|
function createFloatingButtonWithIframe({
|
4347
4413
|
openImageUrl,
|
4348
4414
|
closeImageUrl,
|
4349
4415
|
iframe
|
4350
4416
|
}) {
|
4417
|
+
var _a;
|
4351
4418
|
const button = document.createElement("img");
|
4352
4419
|
button.id = "satoshi-wallet-button";
|
4353
|
-
const isIframeVisible =
|
4420
|
+
const isIframeVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
|
4354
4421
|
button.src = isIframeVisible ? closeImageUrl : openImageUrl;
|
4355
4422
|
iframe.style.display = isIframeVisible ? "block" : "none";
|
4356
4423
|
const windowWidth = window.innerWidth;
|
4357
4424
|
const windowHeight = window.innerHeight;
|
4358
|
-
const savedPosition =
|
4359
|
-
|
4360
|
-
|
4425
|
+
const savedPosition = (storage4 == null ? void 0 : storage4.get("position")) || {
|
4426
|
+
right: "20px",
|
4427
|
+
bottom: "20px"
|
4428
|
+
};
|
4361
4429
|
const right = Math.min(Math.max(20, parseInt(savedPosition.right)), windowWidth - 80);
|
4362
4430
|
const bottom = Math.min(Math.max(20, parseInt(savedPosition.bottom)), windowHeight - 80);
|
4363
4431
|
Object.assign(button.style, {
|
@@ -4453,13 +4521,10 @@ function createFloatingButtonWithIframe({
|
|
4453
4521
|
isDragging = false;
|
4454
4522
|
button.style.cursor = "grab";
|
4455
4523
|
button.style.transition = "transform 0.15s ease";
|
4456
|
-
|
4457
|
-
|
4458
|
-
|
4459
|
-
|
4460
|
-
bottom: button.style.bottom
|
4461
|
-
})
|
4462
|
-
);
|
4524
|
+
storage4 == null ? void 0 : storage4.set("position", {
|
4525
|
+
right: button.style.right,
|
4526
|
+
bottom: button.style.bottom
|
4527
|
+
});
|
4463
4528
|
if (!isDragEvent) {
|
4464
4529
|
handleButtonClick();
|
4465
4530
|
}
|
@@ -4473,7 +4538,7 @@ function createFloatingButtonWithIframe({
|
|
4473
4538
|
const newVisibleState = !isCurrentlyVisible;
|
4474
4539
|
iframe.style.display = newVisibleState ? "block" : "none";
|
4475
4540
|
button.src = newVisibleState ? closeImageUrl : openImageUrl;
|
4476
|
-
|
4541
|
+
storage4 == null ? void 0 : storage4.set("visible", newVisibleState);
|
4477
4542
|
setTimeout(() => {
|
4478
4543
|
if (newVisibleState) {
|
4479
4544
|
iframe.focus();
|
@@ -4487,11 +4552,12 @@ function createIframe({
|
|
4487
4552
|
iframeUrl,
|
4488
4553
|
iframeStyle = {}
|
4489
4554
|
}) {
|
4555
|
+
var _a;
|
4490
4556
|
const iframe = document.createElement("iframe");
|
4491
4557
|
iframe.id = "satoshi-wallet-iframe";
|
4492
4558
|
iframe.allow = "clipboard-read; clipboard-write";
|
4493
4559
|
iframe.src = iframeUrl;
|
4494
|
-
const isVisible =
|
4560
|
+
const isVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
|
4495
4561
|
Object.assign(iframe.style, __spreadValues({
|
4496
4562
|
position: "fixed",
|
4497
4563
|
bottom: "90px",
|
@@ -4506,12 +4572,12 @@ function createIframe({
|
|
4506
4572
|
return iframe;
|
4507
4573
|
}
|
4508
4574
|
var currentMessageHandler = null;
|
4509
|
-
function setupButtonClickHandler(button, iframe,
|
4575
|
+
function setupButtonClickHandler(button, iframe, nearWallet, btcWallet) {
|
4510
4576
|
return __async(this, null, function* () {
|
4511
4577
|
var _a;
|
4512
|
-
const accountId = (_a = yield
|
4513
|
-
const originalAccountId =
|
4514
|
-
const originalPublicKey = yield
|
4578
|
+
const accountId = (_a = yield nearWallet == null ? void 0 : nearWallet.getAccounts()) == null ? void 0 : _a[0].accountId;
|
4579
|
+
const originalAccountId = btcWallet == null ? void 0 : btcWallet.account;
|
4580
|
+
const originalPublicKey = yield btcWallet == null ? void 0 : btcWallet.getPublicKey();
|
4515
4581
|
console.log({ accountId, originalAccountId, originalPublicKey });
|
4516
4582
|
const iframeSrc = new URL(iframe.src);
|
4517
4583
|
iframeSrc.searchParams.set("origin", window.location.origin);
|
@@ -4520,8 +4586,8 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
4520
4586
|
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
4521
4587
|
iframe.src = iframeSrc.toString();
|
4522
4588
|
const actions = {
|
4523
|
-
signAndSendTransaction:
|
4524
|
-
signAndSendTransactions:
|
4589
|
+
signAndSendTransaction: nearWallet.signAndSendTransaction,
|
4590
|
+
signAndSendTransactions: nearWallet.signAndSendTransactions,
|
4525
4591
|
executeBTCDepositAndAction,
|
4526
4592
|
getWithdrawTransaction
|
4527
4593
|
};
|
@@ -4566,6 +4632,7 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
4566
4632
|
});
|
4567
4633
|
}
|
4568
4634
|
function removeWalletButton() {
|
4635
|
+
console.log("removeWalletButton");
|
4569
4636
|
const button = document.getElementById("satoshi-wallet-button");
|
4570
4637
|
button == null ? void 0 : button.remove();
|
4571
4638
|
const iframe = document.getElementById("satoshi-wallet-iframe");
|
@@ -4672,10 +4739,14 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4672
4739
|
if (btcPublicKey) {
|
4673
4740
|
yield getNearAccountByBtcPublicKey(btcPublicKey);
|
4674
4741
|
removeWalletButton();
|
4675
|
-
setupWalletButton(
|
4742
|
+
setupWalletButton({
|
4743
|
+
env,
|
4744
|
+
nearWallet: wallet,
|
4745
|
+
btcWallet: btcContext,
|
4746
|
+
walletUrl: metadata.walletUrl
|
4747
|
+
});
|
4676
4748
|
}
|
4677
4749
|
} else {
|
4678
|
-
removeWalletButton();
|
4679
4750
|
connectionUpdateTimeout = setTimeout(() => {
|
4680
4751
|
handleConnectionUpdate();
|
4681
4752
|
}, 5e3);
|
@@ -4814,7 +4885,8 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4814
4885
|
const { transferGasTransaction, useNearPayGas, gasLimit } = yield calculateGasStrategy({
|
4815
4886
|
csna,
|
4816
4887
|
transactions: trans,
|
4817
|
-
env
|
4888
|
+
env,
|
4889
|
+
gasStrategy: metadata.gasStrategy
|
4818
4890
|
});
|
4819
4891
|
console.log("transferGasTransaction:", transferGasTransaction);
|
4820
4892
|
console.log("useNearPayGas:", useNearPayGas);
|
@@ -4886,9 +4958,10 @@ function setupBTCWallet({
|
|
4886
4958
|
autoConnect = true,
|
4887
4959
|
syncLogOut = true,
|
4888
4960
|
env = "mainnet",
|
4889
|
-
walletUrl
|
4961
|
+
walletUrl,
|
4962
|
+
gasStrategy = "auto"
|
4890
4963
|
} = {}) {
|
4891
|
-
console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion(), "env:", env);
|
4964
|
+
console.log("\u26A1\uFE0F BTC Wallet Version:", getVersion(), "env:", env, "gasStrategy:", gasStrategy);
|
4892
4965
|
const btcWallet = () => __async(this, null, function* () {
|
4893
4966
|
return {
|
4894
4967
|
id: "btc-wallet",
|
@@ -4903,7 +4976,8 @@ function setupBTCWallet({
|
|
4903
4976
|
autoConnect,
|
4904
4977
|
syncLogOut,
|
4905
4978
|
env,
|
4906
|
-
walletUrl
|
4979
|
+
walletUrl,
|
4980
|
+
gasStrategy
|
4907
4981
|
},
|
4908
4982
|
init: BTCWallet
|
4909
4983
|
};
|
@@ -4915,11 +4989,30 @@ function setupBTCWallet({
|
|
4915
4989
|
import {
|
4916
4990
|
setupModal as _setupModal
|
4917
4991
|
} from "ref-modal-ui";
|
4992
|
+
var subscription;
|
4918
4993
|
function setupWalletSelectorModal(selector, options) {
|
4919
4994
|
if (!selector)
|
4920
4995
|
throw new Error("selector is required");
|
4996
|
+
const {
|
4997
|
+
showChainGroups = true,
|
4998
|
+
showWalletUIForNearAccount = true,
|
4999
|
+
env = "mainnet",
|
5000
|
+
walletUrl
|
5001
|
+
} = options;
|
5002
|
+
subscription == null ? void 0 : subscription.unsubscribe();
|
4921
5003
|
const state = selector.store.getState();
|
4922
5004
|
const group = getGroup(state);
|
5005
|
+
subscription = selector.store.observable.subscribe((state2) => {
|
5006
|
+
const walletId = state2.selectedWalletId;
|
5007
|
+
console.log("setupWalletSelectorModal walletId", walletId);
|
5008
|
+
if (!walletId)
|
5009
|
+
removeWalletButton();
|
5010
|
+
if (showWalletUIForNearAccount && walletId !== "btc-wallet") {
|
5011
|
+
selector.wallet().then((wallet) => {
|
5012
|
+
setupWalletButton({ env, nearWallet: wallet, walletUrl });
|
5013
|
+
});
|
5014
|
+
}
|
5015
|
+
});
|
4923
5016
|
if (group.includes("btc")) {
|
4924
5017
|
document.head.appendChild(document.createElement("style")).textContent = `
|
4925
5018
|
#near-wallet-selector-modal .options-list .btc-wallet {
|
@@ -4930,7 +5023,7 @@ function setupWalletSelectorModal(selector, options) {
|
|
4930
5023
|
const modal = _setupModal(selector, options);
|
4931
5024
|
const originalShow = modal.show.bind(modal);
|
4932
5025
|
modal.show = () => __async(this, null, function* () {
|
4933
|
-
const chain = group.length > 1 ? yield openChainModal() : group[0];
|
5026
|
+
const chain = group.length > 1 && showChainGroups ? yield openChainModal() : group[0];
|
4934
5027
|
if (chain === "btc") {
|
4935
5028
|
const module = state.modules.find((module2) => module2.id === "btc-wallet");
|
4936
5029
|
if (module) {
|
@@ -4968,7 +5061,7 @@ function openChainModal() {
|
|
4968
5061
|
return div;
|
4969
5062
|
};
|
4970
5063
|
return yield Dialog.openModal({
|
4971
|
-
title: "Choose
|
5064
|
+
title: "Choose Wallet",
|
4972
5065
|
titleStyle: "font-size: 18px; font-weight: 600; color: #fff; text-align: center;padding-bottom: 10px;",
|
4973
5066
|
content
|
4974
5067
|
});
|
@@ -4987,7 +5080,7 @@ function getGroup(state) {
|
|
4987
5080
|
|
4988
5081
|
// src/index.ts
|
4989
5082
|
var getVersion = () => {
|
4990
|
-
return "0.5.
|
5083
|
+
return "0.5.56-beta";
|
4991
5084
|
};
|
4992
5085
|
if (typeof window !== "undefined") {
|
4993
5086
|
window.__BTC_WALLET_VERSION = getVersion();
|