@gardenfi/wallet-connectors 2.0.4 → 2.0.5-beta.2

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.
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var N=(T=>(T.BITCOIN_MAINNET="BITCOIN_MAINNET",T.BITCOIN_TESTNET="BITCOIN_TESTNET",T.BITCOIN_TESTNET4="BITCOIN_TESTNET4",T))(N||{}),I=(T=>(T.LIVENET="livenet",T.TESTNET="testnet",T))(I||{});exports.UnisatChainEnum=N;exports.UnisatNetworkEnum=I;
@@ -0,0 +1,5 @@
1
+ var I = /* @__PURE__ */ ((T) => (T.BITCOIN_MAINNET = "BITCOIN_MAINNET", T.BITCOIN_TESTNET = "BITCOIN_TESTNET", T.BITCOIN_TESTNET4 = "BITCOIN_TESTNET4", T))(I || {}), N = /* @__PURE__ */ ((T) => (T.LIVENET = "livenet", T.TESTNET = "testnet", T))(N || {});
2
+ export {
3
+ I as UnisatChainEnum,
4
+ N as UnisatNetworkEnum
5
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var t=(e=>(e.Mainnet="Mainnet",e.Testnet4="Testnet4",e))(t||{});exports.XverseBitcoinNetworkType=t;
@@ -0,0 +1,4 @@
1
+ var t = /* @__PURE__ */ ((n) => (n.Mainnet = "Mainnet", n.Testnet4 = "Testnet4", n))(t || {});
2
+ export {
3
+ t as XverseBitcoinNetworkType
4
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var e=(T=>(T.MAINNET="BITCOIN_MAINNET",T.TESTNET="BITCOIN_TESTNET",T))(e||{});exports.KeplrBitcoinChainType=e;
@@ -0,0 +1,4 @@
1
+ var N = /* @__PURE__ */ ((T) => (T.MAINNET = "BITCOIN_MAINNET", T.TESTNET = "BITCOIN_TESTNET", T))(N || {});
2
+ export {
3
+ N as KeplrBitcoinChainType
4
+ };
package/dist/index2.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),y=require("./index5.cjs"),n=require("@catalogfi/utils"),h=require("./index6.cjs"),x=require("@gardenfi/utils"),W=o.createContext(void 0),S=({children:c,network:i,store:d})=>{const[r,v]=o.useState(),[f,s]=o.useState(),[p,a]=o.useState(!1),[l,P]=o.useState({}),b=o.useMemo(()=>!!r&&!!f,[r,f]),E=async e=>{a(!0);const t=await e.connect(i);return t.error?(a(!1),n.Err(t.error)):t.val.network!==i?(a(!1),n.Err("Network mismatch")):(v(t.val.provider),s(t.val.address),d.setItem("bitcoinWallet",JSON.stringify(t.val)),a(!1),n.Ok(n.Void))},k=()=>r?(r.disconnect(),v(void 0),s(void 0),d.removeItem("bitcoinWallet"),n.Ok(n.Void)):n.Err("No provider to disconnect"),m=o.useCallback(async()=>{if(!r)return;const e=await r.getAccounts();if(e.error){console.error("Error getting accounts:",e.error);return}s(e.val[0]);const t=await r.getNetwork();if(t.error){console.error("Error getting network:",t.error);return}},[r]),g=e=>{P(t=>({...t,[e.id]:e}))},A=async()=>{if(window.okxwallet&&i===x.Network.MAINNET&&window.okxwallet.bitcoin){const e=new y.OKXProvider(window.okxwallet.bitcoin,i);g(e)}if(window.unisat){const e=new h.UnisatProvider(window.unisat);g(e)}},N=async()=>{const e=d.getItem("bitcoinWallet");if(e){const t=JSON.parse(e),u=l[t.id];if(u){const w=await u.getAccounts();if(w.error||!w.val[0])return;const C=await u.getNetwork();if(C.error||C.val!==i)return;v(u),s(w.val[0])}}};return o.useEffect(()=>{A()},[]),o.useEffect(()=>{l&&N()},[l]),o.useEffect(()=>{if(!r)return;const e=async t=>{t.length!==0&&s(t[0])};return r.on("accountsChanged",e),()=>{r.off("accountsChanged",e)}},[r]),o.createElement(W.Provider,{value:{availableWallets:l,connect:E,provider:r,account:f,network:i,isConnecting:p,updateAccount:m,disconnect:k,isConnected:b}},c)},B=()=>{const c=o.useContext(W);if(!c)throw new Error("useBitcoinWallet must be used within BTCWalletProvider");return c};exports.BTCWalletProvider=S;exports.useBitcoinWallet=B;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),x=require("./index5.cjs"),i=require("@catalogfi/utils"),T=require("./index6.cjs"),y=require("./index7.cjs"),B=require("./index8.cjs"),q=require("./index9.cjs"),P=require("@gardenfi/utils"),b=o.createContext(void 0),S=({children:a,network:n,store:v})=>{const[r,w]=o.useState(),[f,s]=o.useState(),[C,d]=o.useState(!1),[l,N]=o.useState({}),k=o.useMemo(()=>!!r&&!!f,[r,f]),m=async e=>{d(!0);const t=await e.connect(n);return t.error?(d(!1),i.Err(t.error)):t.val.network!==n?(d(!1),i.Err("Network mismatch")):(w(t.val.provider),s(t.val.address),v.setItem("bitcoinWallet",JSON.stringify(t.val)),d(!1),i.Ok(i.Void))},W=()=>r?(r.disconnect(),w(void 0),s(void 0),v.removeItem("bitcoinWallet"),i.Ok(i.Void)):i.Err("No provider to disconnect"),h=o.useCallback(async()=>{if(!r)return;const e=await r.getAccounts();if(e.error){console.error("Error getting accounts:",e.error);return}s(e.val[0]);const t=await r.getNetwork();if(t.error){console.error("Error getting network:",t.error);return}},[r]),c=e=>{N(t=>({...t,[e.id]:e}))},E=async()=>{if(window.okxwallet&&window.okxwallet.bitcoin&&window.okxwallet.bitcoinTestnet){const e=new x.OKXProvider(n===P.Network.MAINNET?window.okxwallet.bitcoin:window.okxwallet.bitcoinTestnet,n);c(e)}if(n===P.Network.MAINNET&&window.phantom&&window.phantom.bitcoin){const e=new y.PhantomProvider(window.phantom.bitcoin);c(e)}if(window.unisat){const e=new T.UnisatProvider(window.unisat,n);c(e)}if(window.XverseProviders&&window.XverseProviders.BitcoinProvider){const e=new B.XverseProvider(window.XverseProviders.BitcoinProvider);c(e)}if(n===P.Network.MAINNET&&window.keplr&&window.keplr.bitcoin){const e=new q.KeplrProvider(window.keplr.bitcoin);c(e)}},A=async()=>{const e=v.getItem("bitcoinWallet");if(e){const t=JSON.parse(e),u=l[t.id];if(u){const p=await u.getAccounts();if(p.error||!p.val[0])return;const g=await u.getNetwork();if(g.error||g.val!==n)return;w(u),s(p.val[0])}}};return o.useEffect(()=>{E()},[]),o.useEffect(()=>{l&&A()},[l]),o.useEffect(()=>{if(!r)return;const e=async t=>{t.length!==0&&s(t[0])};return r.on("accountsChanged",e),()=>{r.off("accountsChanged",e)}},[r]),o.createElement(b.Provider,{value:{availableWallets:l,connect:m,provider:r,account:f,network:n,isConnecting:C,updateAccount:h,disconnect:W,isConnected:k}},a)},I=()=>{const a=o.useContext(b);if(!a)throw new Error("useBitcoinWallet must be used within BTCWalletProvider");return a};exports.BTCWalletProvider=S;exports.useBitcoinWallet=I;
package/dist/index2.js CHANGED
@@ -1,98 +1,115 @@
1
- import B, { useState as l, useMemo as I, useCallback as T, useEffect as w, createContext as O, useContext as S } from "react";
2
- import { OKXProvider as J } from "./index5.js";
3
- import { Err as m, Ok as p, Void as W } from "@catalogfi/utils";
4
- import { UnisatProvider as L } from "./index6.js";
5
- import { Network as M } from "@gardenfi/utils";
6
- const A = O(void 0), V = ({
7
- children: i,
8
- network: o,
9
- store: d
1
+ import B, { useState as l, useMemo as I, useCallback as X, useEffect as m, createContext as M, useContext as O } from "react";
2
+ import { OKXProvider as S } from "./index5.js";
3
+ import { Err as p, Ok as b, Void as C } from "@catalogfi/utils";
4
+ import { UnisatProvider as J } from "./index6.js";
5
+ import { PhantomProvider as K } from "./index7.js";
6
+ import { XverseProvider as L } from "./index8.js";
7
+ import { KeplrProvider as z } from "./index9.js";
8
+ import { Network as P } from "@gardenfi/utils";
9
+ const N = M(void 0), G = ({
10
+ children: c,
11
+ network: r,
12
+ store: w
10
13
  }) => {
11
- const [r, u] = l(), [f, n] = l(), [N, c] = l(!1), [s, P] = l(
14
+ const [o, v] = l(), [u, n] = l(), [h, s] = l(!1), [a, k] = l(
12
15
  {}
13
- ), b = I(
14
- () => !!r && !!f,
15
- [r, f]
16
- ), k = async (t) => {
17
- c(!0);
18
- const e = await t.connect(o);
19
- return e.error ? (c(!1), m(e.error)) : e.val.network !== o ? (c(!1), m("Network mismatch")) : (u(e.val.provider), n(e.val.address), d.setItem("bitcoinWallet", JSON.stringify(e.val)), c(!1), p(W));
20
- }, x = () => r ? (r.disconnect(), u(void 0), n(void 0), d.removeItem("bitcoinWallet"), p(W)) : m("No provider to disconnect"), h = T(async () => {
21
- if (!r) return;
22
- const t = await r.getAccounts();
23
- if (t.error) {
24
- console.error("Error getting accounts:", t.error);
16
+ ), x = I(
17
+ () => !!o && !!u,
18
+ [o, u]
19
+ ), A = async (e) => {
20
+ s(!0);
21
+ const t = await e.connect(r);
22
+ return t.error ? (s(!1), p(t.error)) : t.val.network !== r ? (s(!1), p("Network mismatch")) : (v(t.val.provider), n(t.val.address), w.setItem("bitcoinWallet", JSON.stringify(t.val)), s(!1), b(C));
23
+ }, W = () => o ? (o.disconnect(), v(void 0), n(void 0), w.removeItem("bitcoinWallet"), b(C)) : p("No provider to disconnect"), E = X(async () => {
24
+ if (!o) return;
25
+ const e = await o.getAccounts();
26
+ if (e.error) {
27
+ console.error("Error getting accounts:", e.error);
25
28
  return;
26
29
  }
27
- n(t.val[0]);
28
- const e = await r.getNetwork();
29
- if (e.error) {
30
- console.error("Error getting network:", e.error);
30
+ n(e.val[0]);
31
+ const t = await o.getNetwork();
32
+ if (t.error) {
33
+ console.error("Error getting network:", t.error);
31
34
  return;
32
35
  }
33
- }, [r]), g = (t) => {
34
- P((e) => ({
35
- ...e,
36
- [t.id]: t
36
+ }, [o]), i = (e) => {
37
+ k((t) => ({
38
+ ...t,
39
+ [e.id]: e
37
40
  }));
38
- }, y = async () => {
39
- if (window.okxwallet && o === M.MAINNET && window.okxwallet.bitcoin) {
40
- const t = new J(window.okxwallet.bitcoin, o);
41
- g(t);
41
+ }, T = async () => {
42
+ if (window.okxwallet && window.okxwallet.bitcoin && window.okxwallet.bitcoinTestnet) {
43
+ const e = new S(r === P.MAINNET ? window.okxwallet.bitcoin : window.okxwallet.bitcoinTestnet, r);
44
+ i(e);
45
+ }
46
+ if (r === P.MAINNET && window.phantom && window.phantom.bitcoin) {
47
+ const e = new K(window.phantom.bitcoin);
48
+ i(e);
42
49
  }
43
50
  if (window.unisat) {
44
- const t = new L(window.unisat);
45
- g(t);
51
+ const e = new J(window.unisat, r);
52
+ i(e);
53
+ }
54
+ if (window.XverseProviders && window.XverseProviders.BitcoinProvider) {
55
+ const e = new L(
56
+ window.XverseProviders.BitcoinProvider
57
+ );
58
+ i(e);
46
59
  }
47
- }, E = async () => {
48
- const t = d.getItem("bitcoinWallet");
49
- if (t) {
50
- const e = JSON.parse(t), a = s[e.id];
51
- if (a) {
52
- const v = await a.getAccounts();
53
- if (v.error || !v.val[0]) return;
54
- const C = await a.getNetwork();
55
- if (C.error || C.val !== o) return;
56
- u(a), n(v.val[0]);
60
+ if (r === P.MAINNET && window.keplr && window.keplr.bitcoin) {
61
+ const e = new z(window.keplr.bitcoin);
62
+ i(e);
63
+ }
64
+ }, y = async () => {
65
+ const e = w.getItem("bitcoinWallet");
66
+ if (e) {
67
+ const t = JSON.parse(e), d = a[t.id];
68
+ if (d) {
69
+ const f = await d.getAccounts();
70
+ if (f.error || !f.val[0]) return;
71
+ const g = await d.getNetwork();
72
+ if (g.error || g.val !== r) return;
73
+ v(d), n(f.val[0]);
57
74
  }
58
75
  }
59
76
  };
60
- return w(() => {
61
- y();
62
- }, []), w(() => {
63
- s && E();
64
- }, [s]), w(() => {
65
- if (!r) return;
66
- const t = async (e) => {
67
- e.length !== 0 && n(e[0]);
77
+ return m(() => {
78
+ T();
79
+ }, []), m(() => {
80
+ a && y();
81
+ }, [a]), m(() => {
82
+ if (!o) return;
83
+ const e = async (t) => {
84
+ t.length !== 0 && n(t[0]);
68
85
  };
69
- return r.on("accountsChanged", t), () => {
70
- r.off("accountsChanged", t);
86
+ return o.on("accountsChanged", e), () => {
87
+ o.off("accountsChanged", e);
71
88
  };
72
- }, [r]), /* @__PURE__ */ B.createElement(
73
- A.Provider,
89
+ }, [o]), /* @__PURE__ */ B.createElement(
90
+ N.Provider,
74
91
  {
75
92
  value: {
76
- availableWallets: s,
77
- connect: k,
78
- provider: r,
79
- account: f,
80
- network: o,
81
- isConnecting: N,
82
- updateAccount: h,
83
- disconnect: x,
84
- isConnected: b
93
+ availableWallets: a,
94
+ connect: A,
95
+ provider: o,
96
+ account: u,
97
+ network: r,
98
+ isConnecting: h,
99
+ updateAccount: E,
100
+ disconnect: W,
101
+ isConnected: x
85
102
  }
86
103
  },
87
- i
104
+ c
88
105
  );
89
- }, X = () => {
90
- const i = S(A);
91
- if (!i)
106
+ }, H = () => {
107
+ const c = O(N);
108
+ if (!c)
92
109
  throw new Error("useBitcoinWallet must be used within BTCWalletProvider");
93
- return i;
110
+ return c;
94
111
  };
95
112
  export {
96
- V as BTCWalletProvider,
97
- X as useBitcoinWallet
113
+ G as BTCWalletProvider,
114
+ H as useBitcoinWallet
98
115
  };
package/dist/index3.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={OKX:{name:"OKX",icon:"https://garden-finance.s3.ap-south-2.amazonaws.com/wallets/okx.svg",description:"OKX Wallet"},Unisat:{name:"Unisat",icon:"https://next-cdn.unisat.io/_/285/logo/color.svg",description:"Unisat wallet"},Xverse:{name:"Xverse",icon:"https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png",description:"Xverse wallet"},Xdefi:{name:"Xdefi",icon:"https://garden-finance.s3.ap-south-2.amazonaws.com/wallets/xdefi.svg",description:"Xdefi wallet"},Phantom:{name:"Phantom",icon:"",description:"Phantom wallet"}},a={OKX:{id:"okx",name:"OKX Wallet",icon:"https://garden-finance.imgix.net/wallets/okx.svg"},Unisat:{id:"unisat",name:"Unisat wallet",icon:"https://garden-finance.imgix.net/wallets/unisat.svg"},Xverse:{id:"xverse",name:"Xverse wallet",icon:"https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png"},Xdefi:{id:"xdefi",name:"Xdefi wallet",icon:"https://garden-finance.s3.ap-south-2.amazonaws.com/wallets/xdefi.svg"},Phantom:{id:"phantom",name:"Phantom wallet",icon:"https://garden-finance.imgix.net/wallets/phantom.svg"}};exports.SupportedWallets=e;exports.WALLET_CONFIG=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={OKX:{name:"OKX",icon:"https://garden-finance.s3.ap-south-2.amazonaws.com/wallets/okx.svg",description:"OKX Wallet"},Unisat:{name:"Unisat",icon:"https://next-cdn.unisat.io/_/285/logo/color.svg",description:"Unisat allet"},Xverse:{name:"Xverse",icon:"https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png",description:"Xverse allet"},Xdefi:{name:"Xdefi",icon:"https://garden-finance.s3.ap-south-2.amazonaws.com/wallets/xdefi.svg",description:"Xdefi wallet"},Phantom:{name:"Phantom",icon:"https://garden-finance.imgix.net/wallets/phantom.svg",description:"Phantom Wallet"},Keplr:{name:"Keplr wallet",icon:"https://garden-finance.imgix.net/wallets/keplr.svg",description:"Keplr Wallet"}},a={OKX:{id:"okx",name:"OKX Wallet",icon:"https://garden-finance.imgix.net/wallets/okx.svg"},Unisat:{id:"unisat",name:"Unisat wallet",icon:"https://garden-finance.imgix.net/wallets/unisat.svg"},Xverse:{id:"xverse",name:"Xverse Wallet",icon:"https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png"},Xdefi:{id:"xdefi",name:"Xdefi wallet",icon:"https://garden-finance.s3.ap-south-2.amazonaws.com/wallets/xdefi.svg"},Phantom:{id:"phantom",name:"Phantom Wallet",icon:"https://garden-finance.imgix.net/wallets/phantom.svg"},Keplr:{id:"keplr",name:"Keplr Wallet",icon:"https://garden-finance.imgix.net/wallets/keplr.svg"}};exports.SupportedWallets=e;exports.WALLET_CONFIG=a;
package/dist/index3.js CHANGED
@@ -7,12 +7,12 @@ const e = {
7
7
  Unisat: {
8
8
  name: "Unisat",
9
9
  icon: "https://next-cdn.unisat.io/_/285/logo/color.svg",
10
- description: "Unisat wallet"
10
+ description: "Unisat allet"
11
11
  },
12
12
  Xverse: {
13
13
  name: "Xverse",
14
14
  icon: "https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png",
15
- description: "Xverse wallet"
15
+ description: "Xverse allet"
16
16
  },
17
17
  Xdefi: {
18
18
  name: "Xdefi",
@@ -21,10 +21,15 @@ const e = {
21
21
  },
22
22
  Phantom: {
23
23
  name: "Phantom",
24
- icon: "",
25
- description: "Phantom wallet"
24
+ icon: "https://garden-finance.imgix.net/wallets/phantom.svg",
25
+ description: "Phantom Wallet"
26
+ },
27
+ Keplr: {
28
+ name: "Keplr wallet",
29
+ icon: "https://garden-finance.imgix.net/wallets/keplr.svg",
30
+ description: "Keplr Wallet"
26
31
  }
27
- }, a = {
32
+ }, n = {
28
33
  OKX: {
29
34
  id: "okx",
30
35
  name: "OKX Wallet",
@@ -37,7 +42,7 @@ const e = {
37
42
  },
38
43
  Xverse: {
39
44
  id: "xverse",
40
- name: "Xverse wallet",
45
+ name: "Xverse Wallet",
41
46
  icon: "https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png"
42
47
  },
43
48
  Xdefi: {
@@ -47,11 +52,16 @@ const e = {
47
52
  },
48
53
  Phantom: {
49
54
  id: "phantom",
50
- name: "Phantom wallet",
55
+ name: "Phantom Wallet",
51
56
  icon: "https://garden-finance.imgix.net/wallets/phantom.svg"
57
+ },
58
+ Keplr: {
59
+ id: "keplr",
60
+ name: "Keplr Wallet",
61
+ icon: "https://garden-finance.imgix.net/wallets/keplr.svg"
52
62
  }
53
63
  };
54
64
  export {
55
65
  e as SupportedWallets,
56
- a as WALLET_CONFIG
66
+ n as WALLET_CONFIG
57
67
  };
package/dist/index6.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var w=e=>{throw TypeError(e)};var l=(e,t,r)=>t.has(e)||w("Cannot "+r);var s=(e,t,r)=>(l(e,t,"read from private field"),r?r.call(e):t.get(e)),N=(e,t,r)=>t.has(e)?w("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),E=(e,t,r,a)=>(l(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./index7.cjs"),n=require("@catalogfi/utils"),c=require("@gardenfi/utils"),u=require("./index3.cjs");var i;class d{constructor(t){N(this,i);this.address="",this.id=u.WALLET_CONFIG.Unisat.id,this.name=u.WALLET_CONFIG.Unisat.name,this.icon=u.WALLET_CONFIG.Unisat.icon,this.disconnect=()=>(this.address="",Promise.resolve(n.Ok("Disconnected unisat wallet"))),E(this,i,t)}async connect(t){try{t||(t=c.Network.MAINNET);const r=await this.getNetwork();if(r.error)return n.Err("Could not get network",r.error);if(r.val!==t){const h=await this.switchNetwork();if(h.error)return n.Err("Failed to switch network",h.error)}const a=await s(this,i).requestAccounts();return a.length>0&&(this.address=a[0]),n.Ok({address:this.address,provider:this,network:t,id:u.WALLET_CONFIG.Unisat.id})}catch(r){return n.Err("Error while connecting to the Unisat wallet",r)}}async requestAccounts(){return await n.executeWithTryCatch(async()=>await s(this,i).requestAccounts(),"Error while requesting accounts from the Unisat wallet")}async getAccounts(){return await n.executeWithTryCatch(async()=>await s(this,i).getAccounts(),"Error while getting accounts from the Unisat wallet")}async getNetwork(){return await n.executeWithTryCatch(async()=>{const t=await s(this,i).getChain();if(t.enum===o.UnisatChainEnum.BITCOIN_MAINNET)return c.Network.MAINNET;if(t.enum===o.UnisatChainEnum.BITCOIN_TESTNET4)return c.Network.TESTNET;throw new Error("Invalid or unsupported network"+t.enum)},"Error while getting network from Unisat wallet")}async switchNetwork(){try{const t=await this.getNetwork();if(t.error)return n.Err("Failed to get current network");const r=t.val===c.Network.MAINNET?o.UnisatChainEnum.BITCOIN_TESTNET4:o.UnisatChainEnum.BITCOIN_MAINNET;await s(this,i).switchChain(r);const a=await this.getNetwork();return a.error?n.Err("Failed to verify network switch"):n.Ok(a.val)}catch(t){return n.Err("Error while switching network in Unisat:",t)}}async getBalance(){return await n.executeWithTryCatch(async()=>await s(this,i).getBalance(),"Error while getting balance from Unisat wallet")}async sendBitcoin(t,r){return await n.executeWithTryCatch(async()=>await s(this,i).sendBitcoin(t,r),"Error while sending bitcoin from Unisat wallet")}on(t,r){s(this,i).on(t,r)}off(t,r){s(this,i).removeListener(t,r)}}i=new WeakMap;exports.UnisatProvider=d;
1
+ "use strict";var T=e=>{throw TypeError(e)};var d=(e,t,r)=>t.has(e)||T("Cannot "+r);var i=(e,t,r)=>(d(e,t,"read from private field"),r?r.call(e):t.get(e)),E=(e,t,r)=>t.has(e)?T("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),l=(e,t,r,o)=>(d(e,t,"write to private field"),o?o.call(e,r):t.set(e,r),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index10.cjs"),s=require("@catalogfi/utils"),u=require("@gardenfi/utils"),w=require("./index3.cjs");var n,c;class g{constructor(t,r){E(this,n);E(this,c);this.address="",this.id=w.WALLET_CONFIG.Unisat.id,this.name=w.WALLET_CONFIG.Unisat.name,this.icon=w.WALLET_CONFIG.Unisat.icon,this.disconnect=()=>(this.address="",Promise.resolve(s.Ok("Disconnected unisat wallet"))),l(this,n,t),l(this,c,r)}async connect(t){try{t||(t=i(this,c));const r=await this.getNetwork(),o=await i(this,n).getChain();if(r.error)return s.Err("Could not get network",r.error);if(r.val!==t||o.enum===a.UnisatChainEnum.BITCOIN_TESTNET){const N=await this.switchNetwork();if(N.error)return s.Err("Failed to switch network",N.error)}const h=await i(this,n).requestAccounts();return h.length>0&&(this.address=h[0]),s.Ok({address:this.address,provider:this,network:t,id:w.WALLET_CONFIG.Unisat.id})}catch(r){return s.Err("Error while connecting to the Unisat wallet",r)}}async requestAccounts(){return await s.executeWithTryCatch(async()=>await i(this,n).requestAccounts(),"Error while requesting accounts from the Unisat wallet")}async getAccounts(){return await s.executeWithTryCatch(async()=>await i(this,n).getAccounts(),"Error while getting accounts from the Unisat wallet")}async getNetwork(){return await s.executeWithTryCatch(async()=>{const t=await i(this,n).getNetwork();if(t===a.UnisatNetworkEnum.LIVENET)return u.Network.MAINNET;if(t===a.UnisatNetworkEnum.TESTNET)return u.Network.TESTNET;throw new Error("Invalid or unsupported network"+t)},"Error while getting network from Unisat wallet")}async switchNetwork(){try{const t=await this.getNetwork(),r=await i(this,n).getChain();if(t.error)return s.Err("Failed to get current network");const o=t.val===u.Network.MAINNET||i(this,c)===u.Network.TESTNET&&r.enum===a.UnisatChainEnum.BITCOIN_TESTNET?a.UnisatChainEnum.BITCOIN_TESTNET4:a.UnisatChainEnum.BITCOIN_MAINNET;await i(this,n).switchChain(o);const h=await this.getNetwork();return h.error?s.Err("Failed to verify network switch"):s.Ok(h.val)}catch(t){return s.Err("Error while switching network in Unisat:",t)}}async getBalance(){return await s.executeWithTryCatch(async()=>await i(this,n).getBalance(),"Error while getting balance from Unisat wallet")}async sendBitcoin(t,r){return await s.executeWithTryCatch(async()=>await i(this,n).sendBitcoin(t,r),"Error while sending bitcoin from Unisat wallet")}on(t,r){i(this,n).on(t,r)}off(t,r){i(this,n).removeListener(t,r)}}n=new WeakMap,c=new WeakMap;exports.UnisatProvider=g;
package/dist/index6.js CHANGED
@@ -1,35 +1,36 @@
1
- var N = (e) => {
1
+ var g = (e) => {
2
2
  throw TypeError(e);
3
3
  };
4
- var d = (e, t, r) => t.has(e) || N("Cannot " + r);
5
- var i = (e, t, r) => (d(e, t, "read from private field"), r ? r.call(e) : t.get(e)), g = (e, t, r) => t.has(e) ? N("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), E = (e, t, r, s) => (d(e, t, "write to private field"), s ? s.call(e, r) : t.set(e, r), r);
6
- import { UnisatChainEnum as c } from "./index7.js";
7
- import { Ok as u, Err as a, executeWithTryCatch as o } from "@catalogfi/utils";
8
- import { Network as w } from "@gardenfi/utils";
9
- import { WALLET_CONFIG as h } from "./index3.js";
10
- var n;
11
- class I {
12
- constructor(t) {
13
- g(this, n);
14
- this.address = "", this.id = h.Unisat.id, this.name = h.Unisat.name, this.icon = h.Unisat.icon, this.disconnect = () => (this.address = "", Promise.resolve(u("Disconnected unisat wallet"))), E(this, n, t);
4
+ var f = (e, t, r) => t.has(e) || g("Cannot " + r);
5
+ var n = (e, t, r) => (f(e, t, "read from private field"), r ? r.call(e) : t.get(e)), N = (e, t, r) => t.has(e) ? g("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), T = (e, t, r, s) => (f(e, t, "write to private field"), s ? s.call(e, r) : t.set(e, r), r);
6
+ import { UnisatChainEnum as w, UnisatNetworkEnum as m } from "./index10.js";
7
+ import { Ok as E, Err as a, executeWithTryCatch as h } from "@catalogfi/utils";
8
+ import { Network as u } from "@gardenfi/utils";
9
+ import { WALLET_CONFIG as l } from "./index3.js";
10
+ var i, o;
11
+ class p {
12
+ constructor(t, r) {
13
+ N(this, i);
14
+ N(this, o);
15
+ this.address = "", this.id = l.Unisat.id, this.name = l.Unisat.name, this.icon = l.Unisat.icon, this.disconnect = () => (this.address = "", Promise.resolve(E("Disconnected unisat wallet"))), T(this, i, t), T(this, o, r);
15
16
  }
16
17
  async connect(t) {
17
18
  try {
18
- t || (t = w.MAINNET);
19
- const r = await this.getNetwork();
19
+ t || (t = n(this, o));
20
+ const r = await this.getNetwork(), s = await n(this, i).getChain();
20
21
  if (r.error)
21
22
  return a("Could not get network", r.error);
22
- if (r.val !== t) {
23
- const l = await this.switchNetwork();
24
- if (l.error)
25
- return a("Failed to switch network", l.error);
23
+ if (r.val !== t || s.enum === w.BITCOIN_TESTNET) {
24
+ const d = await this.switchNetwork();
25
+ if (d.error)
26
+ return a("Failed to switch network", d.error);
26
27
  }
27
- const s = await i(this, n).requestAccounts();
28
- return s.length > 0 && (this.address = s[0]), u({
28
+ const c = await n(this, i).requestAccounts();
29
+ return c.length > 0 && (this.address = c[0]), E({
29
30
  address: this.address,
30
31
  provider: this,
31
32
  network: t,
32
- id: h.Unisat.id
33
+ id: l.Unisat.id
33
34
  });
34
35
  } catch (r) {
35
36
  return a("Error while connecting to the Unisat wallet", r);
@@ -37,49 +38,49 @@ class I {
37
38
  }
38
39
  // requests accounts from the wallet, if not connected, it will connect first
39
40
  async requestAccounts() {
40
- return await o(async () => await i(this, n).requestAccounts(), "Error while requesting accounts from the Unisat wallet");
41
+ return await h(async () => await n(this, i).requestAccounts(), "Error while requesting accounts from the Unisat wallet");
41
42
  }
42
43
  //silently gets accounts if already connected
43
44
  async getAccounts() {
44
- return await o(async () => await i(this, n).getAccounts(), "Error while getting accounts from the Unisat wallet");
45
+ return await h(async () => await n(this, i).getAccounts(), "Error while getting accounts from the Unisat wallet");
45
46
  }
46
47
  async getNetwork() {
47
- return await o(async () => {
48
- const t = await i(this, n).getChain();
49
- if (t.enum === c.BITCOIN_MAINNET)
50
- return w.MAINNET;
51
- if (t.enum === c.BITCOIN_TESTNET4)
52
- return w.TESTNET;
53
- throw new Error("Invalid or unsupported network" + t.enum);
48
+ return await h(async () => {
49
+ const t = await n(this, i).getNetwork();
50
+ if (t === m.LIVENET)
51
+ return u.MAINNET;
52
+ if (t === m.TESTNET)
53
+ return u.TESTNET;
54
+ throw new Error("Invalid or unsupported network" + t);
54
55
  }, "Error while getting network from Unisat wallet");
55
56
  }
56
57
  async switchNetwork() {
57
58
  try {
58
- const t = await this.getNetwork();
59
+ const t = await this.getNetwork(), r = await n(this, i).getChain();
59
60
  if (t.error)
60
61
  return a("Failed to get current network");
61
- const r = t.val === w.MAINNET ? c.BITCOIN_TESTNET4 : c.BITCOIN_MAINNET;
62
- await i(this, n).switchChain(r);
63
- const s = await this.getNetwork();
64
- return s.error ? a("Failed to verify network switch") : u(s.val);
62
+ const s = t.val === u.MAINNET ? w.BITCOIN_TESTNET4 : n(this, o) === u.TESTNET && r.enum === w.BITCOIN_TESTNET ? w.BITCOIN_TESTNET4 : w.BITCOIN_MAINNET;
63
+ await n(this, i).switchChain(s);
64
+ const c = await this.getNetwork();
65
+ return c.error ? a("Failed to verify network switch") : E(c.val);
65
66
  } catch (t) {
66
67
  return a("Error while switching network in Unisat:", t);
67
68
  }
68
69
  }
69
70
  async getBalance() {
70
- return await o(async () => await i(this, n).getBalance(), "Error while getting balance from Unisat wallet");
71
+ return await h(async () => await n(this, i).getBalance(), "Error while getting balance from Unisat wallet");
71
72
  }
72
73
  async sendBitcoin(t, r) {
73
- return await o(async () => await i(this, n).sendBitcoin(t, r), "Error while sending bitcoin from Unisat wallet");
74
+ return await h(async () => await n(this, i).sendBitcoin(t, r), "Error while sending bitcoin from Unisat wallet");
74
75
  }
75
76
  on(t, r) {
76
- i(this, n).on(t, r);
77
+ n(this, i).on(t, r);
77
78
  }
78
79
  off(t, r) {
79
- i(this, n).removeListener(t, r);
80
+ n(this, i).removeListener(t, r);
80
81
  }
81
82
  }
82
- n = new WeakMap();
83
+ i = new WeakMap(), o = new WeakMap();
83
84
  export {
84
- I as UnisatProvider
85
+ p as UnisatProvider
85
86
  };
package/dist/index7.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var I=(T=>(T.BITCOIN_MAINNET="BITCOIN_MAINNET",T.BITCOIN_TESTNET4="BITCOIN_TESTNET4",T))(I||{});exports.UnisatChainEnum=I;
1
+ "use strict";var f=r=>{throw TypeError(r)};var g=(r,t,e)=>t.has(r)||f("Cannot "+e);var i=(r,t,e)=>(g(r,t,"read from private field"),e?e.call(r):t.get(r)),w=(r,t,e)=>t.has(r)?f("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,e),P=(r,t,e,n)=>(g(r,t,"write to private field"),n?n.call(r,e):t.set(r,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@catalogfi/utils"),y=require("bitcoinjs-lib"),A=require("tiny-secp256k1"),c=require("@gardenfi/utils"),a=require("./index3.cjs"),u=require("@catalogfi/wallets");function p(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const e in r)if(e!=="default"){const n=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(t,e,n.get?n:{enumerable:!0,get:()=>r[e]})}}return t.default=r,Object.freeze(t)}const d=p(y),x=p(A);y.initEccLib(x);var o;class O{constructor(t){w(this,o);this.address="",this.id=a.WALLET_CONFIG.Phantom.id,this.name=a.WALLET_CONFIG.Phantom.name,this.icon=a.WALLET_CONFIG.Phantom.icon,this.disconnect=()=>(this.address="",Promise.resolve(s.Ok("Disconnected Phantom wallet"))),P(this,o,t)}async connect(t){if(t||(t=c.Network.MAINNET),t===c.Network.TESTNET)return s.Err("Phantom wallet does not support testnet");try{const e=await i(this,o).requestAccounts();for(const n of e)n.purpose==="payment"&&(this.address=n.address);return this.address===""?s.Err("Could not connect to Phantom bitcoin payment account"):s.Ok({address:this.address,provider:this,network:t,id:a.WALLET_CONFIG.Phantom.id})}catch(e){return s.Err("Error while connecting to Phantom wallet: "+e)}}async requestAccounts(){return await s.executeWithTryCatch(async()=>{const t=await i(this,o).requestAccounts();return t.length>0&&(this.address=t[0].address),t.map(e=>e.address)},"Error while requesting accounts from Phantom wallet")}async getAccounts(){return this.requestAccounts()}async getNetwork(){return s.Ok(c.Network.MAINNET)}async switchNetwork(){return s.Err("Phantom wallet does not support testnet")}async getBalance(){return await s.executeWithTryCatch(async()=>await i(this,o).getBalance(),"Error while getting balance from Phantom wallet")}async sendBitcoin(t,e){return await s.executeWithTryCatch(async()=>{const n=d.networks.bitcoin,h=new u.BitcoinProvider(u.BitcoinNetwork.Mainnet);try{const{txHex:l,utxoCount:b}=await u.BitcoinWallet.generateUnsignedPSBT(h,n,this.address,t,e),T=await i(this,o).signPSBT(this.fromHexString(l),{inputsToSign:[{address:this.address,signingIndexes:Array.from({length:b},(q,N)=>N),sigHash:d.Transaction.SIGHASH_ALL}]}),m=d.Psbt.fromBuffer(Buffer.from(T)).extractTransaction(),E=m.getId();return await h.broadcast(m.toHex()),E}catch{throw new Error("Failed to send bitcoin")}},"Error while sending bitcoin from Phantom wallet")}fromHexString(t){return Uint8Array.from(t.match(/.{1,2}/g).map(e=>parseInt(e,16)))}on(t,e){i(this,o).on(t,e)}off(t,e){i(this,o).off(t,e)}}o=new WeakMap;exports.PhantomProvider=O;
package/dist/index7.js CHANGED
@@ -1,4 +1,101 @@
1
- var I = /* @__PURE__ */ ((T) => (T.BITCOIN_MAINNET = "BITCOIN_MAINNET", T.BITCOIN_TESTNET4 = "BITCOIN_TESTNET4", T))(I || {});
1
+ var w = (n) => {
2
+ throw TypeError(n);
3
+ };
4
+ var g = (n, t, r) => t.has(n) || w("Cannot " + r);
5
+ var o = (n, t, r) => (g(n, t, "read from private field"), r ? r.call(n) : t.get(n)), p = (n, t, r) => t.has(n) ? w("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, r), P = (n, t, r, s) => (g(n, t, "write to private field"), s ? s.call(n, r) : t.set(n, r), r);
6
+ import { Ok as c, Err as i, executeWithTryCatch as d } from "@catalogfi/utils";
7
+ import * as h from "bitcoinjs-lib";
8
+ import { initEccLib as E } from "bitcoinjs-lib";
9
+ import * as T from "tiny-secp256k1";
10
+ import { Network as m } from "@gardenfi/utils";
11
+ import { WALLET_CONFIG as a } from "./index3.js";
12
+ import { BitcoinProvider as B, BitcoinNetwork as N, BitcoinWallet as I } from "@catalogfi/wallets";
13
+ E(T);
14
+ var e;
15
+ class W {
16
+ constructor(t) {
17
+ p(this, e);
18
+ this.address = "", this.id = a.Phantom.id, this.name = a.Phantom.name, this.icon = a.Phantom.icon, this.disconnect = () => (this.address = "", Promise.resolve(c("Disconnected Phantom wallet"))), P(this, e, t);
19
+ }
20
+ async connect(t) {
21
+ if (t || (t = m.MAINNET), t === m.TESTNET)
22
+ return i("Phantom wallet does not support testnet");
23
+ try {
24
+ const r = await o(this, e).requestAccounts();
25
+ for (const s of r)
26
+ s.purpose === "payment" && (this.address = s.address);
27
+ return this.address === "" ? i("Could not connect to Phantom bitcoin payment account") : c({
28
+ address: this.address,
29
+ provider: this,
30
+ network: t,
31
+ id: a.Phantom.id
32
+ });
33
+ } catch (r) {
34
+ return i("Error while connecting to Phantom wallet: " + r);
35
+ }
36
+ }
37
+ async requestAccounts() {
38
+ return await d(async () => {
39
+ const t = await o(this, e).requestAccounts();
40
+ return t.length > 0 && (this.address = t[0].address), t.map((r) => r.address);
41
+ }, "Error while requesting accounts from Phantom wallet");
42
+ }
43
+ async getAccounts() {
44
+ return this.requestAccounts();
45
+ }
46
+ // bitcoin testnet is not supported in Phantom wallet
47
+ async getNetwork() {
48
+ return c(m.MAINNET);
49
+ }
50
+ async switchNetwork() {
51
+ return i("Phantom wallet does not support testnet");
52
+ }
53
+ async getBalance() {
54
+ return await d(async () => await o(this, e).getBalance(), "Error while getting balance from Phantom wallet");
55
+ }
56
+ async sendBitcoin(t, r) {
57
+ return await d(async () => {
58
+ const s = h.networks.bitcoin, u = new B(N.Mainnet);
59
+ try {
60
+ const { txHex: f, utxoCount: y } = await I.generateUnsignedPSBT(
61
+ u,
62
+ s,
63
+ this.address,
64
+ t,
65
+ r
66
+ ), b = await o(this, e).signPSBT(
67
+ this.fromHexString(f),
68
+ {
69
+ inputsToSign: [
70
+ {
71
+ address: this.address,
72
+ signingIndexes: Array.from({ length: y }, (H, A) => A),
73
+ sigHash: h.Transaction.SIGHASH_ALL
74
+ }
75
+ ]
76
+ }
77
+ ), l = h.Psbt.fromBuffer(
78
+ Buffer.from(b)
79
+ ).extractTransaction(), x = l.getId();
80
+ return await u.broadcast(l.toHex()), x;
81
+ } catch {
82
+ throw new Error("Failed to send bitcoin");
83
+ }
84
+ }, "Error while sending bitcoin from Phantom wallet");
85
+ }
86
+ fromHexString(t) {
87
+ return Uint8Array.from(
88
+ t.match(/.{1,2}/g).map((r) => parseInt(r, 16))
89
+ );
90
+ }
91
+ on(t, r) {
92
+ o(this, e).on(t, r);
93
+ }
94
+ off(t, r) {
95
+ o(this, e).off(t, r);
96
+ }
97
+ }
98
+ e = new WeakMap();
2
99
  export {
3
- I as UnisatChainEnum
100
+ W as PhantomProvider
4
101
  };
@@ -0,0 +1 @@
1
+ "use strict";var d=s=>{throw TypeError(s)};var N=(s,e,t)=>e.has(s)||d("Cannot "+t);var o=(s,e,t)=>(N(s,e,"read from private field"),t?t.call(s):e.get(s)),y=(s,e,t)=>e.has(s)?d("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(s):e.set(s,t),k=(s,e,t,r)=>(N(s,e,"write to private field"),r?r.call(s,t):e.set(s,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./index3.cjs"),u=require("./index11.cjs"),i=require("@catalogfi/utils"),h=require("@gardenfi/utils");var n;class v{constructor(e){y(this,n);this.address="",this.id=w.WALLET_CONFIG.Xverse.id,this.name=w.WALLET_CONFIG.Xverse.name,this.icon=w.WALLET_CONFIG.Xverse.icon,this.connect=async t=>{try{t||(t=h.Network.MAINNET),await o(this,n).request("wallet_connect",null);const r=await this.getNetwork();if(r.error)return i.Err("Could not get network",r.error);if(r.val!==t){const c=await this.switchNetwork();if(c.error)return i.Err("Failed to switch network",c.error)}const a=await this.getAccounts();return a.val.length>0&&(this.address=a.val[0]),i.Ok({address:this.address,provider:this,network:t,id:w.WALLET_CONFIG.Xverse.id})}catch(r){return i.Err("Error while connecting to the XVerse wallet",r)}},this.getBalance=async()=>await i.executeWithTryCatch(async()=>(await o(this,n).request("getBalance",{})).result,"Error while getting balance from XVerse wallet"),this.requestAccounts=async()=>await i.executeWithTryCatch(async()=>(await o(this,n).request("getAccounts",{purposes:["payment"],message:"I want to connect"})).result.map(r=>r.address)),this.getAccounts=async()=>await i.executeWithTryCatch(async()=>(await o(this,n).request("getAddresses",{purposes:["payment"]})).result.addresses.map(r=>r.address)),this.sendBitcoin=async(t,r)=>await i.executeWithTryCatch(async()=>{var l;const a=await o(this,n).request("sendTransfer",{recipients:[{address:t,amount:r}]}),c=(l=a.result)==null?void 0:l.txid;if(c)return i.Ok(c);throw new Error(a.error)},"Error while sending bitcoin from Xverse wallet"),this.on=()=>{},this.off=()=>{},this.disconnect=()=>(this.address="",Promise.resolve(i.Ok("Disconnected"))),k(this,n,e)}async getNetwork(){return await i.executeWithTryCatch(async()=>{const e=await o(this,n).request("wallet_getNetwork",null);if(e.result.bitcoin.name===u.XverseBitcoinNetworkType.Mainnet)return h.Network.MAINNET;if(e.result.bitcoin.name===u.XverseBitcoinNetworkType.Testnet4)return h.Network.TESTNET;throw new Error(e.result)},"Error while getting network from Xverse wallet")}async switchNetwork(){try{const e=await this.getNetwork();if(e.error)return i.Err("Failed to get current network");const t=e.val===h.Network.MAINNET?u.XverseBitcoinNetworkType.Testnet4:u.XverseBitcoinNetworkType.Mainnet;await o(this,n).request("wallet_changeNetwork",{name:t});const r=await this.getNetwork();return r.error?i.Err("Failed to verify network switch"):i.Ok(r.val)}catch(e){return i.Err("Error while switching network in Xverse:",e)}}}n=new WeakMap;exports.XverseProvider=v;
package/dist/index8.js ADDED
@@ -0,0 +1,84 @@
1
+ var m = (s) => {
2
+ throw TypeError(s);
3
+ };
4
+ var N = (s, e, t) => e.has(s) || m("Cannot " + t);
5
+ var i = (s, e, t) => (N(s, e, "read from private field"), t ? t.call(s) : e.get(s)), f = (s, e, t) => e.has(s) ? m("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), v = (s, e, t, r) => (N(s, e, "write to private field"), r ? r.call(s, t) : e.set(s, t), t);
6
+ import { WALLET_CONFIG as u } from "./index3.js";
7
+ import { XverseBitcoinNetworkType as h } from "./index11.js";
8
+ import { Err as o, Ok as l, executeWithTryCatch as w } from "@catalogfi/utils";
9
+ import { Network as d } from "@gardenfi/utils";
10
+ var n;
11
+ class X {
12
+ constructor(e) {
13
+ f(this, n);
14
+ this.address = "", this.id = u.Xverse.id, this.name = u.Xverse.name, this.icon = u.Xverse.icon, this.connect = async (t) => {
15
+ try {
16
+ t || (t = d.MAINNET), await i(this, n).request("wallet_connect", null);
17
+ const r = await this.getNetwork();
18
+ if (r.error)
19
+ return o("Could not get network", r.error);
20
+ if (r.val !== t) {
21
+ const c = await this.switchNetwork();
22
+ if (c.error)
23
+ return o("Failed to switch network", c.error);
24
+ }
25
+ const a = await this.getAccounts();
26
+ return a.val.length > 0 && (this.address = a.val[0]), l({
27
+ address: this.address,
28
+ provider: this,
29
+ network: t,
30
+ id: u.Xverse.id
31
+ });
32
+ } catch (r) {
33
+ return o("Error while connecting to the XVerse wallet", r);
34
+ }
35
+ }, this.getBalance = async () => await w(async () => (await i(this, n).request("getBalance", {})).result, "Error while getting balance from XVerse wallet"), this.requestAccounts = async () => await w(async () => (await i(this, n).request("getAccounts", {
36
+ purposes: ["payment"],
37
+ message: "I want to connect"
38
+ })).result.map((r) => r.address)), this.getAccounts = async () => await w(async () => (await i(this, n).request("getAddresses", {
39
+ purposes: ["payment"]
40
+ })).result.addresses.map((r) => r.address)), this.sendBitcoin = async (t, r) => await w(async () => {
41
+ var g;
42
+ const a = await i(this, n).request("sendTransfer", {
43
+ recipients: [{ address: t, amount: r }]
44
+ }), c = (g = a.result) == null ? void 0 : g.txid;
45
+ if (c)
46
+ return l(c);
47
+ throw new Error(a.error);
48
+ }, "Error while sending bitcoin from Xverse wallet"), this.on = () => {
49
+ }, this.off = () => {
50
+ }, this.disconnect = () => (this.address = "", Promise.resolve(l("Disconnected"))), v(this, n, e);
51
+ }
52
+ async getNetwork() {
53
+ return await w(async () => {
54
+ const e = await i(this, n).request(
55
+ "wallet_getNetwork",
56
+ null
57
+ );
58
+ if (e.result.bitcoin.name === h.Mainnet)
59
+ return d.MAINNET;
60
+ if (e.result.bitcoin.name === h.Testnet4)
61
+ return d.TESTNET;
62
+ throw new Error(e.result);
63
+ }, "Error while getting network from Xverse wallet");
64
+ }
65
+ async switchNetwork() {
66
+ try {
67
+ const e = await this.getNetwork();
68
+ if (e.error)
69
+ return o("Failed to get current network");
70
+ const t = e.val === d.MAINNET ? h.Testnet4 : h.Mainnet;
71
+ await i(this, n).request("wallet_changeNetwork", {
72
+ name: t
73
+ });
74
+ const r = await this.getNetwork();
75
+ return r.error ? o("Failed to verify network switch") : l(r.val);
76
+ } catch (e) {
77
+ return o("Error while switching network in Xverse:", e);
78
+ }
79
+ }
80
+ }
81
+ n = new WeakMap();
82
+ export {
83
+ X as XverseProvider
84
+ };
@@ -0,0 +1 @@
1
+ "use strict";var l=r=>{throw TypeError(r)};var u=(r,e,t)=>e.has(r)||l("Cannot "+t);var i=(r,e,t)=>(u(r,e,"read from private field"),t?t.call(r):e.get(r)),h=(r,e,t)=>e.has(r)?l("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),w=(r,e,t,o)=>(u(r,e,"write to private field"),o?o.call(r,t):e.set(r,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./index12.cjs"),a=require("./index3.cjs"),s=require("@catalogfi/utils"),c=require("@gardenfi/utils");var n;class d{constructor(e){h(this,n);this.address="",this.id=a.WALLET_CONFIG.Keplr.id,this.name=a.WALLET_CONFIG.Keplr.name,this.icon=a.WALLET_CONFIG.Keplr.icon,w(this,n,e)}async connect(e){if(e||(e=c.Network.MAINNET),e===c.Network.TESTNET)return s.Err("Keplr wallet does not support testnet4");try{const t=await i(this,n).requestAccounts();return t.length>0&&(this.address=t[0]),s.Ok({address:this.address,provider:this,network:e,id:a.WALLET_CONFIG.Keplr.id})}catch(t){return s.Err("Error while connecting to the Keplr wallet",t)}}async requestAccounts(){return await s.executeWithTryCatch(async()=>await i(this,n).requestAccounts(),"Error while requesting accounts from the Keplr wallet")}async getAccounts(){return await s.executeWithTryCatch(async()=>await i(this,n).getAccounts(),"Error while getting accounts from the Keplr wallet")}async getNetwork(){return await s.executeWithTryCatch(async()=>{const e=await i(this,n).getChain();if(e.enum===p.KeplrBitcoinChainType.MAINNET)return c.Network.MAINNET;if(e.enum===p.KeplrBitcoinChainType.TESTNET)return c.Network.TESTNET;throw new Error("Invalid or unsupported network"+e.enum)},"Error while getting network from the Keplr wallet")}async switchNetwork(){return s.Err("Keplr wallet does not support testnet4")}async getBalance(){return await s.executeWithTryCatch(async()=>await i(this,n).getBalance(),"Error while getting balance from Keplr wallet")}async sendBitcoin(e,t){return await s.executeWithTryCatch(async()=>await i(this,n).sendBitcoin(e,t),"Error while sending bitcoin from Keplr wallet")}on(e,t){i(this,n).on(e,t)}off(e,t){i(this,n).off(e,t)}async disconnect(){return await i(this,n).disconnect(),this.address="",s.Ok("Disconnected Keplr wallet")}}n=new WeakMap;exports.KeplrProvider=d;
package/dist/index9.js ADDED
@@ -0,0 +1,69 @@
1
+ var u = (r) => {
2
+ throw TypeError(r);
3
+ };
4
+ var h = (r, t, e) => t.has(r) || u("Cannot " + e);
5
+ var s = (r, t, e) => (h(r, t, "read from private field"), e ? e.call(r) : t.get(r)), w = (r, t, e) => t.has(r) ? u("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(r) : t.set(r, e), p = (r, t, e, l) => (h(r, t, "write to private field"), l ? l.call(r, e) : t.set(r, e), e);
6
+ import { KeplrBitcoinChainType as d } from "./index12.js";
7
+ import { WALLET_CONFIG as a } from "./index3.js";
8
+ import { Err as c, Ok as f, executeWithTryCatch as i } from "@catalogfi/utils";
9
+ import { Network as o } from "@gardenfi/utils";
10
+ var n;
11
+ class T {
12
+ constructor(t) {
13
+ w(this, n);
14
+ this.address = "", this.id = a.Keplr.id, this.name = a.Keplr.name, this.icon = a.Keplr.icon, p(this, n, t);
15
+ }
16
+ async connect(t) {
17
+ if (t || (t = o.MAINNET), t === o.TESTNET)
18
+ return c("Keplr wallet does not support testnet4");
19
+ try {
20
+ const e = await s(this, n).requestAccounts();
21
+ return e.length > 0 && (this.address = e[0]), f({
22
+ address: this.address,
23
+ provider: this,
24
+ network: t,
25
+ id: a.Keplr.id
26
+ });
27
+ } catch (e) {
28
+ return c("Error while connecting to the Keplr wallet", e);
29
+ }
30
+ }
31
+ async requestAccounts() {
32
+ return await i(async () => await s(this, n).requestAccounts(), "Error while requesting accounts from the Keplr wallet");
33
+ }
34
+ async getAccounts() {
35
+ return await i(async () => await s(this, n).getAccounts(), "Error while getting accounts from the Keplr wallet");
36
+ }
37
+ async getNetwork() {
38
+ return await i(async () => {
39
+ const t = await s(this, n).getChain();
40
+ if (t.enum === d.MAINNET)
41
+ return o.MAINNET;
42
+ if (t.enum === d.TESTNET)
43
+ return o.TESTNET;
44
+ throw new Error("Invalid or unsupported network" + t.enum);
45
+ }, "Error while getting network from the Keplr wallet");
46
+ }
47
+ async switchNetwork() {
48
+ return c("Keplr wallet does not support testnet4");
49
+ }
50
+ async getBalance() {
51
+ return await i(async () => await s(this, n).getBalance(), "Error while getting balance from Keplr wallet");
52
+ }
53
+ async sendBitcoin(t, e) {
54
+ return await i(async () => await s(this, n).sendBitcoin(t, e), "Error while sending bitcoin from Keplr wallet");
55
+ }
56
+ on(t, e) {
57
+ s(this, n).on(t, e);
58
+ }
59
+ off(t, e) {
60
+ s(this, n).off(t, e);
61
+ }
62
+ async disconnect() {
63
+ return await s(this, n).disconnect(), this.address = "", f("Disconnected Keplr wallet");
64
+ }
65
+ }
66
+ n = new WeakMap();
67
+ export {
68
+ T as KeplrProvider
69
+ };
@@ -4,6 +4,7 @@ import { UnisatBitcoinProvider } from './providers/unisat/unisat.types';
4
4
  import { XVerseBitcoinProvider } from './providers/xverse/xverse.types';
5
5
  import { XdefiBitcoinProvider } from './providers/xdefi/xdefi.types';
6
6
  import { PhantomBitcoinProvider } from './providers/phantom/phantom.types';
7
+ import { KeplrBitcoinProvider } from './providers/keplr/keplr.types';
7
8
  import { BTCWalletProviderContextType, BTCWalletProviderProps } from './btcWalletsProvider.types';
8
9
 
9
10
  declare global {
@@ -22,6 +23,9 @@ declare global {
22
23
  phantom?: {
23
24
  bitcoin: PhantomBitcoinProvider;
24
25
  };
26
+ keplr?: {
27
+ bitcoin: KeplrBitcoinProvider;
28
+ };
25
29
  }
26
30
  }
27
31
  export declare const BTCWalletProvider: ({ children, network, store, }: BTCWalletProviderProps) => React.JSX.Element;
@@ -24,6 +24,11 @@ export declare const SupportedWallets: {
24
24
  icon: string;
25
25
  description: string;
26
26
  };
27
+ Keplr: {
28
+ name: string;
29
+ icon: string;
30
+ description: string;
31
+ };
27
32
  };
28
33
  export declare const WALLET_CONFIG: {
29
34
  readonly OKX: {
@@ -38,7 +43,7 @@ export declare const WALLET_CONFIG: {
38
43
  };
39
44
  readonly Xverse: {
40
45
  readonly id: "xverse";
41
- readonly name: "Xverse wallet";
46
+ readonly name: "Xverse Wallet";
42
47
  readonly icon: "https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png";
43
48
  };
44
49
  readonly Xdefi: {
@@ -48,7 +53,12 @@ export declare const WALLET_CONFIG: {
48
53
  };
49
54
  readonly Phantom: {
50
55
  readonly id: "phantom";
51
- readonly name: "Phantom wallet";
56
+ readonly name: "Phantom Wallet";
52
57
  readonly icon: "https://garden-finance.imgix.net/wallets/phantom.svg";
53
58
  };
59
+ readonly Keplr: {
60
+ readonly id: "keplr";
61
+ readonly name: "Keplr Wallet";
62
+ readonly icon: "https://garden-finance.imgix.net/wallets/keplr.svg";
63
+ };
54
64
  };
@@ -0,0 +1,35 @@
1
+ export interface KeplrBitcoinProvider {
2
+ connectWallet: () => Promise<{
3
+ address: string;
4
+ publicKey: string;
5
+ }>;
6
+ requestAccounts: () => Promise<string[]>;
7
+ getAccounts: () => Promise<string[]>;
8
+ getNetwork: () => Promise<KeplrBitcoinNetworkType>;
9
+ switchNetwork: (network: KeplrBitcoinNetworkType) => Promise<KeplrBitcoinNetworkType>;
10
+ getChain: () => Promise<{
11
+ enum: KeplrBitcoinChainType;
12
+ name: string;
13
+ network: KeplrBitcoinNetworkType;
14
+ }>;
15
+ switchChain: (chain: KeplrBitcoinChainType) => Promise<KeplrBitcoinChainType>;
16
+ getPublicKey: () => Promise<string>;
17
+ getBalance: () => Promise<{
18
+ confirmed: number;
19
+ unconfirmed: number;
20
+ total: number;
21
+ }>;
22
+ sendBitcoin: (to: string, amount: number) => Promise<string>;
23
+ on: (event: string, callback: (data: any) => void) => void;
24
+ off: (event: string, callback: (data: any) => void) => void;
25
+ disconnect: () => void;
26
+ }
27
+ export declare enum KeplrBitcoinNetworkType {
28
+ MAINNET = "mainnet",
29
+ LIVENET = "livenet",
30
+ TESTNET = "testnet"
31
+ }
32
+ export declare enum KeplrBitcoinChainType {
33
+ MAINNET = "BITCOIN_MAINNET",
34
+ TESTNET = "BITCOIN_TESTNET"
35
+ }
@@ -0,0 +1,27 @@
1
+ import { Connect, IInjectedBitcoinProvider } from 'src/bitcoin/bitcoin.types';
2
+ import { KeplrBitcoinProvider } from './keplr.types';
3
+ import { AsyncResult } from '@catalogfi/utils';
4
+ import { Network } from '@gardenfi/utils';
5
+
6
+ export declare class KeplrProvider implements IInjectedBitcoinProvider {
7
+ #private;
8
+ address: string;
9
+ id: "keplr";
10
+ name: "Keplr Wallet";
11
+ icon: "https://garden-finance.imgix.net/wallets/keplr.svg";
12
+ constructor(provider: KeplrBitcoinProvider);
13
+ connect(network?: Network): AsyncResult<Connect, string>;
14
+ requestAccounts(): Promise<import('@catalogfi/utils').Result<string[], string>>;
15
+ getAccounts(): Promise<import('@catalogfi/utils').Result<string[], string>>;
16
+ getNetwork(): Promise<import('@catalogfi/utils').Result<Network, string>>;
17
+ switchNetwork(): AsyncResult<Network, string>;
18
+ getBalance(): Promise<import('@catalogfi/utils').Result<{
19
+ confirmed: number;
20
+ unconfirmed: number;
21
+ total: number;
22
+ }, string>>;
23
+ sendBitcoin(toAddress: string, satoshis: number): Promise<import('@catalogfi/utils').Result<string, string>>;
24
+ on(event: string, callback: (data: any) => void): void;
25
+ off(event: string, callback: (data: any) => void): void;
26
+ disconnect(): Promise<import('@catalogfi/utils').Result<string, never>>;
27
+ }
@@ -7,8 +7,7 @@ export declare class PhantomProvider implements IInjectedBitcoinProvider {
7
7
  #private;
8
8
  address: string;
9
9
  id: "phantom";
10
- private mempoolApiBaseUrl;
11
- name: "Phantom wallet";
10
+ name: "Phantom Wallet";
12
11
  icon: "https://garden-finance.imgix.net/wallets/phantom.svg";
13
12
  constructor(phantomProvider: PhantomBitcoinProvider);
14
13
  connect(network?: Network): AsyncResult<Connect, string>;
@@ -22,8 +21,6 @@ export declare class PhantomProvider implements IInjectedBitcoinProvider {
22
21
  total: number;
23
22
  }, string>;
24
23
  sendBitcoin(toAddress: string, satoshis: number): AsyncResult<string, string>;
25
- private getUnspentOutputs;
26
- private broadcastTransaction;
27
24
  private fromHexString;
28
25
  on(event: string, callback: (data: any) => void): void;
29
26
  off(event: string, callback: (data: any) => void): void;
@@ -9,7 +9,7 @@ export declare class UnisatProvider implements IInjectedBitcoinProvider {
9
9
  id: "unisat";
10
10
  name: "Unisat wallet";
11
11
  icon: "https://garden-finance.imgix.net/wallets/unisat.svg";
12
- constructor(unisatProvider: UnisatBitcoinProvider);
12
+ constructor(unisatProvider: UnisatBitcoinProvider, network: Network);
13
13
  connect(network?: Network): AsyncResult<Connect, string>;
14
14
  requestAccounts(): Promise<import('@catalogfi/utils').Result<string[], string>>;
15
15
  getAccounts(): Promise<import('@catalogfi/utils').Result<string[], string>>;
@@ -12,6 +12,7 @@ export interface UnisatBitcoinProvider {
12
12
  total: number;
13
13
  }>;
14
14
  getChain: () => Promise<UnisatChain>;
15
+ getNetwork: () => Promise<UnisatNetworkEnum>;
15
16
  switchChain: (chain: UnisatChainEnum) => Promise<UnisatChain>;
16
17
  getPublicKey(): Promise<string>;
17
18
  on: (event: string, callback: (data: any) => void) => void;
@@ -25,6 +26,11 @@ export type UnisatChain = {
25
26
  };
26
27
  export declare enum UnisatChainEnum {
27
28
  BITCOIN_MAINNET = "BITCOIN_MAINNET",
29
+ BITCOIN_TESTNET = "BITCOIN_TESTNET",
28
30
  BITCOIN_TESTNET4 = "BITCOIN_TESTNET4"
29
31
  }
30
32
  export type UnisatNetwork = 'livenet' | 'testnet';
33
+ export declare enum UnisatNetworkEnum {
34
+ LIVENET = "livenet",
35
+ TESTNET = "testnet"
36
+ }
@@ -1,28 +1,22 @@
1
- import { Balance, IInjectedBitcoinProvider } from '../../bitcoin.types';
1
+ import { Balance, Connect, IInjectedBitcoinProvider } from '../../bitcoin.types';
2
2
  import { XVerseBitcoinProvider } from './xverse.types';
3
3
  import { AsyncResult } from '@catalogfi/utils';
4
4
  import { Network } from '@gardenfi/utils';
5
5
 
6
6
  export declare class XverseProvider implements IInjectedBitcoinProvider {
7
7
  #private;
8
- private provider;
9
8
  address: string;
10
9
  id: "xverse";
11
- name: "Xverse wallet";
10
+ name: "Xverse Wallet";
12
11
  icon: "https://cdn.prod.website-files.com/624b08d53d7ac60ccfc11d8d/64637a04ad4e523a3e07675c_32x32.png";
13
12
  constructor(provider: XVerseBitcoinProvider);
14
- connect: () => Promise<import('@catalogfi/utils').Result<never, string> | import('@catalogfi/utils').Result<{
15
- address: string;
16
- provider: XverseProvider;
17
- network: Network;
18
- id: "xverse";
19
- }, never>>;
13
+ connect: (network?: Network) => AsyncResult<Connect, string>;
20
14
  getBalance: () => Promise<import('@catalogfi/utils').Result<Balance, string>>;
21
15
  requestAccounts: () => AsyncResult<string[], string>;
22
16
  getAccounts: () => AsyncResult<string[], string>;
23
17
  sendBitcoin: (toAddress: string, satoshis: number) => AsyncResult<string, string>;
24
- getNetwork: () => AsyncResult<Network, string>;
25
- switchNetwork(): Promise<import('@catalogfi/utils').Result<never, string>>;
18
+ getNetwork(): Promise<import('@catalogfi/utils').Result<Network, string>>;
19
+ switchNetwork(): AsyncResult<Network, string>;
26
20
  /**
27
21
  * not available in XVerse wallet
28
22
  */
@@ -5,3 +5,7 @@ export interface XVerseBitcoinProvider {
5
5
  status: 'success' | 'error';
6
6
  }>;
7
7
  }
8
+ export declare enum XverseBitcoinNetworkType {
9
+ Mainnet = "Mainnet",
10
+ Testnet4 = "Testnet4"
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gardenfi/wallet-connectors",
3
- "version": "2.0.4",
3
+ "version": "2.0.5-beta.2",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "vite build",
@@ -38,9 +38,9 @@
38
38
  "dependencies": {
39
39
  "@catalogfi/utils": "^0.1.11",
40
40
  "@catalogfi/wallets": "^0.2.54",
41
- "@gardenfi/utils": "2.1.3",
41
+ "@gardenfi/utils": "2.1.3-beta.5",
42
42
  "axios": "^1.7.9",
43
- "bitcoinjs-lib": "^7.0.0-rc.0",
43
+ "bitcoinjs-lib": "^6.1.7",
44
44
  "react": "^18.3.1",
45
45
  "tiny-secp256k1": "^2.2.3"
46
46
  }