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.
@@ -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();