@gardenfi/orderbook 3.0.5-beta.2 → 3.0.5-beta.4

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/index10.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@gardenfi/utils"),A=require("./index11.cjs"),g=require("./index4.cjs"),n=require("./index8.cjs"),C=require("./index12.cjs"),u=Object.keys(g.Config);class m{constructor(t,s){this.assets=null,this.chains=null,this.routeMatrix=null,this.isLoading=!1,this.error=null,this.url=new r.Url(t),typeof s=="string"?this.auth=new r.ApiKey(s):this.auth=s,this.routeValidator=new A.RouteValidator(this.url.toString(),this.auth)}async initialize(){await this.fetchAndSetAssetsAndChains(),await this.routeValidator.loadPolicy()}async fetchAndSetAssetsAndChains(){try{this.isLoading=!0,this.error=null;const t=await this.auth.getAuthHeaders();if(!t.ok)return r.Err("Failed to get auth headers");const s=this.url.endpoint("/v2/chains"),e=await r.Fetcher.get(s,{headers:{...t.val}});if(!e.result)return r.Err(`Failed to fetch chains data: ${e.error}`);const{assets:a,chains:i}=this.processApiData(e.result);return this.assets=a,this.chains=i,await this.buildRouteMatrix(),r.Ok("AssetManager initialized successfully")}catch(t){return r.Err(`Failed to fetch assets data: ${t}`)}finally{this.isLoading=!1}}async isRouteValid(t,s){return await this.routeValidator.isValidRoute(n.ChainAsset.from(t.id),n.ChainAsset.from(s.id))}getValidDestinations(t){if(!this.routeMatrix||!this.assets||!t.id)return console.warn("Missing routeMatrix, assets, or asset. Returning all assets."),[];const s=this.routeMatrix[t.id.toString().toLowerCase()];return s?s.map(e=>{const a=e.toString();return Object.values(this.assets).find(i=>n.ChainAsset.from(i).toString()===a)}).filter(Boolean):[]}getAsset(t){if(!this.assets)return;const s=n.ChainAsset.from(t).toString();return this.assets[s]}getAssetsByChain(t){return this.assets?Object.values(this.assets).filter(s=>s.chain===t):[]}searchAssets(t){if(!this.assets)return[];const s=t.toLowerCase();return Object.values(this.assets).filter(e=>e.symbol.toLowerCase().includes(s)||e.name.toLowerCase().includes(s))}getChain(t){if(this.chains)return this.chains[t]}async buildRouteMatrix(){if(!this.assets||!this.routeValidator)return;const t=Object.values(this.assets).map(s=>{if(!s.id)return null;try{return n.ChainAsset.from(s.id)}catch{return null}}).filter(s=>s!==null);this.routeMatrix=await this.routeValidator.buildRouteMatrix(t)}processApiData(t){const s={},e={};for(const a of t){const i=this.parseChainIdentifier(a.chain);if(!i||!u.includes(i))continue;const h={...a,name:this.formatChainName(a.chain),chain:i};for(const o of a.assets){const l=n.ChainAsset.from(o.id).toString(),{name:c,symbol:d}=C.parseAssetNameSymbol(o.name,o.id),f={...o,id:n.ChainAsset.from(o.id),chain:i,name:c,symbol:d};s[l]=f,e[i]||(e[i]=h)}}return{assets:s,chains:e}}parseChainIdentifier(t){return u.includes(t)?t:null}formatChainName(t){return t.split("_").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}async refresh(){await this.initialize()}}exports.AssetManager=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@gardenfi/utils"),y=require("./index11.cjs"),p=require("./index4.cjs"),r=require("./index8.cjs"),o=require("./index12.cjs"),h=Object.keys(p.Config);class g{constructor(t,s){this.assets=null,this.chains=null,this.routeMatrix=null,this.isLoading=!1,this.error=null,typeof s=="string"?this.auth=new n.ApiKey(s):this.auth=s;const e=o.ensureUrl(t.baseUrl),i=o.buildDefaultEndpoint(e,"/v2/chains"),a=o.buildDefaultEndpoint(e,"/v2/policy");this.urls={base:e,assets:o.ensureUrl(t.assetsUrl??i),policy:o.ensureUrl(t.policyUrl??a)},this.routeValidator=new y.RouteValidator(this.urls.policy.toString(),this.auth)}async initialize(){await this.fetchAndSetAssetsAndChains(),await this.routeValidator.loadPolicy()}async fetchAndSetAssetsAndChains(){try{this.isLoading=!0,this.error=null;const t=await this.auth.getAuthHeaders();if(!t.ok)return n.Err("Failed to get auth headers");const s=await n.Fetcher.get(this.urls.assets,{headers:{...t.val}});if(!s.result)return n.Err(`Failed to fetch chains data: ${s.error}`);const{assets:e,chains:i}=this.processApiData(s.result);return this.assets=e,this.chains=i,await this.buildRouteMatrix(),n.Ok("AssetManager initialized successfully")}catch(t){return n.Err(`Failed to fetch assets data: ${t}`)}finally{this.isLoading=!1}}async isRouteValid(t,s){return await this.routeValidator.isValidRoute(r.ChainAsset.from(t.id),r.ChainAsset.from(s.id))}getValidDestinations(t){if(!this.routeMatrix||!this.assets||!t.id)return console.warn("Missing routeMatrix, assets, or asset. Returning all assets."),[];const s=this.routeMatrix[t.id.toString().toLowerCase()];return s?s.map(e=>{const i=e.toString();return Object.values(this.assets).find(a=>r.ChainAsset.from(a).toString()===i)}).filter(Boolean):[]}getAsset(t){if(!this.assets)return;const s=r.ChainAsset.from(t).toString();return this.assets[s]}getAssetsByChain(t){return this.assets?Object.values(this.assets).filter(s=>s.chain===t):[]}searchAssets(t){if(!this.assets)return[];const s=t.toLowerCase();return Object.values(this.assets).filter(e=>e.symbol.toLowerCase().includes(s)||e.name.toLowerCase().includes(s))}getChain(t){if(this.chains)return this.chains[t]}async buildRouteMatrix(){if(!this.assets||!this.routeValidator)return;const t=Object.values(this.assets).map(s=>{if(!s.id)return null;try{return r.ChainAsset.from(s.id)}catch{return null}}).filter(s=>s!==null);this.routeMatrix=await this.routeValidator.buildRouteMatrix(t)}processApiData(t){const s={},e={};for(const i of t){const a=this.parseChainIdentifier(i.chain);if(!a||!h.includes(a))continue;const u={...i,name:this.formatChainName(i.chain),chain:a};for(const l of i.assets){const c=r.ChainAsset.from(l.id).toString(),{name:d,symbol:f}=o.parseAssetNameSymbol(l.name,l.id),A={...l,id:r.ChainAsset.from(l.id),chain:a,name:d,symbol:f};s[c]=A,e[a]||(e[a]=u)}}return{assets:s,chains:e}}parseChainIdentifier(t){return h.includes(t)?t:null}formatChainName(t){return t.split("_").map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(" ")}async refresh(){await this.initialize()}}exports.AssetManager=g;
package/dist/index10.js CHANGED
@@ -1,12 +1,21 @@
1
- import { Url as m, ApiKey as A, Err as o, Fetcher as g, Ok as p } from "@gardenfi/utils";
1
+ import { ApiKey as A, Err as o, Fetcher as y, Ok as g } from "@gardenfi/utils";
2
2
  import { RouteValidator as C } from "./index11.js";
3
- import { Config as y } from "./index4.js";
3
+ import { Config as b } from "./index4.js";
4
4
  import { ChainAsset as r } from "./index8.js";
5
- import { parseAssetNameSymbol as w } from "./index12.js";
6
- const u = Object.keys(y);
7
- class R {
5
+ import { ensureUrl as l, buildDefaultEndpoint as u, parseAssetNameSymbol as w } from "./index12.js";
6
+ const c = Object.keys(b);
7
+ class I {
8
8
  constructor(t, s) {
9
- this.assets = null, this.chains = null, this.routeMatrix = null, this.isLoading = !1, this.error = null, this.url = new m(t), typeof s == "string" ? this.auth = new A(s) : this.auth = s, this.routeValidator = new C(this.url.toString(), this.auth);
9
+ this.assets = null, this.chains = null, this.routeMatrix = null, this.isLoading = !1, this.error = null, typeof s == "string" ? this.auth = new A(s) : this.auth = s;
10
+ const i = l(t.baseUrl), e = u(i, "/v2/chains"), a = u(i, "/v2/policy");
11
+ this.urls = {
12
+ base: i,
13
+ assets: l(t.assetsUrl ?? e),
14
+ policy: l(t.policyUrl ?? a)
15
+ }, this.routeValidator = new C(
16
+ this.urls.policy.toString(),
17
+ this.auth
18
+ );
10
19
  }
11
20
  // ============================================
12
21
  // Initialization Methods
@@ -25,14 +34,17 @@ class R {
25
34
  this.isLoading = !0, this.error = null;
26
35
  const t = await this.auth.getAuthHeaders();
27
36
  if (!t.ok) return o("Failed to get auth headers");
28
- const s = this.url.endpoint("/v2/chains"), i = await g.get(s, {
29
- headers: {
30
- ...t.val
37
+ const s = await y.get(
38
+ this.urls.assets,
39
+ {
40
+ headers: {
41
+ ...t.val
42
+ }
31
43
  }
32
- });
33
- if (!i.result) return o(`Failed to fetch chains data: ${i.error}`);
34
- const { assets: a, chains: e } = this.processApiData(i.result);
35
- return this.assets = a, this.chains = e, await this.buildRouteMatrix(), p("AssetManager initialized successfully");
44
+ );
45
+ if (!s.result) return o(`Failed to fetch chains data: ${s.error}`);
46
+ const { assets: i, chains: e } = this.processApiData(s.result);
47
+ return this.assets = i, this.chains = e, await this.buildRouteMatrix(), g("AssetManager initialized successfully");
36
48
  } catch (t) {
37
49
  return o(`Failed to fetch assets data: ${t}`);
38
50
  } finally {
@@ -61,8 +73,8 @@ class R {
61
73
  ), [];
62
74
  const s = this.routeMatrix[t.id.toString().toLowerCase()];
63
75
  return s ? s.map((i) => {
64
- const a = i.toString();
65
- return Object.values(this.assets).find((e) => r.from(e).toString() === a);
76
+ const e = i.toString();
77
+ return Object.values(this.assets).find((a) => r.from(a).toString() === e);
66
78
  }).filter(Boolean) : [];
67
79
  }
68
80
  // ============================================
@@ -124,27 +136,27 @@ class R {
124
136
  */
125
137
  processApiData(t) {
126
138
  const s = {}, i = {};
127
- for (const a of t) {
128
- const e = this.parseChainIdentifier(a.chain);
129
- if (!e || !u.includes(e))
139
+ for (const e of t) {
140
+ const a = this.parseChainIdentifier(e.chain);
141
+ if (!a || !c.includes(a))
130
142
  continue;
131
143
  const h = {
132
- ...a,
133
- name: this.formatChainName(a.chain),
134
- chain: e
144
+ ...e,
145
+ name: this.formatChainName(e.chain),
146
+ chain: a
135
147
  };
136
- for (const n of a.assets) {
137
- const l = r.from(n.id).toString(), { name: c, symbol: d } = w(
148
+ for (const n of e.assets) {
149
+ const d = r.from(n.id).toString(), { name: f, symbol: m } = w(
138
150
  n.name,
139
151
  n.id
140
- ), f = {
152
+ ), p = {
141
153
  ...n,
142
154
  id: r.from(n.id),
143
- chain: e,
144
- name: c,
145
- symbol: d
155
+ chain: a,
156
+ name: f,
157
+ symbol: m
146
158
  };
147
- s[l] = f, i[e] || (i[e] = h);
159
+ s[d] = p, i[a] || (i[a] = h);
148
160
  }
149
161
  }
150
162
  return { assets: s, chains: i };
@@ -153,7 +165,7 @@ class R {
153
165
  * Parse chain identifier from string
154
166
  */
155
167
  parseChainIdentifier(t) {
156
- return u.includes(t) ? t : null;
168
+ return c.includes(t) ? t : null;
157
169
  }
158
170
  /**
159
171
  * Format chain name for display
@@ -172,5 +184,5 @@ class R {
172
184
  }
173
185
  }
174
186
  export {
175
- R as AssetManager
187
+ I as AssetManager
176
188
  };
package/dist/index11.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@gardenfi/utils"),h=require("node-cache"),a=class a{constructor(e,t){this.policy=new h({stdTTL:36e3,checkperiod:3600}),typeof t=="string"?this.auth=new o.ApiKey(t):this.auth=t,typeof e=="string"?this.apiBaseUrl=new o.Url(e):this.apiBaseUrl=e}getPolicy(){return this.policy.get(a.POLICY_CACHE_KEY)}setPolicy(e){const t=this.getPolicy(),s={default:e.default||(t==null?void 0:t.default)||"open",isolation_groups:[...new Set([...(t==null?void 0:t.isolation_groups)||[],...e.isolation_groups])],blacklist_pairs:[...new Set([...(t==null?void 0:t.blacklist_pairs)||[],...e.blacklist_pairs])],whitelist_overrides:[...new Set([...(t==null?void 0:t.whitelist_overrides)||[],...e.whitelist_overrides])]};return this.policy.set(a.POLICY_CACHE_KEY,s),s}async loadPolicy(){const e=this.getPolicy();if(e)return o.Ok(e);try{const t=await this.auth.getAuthHeaders();if(!t.ok)return o.Err(`Failed to get auth headers: ${t.error}`);const s=await o.Fetcher.get(this.apiBaseUrl.endpoint("v2/policy"),{headers:{"Content-Type":"application/json",...t.val}});return s.result?o.Ok(this.setPolicy(s.result)):o.Err(`API Error: ${s.error}`)}catch(t){return o.Err(`Failed to load policy: ${t}`)}}async isValidRoute(e,t){const s=await this.loadPolicy();if(!s.ok||e.toString()===t.toString())return!1;const{sortedIsolationRules:i,sortedBlacklistRules:r,sortedWhitelistRules:n}=this.preprocessRules(s.val),l=this.findMatchingRule(e,i,"from");if(l&&!this.matchesRuleDestination(t,l))return!1;const c=this.findMatchingRule(t,i,"to");return c&&c.direction==="<->"&&!this.matchesRuleSource(e,c)?!1:this.matchesRuleList(e,t,r)?!!this.matchesRuleList(e,t,n):s.val.default==="open"}async getValidDestinations(e,t){const s=[];for(const i of t)await this.isValidRoute(e,i)&&s.push(i);return s}async getAllValidRoutes(e){const t=[];for(const s of e)for(const i of e)await this.isValidRoute(s,i)&&t.push({from:s,to:i});return t}preprocessRules(e){const t=e.isolation_groups.map(r=>this.parseRule(r)).sort((r,n)=>n.specificity-r.specificity),s=e.blacklist_pairs.map(r=>this.parseRule(r)).sort((r,n)=>n.specificity-r.specificity),i=e.whitelist_overrides.map(r=>this.parseRule(r)).sort((r,n)=>n.specificity-r.specificity);return{sortedIsolationRules:t,sortedBlacklistRules:s,sortedWhitelistRules:i}}parseRule(e){const s=e.includes("<->")?"<->":"->",[i,r]=e.split(s).map(n=>n.trim());return{pattern:e,fromPattern:i,toPattern:r,direction:s,specificity:this.calculateSpecificity(i,r)}}calculateSpecificity(e,t){const s=i=>{const r=i.toLowerCase();return r==="*"?0:r.includes("*")?1:2};return s(e)*10+s(t)}findMatchingRule(e,t,s){for(const i of t){const r=s==="from"?i.fromPattern:i.toPattern;if(this.matchesAssetPattern(e,r))return i;if(i.direction==="<->"){const n=s==="from"?i.toPattern:i.fromPattern;if(this.matchesAssetPattern(e,n))return i}}return null}matchesRuleDestination(e,t){return!!(this.matchesAssetPattern(e,t.toPattern)||t.direction==="<->"&&this.matchesAssetPattern(e,t.fromPattern))}matchesRuleSource(e,t){return!!(this.matchesAssetPattern(e,t.fromPattern)||t.direction==="<->"&&this.matchesAssetPattern(e,t.toPattern))}matchesRuleList(e,t,s){return s.some(i=>this.matchesRule(e,t,i))}matchesRule(e,t,s){const i=this.matchesAssetPattern(e,s.fromPattern)&&this.matchesAssetPattern(t,s.toPattern);if(s.direction==="<->"){const r=this.matchesAssetPattern(e,s.toPattern)&&this.matchesAssetPattern(t,s.fromPattern);return i||r}return i}matchesAssetPattern(e,t){const[s,i]=t.split(":"),r=s==="*"||s===e.chain,n=i.toLowerCase()==="*"||i.toLowerCase()===e.symbol.toLowerCase();return r&&n}async buildRouteMatrix(e){const t={};for(const s of e){const i=[];for(const r of e)await this.isValidRoute(s,r)&&i.push(r);t[s.toString()]=i}return t}};a.POLICY_CACHE_KEY="route_policy";let u=a;exports.RouteValidator=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@gardenfi/utils"),h=require("node-cache"),o=class o{constructor(e,t){this.policy=new h({stdTTL:36e3,checkperiod:3600}),typeof t=="string"?this.auth=new a.ApiKey(t):this.auth=t,typeof e=="string"?this.apiBaseUrl=new a.Url(e):this.apiBaseUrl=e}getPolicy(){return this.policy.get(o.POLICY_CACHE_KEY)}setPolicy(e){const t=this.getPolicy(),s={default:e.default||(t==null?void 0:t.default)||"open",isolation_groups:[...new Set([...(t==null?void 0:t.isolation_groups)||[],...e.isolation_groups])],blacklist_pairs:[...new Set([...(t==null?void 0:t.blacklist_pairs)||[],...e.blacklist_pairs])],whitelist_overrides:[...new Set([...(t==null?void 0:t.whitelist_overrides)||[],...e.whitelist_overrides])]};return this.policy.set(o.POLICY_CACHE_KEY,s),s}async loadPolicy(){const e=this.getPolicy();if(e)return a.Ok(e);try{const t=await this.auth.getAuthHeaders();if(!t.ok)return a.Err(`Failed to get auth headers: ${t.error}`);const s=await a.Fetcher.get(this.apiBaseUrl,{headers:{"Content-Type":"application/json",...t.val}});return s.result?a.Ok(this.setPolicy(s.result)):a.Err(`API Error: ${s.error}`)}catch(t){return a.Err(`Failed to load policy: ${t}`)}}async isValidRoute(e,t){const s=await this.loadPolicy();if(!s.ok||e.toString()===t.toString())return!1;const{sortedIsolationRules:r,sortedBlacklistRules:i,sortedWhitelistRules:n}=this.preprocessRules(s.val),c=this.findMatchingRule(e,r);if(c&&!this.matchesRuleDestination(t,c))return!1;const l=this.findMatchingRule(t,r);return l&&l.rule.direction==="<->"&&!this.matchesRuleSource(e,l)?!1:this.matchesRuleList(e,t,i)?!!this.matchesRuleList(e,t,n):s.val.default==="open"}async getValidDestinations(e,t){const s=[];for(const r of t)await this.isValidRoute(e,r)&&s.push(r);return s}async getAllValidRoutes(e){const t=[];for(const s of e)for(const r of e)await this.isValidRoute(s,r)&&t.push({from:s,to:r});return t}preprocessRules(e){const t=e.isolation_groups.map(i=>this.parseRule(i)).sort((i,n)=>n.specificity-i.specificity),s=e.blacklist_pairs.map(i=>this.parseRule(i)).sort((i,n)=>n.specificity-i.specificity),r=e.whitelist_overrides.map(i=>this.parseRule(i)).sort((i,n)=>n.specificity-i.specificity);return{sortedIsolationRules:t,sortedBlacklistRules:s,sortedWhitelistRules:r}}parseRule(e){const s=e.includes("<->")?"<->":"->",[r,i]=e.split(s).map(n=>n.trim());return{pattern:e,fromPattern:r,toPattern:i,direction:s,specificity:this.calculateSpecificity(r,i)}}calculateSpecificity(e,t){const s=r=>{const i=r.toLowerCase();return i==="*"?0:i.includes("*")?1:2};return s(e)*10+s(t)}findMatchingRule(e,t){for(const s of t){if(this.matchesAssetPattern(e,s.fromPattern))return{rule:s,matchedAs:"from"};if(s.direction==="<->"&&this.matchesAssetPattern(e,s.toPattern))return{rule:s,matchedAs:"to"}}return null}matchesRuleDestination(e,t){return t.matchedAs==="from"?this.matchesAssetPattern(e,t.rule.toPattern):t.rule.direction!=="<->"?!1:this.matchesAssetPattern(e,t.rule.fromPattern)}matchesRuleSource(e,t){return t.matchedAs==="to"?this.matchesAssetPattern(e,t.rule.fromPattern):t.rule.direction!=="<->"?!1:this.matchesAssetPattern(e,t.rule.toPattern)}matchesRuleList(e,t,s){return s.some(r=>this.matchesRule(e,t,r))}matchesRule(e,t,s){const r=this.matchesAssetPattern(e,s.fromPattern)&&this.matchesAssetPattern(t,s.toPattern);if(s.direction==="<->"){const i=this.matchesAssetPattern(e,s.toPattern)&&this.matchesAssetPattern(t,s.fromPattern);return r||i}return r}matchesAssetPattern(e,t){const[s="",r=""]=t.split(":").map(c=>c.trim().toLowerCase()),i=s===""||s==="*"||s===e.chain.toLowerCase(),n=r===""||r==="*"||r===e.symbol.toLowerCase();return i&&n}async buildRouteMatrix(e){const t={};for(const s of e){const r=[];for(const i of e)await this.isValidRoute(s,i)&&r.push(i);t[s.toString()]=r}return t}};o.POLICY_CACHE_KEY="route_policy";let u=o;exports.RouteValidator=u;
package/dist/index11.js CHANGED
@@ -1,6 +1,6 @@
1
- import { ApiKey as f, Url as p, Ok as u, Err as c, Fetcher as d } from "@gardenfi/utils";
1
+ import { ApiKey as f, Url as p, Ok as u, Err as l, Fetcher as d } from "@gardenfi/utils";
2
2
  import m from "node-cache";
3
- const o = class o {
3
+ const a = class a {
4
4
  constructor(e, t) {
5
5
  this.policy = new m({
6
6
  stdTTL: 36e3,
@@ -10,7 +10,7 @@ const o = class o {
10
10
  }), typeof t == "string" ? this.auth = new f(t) : this.auth = t, typeof e == "string" ? this.apiBaseUrl = new p(e) : this.apiBaseUrl = e;
11
11
  }
12
12
  getPolicy() {
13
- return this.policy.get(o.POLICY_CACHE_KEY);
13
+ return this.policy.get(a.POLICY_CACHE_KEY);
14
14
  }
15
15
  setPolicy(e) {
16
16
  const t = this.getPolicy(), s = {
@@ -34,7 +34,7 @@ const o = class o {
34
34
  ])
35
35
  ]
36
36
  };
37
- return this.policy.set(o.POLICY_CACHE_KEY, s), s;
37
+ return this.policy.set(a.POLICY_CACHE_KEY, s), s;
38
38
  }
39
39
  /**
40
40
  * Loads the current route policy, cached or via API.
@@ -45,9 +45,9 @@ const o = class o {
45
45
  try {
46
46
  const t = await this.auth.getAuthHeaders();
47
47
  if (!t.ok)
48
- return c(`Failed to get auth headers: ${t.error}`);
48
+ return l(`Failed to get auth headers: ${t.error}`);
49
49
  const s = await d.get(
50
- this.apiBaseUrl.endpoint("v2/policy"),
50
+ this.apiBaseUrl,
51
51
  {
52
52
  headers: {
53
53
  "Content-Type": "application/json",
@@ -55,9 +55,9 @@ const o = class o {
55
55
  }
56
56
  }
57
57
  );
58
- return s.result ? u(this.setPolicy(s.result)) : c(`API Error: ${s.error}`);
58
+ return s.result ? u(this.setPolicy(s.result)) : l(`API Error: ${s.error}`);
59
59
  } catch (t) {
60
- return c(`Failed to load policy: ${t}`);
60
+ return l(`Failed to load policy: ${t}`);
61
61
  }
62
62
  }
63
63
  /**
@@ -66,29 +66,25 @@ const o = class o {
66
66
  async isValidRoute(e, t) {
67
67
  const s = await this.loadPolicy();
68
68
  if (!s.ok || e.toString() === t.toString()) return !1;
69
- const { sortedIsolationRules: i, sortedBlacklistRules: r, sortedWhitelistRules: n } = this.preprocessRules(s.val), l = this.findMatchingRule(
69
+ const { sortedIsolationRules: r, sortedBlacklistRules: i, sortedWhitelistRules: n } = this.preprocessRules(s.val), o = this.findMatchingRule(
70
70
  e,
71
- i,
72
- "from"
73
- /* From */
71
+ r
74
72
  );
75
- if (l && !this.matchesRuleDestination(t, l))
73
+ if (o && !this.matchesRuleDestination(t, o))
76
74
  return !1;
77
- const a = this.findMatchingRule(
75
+ const c = this.findMatchingRule(
78
76
  t,
79
- i,
80
- "to"
81
- /* To */
77
+ r
82
78
  );
83
- return a && a.direction === "<->" && !this.matchesRuleSource(e, a) ? !1 : this.matchesRuleList(e, t, r) ? !!this.matchesRuleList(e, t, n) : s.val.default === "open";
79
+ return c && c.rule.direction === "<->" && !this.matchesRuleSource(e, c) ? !1 : this.matchesRuleList(e, t, i) ? !!this.matchesRuleList(e, t, n) : s.val.default === "open";
84
80
  }
85
81
  /**
86
82
  * Returns all valid destinations for a given source asset.
87
83
  */
88
84
  async getValidDestinations(e, t) {
89
85
  const s = [];
90
- for (const i of t)
91
- await this.isValidRoute(e, i) && s.push(i);
86
+ for (const r of t)
87
+ await this.isValidRoute(e, r) && s.push(r);
92
88
  return s;
93
89
  }
94
90
  /**
@@ -97,16 +93,16 @@ const o = class o {
97
93
  async getAllValidRoutes(e) {
98
94
  const t = [];
99
95
  for (const s of e)
100
- for (const i of e)
101
- await this.isValidRoute(s, i) && t.push({ from: s, to: i });
96
+ for (const r of e)
97
+ await this.isValidRoute(s, r) && t.push({ from: s, to: r });
102
98
  return t;
103
99
  }
104
100
  /**
105
101
  * Turns policy string rules into sorted ParsedRule objects.
106
102
  */
107
103
  preprocessRules(e) {
108
- const t = e.isolation_groups.map((r) => this.parseRule(r)).sort((r, n) => n.specificity - r.specificity), s = e.blacklist_pairs.map((r) => this.parseRule(r)).sort((r, n) => n.specificity - r.specificity), i = e.whitelist_overrides.map((r) => this.parseRule(r)).sort((r, n) => n.specificity - r.specificity);
109
- return { sortedIsolationRules: t, sortedBlacklistRules: s, sortedWhitelistRules: i };
104
+ const t = e.isolation_groups.map((i) => this.parseRule(i)).sort((i, n) => n.specificity - i.specificity), s = e.blacklist_pairs.map((i) => this.parseRule(i)).sort((i, n) => n.specificity - i.specificity), r = e.whitelist_overrides.map((i) => this.parseRule(i)).sort((i, n) => n.specificity - i.specificity);
105
+ return { sortedIsolationRules: t, sortedBlacklistRules: s, sortedWhitelistRules: r };
110
106
  }
111
107
  /**
112
108
  * Parses a rule string (e.g. "ethereum:usdc -> base:usdt") into parts.
@@ -115,22 +111,22 @@ const o = class o {
115
111
  const s = e.includes(
116
112
  "<->"
117
113
  /* Bidirectional */
118
- ) ? "<->" : "->", [i, r] = e.split(s).map((n) => n.trim());
114
+ ) ? "<->" : "->", [r, i] = e.split(s).map((n) => n.trim());
119
115
  return {
120
116
  pattern: e,
121
- fromPattern: i,
122
- toPattern: r,
117
+ fromPattern: r,
118
+ toPattern: i,
123
119
  direction: s,
124
- specificity: this.calculateSpecificity(i, r)
120
+ specificity: this.calculateSpecificity(r, i)
125
121
  };
126
122
  }
127
123
  /**
128
124
  * Gives a specificity score to a rule pattern for prioritizing.
129
125
  */
130
126
  calculateSpecificity(e, t) {
131
- const s = (i) => {
132
- const r = i.toLowerCase();
133
- return r === "*" ? 0 : r.includes(
127
+ const s = (r) => {
128
+ const i = r.toLowerCase();
129
+ return i === "*" ? 0 : i.includes(
134
130
  "*"
135
131
  /* Any */
136
132
  ) ? 1 : 2;
@@ -140,14 +136,20 @@ const o = class o {
140
136
  /**
141
137
  * Finds the first matching rule for an asset given the rule "side".
142
138
  */
143
- findMatchingRule(e, t, s) {
144
- for (const i of t) {
145
- const r = s === "from" ? i.fromPattern : i.toPattern;
146
- if (this.matchesAssetPattern(e, r)) return i;
147
- if (i.direction === "<->") {
148
- const n = s === "from" ? i.toPattern : i.fromPattern;
149
- if (this.matchesAssetPattern(e, n)) return i;
150
- }
139
+ findMatchingRule(e, t) {
140
+ for (const s of t) {
141
+ if (this.matchesAssetPattern(e, s.fromPattern))
142
+ return {
143
+ rule: s,
144
+ matchedAs: "from"
145
+ /* From */
146
+ };
147
+ if (s.direction === "<->" && this.matchesAssetPattern(e, s.toPattern))
148
+ return {
149
+ rule: s,
150
+ matchedAs: "to"
151
+ /* To */
152
+ };
151
153
  }
152
154
  return null;
153
155
  }
@@ -155,51 +157,51 @@ const o = class o {
155
157
  * Checks if a given toAsset matches the rule's destination side.
156
158
  */
157
159
  matchesRuleDestination(e, t) {
158
- return !!(this.matchesAssetPattern(e, t.toPattern) || t.direction === "<->" && this.matchesAssetPattern(e, t.fromPattern));
160
+ return t.matchedAs === "from" ? this.matchesAssetPattern(e, t.rule.toPattern) : t.rule.direction !== "<->" ? !1 : this.matchesAssetPattern(e, t.rule.fromPattern);
159
161
  }
160
162
  /**
161
163
  * Checks if a given fromAsset matches the rule's source side.
162
164
  */
163
165
  matchesRuleSource(e, t) {
164
- return !!(this.matchesAssetPattern(e, t.fromPattern) || t.direction === "<->" && this.matchesAssetPattern(e, t.toPattern));
166
+ return t.matchedAs === "to" ? this.matchesAssetPattern(e, t.rule.fromPattern) : t.rule.direction !== "<->" ? !1 : this.matchesAssetPattern(e, t.rule.toPattern);
165
167
  }
166
168
  /**
167
169
  * Checks if any rule in a list matches fromAsset and toAsset.
168
170
  */
169
171
  matchesRuleList(e, t, s) {
170
- return s.some((i) => this.matchesRule(e, t, i));
172
+ return s.some((r) => this.matchesRule(e, t, r));
171
173
  }
172
174
  /**
173
175
  * Checks if a rule matches fromAsset and toAsset (forward or backward if bidirectional).
174
176
  */
175
177
  matchesRule(e, t, s) {
176
- const i = this.matchesAssetPattern(e, s.fromPattern) && this.matchesAssetPattern(t, s.toPattern);
178
+ const r = this.matchesAssetPattern(e, s.fromPattern) && this.matchesAssetPattern(t, s.toPattern);
177
179
  if (s.direction === "<->") {
178
- const r = this.matchesAssetPattern(e, s.toPattern) && this.matchesAssetPattern(t, s.fromPattern);
179
- return i || r;
180
+ const i = this.matchesAssetPattern(e, s.toPattern) && this.matchesAssetPattern(t, s.fromPattern);
181
+ return r || i;
180
182
  }
181
- return i;
183
+ return r;
182
184
  }
183
185
  /**
184
186
  * Checks if an asset string matches a rule's pattern (wildcards supported).
185
187
  */
186
188
  matchesAssetPattern(e, t) {
187
- const [s, i] = t.split(":"), r = s === "*" || s === e.chain, n = i.toLowerCase() === "*" || i.toLowerCase() === e.symbol.toLowerCase();
188
- return r && n;
189
+ const [s = "", r = ""] = t.split(":").map((o) => o.trim().toLowerCase()), i = s === "" || s === "*" || s === e.chain.toLowerCase(), n = r === "" || r === "*" || r === e.symbol.toLowerCase();
190
+ return i && n;
189
191
  }
190
192
  async buildRouteMatrix(e) {
191
193
  const t = {};
192
194
  for (const s of e) {
193
- const i = [];
194
- for (const r of e)
195
- await this.isValidRoute(s, r) && i.push(r);
196
- t[s.toString()] = i;
195
+ const r = [];
196
+ for (const i of e)
197
+ await this.isValidRoute(s, i) && r.push(i);
198
+ t[s.toString()] = r;
197
199
  }
198
200
  return t;
199
201
  }
200
202
  };
201
- o.POLICY_CACHE_KEY = "route_policy";
202
- let h = o;
203
+ a.POLICY_CACHE_KEY = "route_policy";
204
+ let h = a;
203
205
  export {
204
206
  h as RouteValidator
205
207
  };
package/dist/index12.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./index8.cjs");function c(m,e,t){var i;const r=(m??"").trim();if(!r)return{name:"",symbol:""};const s=r.split(":");if(s.length>=2){const o=((i=s[0])==null?void 0:i.trim())||"",p=s.slice(1).join(":").trim()||(t==null?void 0:t.trim())||"";return{name:o,symbol:p}}let n="";if(e)try{n=(typeof e=="string"?u.ChainAsset.from(e):e).symbol.toUpperCase()}catch{}return{name:r,symbol:n||(t==null?void 0:t.trim())||""}}exports.parseAssetNameSymbol=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@gardenfi/utils"),p=require("./index8.cjs");function d(n,t,e){var o;const r=(n??"").trim();if(!r)return{name:"",symbol:""};const i=r.split(":");if(i.length>=2){const u=((o=i[0])==null?void 0:o.trim())||"",m=i.slice(1).join(":").trim()||(e==null?void 0:e.trim())||"";return{name:u,symbol:m}}let s="";if(t)try{s=(typeof t=="string"?p.ChainAsset.from(t):t).symbol.toUpperCase()}catch{}return{name:r,symbol:s||(e==null?void 0:e.trim())||""}}function h(n){return n instanceof c.Url?n:new c.Url(n)}function A(n,t){const e=n.toString().replace(/\/+$/,""),r=t.startsWith("/")?t:`/${t}`;return`${e}${r}`}exports.buildDefaultEndpoint=A;exports.ensureUrl=h;exports.parseAssetNameSymbol=d;
package/dist/index12.js CHANGED
@@ -1,21 +1,31 @@
1
- import { ChainAsset as h } from "./index8.js";
2
- function A(m, r, t) {
3
- var s;
4
- const n = (m ?? "").trim();
5
- if (!n) return { name: "", symbol: "" };
6
- const e = n.split(":");
7
- if (e.length >= 2) {
8
- const o = ((s = e[0]) == null ? void 0 : s.trim()) || "", p = e.slice(1).join(":").trim() || (t == null ? void 0 : t.trim()) || "";
9
- return { name: o, symbol: p };
1
+ import { Url as p } from "@gardenfi/utils";
2
+ import { ChainAsset as c } from "./index8.js";
3
+ function $(r, t, n) {
4
+ var o;
5
+ const e = (r ?? "").trim();
6
+ if (!e) return { name: "", symbol: "" };
7
+ const i = e.split(":");
8
+ if (i.length >= 2) {
9
+ const m = ((o = i[0]) == null ? void 0 : o.trim()) || "", u = i.slice(1).join(":").trim() || (n == null ? void 0 : n.trim()) || "";
10
+ return { name: m, symbol: u };
10
11
  }
11
- let i = "";
12
- if (r)
12
+ let s = "";
13
+ if (t)
13
14
  try {
14
- i = (typeof r == "string" ? h.from(r) : r).symbol.toUpperCase();
15
+ s = (typeof t == "string" ? c.from(t) : t).symbol.toUpperCase();
15
16
  } catch {
16
17
  }
17
- return { name: n, symbol: i || (t == null ? void 0 : t.trim()) || "" };
18
+ return { name: e, symbol: s || (n == null ? void 0 : n.trim()) || "" };
19
+ }
20
+ function d(r) {
21
+ return r instanceof p ? r : new p(r);
22
+ }
23
+ function f(r, t) {
24
+ const n = r.toString().replace(/\/+$/, ""), e = t.startsWith("/") ? t : `/${t}`;
25
+ return `${n}${e}`;
18
26
  }
19
27
  export {
20
- A as parseAssetNameSymbol
28
+ f as buildDefaultEndpoint,
29
+ d as ensureUrl,
30
+ $ as parseAssetNameSymbol
21
31
  };
package/dist/index4.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@gardenfi/utils"),e=require("./index3.cjs"),n=require("./index5.cjs"),v=require("./index6.cjs");var m=(c=>(c.Created="Created",c.InitiateDetected="Initiate Detected",c.Initiated="Initiated",c.AwaitingRedeem="Awaiting Redeem",c.RedeemDetected="Redeem Detected",c.Redeemed="Redeemed",c.AwaitingRefund="Awaiting Refund",c.RefundDetected="Refund Detected",c.Refunded="Refunded",c.Expired="Expired",c))(m||{}),r=(c=>(c.refunded="refunded",c.expired="expired",c.completed="completed",c.inProgress="in-progress",c.notInitiated="not-initiated",c.all="all",c.pending="pending",c.fulfilled="fulfilled",c))(r||{});const i={solana_localnet:{type:e.BlockchainType.solana,SOL:n.SOLSolanaLocalnetAsset,network:a.Network.LOCALNET},arbitrum_localnet:{type:e.BlockchainType.evm,WBTC:n.WBTCArbitrumLocalnetAsset,network:a.Network.LOCALNET},ethereum_localnet:{type:e.BlockchainType.evm,WBTC:n.WBTCEthereumLocalnetAsset,network:a.Network.LOCALNET},bitcoin_regtest:{type:e.BlockchainType.bitcoin,BTC:n.bitcoinRegtestAsset,network:a.Network.LOCALNET},starknet_devnet:{type:e.BlockchainType.starknet,STRK:n.STRKStarknetLocalnetAsset,ETH:n.ETHStarknetLocalnetAsset,network:a.Network.LOCALNET},solana_testnet:{type:e.BlockchainType.solana,network:a.Network.TESTNET,SOL:{id:"solana_testnet:sol",name:"Solana",symbol:"SOL",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/solana.png",chain:"solana:103",htlc:{address:"2bag6xpshpvPe7SJ9nSDLHpxqhEAoHPGpEkjNSv7gxoF",schema:"solana:htlc"},token:null},USDC:{id:"solana_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"solana:103",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"5JbWjyLdYKTuykpq2itWbdRcZkhK3hs6fiH62pkmLYZi",schema:null}},cbBTC:{id:"solana_testnet:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cbBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"solana:103",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"CL8C4gsaEQyWPxL4Zn7dcnZ8LKvPYqHmv4ipMax4cDUL",schema:null}}},bitcoin_testnet:{type:e.BlockchainType.bitcoin,network:a.Network.TESTNET,BTC:{id:"bitcoin_testnet:btc",name:"Bitcoin",symbol:"BTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"bitcoin",htlc:null,token:null}},ethereum_sepolia:{type:e.BlockchainType.evm,network:a.Network.TESTNET,WBTC:{id:"ethereum_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:11155111",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0xE918A5a47b8e0AFAC2382bC5D1e981613e63fB07",schema:"evm:erc20"}},USDC:{id:"ethereum_sepolia:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:11155111",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0xadDD620EA6D20f4f9c24fff3BC039E497ceBEDc2",schema:"evm:erc20"}}},arbitrum_sepolia:{type:e.BlockchainType.evm,network:a.Network.TESTNET,iBTC:{id:"arbitrum_sepolia:ibtc",name:"iBTC",symbol:"iBTC",decimals:8,icon:"https://garden.imgix.net/token-images/dlcBTCIcon.svg",chain:"evm:421614",htlc:{address:"0x7e8c18fa79bd4014cfCf49294Bf315139eD39f45",schema:"evm:htlc_erc20"},token:{address:"0x685437f025c5f33A94818408C286bc1F023201Fc",schema:"evm:erc20"}},WBTC:{id:"arbitrum_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:421614",htlc:{address:"0xb5AE9785349186069C48794a763DB39EC756B1cF",schema:"evm:htlc_erc20"},token:{address:"0x1c287717c886794ac9f5DF3987195431Ceb3456E",schema:"evm:erc20"}},USDC:{id:"arbitrum_sepolia:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:421614",htlc:{address:"0x8E12d730756457B99ce6E6AbFd60eBe751dA169B",schema:"evm:htlc_erc20"},token:{address:"0xC90Ad772eCc10a52a681ceDAE6EbBD3470A0c829",schema:"evm:erc20"}},SEED:{id:"arbitrum_sepolia:seed",name:"Seed",symbol:"SEED",decimals:18,icon:"https://garden.imgix.net/token-images/SEED.svg",chain:"evm:421614",htlc:{address:"0xFBD30cB9313fe580031A7E0258693E1cec002803",schema:"evm:htlc_erc20"},token:{address:"0x432B43764548c3E47eA65aAdeB91D75C84DBcC2c",schema:"evm:erc20"}}},base_sepolia:{type:e.BlockchainType.evm,network:a.Network.TESTNET,iBTC:{id:"base_sepolia:ibtc",name:"iBTC",symbol:"iBTC",decimals:8,icon:"https://garden.imgix.net/token-images/dlcBTCIcon.svg",chain:"evm:84532",htlc:{address:"0x46F1Ba9C9d89C34F9dbC4085F6B1f9965c589ca1",schema:"evm:htlc_erc20"},token:{address:"0x0b0D554D9573bAe1a7556d220847f45182918B28",schema:"evm:erc20"}},WBTC:{id:"base_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:84532",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0xD8a6E3FCA403d79b6AD6216b60527F51cc967D39",schema:"evm:erc20"}},USDT:{id:"base_sepolia:usdt",name:"Tether USD",symbol:"USDT",decimals:6,icon:"https://garden.imgix.net/token-images/usdt.svg",chain:"evm:84532",htlc:{address:"0x917cfef972d667dC0FeC76806cB5623585B81493",schema:"evm:htlc_erc20"},token:{address:"0xeaE7721d779276eb0f5837e2fE260118724a2Ba4",schema:"evm:erc20"}},USDC:{id:"base_sepolia:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:84532",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0x1ac7A0ebf13a996D5915e212900bE2d074f94988",schema:"evm:erc20"}}},bera_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET},citrea_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET,WCBTC:{id:"citrea_testnet:wcbtc",name:"Wrapped Citrea Bitcoin",symbol:"WCBTC",decimals:18,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:5115",htlc:{address:"0xD8e99df8cf77E7383c2f2a84bC6384b2DF88CAd3",schema:"evm:htlc_erc20"},token:{address:"0x8d0c9d1c17aE5e40ffF9bE350f57840E9E66Cd93",schema:"evm:erc20"}},WBTC:{id:"citrea_testnet:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:5115",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0x3edA22460259b29433704dda71cc921F528165Ea",schema:"evm:erc20"}},CBTC:{id:"citrea_testnet:cbtc",name:"Citrea Bitcoin",symbol:"CBTC",decimals:18,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:5115",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null},CBBTC:{id:"citrea_testnet:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"CBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:5115",htlc:{address:"0x8656d38352CD90ca55881eBd0AF6822839b435A8",schema:"evm:htlc_erc20"},token:{address:"0xeAa998aF280a62Ae08BaE4f9fa59C9b30e6BD306",schema:"evm:erc20"}},USDC:{id:"citrea_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:5115",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0xCdA8661fDA031deFCc9BdD88C0e12669Cac47Fb0",schema:"evm:erc20"}},USDT:{id:"citrea_testnet:usdt",name:"Tether USD",symbol:"USDT",decimals:6,icon:"https://garden.imgix.net/token-images/usdt.svg",chain:"evm:5115",htlc:{address:"0x917cfef972d667dC0FeC76806cB5623585B81493",schema:"evm:htlc_erc20"},token:{address:"0xF5cFE09b852Ddb164cF6Db419B9c11aAb5F30cb6",schema:"evm:erc20"}}},monad_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET,cBBTC:{id:"monad_testnet:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"evm:10143",htlc:{address:"0x8656d38352CD90ca55881eBd0AF6822839b435A8",schema:"evm:htlc_erc20"},token:{address:"0x6b6303fAb8eC7232b4f2a7b9fa58E5216F608fcb",schema:"evm:erc20"}},USDC:{id:"monad_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:10143",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0xf817257fed379853cde0fa4f97ab987181b1e5ea",schema:"evm:erc20"}}},starknet_sepolia:{type:e.BlockchainType.starknet,network:a.Network.TESTNET,WBTC:{id:"starknet_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"starknet:393402133025997798000961",htlc:{address:"0x06579d255314109429a4477d89629bc2b94f529ae01979c2f8014f9246482603",schema:"starknet:htlc_erc20"},token:{address:"0x496bef3ed20371382fbe0ca6a5a64252c5c848f9f1f0cccf8110fc4def912d5",schema:"starknet:erc20"}}},sui_testnet:{type:e.BlockchainType.sui,network:a.Network.TESTNET,SUI:{id:"sui_testnet:sui",name:"SUI",symbol:"SUI",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/sui.svg",chain:"sui",htlc:{address:"0x5c438715b7dcc02d12ab92449153a1e5ade2301620d5bf60aa748f006726d369",schema:null},token:{address:"0x2::sui::SUI",schema:null}}},hyperliquid_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET},bnbchain_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET,WBTC:{id:"bnbchain_testnet:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:97",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0x39f3294352208905fc6ebf033954E6c6455CdB4C",schema:"evm:erc20"}}},alpen_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET,sBTC:{id:"alpen_testnet:sbtc",name:"Signet Bitcoin",symbol:"sBTC",decimals:18,icon:"https://avatars.githubusercontent.com/u/113091135",chain:"evm:2892",htlc:{address:"0x39269522737a4a155F78EC1B1BDb86288c1Fcf67",schema:"evm:htlc"},token:null},USDC:{id:"alpen_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:2892",htlc:{address:"0x45b0d0c85bEb4512610fC2627CCB1587A7a044d4",schema:"evm:htlc_erc20"},token:{address:"0x9753D0481fC7e18797877B4e731B496439c849dE",schema:"evm:erc20"}}},tron_shasta:{type:e.BlockchainType.tron,network:a.Network.TESTNET,USDT:{id:"tron_shasta:usdt",name:"Tether USD",symbol:"USDT",decimals:6,icon:"https://garden.imgix.net/assets/TetherIcon.svg",chain:"tron:2494104990",htlc:{address:"TQa4rN2Vayesv5vmMAXzP5QA1PnPwD46w6",schema:"tron:htlc_erc20"},token:{address:"TDg6r1BXkxWbmXXvHWweqdpUY9qPhgUJsC",schema:"tron:erc20"}}},bitcoin:{type:e.BlockchainType.bitcoin,network:a.Network.MAINNET,BTC:{id:"bitcoin:btc",name:"Bitcoin",symbol:"BTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"bitcoin",htlc:null,token:null}},base:{type:e.BlockchainType.evm,network:a.Network.MAINNET,USDC:{id:"base:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:8453",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",schema:"evm:erc20"}},cBBTC:{id:"base:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://coin-images.coingecko.com/coins/images/51336/large/cbbtc.png?1730814747",chain:"evm:8453",htlc:{address:"0xe35d025d0f0d9492db4700FE8646f7F89150eC04",schema:"evm:htlc_erc20"},token:{address:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",schema:"evm:erc20"}}},arbitrum:{type:e.BlockchainType.evm,network:a.Network.MAINNET,WBTC:{id:"arbitrum:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:42161",htlc:{address:"0xb5AE9785349186069C48794a763DB39EC756B1cF",schema:"evm:htlc_erc20"},token:{address:"0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",schema:"evm:erc20"}},USDC:{id:"arbitrum:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:42161",htlc:{address:"0x8E12d730756457B99ce6E6AbFd60eBe751dA169B",schema:"evm:htlc_erc20"},token:{address:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",schema:"evm:erc20"}},SEED:{id:"arbitrum:seed",name:"SEED",symbol:"SEED",decimals:18,icon:"https://garden.imgix.net/token-images/SEED.svg",chain:"evm:42161",htlc:{address:"0xFBD30cB9313fe580031A7E0258693E1cec002803",schema:"evm:htlc_erc20"},token:{address:"0x86f65121804D2Cdbef79F9f072D4e0c2eEbABC08",schema:"evm:erc20"}}},ethereum:{type:e.BlockchainType.evm,network:a.Network.MAINNET,ETH:{id:"ethereum:eth",name:"Ethereum",symbol:"ETH",decimals:18,icon:"https://garden.imgix.net/chain_images/ethereum.svg",chain:"evm:1",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null},USDC:{id:"ethereum:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:1",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",schema:"evm:erc20"}},WBTC:{id:"ethereum:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:1",htlc:{address:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",schema:"evm:htlc_erc20"},token:{address:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",schema:"evm:erc20"}},cBBTC:{id:"ethereum:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"evm:1",htlc:{address:"0xe35d025d0f0d9492db4700FE8646f7F89150eC04",schema:"evm:htlc_erc20"},token:{address:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",schema:"evm:erc20"}},SEED:{id:"ethereum:seed",name:"SEED",symbol:"SEED",decimals:18,icon:"https://garden.imgix.net/token-images/SEED.svg",chain:"evm:1",htlc:{address:"0xCE511De667885f92B8c36fcfC79C3B5bEb875463",schema:"evm:htlc_erc20"},token:{address:"0x5eed99d066a8CaF10f3E4327c1b3D8b673485eED",schema:"evm:erc20"}}},solana:{type:e.BlockchainType.solana,network:a.Network.MAINNET,SOL:{id:"solana:sol",name:"Solana",symbol:"SOL",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/solana.png",chain:"solana:101",htlc:{address:"2bag6xpshpvPe7SJ9nSDLHpxqhEAoHPGpEkjNSv7gxoF",schema:"solana:htlc"},token:null},USDC:{id:"solana:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"solana:101",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",schema:"primary"}},cBBTC:{id:"solana:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"solana:101",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij",schema:"primary"}}},bera:{type:e.BlockchainType.evm,network:a.Network.MAINNET,LBTC:{id:"bera:lbtc",name:"Lombard Bitcoin",symbol:"LBTC",decimals:8,icon:"https://garden.imgix.net/token-images/LBTC.svg",chain:"evm:80094",htlc:{address:"0x84A396920d8B8CA2e69bD9503Bc1B2f73f1b8b33",schema:"evm:htlc_erc20"},token:{address:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",schema:"evm:erc20"}}},starknet:{type:e.BlockchainType.starknet,network:a.Network.MAINNET,WBTC:{id:"starknet:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"starknet:23448594291968334",htlc:{address:"0x7defd8eb3b770005ab1ca5f89ad31f98fb5bc3c52deaeafd130be3b49f967b4",schema:"starknet:htlc_erc20"},token:{address:"0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",schema:"starknet:erc20"}}},sui:{type:e.BlockchainType.sui,network:a.Network.MAINNET,SUI:{id:"sui:sui",name:"SUI",symbol:"SUI",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/sui.svg",chain:"sui:0",htlc:{address:"0xa4f4e653547e98d4b541378e14db2393a09aff4b829f158b133d2eb3c3a942b5",schema:null},token:{address:"0x2::sui::SUI",schema:null}}},hyperliquid:{type:e.BlockchainType.evm,network:a.Network.MAINNET,uBTC:{id:"hyperliquid:ubtc",name:"Unit Bitcoin",symbol:"uBTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:999",htlc:{address:"0xDC74a45e86DEdf1fF7c6dac77e0c2F082f9E4F72",schema:"evm:htlc_erc20"},token:{address:"0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463",schema:"evm:erc20"}}},unichain:{type:e.BlockchainType.evm,network:a.Network.MAINNET,WBTC:{id:"unichain:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:130",htlc:{address:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",schema:"evm:htlc_erc20"},token:{address:"0x927B51f251480a681271180DA4de28D44EC4AfB8",schema:"evm:erc20"}},USDC:{id:"unichain:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:130",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x078D782b760474a361dDA0AF3839290b0EF57AD6",schema:"evm:erc20"}}},corn:{type:e.BlockchainType.evm,network:a.Network.MAINNET,BTCN:{id:"corn:btcn",name:"Bitcorn",symbol:"BTCN",decimals:18,icon:"https://garden.imgix.net/token-images/bitcorn.svg",chain:"evm:21000000",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null}},botanix:{type:e.BlockchainType.evm,network:a.Network.MAINNET,BTC:{id:"botanix:btc",name:"Botanix Bitcoin",symbol:"BTC",decimals:18,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:3637",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null}},bnbchain:{type:e.BlockchainType.evm,network:a.Network.MAINNET,BTCB:{id:"bnbchain:btcb",name:"Binance Bitcoin",symbol:"BTCB",decimals:18,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:56",htlc:{address:"0xe74784E5A45528fDEcB257477DD6bd31c8ef0761",schema:"evm:htlc_erc20"},token:{address:"0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",schema:"evm:erc20"}},USDC:{id:"bnbchain:usdc",name:"USD Coin",symbol:"USDC",decimals:18,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:56",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",schema:"evm:erc20"}},BNB:{id:"bnbchain:bnb",name:"BNB",symbol:"BNB",decimals:18,icon:"https://garden-finance.imgix.net/chain_images/bnb.png",chain:"evm:56",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null}},core:{type:e.BlockchainType.evm,network:a.Network.MAINNET,WBTC:{id:"core:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:1116",htlc:{address:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",schema:"evm:htlc_erc20"},token:{address:"0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd",schema:"evm:erc20"}}},hypercore:{type:e.BlockchainType.evm,network:a.Network.MAINNET},hypercore_testnet:{type:e.BlockchainType.evm,network:a.Network.TESTNET}},T=Object.keys(i).reduce((c,t)=>(c[t]=t,c),{}),f=v.buildAssetsWithChain(i),E=c=>i[c].network===a.Network.MAINNET;function s(c){return t=>i[t].type===c}const h=s(e.BlockchainType.evm),l=s(e.BlockchainType.bitcoin),b=s(e.BlockchainType.solana),B=s(e.BlockchainType.starknet),k=s(e.BlockchainType.sui),D=s(e.BlockchainType.tron),x=c=>i[c].type,d={[e.BlockchainType.evm]:"eth",[e.BlockchainType.solana]:"sol",[e.BlockchainType.sui]:"sui"},g=(c,t)=>h(c)&&t.toLowerCase()===d[e.BlockchainType.evm],C=(c,t)=>b(c)&&t.toLowerCase()===d[e.BlockchainType.solana],p=(c,t)=>k(c)&&t.toLowerCase()===d[e.BlockchainType.sui],y=c=>{const t=c.chain,o=c.symbol;return g(t,o)||C(t,o)||l(t)||p(t,o)||!B(t)};exports.Assets=f;exports.Chains=T;exports.Config=i;exports.NATIVE_TOKENS=d;exports.OrderLifecycle=r;exports.OrderStatus=m;exports.getBlockchainType=x;exports.is=s;exports.isBitcoin=l;exports.isEVM=h;exports.isEvmNativeToken=g;exports.isMainnet=E;exports.isNativeToken=y;exports.isSolana=b;exports.isSolanaNativeToken=C;exports.isStarknet=B;exports.isSui=k;exports.isSuiNativeToken=p;exports.isTron=D;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@gardenfi/utils"),e=require("./index3.cjs"),i=require("./index5.cjs"),v=require("./index6.cjs");var o=(a=>(a.Created="Created",a.InitiateDetected="Initiate Detected",a.Initiated="Initiated",a.AwaitingRedeem="Awaiting Redeem",a.RedeemDetected="Redeem Detected",a.Redeemed="Redeemed",a.AwaitingRefund="Awaiting Refund",a.RefundDetected="Refund Detected",a.Refunded="Refunded",a.Expired="Expired",a))(o||{}),r=(a=>(a.refunded="refunded",a.expired="expired",a.completed="completed",a.inProgress="in-progress",a.notInitiated="not-initiated",a.all="all",a.pending="pending",a.fulfilled="fulfilled",a))(r||{});const n={solana_localnet:{type:e.BlockchainType.solana,SOL:i.SOLSolanaLocalnetAsset,network:c.Network.LOCALNET},arbitrum_localnet:{type:e.BlockchainType.evm,WBTC:i.WBTCArbitrumLocalnetAsset,network:c.Network.LOCALNET},ethereum_localnet:{type:e.BlockchainType.evm,WBTC:i.WBTCEthereumLocalnetAsset,network:c.Network.LOCALNET},bitcoin_regtest:{type:e.BlockchainType.bitcoin,BTC:i.bitcoinRegtestAsset,network:c.Network.LOCALNET},starknet_devnet:{type:e.BlockchainType.starknet,STRK:i.STRKStarknetLocalnetAsset,ETH:i.ETHStarknetLocalnetAsset,network:c.Network.LOCALNET},solana_testnet:{type:e.BlockchainType.solana,network:c.Network.TESTNET,SOL:{id:"solana_testnet:sol",name:"Solana",symbol:"SOL",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/solana.png",chain:"solana:103",htlc:{address:"2bag6xpshpvPe7SJ9nSDLHpxqhEAoHPGpEkjNSv7gxoF",schema:"solana:htlc"},token:null},USDC:{id:"solana_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"solana:103",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"5JbWjyLdYKTuykpq2itWbdRcZkhK3hs6fiH62pkmLYZi",schema:null}},cbBTC:{id:"solana_testnet:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cbBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"solana:103",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"CL8C4gsaEQyWPxL4Zn7dcnZ8LKvPYqHmv4ipMax4cDUL",schema:null}}},bitcoin_testnet:{type:e.BlockchainType.bitcoin,network:c.Network.TESTNET,BTC:{id:"bitcoin_testnet:btc",name:"Bitcoin",symbol:"BTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"bitcoin",htlc:null,token:null}},ethereum_sepolia:{type:e.BlockchainType.evm,network:c.Network.TESTNET,WBTC:{id:"ethereum_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:11155111",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0xE918A5a47b8e0AFAC2382bC5D1e981613e63fB07",schema:"evm:erc20"}},USDC:{id:"ethereum_sepolia:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:11155111",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0xadDD620EA6D20f4f9c24fff3BC039E497ceBEDc2",schema:"evm:erc20"}}},arbitrum_sepolia:{type:e.BlockchainType.evm,network:c.Network.TESTNET,iBTC:{id:"arbitrum_sepolia:ibtc",name:"iBTC",symbol:"iBTC",decimals:8,icon:"https://garden.imgix.net/token-images/dlcBTCIcon.svg",chain:"evm:421614",htlc:{address:"0x7e8c18fa79bd4014cfCf49294Bf315139eD39f45",schema:"evm:htlc_erc20"},token:{address:"0x685437f025c5f33A94818408C286bc1F023201Fc",schema:"evm:erc20"}},WBTC:{id:"arbitrum_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:421614",htlc:{address:"0xb5AE9785349186069C48794a763DB39EC756B1cF",schema:"evm:htlc_erc20"},token:{address:"0x1c287717c886794ac9f5DF3987195431Ceb3456E",schema:"evm:erc20"}},USDC:{id:"arbitrum_sepolia:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:421614",htlc:{address:"0x8E12d730756457B99ce6E6AbFd60eBe751dA169B",schema:"evm:htlc_erc20"},token:{address:"0xC90Ad772eCc10a52a681ceDAE6EbBD3470A0c829",schema:"evm:erc20"}},SEED:{id:"arbitrum_sepolia:seed",name:"Seed",symbol:"SEED",decimals:18,icon:"https://garden.imgix.net/token-images/SEED.svg",chain:"evm:421614",htlc:{address:"0xFBD30cB9313fe580031A7E0258693E1cec002803",schema:"evm:htlc_erc20"},token:{address:"0x432B43764548c3E47eA65aAdeB91D75C84DBcC2c",schema:"evm:erc20"}}},base_sepolia:{type:e.BlockchainType.evm,network:c.Network.TESTNET,iBTC:{id:"base_sepolia:ibtc",name:"iBTC",symbol:"iBTC",decimals:8,icon:"https://garden.imgix.net/token-images/dlcBTCIcon.svg",chain:"evm:84532",htlc:{address:"0x46F1Ba9C9d89C34F9dbC4085F6B1f9965c589ca1",schema:"evm:htlc_erc20"},token:{address:"0x0b0D554D9573bAe1a7556d220847f45182918B28",schema:"evm:erc20"}},WBTC:{id:"base_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:84532",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0xD8a6E3FCA403d79b6AD6216b60527F51cc967D39",schema:"evm:erc20"}},USDT:{id:"base_sepolia:usdt",name:"Tether USD",symbol:"USDT",decimals:6,icon:"https://garden.imgix.net/token-images/usdt.svg",chain:"evm:84532",htlc:{address:"0x917cfef972d667dC0FeC76806cB5623585B81493",schema:"evm:htlc_erc20"},token:{address:"0xeaE7721d779276eb0f5837e2fE260118724a2Ba4",schema:"evm:erc20"}},USDC:{id:"base_sepolia:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:84532",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0x1ac7A0ebf13a996D5915e212900bE2d074f94988",schema:"evm:erc20"}}},bera_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET},citrea_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET,WCBTC:{id:"citrea_testnet:wcbtc",name:"Wrapped Citrea Bitcoin",symbol:"WCBTC",decimals:18,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:5115",htlc:{address:"0xD8e99df8cf77E7383c2f2a84bC6384b2DF88CAd3",schema:"evm:htlc_erc20"},token:{address:"0x8d0c9d1c17aE5e40ffF9bE350f57840E9E66Cd93",schema:"evm:erc20"}},WBTC:{id:"citrea_testnet:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:5115",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0x3edA22460259b29433704dda71cc921F528165Ea",schema:"evm:erc20"}},CBTC:{id:"citrea_testnet:cbtc",name:"Citrea Bitcoin",symbol:"CBTC",decimals:18,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:5115",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null},CBBTC:{id:"citrea_testnet:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"CBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:5115",htlc:{address:"0x8656d38352CD90ca55881eBd0AF6822839b435A8",schema:"evm:htlc_erc20"},token:{address:"0xeAa998aF280a62Ae08BaE4f9fa59C9b30e6BD306",schema:"evm:erc20"}},USDC:{id:"citrea_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:5115",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0xCdA8661fDA031deFCc9BdD88C0e12669Cac47Fb0",schema:"evm:erc20"}},USDT:{id:"citrea_testnet:usdt",name:"Tether USD",symbol:"USDT",decimals:6,icon:"https://garden.imgix.net/token-images/usdt.svg",chain:"evm:5115",htlc:{address:"0x917cfef972d667dC0FeC76806cB5623585B81493",schema:"evm:htlc_erc20"},token:{address:"0xF5cFE09b852Ddb164cF6Db419B9c11aAb5F30cb6",schema:"evm:erc20"}}},monad_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET,cBBTC:{id:"monad_testnet:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"evm:10143",htlc:{address:"0x8656d38352CD90ca55881eBd0AF6822839b435A8",schema:"evm:htlc_erc20"},token:{address:"0x6b6303fAb8eC7232b4f2a7b9fa58E5216F608fcb",schema:"evm:erc20"}},USDC:{id:"monad_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:10143",htlc:{address:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",schema:"evm:htlc_erc20"},token:{address:"0xf817257fed379853cde0fa4f97ab987181b1e5ea",schema:"evm:erc20"}}},starknet_sepolia:{type:e.BlockchainType.starknet,network:c.Network.TESTNET,WBTC:{id:"starknet_sepolia:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"starknet:393402133025997798000961",htlc:{address:"0x06579d255314109429a4477d89629bc2b94f529ae01979c2f8014f9246482603",schema:"starknet:htlc_erc20"},token:{address:"0x496bef3ed20371382fbe0ca6a5a64252c5c848f9f1f0cccf8110fc4def912d5",schema:"starknet:erc20"}}},sui_testnet:{type:e.BlockchainType.sui,network:c.Network.TESTNET,SUI:{id:"sui_testnet:sui",name:"SUI",symbol:"SUI",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/sui.svg",chain:"sui",htlc:{address:"0x5c438715b7dcc02d12ab92449153a1e5ade2301620d5bf60aa748f006726d369",schema:null},token:{address:"0x2::sui::SUI",schema:null}}},hyperliquid_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET},bnbchain_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET,WBTC:{id:"bnbchain_testnet:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:97",htlc:{address:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",schema:"evm:htlc_erc20"},token:{address:"0x39f3294352208905fc6ebf033954E6c6455CdB4C",schema:"evm:erc20"}}},alpen_signet:{type:e.BlockchainType.bitcoin,network:c.Network.TESTNET,BTC:{id:"alpen_signet:btc",name:"Alpen Bitcoin",symbol:"BTC",decimals:8,icon:"https://garden-finance.imgix.net/token-images/bitcoin.svg",chain:"alpen_signet",htlc:null,token:null}},alpen_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET,sBTC:{id:"alpen_testnet:sbtc",name:"Signet Bitcoin",symbol:"sBTC",decimals:18,icon:"https://avatars.githubusercontent.com/u/113091135",chain:"evm:8150",htlc:{address:"0x934C87EE12c6c541E9C3A4997ae70371b3db7b3e",schema:"evm:htlc"},token:null},USDC:{id:"alpen_testnet:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:8150",htlc:{address:"0x7031336949223a512C0435dF75dd8114fa3b7261",schema:"evm:htlc_erc20"},token:{address:"0x9753D0481fC7e18797877B4e731B496439c849dE",schema:"evm:erc20"}}},tron_shasta:{type:e.BlockchainType.tron,network:c.Network.TESTNET,USDT:{id:"tron_shasta:usdt",name:"Tether USD",symbol:"USDT",decimals:6,icon:"https://garden.imgix.net/assets/TetherIcon.svg",chain:"tron:2494104990",htlc:{address:"TQa4rN2Vayesv5vmMAXzP5QA1PnPwD46w6",schema:"tron:htlc_erc20"},token:{address:"TDg6r1BXkxWbmXXvHWweqdpUY9qPhgUJsC",schema:"tron:erc20"}}},bitcoin:{type:e.BlockchainType.bitcoin,network:c.Network.MAINNET,BTC:{id:"bitcoin:btc",name:"Bitcoin",symbol:"BTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"bitcoin",htlc:null,token:null}},base:{type:e.BlockchainType.evm,network:c.Network.MAINNET,USDC:{id:"base:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:8453",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",schema:"evm:erc20"}},cBBTC:{id:"base:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://coin-images.coingecko.com/coins/images/51336/large/cbbtc.png?1730814747",chain:"evm:8453",htlc:{address:"0xe35d025d0f0d9492db4700FE8646f7F89150eC04",schema:"evm:htlc_erc20"},token:{address:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",schema:"evm:erc20"}}},monad:{type:e.BlockchainType.evm,network:c.Network.MAINNET,MON:{id:"monad:mon",name:"Mon:MON",symbol:"MON",decimals:18,icon:"https://garden.imgix.net/chain_images/monad.svg",chain:"evm:143",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null},USDC:{id:"monad:usdc",name:"USD Coin:USDC",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:143",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x754704Bc059F8C67012fEd69BC8A327a5aafb603",schema:"evm:erc20"}}},arbitrum:{type:e.BlockchainType.evm,network:c.Network.MAINNET,WBTC:{id:"arbitrum:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:42161",htlc:{address:"0xb5AE9785349186069C48794a763DB39EC756B1cF",schema:"evm:htlc_erc20"},token:{address:"0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f",schema:"evm:erc20"}},USDC:{id:"arbitrum:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:42161",htlc:{address:"0x8E12d730756457B99ce6E6AbFd60eBe751dA169B",schema:"evm:htlc_erc20"},token:{address:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831",schema:"evm:erc20"}},SEED:{id:"arbitrum:seed",name:"SEED",symbol:"SEED",decimals:18,icon:"https://garden.imgix.net/token-images/SEED.svg",chain:"evm:42161",htlc:{address:"0xFBD30cB9313fe580031A7E0258693E1cec002803",schema:"evm:htlc_erc20"},token:{address:"0x86f65121804D2Cdbef79F9f072D4e0c2eEbABC08",schema:"evm:erc20"}}},ethereum:{type:e.BlockchainType.evm,network:c.Network.MAINNET,ETH:{id:"ethereum:eth",name:"Ethereum",symbol:"ETH",decimals:18,icon:"https://garden.imgix.net/chain_images/ethereum.svg",chain:"evm:1",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null},USDC:{id:"ethereum:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:1",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",schema:"evm:erc20"}},WBTC:{id:"ethereum:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:1",htlc:{address:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",schema:"evm:htlc_erc20"},token:{address:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",schema:"evm:erc20"}},cBBTC:{id:"ethereum:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"evm:1",htlc:{address:"0xe35d025d0f0d9492db4700FE8646f7F89150eC04",schema:"evm:htlc_erc20"},token:{address:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf",schema:"evm:erc20"}},SEED:{id:"ethereum:seed",name:"SEED",symbol:"SEED",decimals:18,icon:"https://garden.imgix.net/token-images/SEED.svg",chain:"evm:1",htlc:{address:"0xCE511De667885f92B8c36fcfC79C3B5bEb875463",schema:"evm:htlc_erc20"},token:{address:"0x5eed99d066a8CaF10f3E4327c1b3D8b673485eED",schema:"evm:erc20"}}},solana:{type:e.BlockchainType.solana,network:c.Network.MAINNET,SOL:{id:"solana:sol",name:"Solana",symbol:"SOL",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/solana.png",chain:"solana:101",htlc:{address:"2bag6xpshpvPe7SJ9nSDLHpxqhEAoHPGpEkjNSv7gxoF",schema:"solana:htlc"},token:null},USDC:{id:"solana:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"solana:101",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",schema:"primary"}},cBBTC:{id:"solana:cbbtc",name:"Coinbase Wrapped Bitcoin",symbol:"cBBTC",decimals:8,icon:"https://garden.imgix.net/token-images/cbBTC.svg",chain:"solana:101",htlc:{address:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",schema:"solana:htlc_spltoken"},token:{address:"cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij",schema:"primary"}}},bera:{type:e.BlockchainType.evm,network:c.Network.MAINNET,LBTC:{id:"bera:lbtc",name:"Lombard Bitcoin",symbol:"LBTC",decimals:8,icon:"https://garden.imgix.net/token-images/LBTC.svg",chain:"evm:80094",htlc:{address:"0x84A396920d8B8CA2e69bD9503Bc1B2f73f1b8b33",schema:"evm:htlc_erc20"},token:{address:"0xecAc9C5F704e954931349Da37F60E39f515c11c1",schema:"evm:erc20"}}},starknet:{type:e.BlockchainType.starknet,network:c.Network.MAINNET,WBTC:{id:"starknet:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"starknet:23448594291968334",htlc:{address:"0x7defd8eb3b770005ab1ca5f89ad31f98fb5bc3c52deaeafd130be3b49f967b4",schema:"starknet:htlc_erc20"},token:{address:"0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac",schema:"starknet:erc20"}}},sui:{type:e.BlockchainType.sui,network:c.Network.MAINNET,SUI:{id:"sui:sui",name:"SUI",symbol:"SUI",decimals:9,icon:"https://garden-finance.imgix.net/chain_images/sui.svg",chain:"sui:0",htlc:{address:"0xa4f4e653547e98d4b541378e14db2393a09aff4b829f158b133d2eb3c3a942b5",schema:null},token:{address:"0x2::sui::SUI",schema:null}}},hyperliquid:{type:e.BlockchainType.evm,network:c.Network.MAINNET,uBTC:{id:"hyperliquid:ubtc",name:"Unit Bitcoin",symbol:"uBTC",decimals:8,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:999",htlc:{address:"0xDC74a45e86DEdf1fF7c6dac77e0c2F082f9E4F72",schema:"evm:htlc_erc20"},token:{address:"0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463",schema:"evm:erc20"}}},unichain:{type:e.BlockchainType.evm,network:c.Network.MAINNET,WBTC:{id:"unichain:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:130",htlc:{address:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",schema:"evm:htlc_erc20"},token:{address:"0x927B51f251480a681271180DA4de28D44EC4AfB8",schema:"evm:erc20"}},USDC:{id:"unichain:usdc",name:"USD Coin",symbol:"USDC",decimals:6,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:130",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x078D782b760474a361dDA0AF3839290b0EF57AD6",schema:"evm:erc20"}}},corn:{type:e.BlockchainType.evm,network:c.Network.MAINNET,BTCN:{id:"corn:btcn",name:"Bitcorn",symbol:"BTCN",decimals:18,icon:"https://garden.imgix.net/token-images/bitcorn.svg",chain:"evm:21000000",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null}},botanix:{type:e.BlockchainType.evm,network:c.Network.MAINNET,BTC:{id:"botanix:btc",name:"Botanix Bitcoin",symbol:"BTC",decimals:18,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:3637",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null}},bnbchain:{type:e.BlockchainType.evm,network:c.Network.MAINNET,BTCB:{id:"bnbchain:btcb",name:"Binance Bitcoin",symbol:"BTCB",decimals:18,icon:"https://garden.imgix.net/token-images/bitcoin.svg",chain:"evm:56",htlc:{address:"0xe74784E5A45528fDEcB257477DD6bd31c8ef0761",schema:"evm:htlc_erc20"},token:{address:"0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c",schema:"evm:erc20"}},USDC:{id:"bnbchain:usdc",name:"USD Coin",symbol:"USDC",decimals:18,icon:"https://garden.imgix.net/token-images/usdc.svg",chain:"evm:56",htlc:{address:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",schema:"evm:htlc_erc20"},token:{address:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",schema:"evm:erc20"}},BNB:{id:"bnbchain:bnb",name:"BNB",symbol:"BNB",decimals:18,icon:"https://garden-finance.imgix.net/chain_images/bnb.png",chain:"evm:56",htlc:{address:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",schema:"evm:htlc"},token:null}},core:{type:e.BlockchainType.evm,network:c.Network.MAINNET,WBTC:{id:"core:wbtc",name:"Wrapped Bitcoin",symbol:"WBTC",decimals:8,icon:"https://garden.imgix.net/token-images/wbtc.svg",chain:"evm:1116",htlc:{address:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",schema:"evm:htlc_erc20"},token:{address:"0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd",schema:"evm:erc20"}}},hypercore:{type:e.BlockchainType.evm,network:c.Network.MAINNET},hypercore_testnet:{type:e.BlockchainType.evm,network:c.Network.TESTNET}},T=Object.keys(n).reduce((a,t)=>(a[t]=t,a),{}),f=v.buildAssetsWithChain(n),E=a=>n[a].network===c.Network.MAINNET;function s(a){return t=>n[t]&&n[t].type===a}const h=s(e.BlockchainType.evm),l=s(e.BlockchainType.bitcoin),b=s(e.BlockchainType.solana),B=s(e.BlockchainType.starknet),k=s(e.BlockchainType.sui),D=s(e.BlockchainType.tron),x=a=>n[a].type,d={[e.BlockchainType.evm]:"eth",[e.BlockchainType.solana]:"sol",[e.BlockchainType.sui]:"sui"},g=(a,t)=>h(a)&&t.toLowerCase()===d[e.BlockchainType.evm],p=(a,t)=>b(a)&&t.toLowerCase()===d[e.BlockchainType.solana],C=(a,t)=>k(a)&&t.toLowerCase()===d[e.BlockchainType.sui],y=a=>{const t=a.chain,m=a.symbol;return g(t,m)||p(t,m)||l(t)||C(t,m)||!B(t)};exports.Assets=f;exports.Chains=T;exports.Config=n;exports.NATIVE_TOKENS=d;exports.OrderLifecycle=r;exports.OrderStatus=o;exports.getBlockchainType=x;exports.is=s;exports.isBitcoin=l;exports.isEVM=h;exports.isEvmNativeToken=g;exports.isMainnet=E;exports.isNativeToken=y;exports.isSolana=b;exports.isSolanaNativeToken=p;exports.isStarknet=B;exports.isSui=k;exports.isSuiNativeToken=C;exports.isTron=D;
package/dist/index4.js CHANGED
@@ -3,7 +3,7 @@ import { BlockchainType as e } from "./index3.js";
3
3
  import { ETHStarknetLocalnetAsset as m, STRKStarknetLocalnetAsset as o, bitcoinRegtestAsset as r, WBTCEthereumLocalnetAsset as h, WBTCArbitrumLocalnetAsset as l, SOLSolanaLocalnetAsset as b } from "./index5.js";
4
4
  import { buildAssetsWithChain as g } from "./index6.js";
5
5
  var C = /* @__PURE__ */ ((a) => (a.Created = "Created", a.InitiateDetected = "Initiate Detected", a.Initiated = "Initiated", a.AwaitingRedeem = "Awaiting Redeem", a.RedeemDetected = "Redeem Detected", a.Redeemed = "Redeemed", a.AwaitingRefund = "Awaiting Refund", a.RefundDetected = "Refund Detected", a.Refunded = "Refunded", a.Expired = "Expired", a))(C || {}), B = /* @__PURE__ */ ((a) => (a.refunded = "refunded", a.expired = "expired", a.completed = "completed", a.inProgress = "in-progress", a.notInitiated = "not-initiated", a.all = "all", a.pending = "pending", a.fulfilled = "fulfilled", a))(B || {});
6
- const n = {
6
+ const s = {
7
7
  solana_localnet: {
8
8
  type: e.solana,
9
9
  SOL: b,
@@ -466,6 +466,20 @@ const n = {
466
466
  }
467
467
  }
468
468
  },
469
+ alpen_signet: {
470
+ type: e.bitcoin,
471
+ network: t.TESTNET,
472
+ BTC: {
473
+ id: "alpen_signet:btc",
474
+ name: "Alpen Bitcoin",
475
+ symbol: "BTC",
476
+ decimals: 8,
477
+ icon: "https://garden-finance.imgix.net/token-images/bitcoin.svg",
478
+ chain: "alpen_signet",
479
+ htlc: null,
480
+ token: null
481
+ }
482
+ },
469
483
  alpen_testnet: {
470
484
  type: e.evm,
471
485
  network: t.TESTNET,
@@ -475,9 +489,9 @@ const n = {
475
489
  symbol: "sBTC",
476
490
  decimals: 18,
477
491
  icon: "https://avatars.githubusercontent.com/u/113091135",
478
- chain: "evm:2892",
492
+ chain: "evm:8150",
479
493
  htlc: {
480
- address: "0x39269522737a4a155F78EC1B1BDb86288c1Fcf67",
494
+ address: "0x934C87EE12c6c541E9C3A4997ae70371b3db7b3e",
481
495
  schema: "evm:htlc"
482
496
  },
483
497
  token: null
@@ -488,9 +502,9 @@ const n = {
488
502
  symbol: "USDC",
489
503
  decimals: 6,
490
504
  icon: "https://garden.imgix.net/token-images/usdc.svg",
491
- chain: "evm:2892",
505
+ chain: "evm:8150",
492
506
  htlc: {
493
- address: "0x45b0d0c85bEb4512610fC2627CCB1587A7a044d4",
507
+ address: "0x7031336949223a512C0435dF75dd8114fa3b7261",
494
508
  schema: "evm:htlc_erc20"
495
509
  },
496
510
  token: {
@@ -569,6 +583,39 @@ const n = {
569
583
  }
570
584
  }
571
585
  },
586
+ monad: {
587
+ type: e.evm,
588
+ network: t.MAINNET,
589
+ MON: {
590
+ id: "monad:mon",
591
+ name: "Mon:MON",
592
+ symbol: "MON",
593
+ decimals: 18,
594
+ icon: "https://garden.imgix.net/chain_images/monad.svg",
595
+ chain: "evm:143",
596
+ htlc: {
597
+ address: "0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",
598
+ schema: "evm:htlc"
599
+ },
600
+ token: null
601
+ },
602
+ USDC: {
603
+ id: "monad:usdc",
604
+ name: "USD Coin:USDC",
605
+ symbol: "USDC",
606
+ decimals: 6,
607
+ icon: "https://garden.imgix.net/token-images/usdc.svg",
608
+ chain: "evm:143",
609
+ htlc: {
610
+ address: "0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",
611
+ schema: "evm:htlc_erc20"
612
+ },
613
+ token: {
614
+ address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603",
615
+ schema: "evm:erc20"
616
+ }
617
+ }
618
+ },
572
619
  arbitrum: {
573
620
  type: e.evm,
574
621
  network: t.MAINNET,
@@ -978,14 +1025,14 @@ const n = {
978
1025
  type: e.evm,
979
1026
  network: t.TESTNET
980
1027
  }
981
- }, _ = Object.keys(n).reduce(
1028
+ }, _ = Object.keys(s).reduce(
982
1029
  (a, c) => (a[c] = c, a),
983
1030
  {}
984
- ), w = g(n), U = (a) => n[a].network === t.MAINNET;
985
- function s(a) {
986
- return (c) => n[c].type === a;
1031
+ ), w = g(s), U = (a) => s[a].network === t.MAINNET;
1032
+ function n(a) {
1033
+ return (c) => s[c] && s[c].type === a;
987
1034
  }
988
- const v = s(e.evm), p = s(e.bitcoin), f = s(e.solana), k = s(e.starknet), E = s(e.sui), F = s(e.tron), N = (a) => n[a].type, d = {
1035
+ const v = n(e.evm), p = n(e.bitcoin), f = n(e.solana), k = n(e.starknet), E = n(e.sui), N = n(e.tron), F = (a) => s[a].type, d = {
989
1036
  [e.evm]: "eth",
990
1037
  [e.solana]: "sol",
991
1038
  [e.sui]: "sui"
@@ -997,12 +1044,12 @@ const v = s(e.evm), p = s(e.bitcoin), f = s(e.solana), k = s(e.starknet), E = s(
997
1044
  export {
998
1045
  w as Assets,
999
1046
  _ as Chains,
1000
- n as Config,
1047
+ s as Config,
1001
1048
  d as NATIVE_TOKENS,
1002
1049
  B as OrderLifecycle,
1003
1050
  C as OrderStatus,
1004
- N as getBlockchainType,
1005
- s as is,
1051
+ F as getBlockchainType,
1052
+ n as is,
1006
1053
  p as isBitcoin,
1007
1054
  v as isEVM,
1008
1055
  D as isEvmNativeToken,
@@ -1013,5 +1060,5 @@ export {
1013
1060
  k as isStarknet,
1014
1061
  E as isSui,
1015
1062
  x as isSuiNativeToken,
1016
- F as isTron
1063
+ N as isTron
1017
1064
  };
package/dist/index8.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index4.cjs");class o{constructor(t,r){this.chain=t,this.symbol=r,this.blockchainType=e.getBlockchainType(t),this.formatted=`${t.toLowerCase()}:${r.toLowerCase()}`,this.network=e.Config[t].network,this.asset=e.Assets[t][r]}static from(t){return t instanceof o?t:typeof t=="string"?o.fromString(t):o.fromAsset(t)}static fromChainAndSymbol(t,r){return new o(t,r)}static fromString(t){const[r,n]=t.split(":");if(!(r in e.Chains))throw new Error(`Invalid chain in asset string: ${r}`);return new o(r,n)}static fromAsset(t){return new o(t.chain,t.symbol)}toString(){return this.formatted}}exports.ChainAsset=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index4.cjs");class o{constructor(t,r){this.chain=t,this.symbol=r,this.blockchainType=e.getBlockchainType(t),this.formatted=`${t.toLowerCase()}:${r.toLowerCase()}`,this.network=e.Config[t].network,this.asset=e.Assets[t][r]}static from(t){return t instanceof o?t:typeof t=="string"?o.fromString(t):o.fromAsset(t)}static fromChainAndSymbol(t,r){return new o(t,r)}static fromString(t){const[r,n]=t.split(":");if(!(r in e.Chains))throw new Error(`Invalid chain in asset string: ${r}`);return new o(r,n)}static fromAsset(t){return new o(t.chain,t.symbol)}toString(){return this.formatted}toJSON(){return this.formatted}}exports.ChainAsset=o;
package/dist/index8.js CHANGED
@@ -22,6 +22,9 @@ class o {
22
22
  toString() {
23
23
  return this.formatted;
24
24
  }
25
+ toJSON() {
26
+ return this.formatted;
27
+ }
25
28
  }
26
29
  export {
27
30
  o as ChainAsset
@@ -1,9 +1,14 @@
1
- import { AsyncResult, IAuth } from '@gardenfi/utils';
1
+ import { Url, AsyncResult, IAuth } from '@gardenfi/utils';
2
2
  import { RouteValidator } from './routeValidator/routeValidator';
3
3
  import { Assets, ChainData, Chains } from './types';
4
4
  import { ChainAsset } from '../chainAsset/chainAsset';
5
5
  import { Asset, Chain } from '../constants/asset.types';
6
6
 
7
+ type AssetManagerUrlConfig = {
8
+ baseUrl: string | Url;
9
+ assetsUrl?: string | Url;
10
+ policyUrl?: string | Url;
11
+ };
7
12
  /**
8
13
  * AssetManager
9
14
  *
@@ -18,9 +23,9 @@ export declare class AssetManager {
18
23
  routeMatrix: Record<string, ChainAsset[]> | null;
19
24
  isLoading: boolean;
20
25
  error: string | null;
21
- private readonly url;
26
+ private readonly urls;
22
27
  private auth;
23
- constructor(url: string, apiKey: IAuth | string);
28
+ constructor(urlConfig: AssetManagerUrlConfig, apiKey: IAuth | string);
24
29
  /**
25
30
  * Initialize the AssetManager by fetching all required data
26
31
  */
@@ -74,3 +79,4 @@ export declare class AssetManager {
74
79
  */
75
80
  refresh(): Promise<void>;
76
81
  }
82
+ export {};
@@ -1,6 +1,9 @@
1
+ import { Url } from '@gardenfi/utils';
1
2
  import { ChainAsset } from '../chainAsset/chainAsset';
2
3
 
3
4
  export declare function parseAssetNameSymbol(input: string | undefined, assetId?: string | ChainAsset, fallbackSymbol?: string): {
4
5
  name: string;
5
6
  symbol: string;
6
7
  };
8
+ export declare function ensureUrl(value: string | Url): Url;
9
+ export declare function buildDefaultEndpoint(baseUrl: Url, path: string): string;
@@ -16,4 +16,5 @@ export declare class ChainAsset {
16
16
  static fromString(formatted: ChainAssetString | string): ChainAsset;
17
17
  static fromAsset(asset: Asset): ChainAsset;
18
18
  toString(): string;
19
+ toJSON(): string;
19
20
  }
@@ -523,6 +523,20 @@ export declare const Config: {
523
523
  };
524
524
  };
525
525
  };
526
+ readonly alpen_signet: {
527
+ readonly type: BlockchainType.bitcoin;
528
+ readonly network: Network.TESTNET;
529
+ readonly BTC: {
530
+ readonly id: "alpen_signet:btc";
531
+ readonly name: "Alpen Bitcoin";
532
+ readonly symbol: "BTC";
533
+ readonly decimals: 8;
534
+ readonly icon: "https://garden-finance.imgix.net/token-images/bitcoin.svg";
535
+ readonly chain: "alpen_signet";
536
+ readonly htlc: null;
537
+ readonly token: null;
538
+ };
539
+ };
526
540
  readonly alpen_testnet: {
527
541
  readonly type: BlockchainType.evm;
528
542
  readonly network: Network.TESTNET;
@@ -532,9 +546,9 @@ export declare const Config: {
532
546
  readonly symbol: "sBTC";
533
547
  readonly decimals: 18;
534
548
  readonly icon: "https://avatars.githubusercontent.com/u/113091135";
535
- readonly chain: "evm:2892";
549
+ readonly chain: "evm:8150";
536
550
  readonly htlc: {
537
- readonly address: "0x39269522737a4a155F78EC1B1BDb86288c1Fcf67";
551
+ readonly address: "0x934C87EE12c6c541E9C3A4997ae70371b3db7b3e";
538
552
  readonly schema: "evm:htlc";
539
553
  };
540
554
  readonly token: null;
@@ -545,9 +559,9 @@ export declare const Config: {
545
559
  readonly symbol: "USDC";
546
560
  readonly decimals: 6;
547
561
  readonly icon: "https://garden.imgix.net/token-images/usdc.svg";
548
- readonly chain: "evm:2892";
562
+ readonly chain: "evm:8150";
549
563
  readonly htlc: {
550
- readonly address: "0x45b0d0c85bEb4512610fC2627CCB1587A7a044d4";
564
+ readonly address: "0x7031336949223a512C0435dF75dd8114fa3b7261";
551
565
  readonly schema: "evm:htlc_erc20";
552
566
  };
553
567
  readonly token: {
@@ -626,6 +640,39 @@ export declare const Config: {
626
640
  };
627
641
  };
628
642
  };
643
+ readonly monad: {
644
+ readonly type: BlockchainType.evm;
645
+ readonly network: Network.MAINNET;
646
+ readonly MON: {
647
+ readonly id: "monad:mon";
648
+ readonly name: "Mon:MON";
649
+ readonly symbol: "MON";
650
+ readonly decimals: 18;
651
+ readonly icon: "https://garden.imgix.net/chain_images/monad.svg";
652
+ readonly chain: "evm:143";
653
+ readonly htlc: {
654
+ readonly address: "0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb";
655
+ readonly schema: "evm:htlc";
656
+ };
657
+ readonly token: null;
658
+ };
659
+ readonly USDC: {
660
+ readonly id: "monad:usdc";
661
+ readonly name: "USD Coin:USDC";
662
+ readonly symbol: "USDC";
663
+ readonly decimals: 6;
664
+ readonly icon: "https://garden.imgix.net/token-images/usdc.svg";
665
+ readonly chain: "evm:143";
666
+ readonly htlc: {
667
+ readonly address: "0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E";
668
+ readonly schema: "evm:htlc_erc20";
669
+ };
670
+ readonly token: {
671
+ readonly address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603";
672
+ readonly schema: "evm:erc20";
673
+ };
674
+ };
675
+ };
629
676
  readonly arbitrum: {
630
677
  readonly type: BlockchainType.evm;
631
678
  readonly network: Network.MAINNET;
@@ -1536,6 +1583,20 @@ export declare const Assets: import('./utils').AssetsType<{
1536
1583
  };
1537
1584
  };
1538
1585
  };
1586
+ readonly alpen_signet: {
1587
+ readonly type: BlockchainType.bitcoin;
1588
+ readonly network: Network.TESTNET;
1589
+ readonly BTC: {
1590
+ readonly id: "alpen_signet:btc";
1591
+ readonly name: "Alpen Bitcoin";
1592
+ readonly symbol: "BTC";
1593
+ readonly decimals: 8;
1594
+ readonly icon: "https://garden-finance.imgix.net/token-images/bitcoin.svg";
1595
+ readonly chain: "alpen_signet";
1596
+ readonly htlc: null;
1597
+ readonly token: null;
1598
+ };
1599
+ };
1539
1600
  readonly alpen_testnet: {
1540
1601
  readonly type: BlockchainType.evm;
1541
1602
  readonly network: Network.TESTNET;
@@ -1545,9 +1606,9 @@ export declare const Assets: import('./utils').AssetsType<{
1545
1606
  readonly symbol: "sBTC";
1546
1607
  readonly decimals: 18;
1547
1608
  readonly icon: "https://avatars.githubusercontent.com/u/113091135";
1548
- readonly chain: "evm:2892";
1609
+ readonly chain: "evm:8150";
1549
1610
  readonly htlc: {
1550
- readonly address: "0x39269522737a4a155F78EC1B1BDb86288c1Fcf67";
1611
+ readonly address: "0x934C87EE12c6c541E9C3A4997ae70371b3db7b3e";
1551
1612
  readonly schema: "evm:htlc";
1552
1613
  };
1553
1614
  readonly token: null;
@@ -1558,9 +1619,9 @@ export declare const Assets: import('./utils').AssetsType<{
1558
1619
  readonly symbol: "USDC";
1559
1620
  readonly decimals: 6;
1560
1621
  readonly icon: "https://garden.imgix.net/token-images/usdc.svg";
1561
- readonly chain: "evm:2892";
1622
+ readonly chain: "evm:8150";
1562
1623
  readonly htlc: {
1563
- readonly address: "0x45b0d0c85bEb4512610fC2627CCB1587A7a044d4";
1624
+ readonly address: "0x7031336949223a512C0435dF75dd8114fa3b7261";
1564
1625
  readonly schema: "evm:htlc_erc20";
1565
1626
  };
1566
1627
  readonly token: {
@@ -1639,6 +1700,39 @@ export declare const Assets: import('./utils').AssetsType<{
1639
1700
  };
1640
1701
  };
1641
1702
  };
1703
+ readonly monad: {
1704
+ readonly type: BlockchainType.evm;
1705
+ readonly network: Network.MAINNET;
1706
+ readonly MON: {
1707
+ readonly id: "monad:mon";
1708
+ readonly name: "Mon:MON";
1709
+ readonly symbol: "MON";
1710
+ readonly decimals: 18;
1711
+ readonly icon: "https://garden.imgix.net/chain_images/monad.svg";
1712
+ readonly chain: "evm:143";
1713
+ readonly htlc: {
1714
+ readonly address: "0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb";
1715
+ readonly schema: "evm:htlc";
1716
+ };
1717
+ readonly token: null;
1718
+ };
1719
+ readonly USDC: {
1720
+ readonly id: "monad:usdc";
1721
+ readonly name: "USD Coin:USDC";
1722
+ readonly symbol: "USDC";
1723
+ readonly decimals: 6;
1724
+ readonly icon: "https://garden.imgix.net/token-images/usdc.svg";
1725
+ readonly chain: "evm:143";
1726
+ readonly htlc: {
1727
+ readonly address: "0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E";
1728
+ readonly schema: "evm:htlc_erc20";
1729
+ };
1730
+ readonly token: {
1731
+ readonly address: "0x754704Bc059F8C67012fEd69BC8A327a5aafb603";
1732
+ readonly schema: "evm:erc20";
1733
+ };
1734
+ };
1735
+ };
1642
1736
  readonly arbitrum: {
1643
1737
  readonly type: BlockchainType.evm;
1644
1738
  readonly network: Network.MAINNET;
@@ -2051,8 +2145,8 @@ export declare const Assets: import('./utils').AssetsType<{
2051
2145
  }>;
2052
2146
  export declare const isMainnet: (chain: Chain) => boolean;
2053
2147
  export declare function is<T extends BlockchainType>(type: T): (chain: Chain) => chain is Extract<Chain, ChainsByBlockchainType<T>>;
2054
- export declare const isEVM: (chain: Chain) => chain is "arbitrum_localnet" | "ethereum_localnet" | "ethereum_sepolia" | "arbitrum_sepolia" | "base_sepolia" | "bera_testnet" | "citrea_testnet" | "monad_testnet" | "hyperliquid_testnet" | "bnbchain_testnet" | "alpen_testnet" | "base" | "arbitrum" | "ethereum" | "bera" | "hyperliquid" | "unichain" | "corn" | "botanix" | "bnbchain" | "core" | "hypercore" | "hypercore_testnet";
2055
- export declare const isBitcoin: (chain: Chain) => chain is "bitcoin" | "bitcoin_regtest" | "bitcoin_testnet";
2148
+ export declare const isEVM: (chain: Chain) => chain is "arbitrum_localnet" | "ethereum_localnet" | "ethereum_sepolia" | "arbitrum_sepolia" | "base_sepolia" | "bera_testnet" | "citrea_testnet" | "monad_testnet" | "hyperliquid_testnet" | "bnbchain_testnet" | "alpen_testnet" | "base" | "monad" | "arbitrum" | "ethereum" | "bera" | "hyperliquid" | "unichain" | "corn" | "botanix" | "bnbchain" | "core" | "hypercore" | "hypercore_testnet";
2149
+ export declare const isBitcoin: (chain: Chain) => chain is "bitcoin" | "alpen_signet" | "bitcoin_regtest" | "bitcoin_testnet";
2056
2150
  export declare const isSolana: (chain: Chain) => chain is "solana_localnet" | "solana_testnet" | "solana";
2057
2151
  export declare const isStarknet: (chain: Chain) => chain is "starknet_devnet" | "starknet_sepolia" | "starknet";
2058
2152
  export declare const isSui: (chain: Chain) => chain is "sui" | "sui_testnet";
@@ -101,7 +101,7 @@ export type Order = {
101
101
  destination_swap: Swap;
102
102
  slippage: number;
103
103
  nonce: string;
104
- affiliate_fees: AffiliateFee[];
104
+ affiliate_fees: AffiliateFeeV2[];
105
105
  integrator: string;
106
106
  version: string;
107
107
  };
@@ -139,6 +139,9 @@ export type AffiliateFee = {
139
139
  asset: ChainAsset;
140
140
  fee: number;
141
141
  };
142
+ export type AffiliateFeeV2 = AffiliateFee & {
143
+ asset: string;
144
+ };
142
145
  export type AffiliateFeeWithAmount = AffiliateFee & {
143
146
  amount: string;
144
147
  };
@@ -172,7 +175,13 @@ type EvmTypedData = {
172
175
  domain: Record<string, unknown>;
173
176
  types: Record<string, unknown>;
174
177
  primaryType: string;
175
- message: Record<string, unknown>;
178
+ message: {
179
+ amount: string;
180
+ secretHash: string;
181
+ timelock: string;
182
+ redeemer: string;
183
+ destinationData: string;
184
+ };
176
185
  };
177
186
  export type EvmOrderResponse = WithTypedData<BaseCreateOrderResponse & {
178
187
  approval_transaction: EVMTransaction | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gardenfi/orderbook",
3
- "version": "3.0.5-beta.2",
3
+ "version": "3.0.5-beta.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",