@gardenfi/wallet-connectors 2.5.0 → 3.0.0-beta.10
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.
- package/dist/index.cjs +1 -1
- package/dist/index.js +10 -5
- package/dist/index10.cjs +1 -1
- package/dist/index10.js +72 -70
- package/dist/index11.cjs +1 -1
- package/dist/index11.js +82 -40
- package/dist/index12.cjs +1 -1
- package/dist/index12.js +71 -159
- package/dist/index13.cjs +1 -1
- package/dist/index13.js +40 -180
- package/dist/index14.cjs +1 -1
- package/dist/index14.js +169 -3
- package/dist/index15.cjs +1 -1
- package/dist/index15.js +206 -2
- package/dist/index16.cjs +1 -1
- package/dist/index16.js +8 -2
- package/dist/index17.cjs +1 -3
- package/dist/index17.js +2 -114
- package/dist/index18.cjs +1 -1
- package/dist/index18.js +3 -2
- package/dist/index19.cjs +1 -0
- package/dist/index19.js +4 -0
- package/dist/index2.cjs +1 -1
- package/dist/index2.js +5 -5
- package/dist/index20.cjs +1 -0
- package/dist/index20.js +4 -0
- package/dist/index21.cjs +3 -0
- package/dist/index21.js +116 -0
- package/dist/index22.cjs +1 -0
- package/dist/index22.js +4 -0
- package/dist/index5.cjs +1 -1
- package/dist/index5.js +2 -2
- package/dist/index7.cjs +1 -1
- package/dist/index7.js +110 -60
- package/dist/index8.cjs +1 -1
- package/dist/index8.js +90 -72
- package/dist/index9.cjs +1 -1
- package/dist/index9.js +38 -84
- package/dist/src/index.d.ts +1 -0
- package/dist/src/spark/constants.d.ts +14 -0
- package/dist/src/spark/index.d.ts +5 -0
- package/dist/src/spark/providers/sparkWalletsProvider.d.ts +13 -0
- package/dist/src/spark/providers/sparkWalletsProvider.types.d.ts +22 -0
- package/dist/src/spark/providers/xverse/provider.d.ts +28 -0
- package/dist/src/spark/providers/xverse/xverse.types.d.ts +11 -0
- package/dist/src/spark/spark.types.d.ts +51 -0
- package/package.json +4 -3
package/dist/index21.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Err as s, Fetcher as u, Ok as i, Network as d } from "@gardenfi/utils";
|
|
2
|
+
import * as x from "bitcoinjs-lib";
|
|
3
|
+
import { Psbt as y } from "bitcoinjs-lib";
|
|
4
|
+
import * as b from "tiny-secp256k1";
|
|
5
|
+
x.initEccLib(b);
|
|
6
|
+
const w = {
|
|
7
|
+
messagePrefix: `Litecoin Signed Message:
|
|
8
|
+
`,
|
|
9
|
+
bech32: "ltc",
|
|
10
|
+
bip32: {
|
|
11
|
+
public: 27108450,
|
|
12
|
+
private: 27106558
|
|
13
|
+
},
|
|
14
|
+
pubKeyHash: 48,
|
|
15
|
+
scriptHash: 50,
|
|
16
|
+
wif: 176
|
|
17
|
+
}, T = {
|
|
18
|
+
messagePrefix: `Litecoin Signed Message:
|
|
19
|
+
`,
|
|
20
|
+
bech32: "tltc",
|
|
21
|
+
bip32: {
|
|
22
|
+
public: 70711009,
|
|
23
|
+
private: 70709117
|
|
24
|
+
},
|
|
25
|
+
pubKeyHash: 111,
|
|
26
|
+
scriptHash: 58,
|
|
27
|
+
wif: 239
|
|
28
|
+
}, E = (t) => t === d.MAINNET ? w : T, f = {
|
|
29
|
+
testnet: {
|
|
30
|
+
Mempool: "https://litecoinspace.org/testnet"
|
|
31
|
+
},
|
|
32
|
+
mainnet: {
|
|
33
|
+
Mempool: "https://litecoinspace.org"
|
|
34
|
+
},
|
|
35
|
+
localnet: {
|
|
36
|
+
Mempool: "http://localhost:30000"
|
|
37
|
+
}
|
|
38
|
+
}, I = async (t, o) => {
|
|
39
|
+
console.log("getBalance", t, o);
|
|
40
|
+
let r = f[o];
|
|
41
|
+
if (!r) return s("Invalid network");
|
|
42
|
+
const n = `${r.Mempool}/api/address/${t}`;
|
|
43
|
+
console.log("mempoolUrl", n);
|
|
44
|
+
try {
|
|
45
|
+
const e = [n], a = await u.getWithFallback(e, {
|
|
46
|
+
retryCount: 3,
|
|
47
|
+
retryDelay: 1e3
|
|
48
|
+
}), l = a.chain_stats.funded_txo_sum - a.chain_stats.spent_txo_sum, c = a.mempool_stats.funded_txo_sum - a.mempool_stats.spent_txo_sum, p = l + c;
|
|
49
|
+
return i({
|
|
50
|
+
confirmed: l,
|
|
51
|
+
unconfirmed: c,
|
|
52
|
+
total: p
|
|
53
|
+
});
|
|
54
|
+
} catch (e) {
|
|
55
|
+
return s("Error while fetching balance", e);
|
|
56
|
+
}
|
|
57
|
+
}, M = async (t, o, r) => {
|
|
58
|
+
try {
|
|
59
|
+
if (r && typeof r == "function") {
|
|
60
|
+
const h = await r(t);
|
|
61
|
+
return i(h);
|
|
62
|
+
}
|
|
63
|
+
const n = E(o), e = y.fromBase64(t, {
|
|
64
|
+
network: n
|
|
65
|
+
});
|
|
66
|
+
e.finalizeAllInputs();
|
|
67
|
+
const l = e.extractTransaction().toHex(), c = f[o];
|
|
68
|
+
if (!c) return s("Invalid network");
|
|
69
|
+
const p = `${c.Mempool}/api/tx`, m = await fetch(p, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
headers: { "Content-Type": "text/plain" },
|
|
72
|
+
body: l
|
|
73
|
+
});
|
|
74
|
+
if (!m.ok) {
|
|
75
|
+
const h = await m.text();
|
|
76
|
+
return s(`Broadcast failed: ${h}`);
|
|
77
|
+
}
|
|
78
|
+
const g = await m.text();
|
|
79
|
+
return i(g.trim());
|
|
80
|
+
} catch (n) {
|
|
81
|
+
return s(`Error while broadcasting transaction: ${n}`);
|
|
82
|
+
}
|
|
83
|
+
}, k = async (t, o) => {
|
|
84
|
+
let r = f[o];
|
|
85
|
+
if (!r) return s("Invalid network");
|
|
86
|
+
console.log("getUTXOs", t, o);
|
|
87
|
+
const n = `${r.Mempool}/api/address/${t}/utxo`;
|
|
88
|
+
try {
|
|
89
|
+
const e = [n], a = await u.getWithFallback(e, {
|
|
90
|
+
retryCount: 3,
|
|
91
|
+
retryDelay: 1e3
|
|
92
|
+
});
|
|
93
|
+
return i(a);
|
|
94
|
+
} catch (e) {
|
|
95
|
+
return s("Error while fetching UTXOs", e);
|
|
96
|
+
}
|
|
97
|
+
}, U = async (t) => {
|
|
98
|
+
try {
|
|
99
|
+
const r = `${t === d.MAINNET ? "https://litecoinspace.org" : "https://litecoinspace.org/testnet"}/api/v1/fees/recommended`, n = await u.getWithFallback([r], {
|
|
100
|
+
retryCount: 3,
|
|
101
|
+
retryDelay: 1e3
|
|
102
|
+
}), e = n.halfHourFee === 1 ? 2 : n.halfHourFee;
|
|
103
|
+
return i(e);
|
|
104
|
+
} catch (o) {
|
|
105
|
+
return s("Error while fetching recommended fee rate", o);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
export {
|
|
109
|
+
w as LITECOIN_NETWORK,
|
|
110
|
+
T as LITECOIN_TESTNET,
|
|
111
|
+
M as broadcastTransaction,
|
|
112
|
+
I as getBalance,
|
|
113
|
+
E as getLitecoinNetwork,
|
|
114
|
+
U as getRecommendedFeeRate,
|
|
115
|
+
k as getUTXOs
|
|
116
|
+
};
|
package/dist/index22.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var t=(e=>(e.LIVENET="livenet",e.TESTNET="testnet",e))(t||{});exports.LitescribeNetworkEnum=t;
|
package/dist/index22.js
ADDED
package/dist/index5.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),L=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),L=require("./index14.cjs"),o=require("@gardenfi/utils"),A=require("./index15.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,7 +1,7 @@
|
|
|
1
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 "./
|
|
2
|
+
import { EnkryptProvider as S } from "./index14.js";
|
|
3
3
|
import { Err as w, Ok as C, Void as y } from "@gardenfi/utils";
|
|
4
|
-
import { LitescribeProvider as J } from "./
|
|
4
|
+
import { LitescribeProvider as J } from "./index15.js";
|
|
5
5
|
const g = T(void 0), V = ({
|
|
6
6
|
children: r,
|
|
7
7
|
network: a,
|
package/dist/index7.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),g=require("./index8.cjs"),i=require("@gardenfi/utils"),b=require("sats-connect"),S=o.createContext(void 0),x=({children:v,network:l,store:p})=>{const[t,P]=o.useState(),[w,c]=o.useState(),[C,u]=o.useState(!1),[f,W]=o.useState({}),m=o.useMemo(()=>!!t&&!!w,[t,w]),y=async r=>{u(!0);const e=await r.connect(l);return e.ok?e.val.network!==l?(u(!1),i.Err("Network mismatch")):(P(e.val.provider),c(e.val.address),p.setItem("sparkWallet",JSON.stringify(e.val)),u(!1),i.Ok(i.Void)):(u(!1),i.Err(e.error))},E=()=>t?(t.disconnect(),P(void 0),c(void 0),p.removeItem("sparkWallet"),i.Ok(i.Void)):i.Err("No provider to disconnect"),h=o.useCallback(async()=>{if(!t)return;const r=await t.getAccounts();if(!r.ok){console.error("Error getting accounts:",r.error);return}c(r.val[0]);const e=await t.getNetwork();if(e.error){console.error("Error getting network:",e.error);return}},[t]),k=r=>{W(e=>({...e,[r.id]:r}))},A=async()=>{var r,e,n;try{if(b.getProviders().find(s=>s.id==="BitcoinProvider"||s.id.toLowerCase().includes("xverseproviders.bitcoinprovider"))&&((r=window.XverseProviders)!=null&&r.BitcoinProvider)){const s=new g.XverseSparkProvider(window.XverseProviders.BitcoinProvider);k(s)}else if((e=window.XverseProviders)!=null&&e.BitcoinProvider){const s=new g.XverseSparkProvider(window.XverseProviders.BitcoinProvider);k(s)}}catch{if((n=window.XverseProviders)!=null&&n.BitcoinProvider){const d=new g.XverseSparkProvider(window.XverseProviders.BitcoinProvider);k(d)}}},X=async()=>{const r=p.getItem("sparkWallet");if(r){const e=JSON.parse(r),n=f[e.id];if(n){const a=await n.getAccounts();if(!a.ok||!a.val[0])return;const d=await n.getNetwork();if(d.error||d.val!==l)return;P(n),c(a.val[0])}}};return o.useEffect(()=>{A()},[]),o.useEffect(()=>{f&&X()},[f]),o.useEffect(()=>{if(!t)return;const r=async e=>{e.length!==0&&c(e[0])};return t.on("accountsChanged",r),()=>{t.off("accountsChanged",r)}},[t]),o.createElement(S.Provider,{value:{availableWallets:f,connect:y,provider:t,account:w,network:l,isConnecting:C,updateAccount:h,disconnect:E,isConnected:m}},v)},B=()=>{const v=o.useContext(S);if(!v)throw new Error("useSparkWallet must be used within SparkWalletProvider");return v};exports.SparkWalletProvider=x;exports.useSparkWallet=B;
|
package/dist/index7.js
CHANGED
|
@@ -1,64 +1,114 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
};
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
async
|
|
1
|
+
import b, { useState as u, useMemo as I, useCallback as L, useEffect as k, createContext as O, useContext as J } from "react";
|
|
2
|
+
import { XverseSparkProvider as g } from "./index8.js";
|
|
3
|
+
import { Err as m, Ok as C, Void as W } from "@gardenfi/utils";
|
|
4
|
+
import { getProviders as z } from "sats-connect";
|
|
5
|
+
const h = O(void 0), V = ({
|
|
6
|
+
children: a,
|
|
7
|
+
network: d,
|
|
8
|
+
store: f
|
|
9
|
+
}) => {
|
|
10
|
+
const [t, p] = u(), [w, i] = u(), [A, v] = u(!1), [l, S] = u(
|
|
11
|
+
{}
|
|
12
|
+
), x = I(
|
|
13
|
+
() => !!t && !!w,
|
|
14
|
+
[t, w]
|
|
15
|
+
), y = async (e) => {
|
|
16
|
+
v(!0);
|
|
17
|
+
const r = await e.connect(d);
|
|
18
|
+
return r.ok ? r.val.network !== d ? (v(!1), m("Network mismatch")) : (p(r.val.provider), i(r.val.address), f.setItem("sparkWallet", JSON.stringify(r.val)), v(!1), C(W)) : (v(!1), m(r.error));
|
|
19
|
+
}, B = () => t ? (t.disconnect(), p(void 0), i(void 0), f.removeItem("sparkWallet"), C(W)) : m("No provider to disconnect"), N = L(async () => {
|
|
20
|
+
if (!t) return;
|
|
21
|
+
const e = await t.getAccounts();
|
|
22
|
+
if (!e.ok) {
|
|
23
|
+
console.error("Error getting accounts:", e.error);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
i(e.val[0]);
|
|
27
|
+
const r = await t.getNetwork();
|
|
28
|
+
if (r.error) {
|
|
29
|
+
console.error("Error getting network:", r.error);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}, [t]), P = (e) => {
|
|
33
|
+
S((r) => ({
|
|
34
|
+
...r,
|
|
35
|
+
[e.id]: e
|
|
36
|
+
}));
|
|
37
|
+
}, X = async () => {
|
|
38
|
+
var e, r, o;
|
|
16
39
|
try {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
if (z().find(
|
|
41
|
+
(n) => n.id === "BitcoinProvider" || n.id.toLowerCase().includes("xverseproviders.bitcoinprovider")
|
|
42
|
+
) && ((e = window.XverseProviders) != null && e.BitcoinProvider)) {
|
|
43
|
+
const n = new g(
|
|
44
|
+
window.XverseProviders.BitcoinProvider
|
|
45
|
+
);
|
|
46
|
+
P(n);
|
|
47
|
+
} else if ((r = window.XverseProviders) != null && r.BitcoinProvider) {
|
|
48
|
+
const n = new g(
|
|
49
|
+
window.XverseProviders.BitcoinProvider
|
|
50
|
+
);
|
|
51
|
+
P(n);
|
|
52
|
+
}
|
|
53
|
+
} catch {
|
|
54
|
+
if ((o = window.XverseProviders) != null && o.BitcoinProvider) {
|
|
55
|
+
const c = new g(
|
|
56
|
+
window.XverseProviders.BitcoinProvider
|
|
57
|
+
);
|
|
58
|
+
P(c);
|
|
59
|
+
}
|
|
26
60
|
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
}, E = async () => {
|
|
62
|
+
const e = f.getItem("sparkWallet");
|
|
63
|
+
if (e) {
|
|
64
|
+
const r = JSON.parse(
|
|
65
|
+
e
|
|
66
|
+
), o = l[r.id];
|
|
67
|
+
if (o) {
|
|
68
|
+
const s = await o.getAccounts();
|
|
69
|
+
if (!s.ok || !s.val[0]) return;
|
|
70
|
+
const c = await o.getNetwork();
|
|
71
|
+
if (c.error || c.val !== d) return;
|
|
72
|
+
p(o), i(s.val[0]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return k(() => {
|
|
77
|
+
X();
|
|
78
|
+
}, []), k(() => {
|
|
79
|
+
l && E();
|
|
80
|
+
}, [l]), k(() => {
|
|
81
|
+
if (!t) return;
|
|
82
|
+
const e = async (r) => {
|
|
83
|
+
r.length !== 0 && i(r[0]);
|
|
84
|
+
};
|
|
85
|
+
return t.on("accountsChanged", e), () => {
|
|
86
|
+
t.off("accountsChanged", e);
|
|
87
|
+
};
|
|
88
|
+
}, [t]), /* @__PURE__ */ b.createElement(
|
|
89
|
+
h.Provider,
|
|
90
|
+
{
|
|
91
|
+
value: {
|
|
92
|
+
availableWallets: l,
|
|
93
|
+
connect: y,
|
|
94
|
+
provider: t,
|
|
95
|
+
account: w,
|
|
96
|
+
network: d,
|
|
97
|
+
isConnecting: A,
|
|
98
|
+
updateAccount: N,
|
|
99
|
+
disconnect: B,
|
|
100
|
+
isConnected: x
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
a
|
|
104
|
+
);
|
|
105
|
+
}, _ = () => {
|
|
106
|
+
const a = J(h);
|
|
107
|
+
if (!a)
|
|
108
|
+
throw new Error("useSparkWallet must be used within SparkWalletProvider");
|
|
109
|
+
return a;
|
|
110
|
+
};
|
|
62
111
|
export {
|
|
63
|
-
|
|
112
|
+
V as SparkWalletProvider,
|
|
113
|
+
_ as useSparkWallet
|
|
64
114
|
};
|
package/dist/index8.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var w=n=>{throw TypeError(n)};var k=(n,r,e)=>r.has(n)||w("Cannot "+e);var l=(n,r,e)=>(k(n,r,"read from private field"),e?e.call(n):r.get(n)),d=(n,r,e)=>r.has(n)?w("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(n):r.set(n,e),h=(n,r,e,s)=>(k(n,r,"write to private field"),s?s.call(n,e):r.set(n,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./index16.cjs"),o=require("./index17.cjs"),a=require("@gardenfi/utils"),c=require("sats-connect");var i;class p{constructor(r){d(this,i);this.address="",this.id=u.WALLET_CONFIG.Xverse.id,this.name=u.WALLET_CONFIG.Xverse.name,this.icon=u.WALLET_CONFIG.Xverse.icon,this.connect=async e=>{try{e||(e=a.Network.TESTNET);const s=e===a.Network.MAINNET?o.XverseSparkNetworkType.Mainnet:o.XverseSparkNetworkType.Regtest;await l(this,i).request("wallet_connect",{network:s});const t=await this.getAccounts();return t.ok&&t.val.length>0&&(this.address=t.val[0]),a.Ok({address:this.address,provider:this,network:e,id:u.WALLET_CONFIG.Xverse.id})}catch(s){return a.Err("Error while connecting to the XVerse Spark wallet",s)}},this.getBalance=async()=>await a.executeWithTryCatch(async()=>{const e=await c.request("spark_getBalance",null);if(e.status==="success"&&e.result){const s=e.result,t=parseInt(s.balance||"0",10);return{confirmed:t,unconfirmed:0,total:t}}throw new Error("Failed to get Spark balance")},"Error while getting balance from XVerse Spark wallet"),this.requestAccounts=async()=>await a.executeWithTryCatch(async()=>{const e=await c.request("spark_getAddresses",null);if(e.status==="success"&&e.result)return e.result.addresses.map(t=>t.address);throw new Error("Failed to get Spark addresses")},"Error while requesting accounts from XVerse Spark wallet"),this.getAccounts=async()=>await a.executeWithTryCatch(async()=>{const e=await c.request("spark_getAddresses",null);if(e.status==="success"&&e.result)return e.result.addresses.map(t=>t.address);throw new Error("Failed to get Spark addresses")},"Error while getting accounts from XVerse Spark wallet"),this.sendSpark=async(e,s)=>await a.executeWithTryCatch(async()=>{const t=await c.request("spark_transfer",{receiverSparkAddress:e,amountSats:s});if(t.status==="success"&&t.result)return t.result.id;throw new Error("Failed to send Spark transaction")},"Error while sending Spark from Xverse Spark wallet"),this.on=()=>{},this.off=()=>{},this.disconnect=()=>(this.address="",Promise.resolve(a.Ok("Disconnected"))),h(this,i,r)}async getNetwork(){return await a.executeWithTryCatch(async()=>{var e,s;const r=await c.request("wallet_getNetwork",null);if(r.status==="success"&&r.result){const t=r.result;if(((e=t==null?void 0:t.spark)==null?void 0:e.name)===o.XverseSparkNetworkType.Mainnet)return a.Network.MAINNET;if(((s=t==null?void 0:t.spark)==null?void 0:s.name)===o.XverseSparkNetworkType.Regtest)return a.Network.TESTNET}throw new Error("Could not determine Spark network")},"Error while getting network from Xverse Spark wallet")}async switchNetwork(){try{const r=await this.getNetwork();if(r.error)return a.Err("Failed to get current network");const e=r.val===a.Network.MAINNET?o.XverseSparkNetworkType.Regtest:o.XverseSparkNetworkType.Mainnet;try{await l(this,i).request("wallet_changeNetwork",{name:e})}catch{return a.Err("Network switching not supported. Please switch network manually in Xverse wallet.")}const s=await this.getNetwork();return s.ok?a.Ok(s.val):a.Err("Failed to verify network switch")}catch(r){return a.Err("Error while switching network in Xverse Spark:",r)}}}i=new WeakMap;exports.XverseSparkProvider=p;
|
package/dist/index8.js
CHANGED
|
@@ -1,85 +1,103 @@
|
|
|
1
|
-
var
|
|
2
|
-
throw TypeError(
|
|
1
|
+
var k = (a) => {
|
|
2
|
+
throw TypeError(a);
|
|
3
3
|
};
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.address = "", this.id =
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
4
|
+
var p = (a, r, e) => r.has(a) || k("Cannot " + e);
|
|
5
|
+
var d = (a, r, e) => (p(a, r, "read from private field"), e ? e.call(a) : r.get(a)), g = (a, r, e) => r.has(a) ? k("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(a) : r.set(a, e), f = (a, r, e, s) => (p(a, r, "write to private field"), s ? s.call(a, e) : r.set(a, e), e);
|
|
6
|
+
import { WALLET_CONFIG as w } from "./index16.js";
|
|
7
|
+
import { XverseSparkNetworkType as n } from "./index17.js";
|
|
8
|
+
import { Network as i, Ok as h, Err as c, executeWithTryCatch as l } from "@gardenfi/utils";
|
|
9
|
+
import { request as u } from "sats-connect";
|
|
10
|
+
var o;
|
|
11
|
+
class y {
|
|
12
|
+
constructor(r) {
|
|
13
|
+
g(this, o);
|
|
14
|
+
this.address = "", this.id = w.Xverse.id, this.name = w.Xverse.name, this.icon = w.Xverse.icon, this.connect = async (e) => {
|
|
15
|
+
try {
|
|
16
|
+
e || (e = i.TESTNET);
|
|
17
|
+
const s = e === i.MAINNET ? n.Mainnet : n.Regtest;
|
|
18
|
+
await d(this, o).request("wallet_connect", {
|
|
19
|
+
network: s
|
|
20
|
+
});
|
|
21
|
+
const t = await this.getAccounts();
|
|
22
|
+
return t.ok && t.val.length > 0 && (this.address = t.val[0]), h({
|
|
23
|
+
address: this.address,
|
|
24
|
+
provider: this,
|
|
25
|
+
network: e,
|
|
26
|
+
id: w.Xverse.id
|
|
27
|
+
});
|
|
28
|
+
} catch (s) {
|
|
29
|
+
return c("Error while connecting to the XVerse Spark wallet", s);
|
|
30
|
+
}
|
|
31
|
+
}, this.getBalance = async () => await l(async () => {
|
|
32
|
+
const e = await u("spark_getBalance", null);
|
|
33
|
+
if (e.status === "success" && e.result) {
|
|
34
|
+
const s = e.result, t = parseInt(s.balance || "0", 10);
|
|
35
|
+
return {
|
|
36
|
+
confirmed: t,
|
|
37
|
+
unconfirmed: 0,
|
|
38
|
+
total: t
|
|
39
|
+
};
|
|
26
40
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
throw new Error("Failed to get Spark balance");
|
|
42
|
+
}, "Error while getting balance from XVerse Spark wallet"), this.requestAccounts = async () => await l(async () => {
|
|
43
|
+
const e = await u("spark_getAddresses", null);
|
|
44
|
+
if (e.status === "success" && e.result)
|
|
45
|
+
return e.result.addresses.map((t) => t.address);
|
|
46
|
+
throw new Error("Failed to get Spark addresses");
|
|
47
|
+
}, "Error while requesting accounts from XVerse Spark wallet"), this.getAccounts = async () => await l(async () => {
|
|
48
|
+
const e = await u("spark_getAddresses", null);
|
|
49
|
+
if (e.status === "success" && e.result)
|
|
50
|
+
return e.result.addresses.map((t) => t.address);
|
|
51
|
+
throw new Error("Failed to get Spark addresses");
|
|
52
|
+
}, "Error while getting accounts from XVerse Spark wallet"), this.sendSpark = async (e, s) => await l(async () => {
|
|
53
|
+
const t = await u("spark_transfer", {
|
|
54
|
+
receiverSparkAddress: e,
|
|
55
|
+
amountSats: s
|
|
33
56
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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");
|
|
57
|
+
if (t.status === "success" && t.result)
|
|
58
|
+
return t.result.id;
|
|
59
|
+
throw new Error("Failed to send Spark transaction");
|
|
60
|
+
}, "Error while sending Spark from Xverse Spark wallet"), this.on = () => {
|
|
61
|
+
}, this.off = () => {
|
|
62
|
+
}, this.disconnect = () => (this.address = "", Promise.resolve(h("Disconnected"))), f(this, o, r);
|
|
45
63
|
}
|
|
46
64
|
async getNetwork() {
|
|
47
|
-
return await
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
return await l(async () => {
|
|
66
|
+
var e, s;
|
|
67
|
+
const r = await u("wallet_getNetwork", null);
|
|
68
|
+
if (r.status === "success" && r.result) {
|
|
69
|
+
const t = r.result;
|
|
70
|
+
if (((e = t == null ? void 0 : t.spark) == null ? void 0 : e.name) === n.Mainnet)
|
|
71
|
+
return i.MAINNET;
|
|
72
|
+
if (((s = t == null ? void 0 : t.spark) == null ? void 0 : s.name) === n.Regtest)
|
|
73
|
+
return i.TESTNET;
|
|
74
|
+
}
|
|
75
|
+
throw new Error("Could not determine Spark network");
|
|
76
|
+
}, "Error while getting network from Xverse Spark wallet");
|
|
55
77
|
}
|
|
56
78
|
async switchNetwork() {
|
|
57
79
|
try {
|
|
58
|
-
const
|
|
59
|
-
if (
|
|
60
|
-
return
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
80
|
+
const r = await this.getNetwork();
|
|
81
|
+
if (r.error)
|
|
82
|
+
return c("Failed to get current network");
|
|
83
|
+
const e = r.val === i.MAINNET ? n.Regtest : n.Mainnet;
|
|
84
|
+
try {
|
|
85
|
+
await d(this, o).request("wallet_changeNetwork", {
|
|
86
|
+
name: e
|
|
87
|
+
});
|
|
88
|
+
} catch {
|
|
89
|
+
return c(
|
|
90
|
+
"Network switching not supported. Please switch network manually in Xverse wallet."
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
const s = await this.getNetwork();
|
|
94
|
+
return s.ok ? h(s.val) : c("Failed to verify network switch");
|
|
95
|
+
} catch (r) {
|
|
96
|
+
return c("Error while switching network in Xverse Spark:", r);
|
|
67
97
|
}
|
|
68
98
|
}
|
|
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
99
|
}
|
|
82
|
-
|
|
100
|
+
o = new WeakMap();
|
|
83
101
|
export {
|
|
84
|
-
|
|
102
|
+
y as XverseSparkProvider
|
|
85
103
|
};
|
package/dist/index9.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
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;
|