btc-wallet 0.3.1 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connector/magicEden.d.ts +21 -4
- package/dist/index.js +198 -24
- package/dist/index.js.map +3 -3
- package/esm/index.js +198 -24
- package/esm/index.js.map +3 -3
- package/package.json +1 -1
@@ -1,6 +1,23 @@
|
|
1
|
-
import
|
2
|
-
import {
|
3
|
-
export declare class MagicEdenConnector extends
|
4
|
-
|
1
|
+
import EventEmitter from 'events';
|
2
|
+
import { BaseConnector, type WalletMetadata } from './base';
|
3
|
+
export declare class MagicEdenConnector extends BaseConnector {
|
4
|
+
#private;
|
5
5
|
constructor();
|
6
|
+
readonly metadata: WalletMetadata;
|
7
|
+
isReady(): boolean;
|
8
|
+
private loadAccounts;
|
9
|
+
sendInscription(): Promise<{
|
10
|
+
txid: string;
|
11
|
+
}>;
|
12
|
+
requestAccounts(): Promise<string[]>;
|
13
|
+
getAccounts(): Promise<string[]>;
|
14
|
+
getPublicKey(): Promise<string>;
|
15
|
+
signMessage(signStr: string): Promise<string>;
|
16
|
+
on(event: string, handler: (data?: unknown) => void): EventEmitter<[never]>;
|
17
|
+
removeListener(event: string, handler: (data?: unknown) => void): EventEmitter<[never]>;
|
18
|
+
getProvider(): any;
|
19
|
+
getNetwork(): Promise<'livenet' | 'testnet'>;
|
20
|
+
switchNetwork(): Promise<void>;
|
21
|
+
sendBitcoin(toAddress: string, satoshis: number): Promise<string>;
|
22
|
+
disconnect(): void;
|
6
23
|
}
|
package/dist/index.js
CHANGED
@@ -509,21 +509,209 @@ var XverseConnector = class extends BaseConnector {
|
|
509
509
|
_network = new WeakMap();
|
510
510
|
_event = new WeakMap();
|
511
511
|
|
512
|
+
// src/connector/magicEden.ts
|
513
|
+
var import_events2 = __toESM(require("events"), 1);
|
514
|
+
|
512
515
|
// src/icons/magicEden.png
|
513
516
|
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=";
|
514
517
|
|
515
518
|
// src/connector/magicEden.ts
|
516
|
-
var
|
519
|
+
var _network2, _event2;
|
520
|
+
var MagicEdenConnector = class extends BaseConnector {
|
517
521
|
constructor() {
|
518
|
-
super(
|
522
|
+
super();
|
523
|
+
__privateAdd(this, _network2, "Mainnet");
|
524
|
+
__privateAdd(this, _event2, new import_events2.default());
|
519
525
|
this.metadata = {
|
520
|
-
id: "
|
521
|
-
name: "
|
526
|
+
id: "magicEden",
|
527
|
+
name: "Magic Eden Wallet",
|
522
528
|
icon: magicEden_default,
|
523
|
-
downloadUrl: "https://
|
529
|
+
downloadUrl: "https://www.magiceden.io"
|
524
530
|
};
|
531
|
+
this.loadAccounts = (network) => __async(this, null, function* () {
|
532
|
+
const { getAddress, AddressPurpose } = yield import("sats-connect");
|
533
|
+
const addresses = yield new Promise((resolve, reject) => {
|
534
|
+
const getAddressOptions = {
|
535
|
+
payload: {
|
536
|
+
purposes: [AddressPurpose.Payment, AddressPurpose.Ordinals],
|
537
|
+
message: "Address for receiving Ordinals and payments",
|
538
|
+
network: {
|
539
|
+
type: network
|
540
|
+
}
|
541
|
+
},
|
542
|
+
onFinish: (response) => {
|
543
|
+
resolve(response.addresses);
|
544
|
+
},
|
545
|
+
onCancel: () => reject({
|
546
|
+
code: 4001,
|
547
|
+
message: "User rejected the request."
|
548
|
+
})
|
549
|
+
};
|
550
|
+
getAddress(getAddressOptions).catch((error) => reject(error));
|
551
|
+
});
|
552
|
+
localStorage.setItem("btc-connect-magicEden-addresses-" + network, JSON.stringify(addresses));
|
553
|
+
return addresses;
|
554
|
+
});
|
555
|
+
__privateGet(this, _event2).setMaxListeners(100);
|
556
|
+
}
|
557
|
+
isReady() {
|
558
|
+
return typeof window !== "undefined" && "magicEden" in window && !!window.magicEden;
|
559
|
+
}
|
560
|
+
sendInscription() {
|
561
|
+
return __async(this, null, function* () {
|
562
|
+
throw new Error("Unsupported");
|
563
|
+
});
|
564
|
+
}
|
565
|
+
requestAccounts() {
|
566
|
+
return __async(this, null, function* () {
|
567
|
+
if (!this.isReady()) {
|
568
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
569
|
+
}
|
570
|
+
const addresses = yield this.loadAccounts(__privateGet(this, _network2));
|
571
|
+
return addresses.map((item) => item.address);
|
572
|
+
});
|
573
|
+
}
|
574
|
+
getAccounts() {
|
575
|
+
return __async(this, null, function* () {
|
576
|
+
if (!this.isReady()) {
|
577
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
578
|
+
}
|
579
|
+
const data = localStorage.getItem("btc-connect-magicEden-addresses-" + __privateGet(this, _network2));
|
580
|
+
if (data) {
|
581
|
+
const addresses = JSON.parse(data);
|
582
|
+
return addresses.map((item) => item.address);
|
583
|
+
} else {
|
584
|
+
return [];
|
585
|
+
}
|
586
|
+
});
|
587
|
+
}
|
588
|
+
getPublicKey() {
|
589
|
+
return __async(this, null, function* () {
|
590
|
+
if (!this.isReady()) {
|
591
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
592
|
+
}
|
593
|
+
const data = localStorage.getItem("btc-connect-magicEden-addresses-" + __privateGet(this, _network2));
|
594
|
+
if (data) {
|
595
|
+
const addresses = JSON.parse(data);
|
596
|
+
return addresses[0].publicKey;
|
597
|
+
} else {
|
598
|
+
return "";
|
599
|
+
}
|
600
|
+
});
|
601
|
+
}
|
602
|
+
signMessage(signStr) {
|
603
|
+
return __async(this, null, function* () {
|
604
|
+
if (!this.isReady()) {
|
605
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
606
|
+
}
|
607
|
+
const addresses = yield this.getAccounts();
|
608
|
+
if (addresses.length === 0) {
|
609
|
+
throw new Error(`${this.metadata.name} not connected!`);
|
610
|
+
}
|
611
|
+
const { signMessage } = yield import("sats-connect");
|
612
|
+
const sig = yield new Promise((resolve, reject) => {
|
613
|
+
const signMessageOptions = {
|
614
|
+
payload: {
|
615
|
+
network: {
|
616
|
+
type: __privateGet(this, _network2)
|
617
|
+
},
|
618
|
+
address: addresses[0],
|
619
|
+
message: signStr
|
620
|
+
},
|
621
|
+
onFinish: (response) => {
|
622
|
+
resolve(response);
|
623
|
+
},
|
624
|
+
onCancel: () => {
|
625
|
+
reject({
|
626
|
+
code: 4001,
|
627
|
+
message: "User rejected the request."
|
628
|
+
});
|
629
|
+
}
|
630
|
+
};
|
631
|
+
signMessage(signMessageOptions).catch((e) => {
|
632
|
+
reject(e);
|
633
|
+
});
|
634
|
+
});
|
635
|
+
const modifiedSig = Buffer.from(sig, "base64");
|
636
|
+
modifiedSig[0] = 31 + (modifiedSig[0] - 31) % 4;
|
637
|
+
return modifiedSig.toString("base64");
|
638
|
+
});
|
639
|
+
}
|
640
|
+
on(event, handler) {
|
641
|
+
return __privateGet(this, _event2).on(event, handler);
|
642
|
+
}
|
643
|
+
removeListener(event, handler) {
|
644
|
+
return __privateGet(this, _event2).removeListener(event, handler);
|
645
|
+
}
|
646
|
+
getProvider() {
|
647
|
+
if (this.isReady()) {
|
648
|
+
if ("magicEden" in window) {
|
649
|
+
const anyWindow = window;
|
650
|
+
if (anyWindow.magicEden.bitcoin && anyWindow.magicEden.bitcoin.isMagicEden)
|
651
|
+
return anyWindow.magicEden.bitcoin;
|
652
|
+
}
|
653
|
+
}
|
654
|
+
}
|
655
|
+
getNetwork() {
|
656
|
+
return __async(this, null, function* () {
|
657
|
+
if (!this.isReady()) {
|
658
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
659
|
+
}
|
660
|
+
return __privateGet(this, _network2) === "Mainnet" ? "livenet" : "testnet";
|
661
|
+
});
|
662
|
+
}
|
663
|
+
switchNetwork() {
|
664
|
+
return __async(this, null, function* () {
|
665
|
+
throw new Error("Unsupported");
|
666
|
+
});
|
667
|
+
}
|
668
|
+
sendBitcoin(toAddress, satoshis) {
|
669
|
+
return __async(this, null, function* () {
|
670
|
+
const provider = this.getProvider();
|
671
|
+
if (!provider) {
|
672
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
673
|
+
}
|
674
|
+
const { sendBtcTransaction } = yield import("sats-connect");
|
675
|
+
const addresses = yield this.getAccounts();
|
676
|
+
if (addresses.length === 0) {
|
677
|
+
throw new Error(`${this.metadata.name} not connected!`);
|
678
|
+
}
|
679
|
+
const result = yield new Promise((resolve, reject) => {
|
680
|
+
const sendBtcOptions = {
|
681
|
+
payload: {
|
682
|
+
network: {
|
683
|
+
type: __privateGet(this, _network2)
|
684
|
+
},
|
685
|
+
recipients: [
|
686
|
+
{
|
687
|
+
address: toAddress,
|
688
|
+
amountSats: BigInt(satoshis)
|
689
|
+
}
|
690
|
+
],
|
691
|
+
senderAddress: addresses[0]
|
692
|
+
},
|
693
|
+
onFinish: (response) => {
|
694
|
+
resolve(response);
|
695
|
+
},
|
696
|
+
onCancel: () => {
|
697
|
+
reject({
|
698
|
+
code: 4001,
|
699
|
+
message: "User rejected the request."
|
700
|
+
});
|
701
|
+
}
|
702
|
+
};
|
703
|
+
sendBtcTransaction(sendBtcOptions).catch((e) => reject(e));
|
704
|
+
});
|
705
|
+
return result;
|
706
|
+
});
|
707
|
+
}
|
708
|
+
disconnect() {
|
709
|
+
localStorage.removeItem("btc-connect-magicEden-addresses-Mainnet");
|
710
|
+
localStorage.removeItem("btc-connect-magicEden-addresses-Testnet");
|
525
711
|
}
|
526
712
|
};
|
713
|
+
_network2 = new WeakMap();
|
714
|
+
_event2 = new WeakMap();
|
527
715
|
|
528
716
|
// src/context/index.tsx
|
529
717
|
var import_aa = require("@particle-network/aa");
|
@@ -645,8 +833,8 @@ var EthereumProvider = class {
|
|
645
833
|
};
|
646
834
|
|
647
835
|
// src/utils/eventUtils.ts
|
648
|
-
var
|
649
|
-
var events = new
|
836
|
+
var import_events3 = require("events");
|
837
|
+
var events = new import_events3.EventEmitter();
|
650
838
|
events.setMaxListeners(100);
|
651
839
|
var getPendingSignEventAccount = () => {
|
652
840
|
return events.listenerCount("sendUserOpResult" /* sendUserOpResult */) + events.listenerCount("personalSignResult" /* personalSignResult */) + events.listenerCount("signTypedDataResult" /* signTypedDataResult */);
|
@@ -1703,7 +1891,7 @@ var signModal_default = SignModal;
|
|
1703
1891
|
// src/evmSigner/index.ts
|
1704
1892
|
var import_util3 = require("@ethereumjs/util");
|
1705
1893
|
var import_chains3 = require("@particle-network/chains");
|
1706
|
-
var
|
1894
|
+
var import_events4 = require("events");
|
1707
1895
|
var import_viem4 = require("viem");
|
1708
1896
|
var AASignerProvider = class {
|
1709
1897
|
constructor(supportChainIds, projectId, clientKey, rpcUrls) {
|
@@ -1726,7 +1914,7 @@ var AASignerProvider = class {
|
|
1726
1914
|
transport: (0, import_viem4.http)(rpcUrl)
|
1727
1915
|
});
|
1728
1916
|
};
|
1729
|
-
this.events = new
|
1917
|
+
this.events = new import_events4.EventEmitter();
|
1730
1918
|
this.events.setMaxListeners(100);
|
1731
1919
|
if (typeof window !== "undefined") {
|
1732
1920
|
const localChainId = localStorage.getItem("connect-evm-chain-id");
|
@@ -2875,18 +3063,8 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2875
3063
|
near_transactions: newTransactions.map((t) => t.txHex),
|
2876
3064
|
gas_token: currentConfig.token,
|
2877
3065
|
gas_limit: "3000",
|
2878
|
-
use_near_pay_gas: false,
|
2879
3066
|
nonce
|
2880
3067
|
};
|
2881
|
-
const nearAccount = yield provider.query({
|
2882
|
-
request_type: "view_account",
|
2883
|
-
account_id: accountId,
|
2884
|
-
finality: "final"
|
2885
|
-
});
|
2886
|
-
const availableBalance = parseFloat(nearAccount.amount) / __pow(10, 24);
|
2887
|
-
if (availableBalance > 0.2) {
|
2888
|
-
intention.use_near_pay_gas = true;
|
2889
|
-
}
|
2890
3068
|
const strIntention = JSON.stringify(intention);
|
2891
3069
|
const signature = yield btcContext.signMessage(strIntention);
|
2892
3070
|
const result = yield uploadBTCTx(currentConfig.base_url, {
|
@@ -2909,10 +3087,6 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
2909
3087
|
const checkAndSetupWalletButton = () => {
|
2910
3088
|
const accountId = state.getAccount();
|
2911
3089
|
const btcContext = window.btcContext;
|
2912
|
-
console.log("checkAndSetupWalletButton:", {
|
2913
|
-
nearAccountId: accountId,
|
2914
|
-
btcAccountId: btcContext.account
|
2915
|
-
});
|
2916
3090
|
if (accountId && btcContext.account) {
|
2917
3091
|
setupWalletButton(network, wallet2, btcContext);
|
2918
3092
|
} else {
|
@@ -3120,7 +3294,7 @@ function executeBurrowSupply(_0) {
|
|
3120
3294
|
|
3121
3295
|
// src/index.ts
|
3122
3296
|
var getVersion = () => {
|
3123
|
-
return "0.3.
|
3297
|
+
return "0.3.3";
|
3124
3298
|
};
|
3125
3299
|
if (typeof window !== "undefined") {
|
3126
3300
|
window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();
|