@gardenfi/react-hooks 2.0.28-beta.9 → 2.1.0

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/index2.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),E=require("./index3.cjs"),d=require("@gardenfi/core"),a=require("./index4.cjs"),c=require("@gardenfi/orderbook"),G=require("./index5.cjs"),T=require("./index6.cjs"),p=o.createContext({}),q=({children:l,config:e})=>{const[r,h]=o.useState(),{digestKey:i}=T.useDigestKey(),{pendingOrders:k}=E.useOrderbook(r,i),v=o.useMemo(()=>e.quote??new d.Quote(d.API[e.environment].quote),[e.quote,e.environment]),m=o.useMemo(()=>async({fromAsset:s,toAsset:t,amount:u,isExactOut:w=!1,request:n})=>await v.getQuote(G.constructOrderpair(s,t),u,w,n),[v]),C=async s=>{if(!r)return a.Err("Garden not initialized");const t=await r.swap(s);if(t.error)return a.Err(t.error);if(c.isBitcoin(t.val.source_swap.chain))return a.Ok(t.val);let u;switch(c.getBlockchainType(t.val.source_swap.chain)){case c.BlockchainType.EVM:{if(!r.evmHTLC)return a.Err("EVM HTLC not initialized: Please provide evmHTLC");const n=await r.evmHTLC.initiate(t.val);if(n.error)return a.Err(n.error);u=n.val;break}case c.BlockchainType.Starknet:{if(!r.starknetHTLC)return a.Err("Starknet HTLC not initialized: Please provide starknetHTLC");const n=await r.starknetHTLC.initiate(t.val);if(n.error)return a.Err(n.error);u=n.val;break}default:return a.Err("Unsupported chain")}const w={...t.val,source_swap:{...t.val.source_swap,initiate_tx_hash:u}};return a.Ok(w)};return o.useEffect(()=>{if(!window||!i||!e.wallets&&!e.htlc)return;let s;if(e.wallets)s=d.Garden.from({environment:e.environment,digestKey:i,wallets:e.wallets,siweOpts:{store:localStorage}});else if(e.htlc)s=new d.Garden({environment:e.environment,digestKey:i,htlc:e.htlc,siweOpts:{store:localStorage}});else return;h(s)},[e.wallets,e.htlc,e.environment,i]),o.createElement(p.Provider,{value:{orderBook:r==null?void 0:r.orderbook,quote:v,swapAndInitiate:C,pendingOrders:k,getQuote:m,garden:r}},l)},y=()=>{const l=o.useContext(p);if(!l)throw new Error("useGarden must be used within a GardenProvider");return l};exports.GardenContext=p;exports.GardenProvider=q;exports.useGarden=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),f=require("./index3.cjs"),k=require("@gardenfi/core"),n=require("./index4.cjs"),c=require("@gardenfi/orderbook"),C=require("./index5.cjs"),E=require("./index6.cjs"),v=o.createContext({pendingOrders:[]}),G=({children:d,config:a})=>{const[e,p]=o.useState(),{digestKey:u}=E.useDigestKey(),{pendingOrders:w}=f.useOrderbook(e,u),h=o.useMemo(()=>async({fromAsset:i,toAsset:r,amount:s,isExactOut:l=!1,request:t})=>e&&await e.quote.getQuote(C.constructOrderpair(i,r),s,l,t),[e]),T=async i=>{if(!e)return n.Err("Garden not initialized");const r=await e.swap(i);if(r.error)return n.Err(r.error);if(c.isBitcoin(r.val.source_swap.chain))return n.Ok(r.val);let s;switch(c.getBlockchainType(r.val.source_swap.chain)){case c.BlockchainType.EVM:{if(!e.evmHTLC)return n.Err("EVM HTLC not initialized: Please provide evmHTLC");const t=await e.evmHTLC.initiate(r.val);if(t.error)return n.Err(t.error);s=t.val;break}case c.BlockchainType.Starknet:{if(!e.starknetHTLC)return n.Err("Starknet HTLC not initialized: Please provide starknetHTLC");const t=await e.starknetHTLC.initiate(r.val);if(t.error)return n.Err(t.error);s=t.val;break}case c.BlockchainType.Bitcoin:s=r.val.source_swap.initiate_tx_hash;break;default:return n.Err("Unsupported chain")}const l={...r.val,source_swap:{...r.val.source_swap,initiate_tx_hash:s}};return n.Ok(l)};return o.useEffect(()=>{if(!window||!u||!("wallets"in a)&&!("htlc"in a))return;let i;if("wallets"in a)i=k.Garden.fromWallets({...a,digestKey:u});else if("htlc"in a)i=new k.Garden({...a,digestKey:u});else return;p(i)},[a,u]),o.createElement(v.Provider,{value:{swapAndInitiate:T,pendingOrders:w,getQuote:h,garden:e,orderBook:e==null?void 0:e.orderbook}},d)},y=()=>{const d=o.useContext(v);if(!d)throw new Error("useGarden must be used within a GardenProvider");return d};exports.GardenContext=v;exports.GardenProvider=G;exports.useGarden=y;
package/dist/index2.js CHANGED
@@ -1,111 +1,107 @@
1
- import w, { createContext as G, useState as H, useMemo as c, useEffect as L } from "react";
2
- import { useOrderbook as _ } from "./index3.js";
3
- import { Quote as O, API as x, Garden as m } from "@gardenfi/core";
4
- import { Err as o, Ok as p } from "./index4.js";
5
- import { isBitcoin as y, getBlockchainType as E, BlockchainType as v } from "@gardenfi/orderbook";
6
- import { constructOrderpair as P } from "./index5.js";
7
- import { useDigestKey as b } from "./index6.js";
8
- const h = G({}), R = ({
9
- children: l,
10
- config: e
1
+ import m, { useState as C, useMemo as _, useEffect as T, createContext as G } from "react";
2
+ import { useOrderbook as H } from "./index3.js";
3
+ import { Garden as l } from "@gardenfi/core";
4
+ import { Err as i, Ok as p } from "./index4.js";
5
+ import { isBitcoin as L, getBlockchainType as x, BlockchainType as d } from "@gardenfi/orderbook";
6
+ import { constructOrderpair as b } from "./index5.js";
7
+ import { useDigestKey as y } from "./index6.js";
8
+ const w = G({
9
+ pendingOrders: []
10
+ }), S = ({
11
+ children: u,
12
+ config: a
11
13
  }) => {
12
- const [t, k] = H(), { digestKey: s } = b(), { pendingOrders: C } = _(t, s), u = c(() => e.quote ?? new O(x[e.environment].quote), [e.quote, e.environment]), T = c(
14
+ const [e, v] = C(), { digestKey: o } = y(), { pendingOrders: f } = H(e, o), h = _(
13
15
  () => async ({
14
- fromAsset: a,
16
+ fromAsset: n,
15
17
  toAsset: r,
16
- amount: i,
17
- isExactOut: d = !1,
18
- request: n
19
- }) => await u.getQuote(
20
- P(a, r),
21
- i,
22
- d,
23
- n
18
+ amount: s,
19
+ isExactOut: c = !1,
20
+ request: t
21
+ }) => e && await e.quote.getQuote(
22
+ b(n, r),
23
+ s,
24
+ c,
25
+ t
24
26
  ),
25
- [u]
26
- ), f = async (a) => {
27
- if (!t) return o("Garden not initialized");
28
- const r = await t.swap(a);
29
- if (r.error) return o(r.error);
30
- if (y(r.val.source_swap.chain)) return p(r.val);
31
- let i;
32
- switch (E(r.val.source_swap.chain)) {
33
- case v.EVM: {
34
- if (!t.evmHTLC)
35
- return o("EVM HTLC not initialized: Please provide evmHTLC");
36
- const n = await t.evmHTLC.initiate(r.val);
37
- if (n.error) return o(n.error);
38
- i = n.val;
27
+ [e]
28
+ ), k = async (n) => {
29
+ if (!e) return i("Garden not initialized");
30
+ const r = await e.swap(n);
31
+ if (r.error) return i(r.error);
32
+ if (L(r.val.source_swap.chain)) return p(r.val);
33
+ let s;
34
+ switch (x(r.val.source_swap.chain)) {
35
+ case d.EVM: {
36
+ if (!e.evmHTLC)
37
+ return i("EVM HTLC not initialized: Please provide evmHTLC");
38
+ const t = await e.evmHTLC.initiate(r.val);
39
+ if (t.error) return i(t.error);
40
+ s = t.val;
39
41
  break;
40
42
  }
41
- case v.Starknet: {
42
- if (!t.starknetHTLC)
43
- return o(
43
+ case d.Starknet: {
44
+ if (!e.starknetHTLC)
45
+ return i(
44
46
  "Starknet HTLC not initialized: Please provide starknetHTLC"
45
47
  );
46
- const n = await t.starknetHTLC.initiate(r.val);
47
- if (n.error) return o(n.error);
48
- i = n.val;
48
+ const t = await e.starknetHTLC.initiate(r.val);
49
+ if (t.error) return i(t.error);
50
+ s = t.val;
49
51
  break;
50
52
  }
53
+ case d.Bitcoin:
54
+ s = r.val.source_swap.initiate_tx_hash;
55
+ break;
51
56
  default:
52
- return o("Unsupported chain");
57
+ return i("Unsupported chain");
53
58
  }
54
- const d = {
59
+ const c = {
55
60
  ...r.val,
56
61
  source_swap: {
57
62
  ...r.val.source_swap,
58
- initiate_tx_hash: i
63
+ initiate_tx_hash: s
59
64
  }
60
65
  };
61
- return p(d);
66
+ return p(c);
62
67
  };
63
- return L(() => {
64
- if (!window || !s || !e.wallets && !e.htlc) return;
65
- let a;
66
- if (e.wallets)
67
- a = m.from({
68
- environment: e.environment,
69
- digestKey: s,
70
- wallets: e.wallets,
71
- siweOpts: {
72
- store: localStorage
73
- }
68
+ return T(() => {
69
+ if (!window || !o || !("wallets" in a) && !("htlc" in a)) return;
70
+ let n;
71
+ if ("wallets" in a)
72
+ n = l.fromWallets({
73
+ ...a,
74
+ digestKey: o
74
75
  });
75
- else if (e.htlc)
76
- a = new m({
77
- environment: e.environment,
78
- digestKey: s,
79
- htlc: e.htlc,
80
- siweOpts: {
81
- store: localStorage
82
- }
76
+ else if ("htlc" in a)
77
+ n = new l({
78
+ ...a,
79
+ digestKey: o
83
80
  });
84
81
  else
85
82
  return;
86
- k(a);
87
- }, [e.wallets, e.htlc, e.environment, s]), /* @__PURE__ */ w.createElement(
88
- h.Provider,
83
+ v(n);
84
+ }, [a, o]), /* @__PURE__ */ m.createElement(
85
+ w.Provider,
89
86
  {
90
87
  value: {
91
- orderBook: t == null ? void 0 : t.orderbook,
92
- quote: u,
93
- swapAndInitiate: f,
94
- pendingOrders: C,
95
- getQuote: T,
96
- garden: t
88
+ swapAndInitiate: k,
89
+ pendingOrders: f,
90
+ getQuote: h,
91
+ garden: e,
92
+ orderBook: e == null ? void 0 : e.orderbook
97
93
  }
98
94
  },
99
- l
95
+ u
100
96
  );
101
- }, A = () => {
102
- const l = w.useContext(h);
103
- if (!l)
97
+ }, g = () => {
98
+ const u = m.useContext(w);
99
+ if (!u)
104
100
  throw new Error("useGarden must be used within a GardenProvider");
105
- return l;
101
+ return u;
106
102
  };
107
103
  export {
108
- h as GardenContext,
109
- R as GardenProvider,
110
- A as useGarden
104
+ w as GardenContext,
105
+ S as GardenProvider,
106
+ g as useGarden
111
107
  };
package/dist/index3.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@gardenfi/core"),u=require("react"),h=(e,o)=>{const[d,c]=u.useState([]);return u.useEffect(()=>{if(!e)return;const s=e.execute(),t=n=>c(n);return e.on("onPendingOrdersChanged",t),()=>{(async()=>(await s)())(),e.off("onPendingOrdersChanged",t)}},[e]),u.useEffect(()=>{!e||!o||e.blockNumberFetcher.fetchBlockNumbers().then(s=>{if(s.error)return;const{val:t}=s;e.orderbook.getMatchedOrders(o.userId,!0,{per_page:500}).then(n=>{if(n.error)return;const f=b.filterDeadlineExpiredOrders(n.val.data).map(r=>{const i=t[r.source_swap.chain],a=t[r.destination_swap.chain];if(!i||!a)return;const l=b.ParseOrderStatus(r,i,a);return{...r,status:l}}).filter(r=>r!==void 0);c(f)})})},[e,o]),{pendingOrders:d}};exports.useOrderbook=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("@gardenfi/core"),u=require("react"),h=(e,o)=>{const[d,c]=u.useState([]);return u.useEffect(()=>{if(!e)return;const s=e.execute(),t=n=>c(n);return e.on("onPendingOrdersChanged",t),()=>{(async()=>(await s)())(),e.off("onPendingOrdersChanged",t)}},[e]),u.useEffect(()=>{!e||!o||e.blockNumberFetcher.fetchBlockNumbers().then(s=>{if(s.error)return;const{val:t}=s;e.orderbook.getMatchedOrders(o.userId,"pending",{per_page:500}).then(n=>{if(n.error)return;const f=b.filterDeadlineExpiredOrders(n.val.data).map(r=>{const i=t[r.source_swap.chain],a=t[r.destination_swap.chain];if(!i||!a)return;const l=b.ParseOrderStatus(r,i,a);return{...r,status:l}}).filter(r=>r!==void 0);c(f)})})},[e,o]),{pendingOrders:d}};exports.useOrderbook=h;
package/dist/index3.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { filterDeadlineExpiredOrders as h, ParseOrderStatus as l } from "@gardenfi/core";
2
- import { useState as m, useEffect as a } from "react";
2
+ import { useState as p, useEffect as a } from "react";
3
3
  const k = (e, o) => {
4
- const [b, u] = m([]);
4
+ const [b, u] = p([]);
5
5
  return a(() => {
6
6
  if (!e) return;
7
7
  const s = e.execute(), t = (n) => u(n);
@@ -12,24 +12,24 @@ const k = (e, o) => {
12
12
  !e || !o || e.blockNumberFetcher.fetchBlockNumbers().then((s) => {
13
13
  if (s.error) return;
14
14
  const { val: t } = s;
15
- e.orderbook.getMatchedOrders(o.userId, !0, {
15
+ e.orderbook.getMatchedOrders(o.userId, "pending", {
16
16
  per_page: 500
17
17
  }).then((n) => {
18
18
  if (n.error) return;
19
- const f = h(n.val.data).map((r) => {
19
+ const d = h(n.val.data).map((r) => {
20
20
  const c = t[r.source_swap.chain], i = t[r.destination_swap.chain];
21
21
  if (!c || !i) return;
22
- const d = l(
22
+ const f = l(
23
23
  r,
24
24
  c,
25
25
  i
26
26
  );
27
27
  return {
28
28
  ...r,
29
- status: d
29
+ status: f
30
30
  };
31
31
  }).filter((r) => r !== void 0);
32
- u(f);
32
+ u(d);
33
33
  });
34
34
  });
35
35
  }, [e, o]), { pendingOrders: b };
package/dist/index4.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var u=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)},l=(e,t,r)=>(u(e,t,"read from private field"),r?r.call(e):t.get(e)),f=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},h=(e,t,r,i)=>(u(e,t,"write to private field"),t.set(e,r),r),n,o,a;class s{constructor(t,r,i=void 0){f(this,n,void 0),f(this,o,void 0),f(this,a,void 0),h(this,n,t),h(this,a,i),h(this,o,r)}get ok(){return l(this,n)}get error(){return l(this,a)}get val(){return l(this,o)}}n=new WeakMap,o=new WeakMap,a=new WeakMap;const d=e=>new s(!0,e),v=(e,...t)=>{if(typeof e=="string"&&t&&t.length>0){let r=[e,...t].map(i=>{if(i){if(i instanceof Error)return i.message;if(typeof i=="string")return i;if(i!=null&&i.toString)return i.toString()}});return new s(!1,null,r.filter(i=>i!==void 0).join(" "))}return new s(!1,null,e)};exports.Err=v;exports.Ok=d;exports.Result=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var h=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)},l=(e,t,r)=>(h(e,t,"read from private field"),r?r.call(e):t.get(e)),f=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},u=(e,t,r,i)=>(h(e,t,"write to private field"),t.set(e,r),r),n,a,o;class s{constructor(t,r,i=void 0){f(this,n,void 0),f(this,a,void 0),f(this,o,void 0),u(this,n,t),u(this,o,i),u(this,a,r)}get ok(){return l(this,n)}get error(){return l(this,o)}get val(){return l(this,a)}}n=new WeakMap,a=new WeakMap,o=new WeakMap;const d=e=>new s(!0,e),v=(e,...t)=>{if(typeof e=="string"&&t&&t.length>0){let r=[e,...t].map(i=>{if(i){if(i instanceof Error)return i.message;if(typeof i=="string")return i;if(i!=null&&i.toString)return i.toString()}});return new s(!1,null,r.filter(i=>i!==void 0).join(" "))}return new s(!1,null,e)};exports.Err=v;exports.Ok=d;exports.Result=s;
package/dist/index4.js CHANGED
@@ -1,14 +1,14 @@
1
1
  var u = (e, t, r) => {
2
2
  if (!t.has(e))
3
3
  throw TypeError("Cannot " + r);
4
- }, s = (e, t, r) => (u(e, t, "read from private field"), r ? r.call(e) : t.get(e)), h = (e, t, r) => {
4
+ }, s = (e, t, r) => (u(e, t, "read from private field"), r ? r.call(e) : t.get(e)), l = (e, t, r) => {
5
5
  if (t.has(e))
6
6
  throw TypeError("Cannot add the same private member more than once");
7
7
  t instanceof WeakSet ? t.add(e) : t.set(e, r);
8
- }, l = (e, t, r, i) => (u(e, t, "write to private field"), t.set(e, r), r), n, a, o;
9
- class f {
8
+ }, f = (e, t, r, i) => (u(e, t, "write to private field"), t.set(e, r), r), n, a, o;
9
+ class h {
10
10
  constructor(t, r, i = void 0) {
11
- h(this, n, void 0), h(this, a, void 0), h(this, o, void 0), l(this, n, t), l(this, o, i), l(this, a, r);
11
+ l(this, n, void 0), l(this, a, void 0), l(this, o, void 0), f(this, n, t), f(this, o, i), f(this, a, r);
12
12
  }
13
13
  get ok() {
14
14
  return s(this, n);
@@ -21,7 +21,7 @@ class f {
21
21
  }
22
22
  }
23
23
  n = /* @__PURE__ */ new WeakMap(), a = /* @__PURE__ */ new WeakMap(), o = /* @__PURE__ */ new WeakMap();
24
- const d = (e) => new f(!0, e), p = (e, ...t) => {
24
+ const d = (e) => new h(!0, e), p = (e, ...t) => {
25
25
  if (typeof e == "string" && t && t.length > 0) {
26
26
  let r = [e, ...t].map((i) => {
27
27
  if (i) {
@@ -33,16 +33,16 @@ const d = (e) => new f(!0, e), p = (e, ...t) => {
33
33
  return i.toString();
34
34
  }
35
35
  });
36
- return new f(
36
+ return new h(
37
37
  !1,
38
38
  null,
39
39
  r.filter((i) => i !== void 0).join(" ")
40
40
  );
41
41
  }
42
- return new f(!1, null, e);
42
+ return new h(!1, null, e);
43
43
  };
44
44
  export {
45
45
  p as Err,
46
46
  d as Ok,
47
- f as Result
47
+ h as Result
48
48
  };
@@ -1,9 +1,6 @@
1
- import { WalletClient } from 'viem';
2
- import { IEVMHTLC, IStarknetHTLC, OrderWithStatus, IGardenJS, IQuote, QuoteResponse, SwapParams } from '@gardenfi/core';
1
+ import { OrderWithStatus, IGardenJS, QuoteResponse, SwapParams, GardenConfigWithHTLCs, GardenConfigWithWallets } from '@gardenfi/core';
3
2
  import { AsyncResult, Request, Result } from '@catalogfi/utils';
4
3
  import { Asset, IOrderbook, MatchedOrder } from '@gardenfi/orderbook';
5
- import { Environment, Url } from '@gardenfi/utils';
6
- import { Account } from 'starknet';
7
4
 
8
5
  export type GardenContextType = {
9
6
  /**
@@ -22,40 +19,22 @@ export type GardenContextType = {
22
19
  * It will not return orders that have expired (deadline expiry).
23
20
  * @returns {MatchedOrder[]} - The pending orders of the user.
24
21
  */
25
- pendingOrders?: OrderWithStatus[];
22
+ pendingOrders: OrderWithStatus[];
26
23
  /**
27
24
  * Get the quote for the given parameters. This will also return USD values of the assets.
28
25
  * @param params
29
26
  * @returns
30
27
  */
31
- getQuote?: (params: QuoteParams) => Promise<Result<QuoteResponse, string>>;
28
+ getQuote?: (params: QuoteParams) => Promise<Result<QuoteResponse, string> | undefined>;
32
29
  /**
33
30
  * The garden instance.
34
31
  * @returns {IGardenJS}
35
32
  */
36
33
  garden?: IGardenJS;
37
- /**
38
- * The quote instance.
39
- * @returns {IQuote}
40
- */
41
- quote?: IQuote;
42
34
  };
43
35
  export type GardenProviderProps = {
44
36
  children: React.ReactNode;
45
- config: {
46
- environment: Environment;
47
- orderBook?: IOrderbook;
48
- quote?: IQuote;
49
- blockNumberFetcherUrl?: Url;
50
- htlc?: {
51
- evm?: IEVMHTLC;
52
- starknet?: IStarknetHTLC;
53
- };
54
- wallets?: {
55
- evm?: WalletClient;
56
- starknet?: Account;
57
- };
58
- };
37
+ config: Omit<GardenConfigWithHTLCs, 'digestKey'> | Omit<GardenConfigWithWallets, 'digestKey'>;
59
38
  };
60
39
  export type QuoteParams = {
61
40
  fromAsset: Asset;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gardenfi/react-hooks",
3
- "version": "2.0.28-beta.9",
3
+ "version": "2.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -27,9 +27,9 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@catalogfi/wallets": "^0.2.59",
30
- "@gardenfi/core": "^2.0.25-beta.8",
31
- "@gardenfi/orderbook": "^2.0.9-beta.8",
32
- "@gardenfi/utils": "^2.0.6-beta.6",
30
+ "@gardenfi/core": "2.1.0",
31
+ "@gardenfi/orderbook": "2.1.0",
32
+ "@gardenfi/utils": "2.1.0",
33
33
  "react": "^18.3.1",
34
34
  "starknet": "6.23.1",
35
35
  "viem": "^2.21.23"