@gardenfi/wallet-connectors 3.0.0-beta.2 → 3.0.0-beta.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.
Files changed (48) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.js +12 -7
  3. package/dist/index10.cjs +1 -1
  4. package/dist/index10.js +83 -3
  5. package/dist/index11.cjs +1 -1
  6. package/dist/index11.js +108 -2
  7. package/dist/index12.cjs +1 -1
  8. package/dist/index12.js +81 -2
  9. package/dist/index13.cjs +1 -0
  10. package/dist/index13.js +68 -0
  11. package/dist/index14.cjs +3 -0
  12. package/dist/index14.js +116 -0
  13. package/dist/index15.cjs +1 -0
  14. package/dist/index15.js +4 -0
  15. package/dist/index16.cjs +1 -0
  16. package/dist/index16.js +5 -0
  17. package/dist/index17.cjs +1 -0
  18. package/dist/index17.js +4 -0
  19. package/dist/index18.cjs +1 -0
  20. package/dist/index18.js +4 -0
  21. package/dist/index2.cjs +1 -1
  22. package/dist/index2.js +75 -97
  23. package/dist/index5.cjs +1 -1
  24. package/dist/index5.js +89 -61
  25. package/dist/index6.cjs +1 -1
  26. package/dist/index6.js +24 -82
  27. package/dist/index7.cjs +1 -1
  28. package/dist/index7.js +140 -79
  29. package/dist/index8.cjs +1 -1
  30. package/dist/index8.js +195 -70
  31. package/dist/index9.cjs +1 -1
  32. package/dist/index9.js +41 -45
  33. package/dist/src/bitcoin/bitcoin.types.d.ts +1 -1
  34. package/dist/src/bitcoin/btcWalletsProvider.d.ts +1 -1
  35. package/dist/src/bitcoin/btcWalletsProvider.types.d.ts +0 -7
  36. package/dist/src/bitcoin/index.d.ts +3 -3
  37. package/dist/src/index.d.ts +1 -0
  38. package/dist/src/litecoin/constants.d.ts +24 -0
  39. package/dist/src/litecoin/index.d.ts +5 -0
  40. package/dist/src/litecoin/litecoin.types.d.ts +51 -0
  41. package/dist/src/litecoin/ltcWalletsProvider.d.ts +17 -0
  42. package/dist/src/litecoin/ltcWalletsProvider.types.d.ts +22 -0
  43. package/dist/src/litecoin/providers/enkrypt/enkrypt.types.d.ts +22 -0
  44. package/dist/src/litecoin/providers/enkrypt/provider.d.ts +25 -0
  45. package/dist/src/litecoin/providers/litescribe/litescribe.types.d.ts +18 -0
  46. package/dist/src/litecoin/providers/litescribe/provider.d.ts +26 -0
  47. package/dist/src/litecoin/utils.d.ts +12 -0
  48. package/package.json +6 -5
package/dist/index2.js CHANGED
@@ -1,139 +1,117 @@
1
- import I, { useState as v, useMemo as X, useCallback as M, useEffect as l, createContext as O, useContext as D } from "react";
2
- import { OKXProvider as S } from "./index5.js";
3
- import { UnisatProvider as J } from "./index6.js";
4
- import { PhantomProvider as K } from "./index7.js";
5
- import { XverseProvider as L } from "./index8.js";
6
- import { KeplrProvider as z } from "./index9.js";
7
- import { Err as P, Ok as k, Void as N, Network as h } from "@gardenfi/utils";
8
- const x = O(void 0), G = ({
9
- children: a,
10
- network: n,
11
- store: f,
12
- wallets: i
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 "./index9.js";
3
+ import { UnisatProvider as J } from "./index10.js";
4
+ import { PhantomProvider as K } from "./index11.js";
5
+ import { XverseProvider as L } from "./index12.js";
6
+ import { KeplrProvider as z } from "./index13.js";
7
+ import { Network as p, Err as P, Ok as b, Void as k } from "@gardenfi/utils";
8
+ const C = M(void 0), F = ({
9
+ children: c,
10
+ network: r,
11
+ store: w
13
12
  }) => {
14
- const [t, w] = v(), [p, s] = v(), [A, d] = v(!1), [u, E] = v(
13
+ const [o, v] = l(), [u, n] = l(), [N, s] = l(!1), [a, h] = l(
15
14
  {}
16
- ), W = X(
17
- () => !!t && !!p,
18
- [t, p]
19
- ), C = async (e) => {
20
- d(!0);
21
- const o = await e.connect(n);
22
- return o.ok ? o.val.network !== n ? (d(!1), P("Network mismatch")) : (w(o.val.provider), s(o.val.address), f.setItem("bitcoinWallet", JSON.stringify(o.val)), d(!1), k(N)) : (d(!1), P(o.error));
23
- }, g = () => t ? (t.disconnect(), w(void 0), s(void 0), f.removeItem("bitcoinWallet"), k(N)) : P("No provider to disconnect"), y = M(async () => {
24
- if (!t) return;
25
- const e = await t.getAccounts();
15
+ ), x = I(
16
+ () => !!o && !!u,
17
+ [o, u]
18
+ ), A = async (e) => {
19
+ s(!0);
20
+ const t = await e.connect(r);
21
+ return t.ok ? 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(k)) : (s(!1), P(t.error));
22
+ }, W = () => o ? (o.disconnect(), v(void 0), n(void 0), w.removeItem("bitcoinWallet"), b(k)) : P("No provider to disconnect"), E = X(async () => {
23
+ if (!o) return;
24
+ const e = await o.getAccounts();
26
25
  if (!e.ok) {
27
26
  console.error("Error getting accounts:", e.error);
28
27
  return;
29
28
  }
30
- s(e.val[0]);
31
- const o = await t.getNetwork();
32
- if (o.error) {
33
- console.error("Error getting network:", o.error);
29
+ n(e.val[0]);
30
+ const t = await o.getNetwork();
31
+ if (t.error) {
32
+ console.error("Error getting network:", t.error);
34
33
  return;
35
34
  }
36
- }, [t]), c = (e) => {
37
- E((o) => ({
38
- ...o,
35
+ }, [o]), i = (e) => {
36
+ h((t) => ({
37
+ ...t,
39
38
  [e.id]: e
40
39
  }));
41
40
  }, T = async () => {
42
41
  if (window.okxwallet && window.okxwallet.bitcoin && window.okxwallet.bitcoinTestnet) {
43
42
  const e = new S(
44
- n === h.MAINNET ? window.okxwallet.bitcoin : window.okxwallet.bitcoinTestnet,
45
- n
43
+ r === p.MAINNET ? window.okxwallet.bitcoin : window.okxwallet.bitcoinTestnet,
44
+ r
46
45
  );
47
- c(e);
46
+ i(e);
48
47
  }
49
- if (n === h.MAINNET && window.phantom && window.phantom.bitcoin) {
48
+ if (r === p.MAINNET && window.phantom && window.phantom.bitcoin) {
50
49
  const e = new K(window.phantom.bitcoin);
51
- c(e);
50
+ i(e);
52
51
  }
53
52
  if (window.unisat) {
54
- const e = new J(window.unisat, n);
55
- c(e);
53
+ const e = new J(window.unisat, r);
54
+ i(e);
56
55
  }
57
56
  if (window.XverseProviders && window.XverseProviders.BitcoinProvider) {
58
57
  const e = new L(
59
58
  window.XverseProviders.BitcoinProvider
60
59
  );
61
- c(e);
60
+ i(e);
62
61
  }
63
- if (n === h.MAINNET && window.keplr && window.keplr.bitcoin) {
62
+ if (r === p.MAINNET && window.keplr && window.keplr.bitcoin) {
64
63
  const e = new z(window.keplr.bitcoin);
65
- c(e);
64
+ i(e);
66
65
  }
67
- i == null || i.forEach((e) => {
68
- c(e.provider);
69
- });
70
- }, B = async () => {
71
- const e = f.getItem("bitcoinWallet");
66
+ }, y = async () => {
67
+ const e = w.getItem("bitcoinWallet");
72
68
  if (e) {
73
- const o = JSON.parse(e), r = u[o.id];
74
- if (r) {
75
- const m = await r.getAccounts();
76
- if (!m.ok || !m.val[0]) return;
77
- const b = await r.getNetwork();
78
- if (b.error || b.val !== n) return;
79
- w(r), s(m.val[0]);
69
+ const t = JSON.parse(e), d = a[t.id];
70
+ if (d) {
71
+ const f = await d.getAccounts();
72
+ if (!f.ok || !f.val[0]) return;
73
+ const g = await d.getNetwork();
74
+ if (g.error || g.val !== r) return;
75
+ v(d), n(f.val[0]);
80
76
  }
81
77
  }
82
78
  };
83
- return l(() => {
84
- const e = [];
85
- return i == null || i.forEach((o) => {
86
- if (o.registerConnect) {
87
- const r = o.registerConnect(() => {
88
- C(o.provider);
89
- });
90
- typeof r == "function" && e.push(r);
91
- }
92
- if (o.registerDisconnect) {
93
- const r = o.registerDisconnect(() => {
94
- g();
95
- });
96
- typeof r == "function" && e.push(r);
97
- }
98
- }), () => {
99
- e.forEach((o) => o());
100
- };
101
- }, [i]), l(() => {
79
+ return m(() => {
102
80
  T();
103
- }, []), l(() => {
104
- u && B();
105
- }, [u]), l(() => {
106
- if (!t) return;
107
- const e = async (o) => {
108
- o.length !== 0 && s(o[0]);
81
+ }, []), m(() => {
82
+ a && y();
83
+ }, [a]), m(() => {
84
+ if (!o) return;
85
+ const e = async (t) => {
86
+ t.length !== 0 && n(t[0]);
109
87
  };
110
- return t.on("accountsChanged", e), () => {
111
- t.off("accountsChanged", e);
88
+ return o.on("accountsChanged", e), () => {
89
+ o.off("accountsChanged", e);
112
90
  };
113
- }, [t]), /* @__PURE__ */ I.createElement(
114
- x.Provider,
91
+ }, [o]), /* @__PURE__ */ B.createElement(
92
+ C.Provider,
115
93
  {
116
94
  value: {
117
- availableWallets: u,
118
- connect: C,
119
- provider: t,
120
- account: p,
121
- network: n,
122
- isConnecting: A,
123
- updateAccount: y,
124
- disconnect: g,
125
- isConnected: W
95
+ availableWallets: a,
96
+ connect: A,
97
+ provider: o,
98
+ account: u,
99
+ network: r,
100
+ isConnecting: N,
101
+ updateAccount: E,
102
+ disconnect: W,
103
+ isConnected: x
126
104
  }
127
105
  },
128
- a
106
+ c
129
107
  );
130
- }, H = () => {
131
- const a = D(x);
132
- if (!a)
108
+ }, G = () => {
109
+ const c = O(C);
110
+ if (!c)
133
111
  throw new Error("useBitcoinWallet must be used within BTCWalletProvider");
134
- return a;
112
+ return c;
135
113
  };
136
114
  export {
137
- G as BTCWalletProvider,
138
- H as useBitcoinWallet
115
+ F as BTCWalletProvider,
116
+ G as useBitcoinWallet
139
117
  };
package/dist/index5.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var l=i=>{throw TypeError(i)};var d=(i,t,e)=>t.has(i)||l("Cannot "+e);var n=(i,t,e)=>(d(i,t,"read from private field"),e?e.call(i):t.get(i)),h=(i,t,e)=>t.has(i)?l("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(i):t.set(i,e),a=(i,t,e,u)=>(d(i,t,"write to private field"),u?u.call(i,e):t.set(i,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@gardenfi/utils"),o=require("./index3.cjs");var s,c;class w{constructor(t,e){h(this,s);h(this,c);this.address="",this.id=o.WALLET_CONFIG.OKX.id,this.name=o.WALLET_CONFIG.OKX.name,this.icon=o.WALLET_CONFIG.OKX.icon,this.disconnect=()=>(this.address="",n(this,s).disconnect(),Promise.resolve(r.Ok("Disconnected OKX wallet"))),a(this,s,t),a(this,c,e)}async connect(){try{const t=await n(this,s).connect();return!t||!t.address?r.Err("Failed to connect to OKX wallet"):(this.address=t.address,r.Ok({address:this.address,provider:this,network:n(this,c),id:o.WALLET_CONFIG.OKX.id}))}catch(t){return r.Err("Error while connecting to the OKX wallet",t)}}async getPublicKey(){return await r.executeWithTryCatch(async()=>await n(this,s).getPublicKey(),"Error while getting public key from OKX wallet")}async requestAccounts(){const t=await this.connect();return t.ok?r.Ok([t.val.address]):r.Err(t.error)}async getAccounts(){return n(this,c)===r.Network.TESTNET?await this.requestAccounts():await r.executeWithTryCatch(async()=>await n(this,s).getAccounts(),"Error while getting accounts from OKX wallet")}async getNetwork(){return r.Ok(n(this,c))}async switchNetwork(){a(this,c,n(this,c)===r.Network.MAINNET?r.Network.TESTNET:r.Network.MAINNET);const t=await this.connect();return t.error?r.Err(`Failed to connect to ${n(this,c)}: ${t.error}`):r.Ok(n(this,c))}async getBalance(){return await r.executeWithTryCatch(async()=>await n(this,s).getBalance(),"Error while getting balance from OKX wallet")}async sendBitcoin(t,e){return await r.executeWithTryCatch(async()=>await n(this,s).sendBitcoin(t,e),"Error while sending bitcoin from OKX wallet")}on(t,e){n(this,s).on(t,e)}off(t,e){n(this,s).off(t,e)}}s=new WeakMap,c=new WeakMap;exports.OKXProvider=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),L=require("./index7.cjs"),o=require("@gardenfi/utils"),A=require("./index8.cjs"),C=n.createContext(void 0),h=({children:s,network:l,store:d})=>{const[r,u]=n.useState(),[v,i]=n.useState(),[y,c]=n.useState(!1),[a,g]=n.useState({}),W=n.useMemo(()=>!!r&&!!v,[r,v]),b=async e=>{c(!0);const t=await e.connect(l);return t.ok?t.val.network!==l?(c(!1),o.Err("Network mismatch")):(u(t.val.provider),i(t.val.address),d.setItem("litecoinWallet",JSON.stringify(t.val)),c(!1),o.Ok(o.Void)):(c(!1),o.Err(t.error))},k=()=>r?(r.disconnect(),u(void 0),i(void 0),d.removeItem("litecoinWallet"),o.Ok(o.Void)):o.Err("No provider to disconnect"),P=n.useCallback(async()=>{if(!r)return;const e=await r.getAccounts();if(!e.ok){console.error("Error getting accounts:",e.error);return}i(e.val[0])},[r]),w=e=>{g(t=>({...t,[e.id]:e}))},m=async()=>{if(window.enkrypt&&window.enkrypt.providers&&window.enkrypt.providers.bitcoin){const e=new L.EnkryptProvider(window.enkrypt.providers.bitcoin);w(e)}if(window.litescribe){const e=new A.LitescribeProvider(window.litescribe);w(e)}},E=async()=>{const e=d.getItem("litecoinWallet");if(e){const t=JSON.parse(e),f=a[t.id];if(f){const p=await f.getAccounts();if(!p.ok||!p.val[0])return;u(f),i(p.val[0])}}};return n.useEffect(()=>{m()},[]),n.useEffect(()=>{a&&E()},[a]),n.useEffect(()=>{if(!r)return;const e=async t=>{t.length!==0&&i(t[0])};return r.on("accountsChanged",e),()=>{r.off("accountsChanged",e)}},[r]),n.createElement(C.Provider,{value:{availableWallets:a,connect:b,provider:r,account:v,network:l,isConnecting:y,updateAccount:P,disconnect:k,isConnected:W}},s)},S=()=>{const s=n.useContext(C);if(!s)throw new Error("useLitecoinWallet must be used within LTCWalletProvider");return s};exports.LTCWalletProvider=h;exports.useLitecoinWallet=S;
package/dist/index5.js CHANGED
@@ -1,64 +1,92 @@
1
- var y = (e) => {
2
- throw TypeError(e);
3
- };
4
- var g = (e, t, r) => t.has(e) || y("Cannot " + r);
5
- var n = (e, t, r) => (g(e, t, "read from private field"), r ? r.call(e) : t.get(e)), d = (e, t, r) => t.has(e) ? y("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), a = (e, t, r, w) => (g(e, t, "write to private field"), w ? w.call(e, r) : t.set(e, r), r);
6
- import { Ok as c, Err as o, executeWithTryCatch as h, Network as l } from "@gardenfi/utils";
7
- import { WALLET_CONFIG as u } from "./index3.js";
8
- var i, s;
9
- class E {
10
- constructor(t, r) {
11
- d(this, i);
12
- d(this, s);
13
- this.address = "", this.id = u.OKX.id, this.name = u.OKX.name, this.icon = u.OKX.icon, this.disconnect = () => (this.address = "", n(this, i).disconnect(), Promise.resolve(c("Disconnected OKX wallet"))), a(this, i, t), a(this, s, r);
14
- }
15
- async connect() {
16
- try {
17
- const t = await n(this, i).connect();
18
- return !t || !t.address ? o("Failed to connect to OKX wallet") : (this.address = t.address, c({
19
- address: this.address,
20
- provider: this,
21
- network: n(this, s),
22
- id: u.OKX.id
23
- }));
24
- } catch (t) {
25
- return o("Error while connecting to the OKX wallet", t);
1
+ import x, { useState as s, useMemo as I, useCallback as N, useEffect as p, createContext as T, useContext as O } from "react";
2
+ import { EnkryptProvider as S } from "./index7.js";
3
+ import { Err as w, Ok as C, Void as y } from "@gardenfi/utils";
4
+ import { LitescribeProvider as J } from "./index8.js";
5
+ const g = T(void 0), V = ({
6
+ children: r,
7
+ network: a,
8
+ store: l
9
+ }) => {
10
+ const [n, d] = s(), [u, o] = s(), [W, i] = s(!1), [c, k] = s(
11
+ {}
12
+ ), b = I(
13
+ () => !!n && !!u,
14
+ [n, u]
15
+ ), P = async (e) => {
16
+ i(!0);
17
+ const t = await e.connect(a);
18
+ return t.ok ? t.val.network !== a ? (i(!1), w("Network mismatch")) : (d(t.val.provider), o(t.val.address), l.setItem("litecoinWallet", JSON.stringify(t.val)), i(!1), C(y)) : (i(!1), w(t.error));
19
+ }, A = () => n ? (n.disconnect(), d(void 0), o(void 0), l.removeItem("litecoinWallet"), C(y)) : w("No provider to disconnect"), h = N(async () => {
20
+ if (!n) return;
21
+ const e = await n.getAccounts();
22
+ if (!e.ok) {
23
+ console.error("Error getting accounts:", e.error);
24
+ return;
25
+ }
26
+ o(e.val[0]);
27
+ }, [n]), m = (e) => {
28
+ k((t) => ({
29
+ ...t,
30
+ [e.id]: e
31
+ }));
32
+ }, L = async () => {
33
+ if (window.enkrypt && window.enkrypt.providers && window.enkrypt.providers.bitcoin) {
34
+ const e = new S(
35
+ window.enkrypt.providers.bitcoin
36
+ );
37
+ m(e);
38
+ }
39
+ if (window.litescribe) {
40
+ const e = new J(window.litescribe);
41
+ m(e);
26
42
  }
27
- }
28
- async getPublicKey() {
29
- return await h(async () => await n(this, i).getPublicKey(), "Error while getting public key from OKX wallet");
30
- }
31
- async requestAccounts() {
32
- const t = await this.connect();
33
- return t.ok ? c([t.val.address]) : o(t.error);
34
- }
35
- async getAccounts() {
36
- return n(this, s) === l.TESTNET ? await this.requestAccounts() : await h(async () => await n(this, i).getAccounts(), "Error while getting accounts from OKX wallet");
37
- }
38
- async getNetwork() {
39
- return c(n(this, s));
40
- }
41
- async switchNetwork() {
42
- a(this, s, n(this, s) === l.MAINNET ? l.TESTNET : l.MAINNET);
43
- const t = await this.connect();
44
- return t.error ? o(
45
- `Failed to connect to ${n(this, s)}: ${t.error}`
46
- ) : c(n(this, s));
47
- }
48
- async getBalance() {
49
- return await h(async () => await n(this, i).getBalance(), "Error while getting balance from OKX wallet");
50
- }
51
- async sendBitcoin(t, r) {
52
- return await h(async () => await n(this, i).sendBitcoin(t, r), "Error while sending bitcoin from OKX wallet");
53
- }
54
- on(t, r) {
55
- n(this, i).on(t, r);
56
- }
57
- off(t, r) {
58
- n(this, i).off(t, r);
59
- }
60
- }
61
- i = new WeakMap(), s = new WeakMap();
43
+ }, E = async () => {
44
+ const e = l.getItem("litecoinWallet");
45
+ if (e) {
46
+ const t = JSON.parse(e), v = c[t.id];
47
+ if (v) {
48
+ const f = await v.getAccounts();
49
+ if (!f.ok || !f.val[0]) return;
50
+ d(v), o(f.val[0]);
51
+ }
52
+ }
53
+ };
54
+ return p(() => {
55
+ L();
56
+ }, []), p(() => {
57
+ c && E();
58
+ }, [c]), p(() => {
59
+ if (!n) return;
60
+ const e = async (t) => {
61
+ t.length !== 0 && o(t[0]);
62
+ };
63
+ return n.on("accountsChanged", e), () => {
64
+ n.off("accountsChanged", e);
65
+ };
66
+ }, [n]), /* @__PURE__ */ x.createElement(
67
+ g.Provider,
68
+ {
69
+ value: {
70
+ availableWallets: c,
71
+ connect: P,
72
+ provider: n,
73
+ account: u,
74
+ network: a,
75
+ isConnecting: W,
76
+ updateAccount: h,
77
+ disconnect: A,
78
+ isConnected: b
79
+ }
80
+ },
81
+ r
82
+ );
83
+ }, j = () => {
84
+ const r = O(g);
85
+ if (!r)
86
+ throw new Error("useLitecoinWallet must be used within LTCWalletProvider");
87
+ return r;
88
+ };
62
89
  export {
63
- E as OKXProvider
90
+ V as LTCWalletProvider,
91
+ j as useLitecoinWallet
64
92
  };
package/dist/index6.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var N=n=>{throw TypeError(n)};var T=(n,t,r)=>t.has(n)||N("Cannot "+r);var s=(n,t,r)=>(T(n,t,"read from private field"),r?r.call(n):t.get(n)),w=(n,t,r)=>t.has(n)?N("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(n):t.set(n,r),E=(n,t,r,o)=>(T(n,t,"write to private field"),o?o.call(n,r):t.set(n,r),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./index10.cjs"),e=require("@gardenfi/utils"),u=require("./index3.cjs");var i,c;class d{constructor(t,r){w(this,i);w(this,c);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(e.Ok("Disconnected unisat wallet"))),E(this,i,t),E(this,c,r)}async connect(t){try{t||(t=s(this,c));const r=await this.getNetwork(),o=await s(this,i).getChain();if(r.error)return e.Err("Could not get network",r.error);if(r.val!==t||o.enum===a.UnisatChainEnum.BITCOIN_TESTNET){const l=await this.switchNetwork();if(l.error)return e.Err("Failed to switch network",l.error)}const h=await s(this,i).requestAccounts();return h.length>0&&(this.address=h[0]),e.Ok({address:this.address,provider:this,network:t,id:u.WALLET_CONFIG.Unisat.id})}catch(r){return e.Err("Error while connecting to the Unisat wallet",r)}}async requestAccounts(){return await e.executeWithTryCatch(async()=>await s(this,i).requestAccounts(),"Error while requesting accounts from the Unisat wallet")}async getAccounts(){return await e.executeWithTryCatch(async()=>await s(this,i).getAccounts(),"Error while getting accounts from the Unisat wallet")}async getNetwork(){return await e.executeWithTryCatch(async()=>{const t=await s(this,i).getNetwork();if(t===a.UnisatNetworkEnum.LIVENET)return e.Network.MAINNET;if(t===a.UnisatNetworkEnum.TESTNET)return e.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 s(this,i).getChain();if(t.error)return e.Err("Failed to get current network");const o=t.val===e.Network.MAINNET||s(this,c)===e.Network.TESTNET&&r.enum===a.UnisatChainEnum.BITCOIN_TESTNET?a.UnisatChainEnum.BITCOIN_TESTNET4:a.UnisatChainEnum.BITCOIN_MAINNET;await s(this,i).switchChain(o);const h=await this.getNetwork();return h.ok?e.Ok(h.val):e.Err("Failed to verify network switch")}catch(t){return e.Err("Error while switching network in Unisat:",t)}}async getBalance(){return await e.executeWithTryCatch(async()=>await s(this,i).getBalance(),"Error while getting balance from Unisat wallet")}async sendBitcoin(t,r){return await e.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,c=new WeakMap;exports.UnisatProvider=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o={Enkrypt:{id:"enkrypt",name:"Enkrypt Wallet",icon:"https://2536749467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWHaZuaEtXZ0lYkuIWo8C%2Fuploads%2FQnJnFL186t5LWCLQofbg%2FEnkrypt%20E%20only%20Color%20logo.svg?alt=media&token=59f66a73-0795-41ea-8166-ec5416a4fc23"},LiteScribe:{id:"litescribe",name:"Litescribe Wallet",icon:"https://lh3.googleusercontent.com/WRArwMWT7LP-i8OZZI1-LdJXvdT0wEiF-kpXuHu02KxdmyvMfrnZikLefy1SSyW5ozAFYcer5JDOZ-LPnIRKSCVvXJw=s120"}},e={Enkrypt:{id:"enkrypt",name:"Enkrypt Wallet",icon:"https://2536749467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWHaZuaEtXZ0lYkuIWo8C%2Fuploads%2FQnJnFL186t5LWCLQofbg%2FEnkrypt%20E%20only%20Color%20logo.svg?alt=media&token=59f66a73-0795-41ea-8166-ec5416a4fc23"},LiteScribe:{id:"litescribe",name:"Litescribe Wallet",icon:"https://lh3.googleusercontent.com/WRArwMWT7LP-i8OZZI1-LdJXvdT0wEiF-kpXuHu02KxdmyvMfrnZikLefy1SSyW5ozAFYcer5JDOZ-LPnIRKSCVvXJw=s120"}};exports.SupportedWallets=o;exports.WALLET_CONFIG=e;
package/dist/index6.js CHANGED
@@ -1,85 +1,27 @@
1
- var g = (e) => {
2
- throw TypeError(e);
3
- };
4
- var k = (e, t, r) => t.has(e) || g("Cannot " + r);
5
- var i = (e, t, r) => (k(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) => (k(e, t, "write to private field"), s ? s.call(e, r) : t.set(e, r), r);
6
- import { UnisatChainEnum as w, UnisatNetworkEnum as f } from "./index10.js";
7
- import { Ok as E, Err as a, executeWithTryCatch as h, Network as u } from "@gardenfi/utils";
8
- import { WALLET_CONFIG as l } from "./index3.js";
9
- var n, o;
10
- class U {
11
- constructor(t, r) {
12
- N(this, n);
13
- N(this, o);
14
- 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, n, t), T(this, o, r);
15
- }
16
- async connect(t) {
17
- try {
18
- t || (t = i(this, o));
19
- const r = await this.getNetwork(), s = await i(this, n).getChain();
20
- if (r.error)
21
- return a("Could not get network", r.error);
22
- if (r.val !== t || s.enum === w.BITCOIN_TESTNET) {
23
- const d = await this.switchNetwork();
24
- if (d.error)
25
- return a("Failed to switch network", d.error);
26
- }
27
- const c = await i(this, n).requestAccounts();
28
- return c.length > 0 && (this.address = c[0]), E({
29
- address: this.address,
30
- provider: this,
31
- network: t,
32
- id: l.Unisat.id
33
- });
34
- } catch (r) {
35
- return a("Error while connecting to the Unisat wallet", r);
36
- }
37
- }
38
- // requests accounts from the wallet, if not connected, it will connect first
39
- async requestAccounts() {
40
- return await h(async () => await i(this, n).requestAccounts(), "Error while requesting accounts from the Unisat wallet");
41
- }
42
- //silently gets accounts if already connected
43
- async getAccounts() {
44
- return await h(async () => await i(this, n).getAccounts(), "Error while getting accounts from the Unisat wallet");
45
- }
46
- async getNetwork() {
47
- return await h(async () => {
48
- const t = await i(this, n).getNetwork();
49
- if (t === f.LIVENET)
50
- return u.MAINNET;
51
- if (t === f.TESTNET)
52
- return u.TESTNET;
53
- throw new Error("Invalid or unsupported network" + t);
54
- }, "Error while getting network from Unisat wallet");
55
- }
56
- async switchNetwork() {
57
- try {
58
- const t = await this.getNetwork(), r = await i(this, n).getChain();
59
- if (t.error)
60
- return a("Failed to get current network");
61
- const s = t.val === u.MAINNET ? w.BITCOIN_TESTNET4 : i(this, o) === u.TESTNET && r.enum === w.BITCOIN_TESTNET ? w.BITCOIN_TESTNET4 : w.BITCOIN_MAINNET;
62
- await i(this, n).switchChain(s);
63
- const c = await this.getNetwork();
64
- return c.ok ? E(c.val) : a("Failed to verify network switch");
65
- } catch (t) {
66
- return a("Error while switching network in Unisat:", t);
67
- }
1
+ const o = {
2
+ Enkrypt: {
3
+ id: "enkrypt",
4
+ name: "Enkrypt Wallet",
5
+ icon: "https://2536749467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWHaZuaEtXZ0lYkuIWo8C%2Fuploads%2FQnJnFL186t5LWCLQofbg%2FEnkrypt%20E%20only%20Color%20logo.svg?alt=media&token=59f66a73-0795-41ea-8166-ec5416a4fc23"
6
+ },
7
+ LiteScribe: {
8
+ id: "litescribe",
9
+ name: "Litescribe Wallet",
10
+ icon: "https://lh3.googleusercontent.com/WRArwMWT7LP-i8OZZI1-LdJXvdT0wEiF-kpXuHu02KxdmyvMfrnZikLefy1SSyW5ozAFYcer5JDOZ-LPnIRKSCVvXJw=s120"
11
+ }
12
+ }, e = {
13
+ Enkrypt: {
14
+ id: "enkrypt",
15
+ name: "Enkrypt Wallet",
16
+ icon: "https://2536749467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWHaZuaEtXZ0lYkuIWo8C%2Fuploads%2FQnJnFL186t5LWCLQofbg%2FEnkrypt%20E%20only%20Color%20logo.svg?alt=media&token=59f66a73-0795-41ea-8166-ec5416a4fc23"
17
+ },
18
+ LiteScribe: {
19
+ id: "litescribe",
20
+ name: "Litescribe Wallet",
21
+ icon: "https://lh3.googleusercontent.com/WRArwMWT7LP-i8OZZI1-LdJXvdT0wEiF-kpXuHu02KxdmyvMfrnZikLefy1SSyW5ozAFYcer5JDOZ-LPnIRKSCVvXJw=s120"
68
22
  }
69
- async getBalance() {
70
- return await h(async () => await i(this, n).getBalance(), "Error while getting balance from Unisat wallet");
71
- }
72
- async sendBitcoin(t, r) {
73
- return await h(async () => await i(this, n).sendBitcoin(t, r), "Error while sending bitcoin from Unisat wallet");
74
- }
75
- on(t, r) {
76
- i(this, n).on(t, r);
77
- }
78
- off(t, r) {
79
- i(this, n).removeListener(t, r);
80
- }
81
- }
82
- n = new WeakMap(), o = new WeakMap();
23
+ };
83
24
  export {
84
- U as UnisatProvider
25
+ o as SupportedWallets,
26
+ e as WALLET_CONFIG
85
27
  };
package/dist/index7.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var m=r=>{throw TypeError(r)};var f=(r,t,e)=>t.has(r)||m("Cannot "+e);var a=(r,t,e)=>(f(r,t,"read from private field"),e?e.call(r):t.get(r)),w=(r,t,e)=>t.has(r)?m("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,e),g=(r,t,e,o)=>(f(r,t,"write to private field"),o?o.call(r,e):t.set(r,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("bitcoinjs-lib"),A=require("tiny-secp256k1"),n=require("@gardenfi/utils"),i=require("./index3.cjs"),P=require("@gardenfi/core"),x=require("./index4.cjs");function p(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const e in r)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:()=>r[e]})}}return t.default=r,Object.freeze(t)}const d=p(y),I=p(A);y.initEccLib(I);var s;class O{constructor(t){w(this,s);this.address="",this.id=i.WALLET_CONFIG.Phantom.id,this.name=i.WALLET_CONFIG.Phantom.name,this.icon=i.WALLET_CONFIG.Phantom.icon,this.disconnect=()=>(this.address="",Promise.resolve(n.Ok("Disconnected Phantom wallet"))),g(this,s,t)}async connect(t){if(t||(t=n.Network.MAINNET),t===n.Network.TESTNET)return n.Err("Phantom wallet does not support testnet");try{const e=await a(this,s).requestAccounts();for(const o of e)o.purpose==="payment"&&(this.address=o.address);return this.address===""?n.Err("Could not connect to Phantom bitcoin payment account"):n.Ok({address:this.address,provider:this,network:t,id:i.WALLET_CONFIG.Phantom.id})}catch(e){return n.Err("Error while connecting to Phantom wallet: "+e)}}async requestAccounts(){return await n.executeWithTryCatch(async()=>{const t=await a(this,s).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 n.Ok(n.Network.MAINNET)}async switchNetwork(){return n.Err("Phantom wallet does not support testnet")}async getBalance(){return await n.executeWithTryCatch(async()=>{const t=await x.getBalance(this.address,n.Network.MAINNET);if(t.ok&&t.val)return t.val;throw new Error(t.error)},"Error while getting balance from Phantom wallet")}async sendBitcoin(t,e){return await n.executeWithTryCatch(async()=>{const o=d.networks.bitcoin,h=new P.BitcoinProvider(n.Network.MAINNET);try{const{txHex:c,utxoCount:b}=await P.BitcoinWallet.generateUnsignedPSBT(h,o,this.address,t,e),E=await a(this,s).signPSBT(this.fromHexString(c),{inputsToSign:[{address:this.address,signingIndexes:Array.from({length:b},(S,T)=>T),sigHash:d.Transaction.SIGHASH_ALL}]}),l=d.Psbt.fromBuffer(Buffer.from(E));l.finalizeAllInputs();const u=l.extractTransaction();console.log("tx",u);const N=u.getId();return await h.broadcast(u.toHex()),N}catch(c){throw new Error(`Failed to send bitcoin: ${c}`)}},"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){a(this,s).on(t,e)}off(t,e){a(this,s).off(t,e)}}s=new WeakMap;exports.PhantomProvider=O;
1
+ "use strict";var O=s=>{throw TypeError(s)};var m=(s,t,r)=>t.has(s)||O("Cannot "+r);var i=(s,t,r)=>(m(s,t,"read from private field"),r?r.call(s):t.get(s)),v=(s,t,r)=>t.has(s)?O("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,r),E=(s,t,r,n)=>(m(s,t,"write to private field"),n?n.call(s,r):t.set(s,r),r);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("bitcoinjs-lib"),A=require("tiny-secp256k1"),e=require("@gardenfi/utils"),p=require("./index6.cjs"),b=require("./index14.cjs");function P(s){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const r in s)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(s,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>s[r]})}}return t.default=s,Object.freeze(t)}const N=P(I),L=P(A);N.initEccLib(L);var o,a;class x{constructor(t){v(this,o);v(this,a);this.address="",this.id=p.WALLET_CONFIG.Enkrypt.id,this.name=p.WALLET_CONFIG.Enkrypt.name,this.icon=p.WALLET_CONFIG.Enkrypt.icon,this.disconnect=()=>(this.address="",Promise.resolve(e.Ok("Disconnected Enkrypt wallet"))),E(this,o,t),E(this,a,e.Network.MAINNET)}async connect(t){if(t||(t=e.Network.MAINNET),t===e.Network.TESTNET)return e.Err("Enkrypt wallet does not support testnet");try{const r=await i(this,o).requestAccounts();return r.length>0&&(this.address=r[0]),e.Ok({address:this.address,provider:this,network:t,id:p.WALLET_CONFIG.Enkrypt.id})}catch(r){return e.Err("Error while connecting to Enkrypt wallet: "+r)}}async requestAccounts(){return await e.executeWithTryCatch(async()=>await i(this,o).requestAccounts(),"Error while requesting accounts from the Enkrypt wallet")}async getAccounts(){return this.requestAccounts()}async getNetwork(){return e.Ok(i(this,a))}async switchNetwork(){E(this,a,i(this,a)===e.Network.MAINNET?e.Network.TESTNET:e.Network.MAINNET);const t=await this.connect();return t.error?e.Err(`Failed to connect to ${i(this,a)}: ${t.error}`):e.Ok(i(this,a))}async getBalance(){let t=await this.getAccounts();if(!t.ok)return e.Err("Failed to get address");this.address=t.val[0];const r=await this.getNetwork();return r.ok?(E(this,a,r.val),await b.getBalance(this.address,i(this,a))):e.Err("Failed to get network")}async sendLitecoin(t,r){try{const n=await this.getAccounts();if(!n.ok)return e.Err("Failed to get address");this.address=n.val[0];const g=await this.getNetwork();if(!g.ok)return e.Err("Failed to get network");if(E(this,a,g.val),!t||t.trim()==="")return e.Err("Invalid destination address");if(r<=0)return e.Err("Amount must be greater than 0");const l=await this.getBalance();if(!l.ok)return e.Err("Failed to get balance",l.error);if(l.val.total<r)return e.Err("Insufficient balance");const u=await b.getUTXOs(this.address,i(this,a));if(!u.ok)return e.Err("Failed to fetch UTXOs",u.error);const w=u.val;if(!w||w.length===0)return e.Err("No UTXOs available");const h=await this.buildTransaction(w,t,r,this.address);if(!h.ok)return e.Err("Failed to build transaction",h.error);const f=await this.signPsbt(h.val);if(!f.ok)return e.Err("Failed to sign transaction",f.error);const c=await this.broadcastTransaction(f.val);return c.ok?e.Ok(c.val):e.Err("Failed to broadcast transaction",c.error)}catch(n){return n instanceof Error?n.message.includes("User rejected")||n.message.includes("cancelled")||n.message.includes("denied")?e.Err("Transaction cancelled by user"):e.Err("Error while sending Litecoin: "+n.message):e.Err("Error while sending Litecoin",String(n))}}async buildTransaction(t,r,n,g){try{const l=b.getLitecoinNetwork(i(this,a)),u=new N.Psbt({network:l}),w=t.sort((d,k)=>k.value-d.value),h=await b.getRecommendedFeeRate(i(this,a));if(!h.ok)return e.Err("Failed to fetch recommended fee rate",h.error);const f=h.val;let c=0;for(const d of w){if(c>=n+f*250)break;let k;try{k={script:N.address.toOutputScript(g,l),value:d.value}}catch{if(d.scriptPubKey)k={script:Buffer.from(d.scriptPubKey,"hex"),value:d.value};else throw new Error("Cannot determine script for UTXO")}u.addInput({hash:d.txid,index:d.vout,witnessUtxo:k}),c+=d.value}if(c===0)return e.Err("No valid UTXOs found");const y=(u.txInputs.length*148+2*34+10)*f;if(c<n+y)return e.Err(`Insufficient funds: need ${n+y} sats, have ${c} sats`);u.addOutput({address:r,value:n});const T=c-n-y;return T>546&&u.addOutput({address:g,value:T}),e.Ok(u.toBase64())}catch(l){return e.Err("Error building transaction",String(l))}}async signPsbt(t){return await e.executeWithTryCatch(async()=>await i(this,o).signPsbt(t),"Error while signing transaction")}async broadcastTransaction(t){const r=typeof i(this,o).pushPsbt=="function"?i(this,o).pushPsbt.bind(i(this,o)):void 0;return await b.broadcastTransaction(t,i(this,a),r)}on(t,r){i(this,o).on(t,r)}off(t,r){i(this,o).off(t,r)}}o=new WeakMap,a=new WeakMap;exports.EnkryptProvider=x;