btc-wallet 0.3.1 → 0.3.3

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.
@@ -1,6 +1,23 @@
1
- import { type WalletMetadata } from './base';
2
- import { InjectedConnector } from './injected';
3
- export declare class MagicEdenConnector extends InjectedConnector {
4
- readonly metadata: WalletMetadata;
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 MagicEdenConnector = class extends InjectedConnector {
519
+ var _network2, _event2;
520
+ var MagicEdenConnector = class extends BaseConnector {
517
521
  constructor() {
518
- super("magicEden.bitcoin");
522
+ super();
523
+ __privateAdd(this, _network2, "Mainnet");
524
+ __privateAdd(this, _event2, new import_events2.default());
519
525
  this.metadata = {
520
- id: "magic-eden",
521
- name: "MagicEden Wallet",
526
+ id: "magicEden",
527
+ name: "Magic Eden Wallet",
522
528
  icon: magicEden_default,
523
- downloadUrl: "https://wallet.magiceden.io/"
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 import_events2 = require("events");
649
- var events = new import_events2.EventEmitter();
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 import_events3 = require("events");
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 import_events3.EventEmitter();
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.1";
3297
+ return "0.3.3";
3124
3298
  };
3125
3299
  if (typeof window !== "undefined") {
3126
3300
  window.__PARTICLE_BTC_CONNECT_VERSION = getVersion();