@gardenfi/orderbook 2.5.3-beta.2 → 2.5.3-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.js +25 -21
- package/dist/index10.cjs +1 -0
- package/dist/index10.js +188 -0
- package/dist/index11.cjs +1 -0
- package/dist/index11.js +219 -0
- package/dist/index12.cjs +1 -0
- package/dist/index12.js +31 -0
- package/dist/index4.cjs +1 -1
- package/dist/index4.js +700 -292
- package/dist/index7.cjs +1 -1
- package/dist/index7.js +4 -4
- package/dist/src/index.d.ts +5 -1
- package/dist/src/lib/assetManager/AssetManager.d.ts +82 -0
- package/dist/src/lib/assetManager/index.d.ts +2 -0
- package/dist/src/lib/assetManager/routeValidator/routeValidator.d.ts +76 -0
- package/dist/src/lib/assetManager/types.d.ts +39 -0
- package/dist/src/lib/assetManager/utils.d.ts +9 -0
- package/dist/src/lib/constants/asset.d.ts +1271 -455
- package/dist/src/lib/constants/asset.types.d.ts +15 -9
- package/dist/src/lib/orderbook/orderbook.types.d.ts +7 -1
- package/package.json +4 -3
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index2.cjs"),n=require("./index3.cjs"),e=require("./index4.cjs"),s=require("./index5.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./index2.cjs"),n=require("./index3.cjs"),e=require("./index4.cjs"),s=require("./index5.cjs"),a=require("./index6.cjs"),t=require("./index7.cjs"),o=require("./index8.cjs"),i=require("./index9.cjs"),c=require("./index10.cjs"),l=require("./index11.cjs");exports.Orderbook=r.Orderbook;exports.BlockchainType=n.BlockchainType;exports.Assets=e.Assets;exports.Chains=e.Chains;exports.Config=e.Config;exports.NATIVE_TOKENS=e.NATIVE_TOKENS;exports.OrderLifecycle=e.OrderLifecycle;exports.OrderStatus=e.OrderStatus;exports.getBlockchainType=e.getBlockchainType;exports.is=e.is;exports.isBitcoin=e.isBitcoin;exports.isEVM=e.isEVM;exports.isEvmNativeToken=e.isEvmNativeToken;exports.isMainnet=e.isMainnet;exports.isNativeToken=e.isNativeToken;exports.isSolana=e.isSolana;exports.isSolanaNativeToken=e.isSolanaNativeToken;exports.isStarknet=e.isStarknet;exports.isSui=e.isSui;exports.isSuiNativeToken=e.isSuiNativeToken;exports.ArbitrumLocalnet=s.ArbitrumLocalnet;exports.ETHStarknetLocalnetAsset=s.ETHStarknetLocalnetAsset;exports.EthereumLocalnet=s.EthereumLocalnet;exports.SOLSolanaLocalnetAsset=s.SOLSolanaLocalnetAsset;exports.STRKStarknetLocalnetAsset=s.STRKStarknetLocalnetAsset;exports.StarknetLocalnet=s.StarknetLocalnet;exports.WBTCArbitrumLocalnetAsset=s.WBTCArbitrumLocalnetAsset;exports.WBTCEthereumLocalnetAsset=s.WBTCEthereumLocalnetAsset;exports.bitcoinRegtestAsset=s.bitcoinRegtestAsset;exports.buildAssetsWithChain=a.buildAssetsWithChain;exports.ConstructUrl=t.ConstructUrl;exports.discriminateOrderResponse=t.discriminateOrderResponse;exports.getOrderResponseType=t.getOrderResponseType;exports.isBitcoinOrderResponse=t.isBitcoinOrderResponse;exports.isEvmOrderResponse=t.isEvmOrderResponse;exports.isOrder=t.isOrder;exports.isSolanaOrderResponse=t.isSolanaOrderResponse;exports.isStarknetOrderResponse=t.isStarknetOrderResponse;exports.isSuiOrderResponse=t.isSuiOrderResponse;exports.ChainAsset=o.ChainAsset;exports.OrderAction=i.OrderAction;exports.ParseOrderStatus=i.ParseOrderStatus;exports.isCompleted=i.isCompleted;exports.isDeadlinePassed=i.isDeadlinePassed;exports.parseAction=i.parseAction;exports.AssetManager=c.AssetManager;exports.RouteValidator=l.RouteValidator;
|
package/dist/index.js
CHANGED
|
@@ -1,55 +1,59 @@
|
|
|
1
|
-
import { Orderbook as
|
|
1
|
+
import { Orderbook as s } from "./index2.js";
|
|
2
2
|
import { BlockchainType as o } from "./index3.js";
|
|
3
|
-
import { Assets as n, Chains as a, Config as
|
|
4
|
-
import { ArbitrumLocalnet as E, ETHStarknetLocalnetAsset as v, EthereumLocalnet as B, SOLSolanaLocalnetAsset as N, STRKStarknetLocalnetAsset as b, StarknetLocalnet as g, WBTCArbitrumLocalnetAsset as y, WBTCEthereumLocalnetAsset as
|
|
5
|
-
import { buildAssetsWithChain as
|
|
3
|
+
import { Assets as n, Chains as a, Config as p, NATIVE_TOKENS as c, OrderLifecycle as l, OrderStatus as d, getBlockchainType as m, is as S, isBitcoin as A, isEVM as O, isEvmNativeToken as T, isMainnet as f, isNativeToken as k, isSolana as u, isSolanaNativeToken as x, isStarknet as L, isSui as R, isSuiNativeToken as h } from "./index4.js";
|
|
4
|
+
import { ArbitrumLocalnet as E, ETHStarknetLocalnetAsset as v, EthereumLocalnet as B, SOLSolanaLocalnetAsset as N, STRKStarknetLocalnetAsset as b, StarknetLocalnet as g, WBTCArbitrumLocalnetAsset as y, WBTCEthereumLocalnetAsset as M, bitcoinRegtestAsset as V } from "./index5.js";
|
|
5
|
+
import { buildAssetsWithChain as K } from "./index6.js";
|
|
6
6
|
import { ConstructUrl as D, discriminateOrderResponse as H, getOrderResponseType as I, isBitcoinOrderResponse as U, isEvmOrderResponse as _, isOrder as j, isSolanaOrderResponse as q, isStarknetOrderResponse as w, isSuiOrderResponse as z } from "./index7.js";
|
|
7
7
|
import { ChainAsset as G } from "./index8.js";
|
|
8
8
|
import { OrderAction as Q, ParseOrderStatus as X, isCompleted as Y, isDeadlinePassed as Z, parseAction as $ } from "./index9.js";
|
|
9
|
+
import { AssetManager as te } from "./index10.js";
|
|
10
|
+
import { RouteValidator as re } from "./index11.js";
|
|
9
11
|
export {
|
|
10
12
|
E as ArbitrumLocalnet,
|
|
13
|
+
te as AssetManager,
|
|
11
14
|
n as Assets,
|
|
12
15
|
o as BlockchainType,
|
|
13
16
|
G as ChainAsset,
|
|
14
17
|
a as Chains,
|
|
15
|
-
|
|
18
|
+
p as Config,
|
|
16
19
|
D as ConstructUrl,
|
|
17
20
|
v as ETHStarknetLocalnetAsset,
|
|
18
21
|
B as EthereumLocalnet,
|
|
19
|
-
|
|
22
|
+
c as NATIVE_TOKENS,
|
|
20
23
|
Q as OrderAction,
|
|
21
24
|
l as OrderLifecycle,
|
|
22
25
|
d as OrderStatus,
|
|
23
|
-
|
|
26
|
+
s as Orderbook,
|
|
24
27
|
X as ParseOrderStatus,
|
|
28
|
+
re as RouteValidator,
|
|
25
29
|
N as SOLSolanaLocalnetAsset,
|
|
26
30
|
b as STRKStarknetLocalnetAsset,
|
|
27
31
|
g as StarknetLocalnet,
|
|
28
32
|
y as WBTCArbitrumLocalnetAsset,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
M as WBTCEthereumLocalnetAsset,
|
|
34
|
+
V as bitcoinRegtestAsset,
|
|
35
|
+
K as buildAssetsWithChain,
|
|
32
36
|
H as discriminateOrderResponse,
|
|
33
|
-
|
|
37
|
+
m as getBlockchainType,
|
|
34
38
|
I as getOrderResponseType,
|
|
35
|
-
|
|
36
|
-
|
|
39
|
+
S as is,
|
|
40
|
+
A as isBitcoin,
|
|
37
41
|
U as isBitcoinOrderResponse,
|
|
38
42
|
Y as isCompleted,
|
|
39
43
|
Z as isDeadlinePassed,
|
|
40
|
-
|
|
44
|
+
O as isEVM,
|
|
41
45
|
T as isEvmNativeToken,
|
|
42
46
|
_ as isEvmOrderResponse,
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
f as isMainnet,
|
|
48
|
+
k as isNativeToken,
|
|
45
49
|
j as isOrder,
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
u as isSolana,
|
|
51
|
+
x as isSolanaNativeToken,
|
|
48
52
|
q as isSolanaOrderResponse,
|
|
49
|
-
|
|
53
|
+
L as isStarknet,
|
|
50
54
|
w as isStarknetOrderResponse,
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
R as isSui,
|
|
56
|
+
h as isSuiNativeToken,
|
|
53
57
|
z as isSuiOrderResponse,
|
|
54
58
|
$ as parseAction
|
|
55
59
|
};
|
package/dist/index10.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { ApiKey as A, Err as o, Fetcher as y, Ok as g } from "@gardenfi/utils";
|
|
2
|
+
import { RouteValidator as C } from "./index11.js";
|
|
3
|
+
import { Config as b } from "./index4.js";
|
|
4
|
+
import { ChainAsset as r } from "./index8.js";
|
|
5
|
+
import { ensureUrl as l, buildDefaultEndpoint as u, parseAssetNameSymbol as w } from "./index12.js";
|
|
6
|
+
const c = Object.keys(b);
|
|
7
|
+
class I {
|
|
8
|
+
constructor(t, s) {
|
|
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
|
+
);
|
|
19
|
+
}
|
|
20
|
+
// ============================================
|
|
21
|
+
// Initialization Methods
|
|
22
|
+
// ============================================
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the AssetManager by fetching all required data
|
|
25
|
+
*/
|
|
26
|
+
async initialize() {
|
|
27
|
+
await this.fetchAndSetAssetsAndChains(), await this.routeValidator.loadPolicy();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Fetch and cache asset and chain data from API
|
|
31
|
+
*/
|
|
32
|
+
async fetchAndSetAssetsAndChains() {
|
|
33
|
+
try {
|
|
34
|
+
this.isLoading = !0, this.error = null;
|
|
35
|
+
const t = await this.auth.getAuthHeaders();
|
|
36
|
+
if (!t.ok) return o("Failed to get auth headers");
|
|
37
|
+
const s = await y.get(
|
|
38
|
+
this.urls.assets,
|
|
39
|
+
{
|
|
40
|
+
headers: {
|
|
41
|
+
...t.val
|
|
42
|
+
}
|
|
43
|
+
}
|
|
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");
|
|
48
|
+
} catch (t) {
|
|
49
|
+
return o(`Failed to fetch assets data: ${t}`);
|
|
50
|
+
} finally {
|
|
51
|
+
this.isLoading = !1;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// ============================================
|
|
55
|
+
// Route Validation Methods
|
|
56
|
+
// ============================================
|
|
57
|
+
/**
|
|
58
|
+
* Check if a swap route from one asset to another is valid
|
|
59
|
+
*/
|
|
60
|
+
async isRouteValid(t, s) {
|
|
61
|
+
return await this.routeValidator.isValidRoute(
|
|
62
|
+
r.from(t.id),
|
|
63
|
+
r.from(s.id)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get all valid destination assets for a given source asset
|
|
68
|
+
*/
|
|
69
|
+
getValidDestinations(t) {
|
|
70
|
+
if (!this.routeMatrix || !this.assets || !t.id)
|
|
71
|
+
return console.warn(
|
|
72
|
+
"Missing routeMatrix, assets, or asset. Returning all assets."
|
|
73
|
+
), [];
|
|
74
|
+
const s = this.routeMatrix[t.id.toString().toLowerCase()];
|
|
75
|
+
return s ? s.map((i) => {
|
|
76
|
+
const e = i.toString();
|
|
77
|
+
return Object.values(this.assets).find((a) => r.from(a).toString() === e);
|
|
78
|
+
}).filter(Boolean) : [];
|
|
79
|
+
}
|
|
80
|
+
// ============================================
|
|
81
|
+
// Asset Query Methods
|
|
82
|
+
// ============================================
|
|
83
|
+
/**
|
|
84
|
+
* Get asset by chain and token address
|
|
85
|
+
*/
|
|
86
|
+
getAsset(t) {
|
|
87
|
+
if (!this.assets) return;
|
|
88
|
+
const s = r.from(t).toString();
|
|
89
|
+
return this.assets[s];
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get all assets for a specific chain
|
|
93
|
+
*/
|
|
94
|
+
getAssetsByChain(t) {
|
|
95
|
+
return this.assets ? Object.values(this.assets).filter((s) => s.chain === t) : [];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Search assets by symbol or name
|
|
99
|
+
*/
|
|
100
|
+
searchAssets(t) {
|
|
101
|
+
if (!this.assets) return [];
|
|
102
|
+
const s = t.toLowerCase();
|
|
103
|
+
return Object.values(this.assets).filter(
|
|
104
|
+
(i) => i.symbol.toLowerCase().includes(s) || i.name.toLowerCase().includes(s)
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get chain data by chain identifier
|
|
109
|
+
*/
|
|
110
|
+
getChain(t) {
|
|
111
|
+
if (this.chains)
|
|
112
|
+
return this.chains[t];
|
|
113
|
+
}
|
|
114
|
+
// ============================================
|
|
115
|
+
// Private Helper Methods
|
|
116
|
+
// ============================================
|
|
117
|
+
/**
|
|
118
|
+
* Build route matrix for fast O(1) route lookups
|
|
119
|
+
*/
|
|
120
|
+
async buildRouteMatrix() {
|
|
121
|
+
if (!this.assets || !this.routeValidator) return;
|
|
122
|
+
const t = Object.values(this.assets).map((s) => {
|
|
123
|
+
if (!s.id) return null;
|
|
124
|
+
try {
|
|
125
|
+
return r.from(s.id);
|
|
126
|
+
} catch {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
}).filter((s) => s !== null);
|
|
130
|
+
this.routeMatrix = await this.routeValidator.buildRouteMatrix(
|
|
131
|
+
t
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Process raw API data into structured format
|
|
136
|
+
*/
|
|
137
|
+
processApiData(t) {
|
|
138
|
+
const s = {}, i = {};
|
|
139
|
+
for (const e of t) {
|
|
140
|
+
const a = this.parseChainIdentifier(e.chain);
|
|
141
|
+
if (!a || !c.includes(a))
|
|
142
|
+
continue;
|
|
143
|
+
const h = {
|
|
144
|
+
...e,
|
|
145
|
+
name: this.formatChainName(e.chain),
|
|
146
|
+
chain: a
|
|
147
|
+
};
|
|
148
|
+
for (const n of e.assets) {
|
|
149
|
+
const d = r.from(n.id).toString(), { name: f, symbol: m } = w(
|
|
150
|
+
n.name,
|
|
151
|
+
n.id
|
|
152
|
+
), p = {
|
|
153
|
+
...n,
|
|
154
|
+
id: r.from(n.id),
|
|
155
|
+
chain: a,
|
|
156
|
+
name: f,
|
|
157
|
+
symbol: m
|
|
158
|
+
};
|
|
159
|
+
s[d] = p, i[a] || (i[a] = h);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return { assets: s, chains: i };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Parse chain identifier from string
|
|
166
|
+
*/
|
|
167
|
+
parseChainIdentifier(t) {
|
|
168
|
+
return c.includes(t) ? t : null;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Format chain name for display
|
|
172
|
+
*/
|
|
173
|
+
formatChainName(t) {
|
|
174
|
+
return t.split("_").map((s) => s.charAt(0).toUpperCase() + s.slice(1)).join(" ");
|
|
175
|
+
}
|
|
176
|
+
// ============================================
|
|
177
|
+
// Data Refresh Methods
|
|
178
|
+
// ============================================
|
|
179
|
+
/**
|
|
180
|
+
* Refresh all data
|
|
181
|
+
*/
|
|
182
|
+
async refresh() {
|
|
183
|
+
await this.initialize();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
export {
|
|
187
|
+
I as AssetManager
|
|
188
|
+
};
|
package/dist/index11.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
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(),i={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,i),i}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 i=await a.Fetcher.get(this.apiBaseUrl,{headers:{"Content-Type":"application/json",...t.val}});return i.result?(i.result.blacklist_pairs.push("*:* -> bnbchain:btcb","bnbchain:btcb -> *:*","*:* -> botanix:btc","botanix:btc -> *:*"),i.result.whitelist_overrides.push("bitcoin:btc -> bnbchain:btcb","botanix:btc -> bnbchain:btcb","bnbchain:btcb -> bitcoin:btc","bnbchain:btcb -> botanix:btc","bitcoin:btc -> botanix:btc","botanix:btc -> bitcoin:btc"),a.Ok(this.setPolicy(i.result))):a.Err(`API Error: ${i.error}`)}catch(t){return a.Err(`Failed to load policy: ${t}`)}}async isValidRoute(e,t){const i=await this.loadPolicy();if(!i.ok||e.toString()===t.toString())return!1;const{sortedIsolationRules:s,sortedBlacklistRules:r,sortedWhitelistRules:n}=this.preprocessRules(i.val),c=this.findMatchingRule(e,s);if(c&&!this.matchesRuleDestination(t,c))return!1;const l=this.findMatchingRule(t,s);return l&&l.rule.direction==="<->"&&!this.matchesRuleSource(e,l)?!1:this.matchesRuleList(e,t,r)?!!this.matchesRuleList(e,t,n):i.val.default==="open"}async getValidDestinations(e,t){const i=[];for(const s of t)await this.isValidRoute(e,s)&&i.push(s);return i}async getAllValidRoutes(e){const t=[];for(const i of e)for(const s of e)await this.isValidRoute(i,s)&&t.push({from:i,to:s});return t}preprocessRules(e){const t=e.isolation_groups.map(r=>this.parseRule(r)).sort((r,n)=>n.specificity-r.specificity),i=e.blacklist_pairs.map(r=>this.parseRule(r)).sort((r,n)=>n.specificity-r.specificity),s=e.whitelist_overrides.map(r=>this.parseRule(r)).sort((r,n)=>n.specificity-r.specificity);return{sortedIsolationRules:t,sortedBlacklistRules:i,sortedWhitelistRules:s}}parseRule(e){const i=e.includes("<->")?"<->":"->",[s,r]=e.split(i).map(n=>n.trim());return{pattern:e,fromPattern:s,toPattern:r,direction:i,specificity:this.calculateSpecificity(s,r)}}calculateSpecificity(e,t){const i=s=>{const r=s.toLowerCase();return r==="*"?0:r.includes("*")?1:2};return i(e)*10+i(t)}findMatchingRule(e,t){for(const i of t){if(this.matchesAssetPattern(e,i.fromPattern))return{rule:i,matchedAs:"from"};if(i.direction==="<->"&&this.matchesAssetPattern(e,i.toPattern))return{rule:i,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,i){return i.some(s=>this.matchesRule(e,t,s))}matchesRule(e,t,i){const s=this.matchesAssetPattern(e,i.fromPattern)&&this.matchesAssetPattern(t,i.toPattern);if(i.direction==="<->"){const r=this.matchesAssetPattern(e,i.toPattern)&&this.matchesAssetPattern(t,i.fromPattern);return s||r}return s}matchesAssetPattern(e,t){const[i="",s=""]=t.split(":").map(c=>c.trim().toLowerCase()),r=i===""||i==="*"||i===e.chain.toLowerCase(),n=s===""||s==="*"||s===e.symbol.toLowerCase();return r&&n}async buildRouteMatrix(e){const t={};for(const i of e){const s=[];for(const r of e)await this.isValidRoute(i,r)&&s.push(r);t[i.toString()]=s}return t}};o.POLICY_CACHE_KEY="route_policy";let u=o;exports.RouteValidator=u;
|
package/dist/index11.js
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { ApiKey as f, Url as b, Ok as u, Err as l, Fetcher as p } from "@gardenfi/utils";
|
|
2
|
+
import d from "node-cache";
|
|
3
|
+
const a = class a {
|
|
4
|
+
constructor(e, t) {
|
|
5
|
+
this.policy = new d({
|
|
6
|
+
stdTTL: 36e3,
|
|
7
|
+
// 10 hours in seconds
|
|
8
|
+
checkperiod: 3600
|
|
9
|
+
// Check for expired keys every hour
|
|
10
|
+
}), typeof t == "string" ? this.auth = new f(t) : this.auth = t, typeof e == "string" ? this.apiBaseUrl = new b(e) : this.apiBaseUrl = e;
|
|
11
|
+
}
|
|
12
|
+
getPolicy() {
|
|
13
|
+
return this.policy.get(a.POLICY_CACHE_KEY);
|
|
14
|
+
}
|
|
15
|
+
setPolicy(e) {
|
|
16
|
+
const t = this.getPolicy(), i = {
|
|
17
|
+
default: e.default || (t == null ? void 0 : t.default) || "open",
|
|
18
|
+
isolation_groups: [
|
|
19
|
+
.../* @__PURE__ */ new Set([
|
|
20
|
+
...(t == null ? void 0 : t.isolation_groups) || [],
|
|
21
|
+
...e.isolation_groups
|
|
22
|
+
])
|
|
23
|
+
],
|
|
24
|
+
blacklist_pairs: [
|
|
25
|
+
.../* @__PURE__ */ new Set([
|
|
26
|
+
...(t == null ? void 0 : t.blacklist_pairs) || [],
|
|
27
|
+
...e.blacklist_pairs
|
|
28
|
+
])
|
|
29
|
+
],
|
|
30
|
+
whitelist_overrides: [
|
|
31
|
+
.../* @__PURE__ */ new Set([
|
|
32
|
+
...(t == null ? void 0 : t.whitelist_overrides) || [],
|
|
33
|
+
...e.whitelist_overrides
|
|
34
|
+
])
|
|
35
|
+
]
|
|
36
|
+
};
|
|
37
|
+
return this.policy.set(a.POLICY_CACHE_KEY, i), i;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Loads the current route policy, cached or via API.
|
|
41
|
+
*/
|
|
42
|
+
async loadPolicy() {
|
|
43
|
+
const e = this.getPolicy();
|
|
44
|
+
if (e) return u(e);
|
|
45
|
+
try {
|
|
46
|
+
const t = await this.auth.getAuthHeaders();
|
|
47
|
+
if (!t.ok)
|
|
48
|
+
return l(`Failed to get auth headers: ${t.error}`);
|
|
49
|
+
const i = await p.get(
|
|
50
|
+
this.apiBaseUrl,
|
|
51
|
+
{
|
|
52
|
+
headers: {
|
|
53
|
+
"Content-Type": "application/json",
|
|
54
|
+
...t.val
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
return i.result ? (i.result.blacklist_pairs.push(
|
|
59
|
+
"*:* -> bnbchain:btcb",
|
|
60
|
+
"bnbchain:btcb -> *:*",
|
|
61
|
+
"*:* -> botanix:btc",
|
|
62
|
+
"botanix:btc -> *:*"
|
|
63
|
+
), i.result.whitelist_overrides.push(
|
|
64
|
+
"bitcoin:btc -> bnbchain:btcb",
|
|
65
|
+
"botanix:btc -> bnbchain:btcb",
|
|
66
|
+
"bnbchain:btcb -> bitcoin:btc",
|
|
67
|
+
"bnbchain:btcb -> botanix:btc",
|
|
68
|
+
"bitcoin:btc -> botanix:btc",
|
|
69
|
+
"botanix:btc -> bitcoin:btc"
|
|
70
|
+
), u(this.setPolicy(i.result))) : l(`API Error: ${i.error}`);
|
|
71
|
+
} catch (t) {
|
|
72
|
+
return l(`Failed to load policy: ${t}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Checks if a given route is valid based on all route rules.
|
|
77
|
+
*/
|
|
78
|
+
async isValidRoute(e, t) {
|
|
79
|
+
const i = await this.loadPolicy();
|
|
80
|
+
if (!i.ok || e.toString() === t.toString()) return !1;
|
|
81
|
+
const { sortedIsolationRules: s, sortedBlacklistRules: r, sortedWhitelistRules: n } = this.preprocessRules(i.val), o = this.findMatchingRule(
|
|
82
|
+
e,
|
|
83
|
+
s
|
|
84
|
+
);
|
|
85
|
+
if (o && !this.matchesRuleDestination(t, o))
|
|
86
|
+
return !1;
|
|
87
|
+
const c = this.findMatchingRule(
|
|
88
|
+
t,
|
|
89
|
+
s
|
|
90
|
+
);
|
|
91
|
+
return c && c.rule.direction === "<->" && !this.matchesRuleSource(e, c) ? !1 : this.matchesRuleList(e, t, r) ? !!this.matchesRuleList(e, t, n) : i.val.default === "open";
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Returns all valid destinations for a given source asset.
|
|
95
|
+
*/
|
|
96
|
+
async getValidDestinations(e, t) {
|
|
97
|
+
const i = [];
|
|
98
|
+
for (const s of t)
|
|
99
|
+
await this.isValidRoute(e, s) && i.push(s);
|
|
100
|
+
return i;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Returns every valid route (from-to pair) among the provided assets.
|
|
104
|
+
*/
|
|
105
|
+
async getAllValidRoutes(e) {
|
|
106
|
+
const t = [];
|
|
107
|
+
for (const i of e)
|
|
108
|
+
for (const s of e)
|
|
109
|
+
await this.isValidRoute(i, s) && t.push({ from: i, to: s });
|
|
110
|
+
return t;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Turns policy string rules into sorted ParsedRule objects.
|
|
114
|
+
*/
|
|
115
|
+
preprocessRules(e) {
|
|
116
|
+
const t = e.isolation_groups.map((r) => this.parseRule(r)).sort((r, n) => n.specificity - r.specificity), i = e.blacklist_pairs.map((r) => this.parseRule(r)).sort((r, n) => n.specificity - r.specificity), s = e.whitelist_overrides.map((r) => this.parseRule(r)).sort((r, n) => n.specificity - r.specificity);
|
|
117
|
+
return { sortedIsolationRules: t, sortedBlacklistRules: i, sortedWhitelistRules: s };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Parses a rule string (e.g. "ethereum:usdc -> base:usdt") into parts.
|
|
121
|
+
*/
|
|
122
|
+
parseRule(e) {
|
|
123
|
+
const i = e.includes(
|
|
124
|
+
"<->"
|
|
125
|
+
/* Bidirectional */
|
|
126
|
+
) ? "<->" : "->", [s, r] = e.split(i).map((n) => n.trim());
|
|
127
|
+
return {
|
|
128
|
+
pattern: e,
|
|
129
|
+
fromPattern: s,
|
|
130
|
+
toPattern: r,
|
|
131
|
+
direction: i,
|
|
132
|
+
specificity: this.calculateSpecificity(s, r)
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Gives a specificity score to a rule pattern for prioritizing.
|
|
137
|
+
*/
|
|
138
|
+
calculateSpecificity(e, t) {
|
|
139
|
+
const i = (s) => {
|
|
140
|
+
const r = s.toLowerCase();
|
|
141
|
+
return r === "*" ? 0 : r.includes(
|
|
142
|
+
"*"
|
|
143
|
+
/* Any */
|
|
144
|
+
) ? 1 : 2;
|
|
145
|
+
};
|
|
146
|
+
return i(e) * 10 + i(t);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Finds the first matching rule for an asset given the rule "side".
|
|
150
|
+
*/
|
|
151
|
+
findMatchingRule(e, t) {
|
|
152
|
+
for (const i of t) {
|
|
153
|
+
if (this.matchesAssetPattern(e, i.fromPattern))
|
|
154
|
+
return {
|
|
155
|
+
rule: i,
|
|
156
|
+
matchedAs: "from"
|
|
157
|
+
/* From */
|
|
158
|
+
};
|
|
159
|
+
if (i.direction === "<->" && this.matchesAssetPattern(e, i.toPattern))
|
|
160
|
+
return {
|
|
161
|
+
rule: i,
|
|
162
|
+
matchedAs: "to"
|
|
163
|
+
/* To */
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Checks if a given toAsset matches the rule's destination side.
|
|
170
|
+
*/
|
|
171
|
+
matchesRuleDestination(e, t) {
|
|
172
|
+
return t.matchedAs === "from" ? this.matchesAssetPattern(e, t.rule.toPattern) : t.rule.direction !== "<->" ? !1 : this.matchesAssetPattern(e, t.rule.fromPattern);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Checks if a given fromAsset matches the rule's source side.
|
|
176
|
+
*/
|
|
177
|
+
matchesRuleSource(e, t) {
|
|
178
|
+
return t.matchedAs === "to" ? this.matchesAssetPattern(e, t.rule.fromPattern) : t.rule.direction !== "<->" ? !1 : this.matchesAssetPattern(e, t.rule.toPattern);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Checks if any rule in a list matches fromAsset and toAsset.
|
|
182
|
+
*/
|
|
183
|
+
matchesRuleList(e, t, i) {
|
|
184
|
+
return i.some((s) => this.matchesRule(e, t, s));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Checks if a rule matches fromAsset and toAsset (forward or backward if bidirectional).
|
|
188
|
+
*/
|
|
189
|
+
matchesRule(e, t, i) {
|
|
190
|
+
const s = this.matchesAssetPattern(e, i.fromPattern) && this.matchesAssetPattern(t, i.toPattern);
|
|
191
|
+
if (i.direction === "<->") {
|
|
192
|
+
const r = this.matchesAssetPattern(e, i.toPattern) && this.matchesAssetPattern(t, i.fromPattern);
|
|
193
|
+
return s || r;
|
|
194
|
+
}
|
|
195
|
+
return s;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Checks if an asset string matches a rule's pattern (wildcards supported).
|
|
199
|
+
*/
|
|
200
|
+
matchesAssetPattern(e, t) {
|
|
201
|
+
const [i = "", s = ""] = t.split(":").map((o) => o.trim().toLowerCase()), r = i === "" || i === "*" || i === e.chain.toLowerCase(), n = s === "" || s === "*" || s === e.symbol.toLowerCase();
|
|
202
|
+
return r && n;
|
|
203
|
+
}
|
|
204
|
+
async buildRouteMatrix(e) {
|
|
205
|
+
const t = {};
|
|
206
|
+
for (const i of e) {
|
|
207
|
+
const s = [];
|
|
208
|
+
for (const r of e)
|
|
209
|
+
await this.isValidRoute(i, r) && s.push(r);
|
|
210
|
+
t[i.toString()] = s;
|
|
211
|
+
}
|
|
212
|
+
return t;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
a.POLICY_CACHE_KEY = "route_policy";
|
|
216
|
+
let h = a;
|
|
217
|
+
export {
|
|
218
|
+
h as RouteValidator
|
|
219
|
+
};
|
package/dist/index12.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
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
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
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 };
|
|
11
|
+
}
|
|
12
|
+
let s = "";
|
|
13
|
+
if (t)
|
|
14
|
+
try {
|
|
15
|
+
s = (typeof t == "string" ? c.from(t) : t).symbol.toUpperCase();
|
|
16
|
+
} catch {
|
|
17
|
+
}
|
|
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}`;
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
f as buildDefaultEndpoint,
|
|
29
|
+
d as ensureUrl,
|
|
30
|
+
$ as parseAssetNameSymbol
|
|
31
|
+
};
|
package/dist/index4.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@gardenfi/utils"),e=require("./index3.cjs"),o=require("./index5.cjs"),T=require("./index6.cjs");var m=(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))(m||{}),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 d={solana_localnet:{type:e.BlockchainType.solana,SOL:o.SOLSolanaLocalnetAsset,network:t.Network.LOCALNET},arbitrum_localnet:{type:e.BlockchainType.evm,WBTC:o.WBTCArbitrumLocalnetAsset,network:t.Network.LOCALNET},ethereum_localnet:{type:e.BlockchainType.evm,WBTC:o.WBTCEthereumLocalnetAsset,network:t.Network.LOCALNET},bitcoin_regtest:{type:e.BlockchainType.bitcoin,BTC:o.bitcoinRegtestAsset,network:t.Network.LOCALNET},starknet_devnet:{type:e.BlockchainType.starknet,STRK:o.STRKStarknetLocalnetAsset,ETH:o.ETHStarknetLocalnetAsset,network:t.Network.LOCALNET},solana_testnet:{type:e.BlockchainType.solana,network:t.Network.TESTNET,SOL:{name:"Solana",decimals:9,symbol:"SOL",logo:"https://garden-finance.imgix.net/chain_images/solana.png",tokenAddress:"primary",atomicSwapAddress:"2bag6xpshpvPe7SJ9nSDLHpxqhEAoHPGpEkjNSv7gxoF_primary"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",tokenAddress:"5JbWjyLdYKTuykpq2itWbdRcZkhK3hs6fiH62pkmLYZi",atomicSwapAddress:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU_5JbWjyLdYKTuykpq2itWbdRcZkhK3hs6fiH62pkmLYZi"},cbBTC:{name:"Coinbase Wrapped Bitcoin",decimals:8,symbol:"cbBTC",logo:"https://garden.imgix.net/token-images/cbBTC.svg",tokenAddress:"CL8C4gsaEQyWPxL4Zn7dcnZ8LKvPYqHmv4ipMax4cDUL",atomicSwapAddress:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU_CL8C4gsaEQyWPxL4Zn7dcnZ8LKvPYqHmv4ipMax4cDUL"}},bitcoin_testnet:{type:e.BlockchainType.bitcoin,network:t.Network.TESTNET,BTC:{name:"Bitcoin",decimals:8,symbol:"BTC",logo:"https://garden.imgix.net/token-images/bitcoin.svg",tokenAddress:"primary",atomicSwapAddress:"primary"}},ethereum_sepolia:{type:e.BlockchainType.evm,network:t.Network.TESTNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",tokenAddress:"0xE918A5a47b8e0AFAC2382bC5D1e981613e63fB07",atomicSwapAddress:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",tokenAddress:"0xadDD620EA6D20f4f9c24fff3BC039E497ceBEDc2",atomicSwapAddress:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493"}},arbitrum_sepolia:{type:e.BlockchainType.evm,network:t.Network.TESTNET,iBTC:{name:"iBTC",decimals:8,symbol:"iBTC",logo:"https://garden.imgix.net/token-images/dlcBTCIcon.svg",atomicSwapAddress:"0x7e8c18fa79bd4014cfCf49294Bf315139eD39f45",tokenAddress:"0x685437f025c5f33A94818408C286bc1F023201Fc"},WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xb5AE9785349186069C48794a763DB39EC756B1cF",tokenAddress:"0x1c287717c886794ac9f5DF3987195431Ceb3456E"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x8E12d730756457B99ce6E6AbFd60eBe751dA169B",tokenAddress:"0xC90Ad72eCc10a52a681ceDAE6EbBD3470A0c829"},SEED:{name:"Seed",decimals:18,symbol:"SEED",logo:"https://garden.imgix.net/token-images/seed.svg",atomicSwapAddress:"0xFBD30cB9313fe580031A7E0258693E1cec002803",tokenAddress:"0x432B43764548c3E47eA65aAdeB91D75C84DBcC2c"}},base_sepolia:{type:e.BlockchainType.evm,network:t.Network.TESTNET,iBTC:{name:"iBTC",decimals:8,symbol:"iBTC",logo:"https://garden.imgix.net/token-images/dlcBTCIcon.svg",atomicSwapAddress:"0x46F1Ba9C9d89C34F9dbC4085F6B1f9965c589ca1",tokenAddress:"0x0b0D554D9573bAe1a7556d220847f45182918B28"},WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",tokenAddress:"0xD8a6E3FCA403d79b6AD6216b60527F51cc967D39"},USDT:{name:"Tether USD",decimals:6,symbol:"USDT",logo:"https://garden.imgix.net/token-images/usdt.svg",atomicSwapAddress:"0x917cfef972d667dC0FeC76806cB5623585B81493",tokenAddress:"0xeaE7721d779276eb0f5837e2fE260118724a2Ba4"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",tokenAddress:"0x1ac7A0ebf13a996D5915e212900bE2d074f94988"}},bera_testnet:{type:e.BlockchainType.evm,network:t.Network.TESTNET},citrea_testnet:{type:e.BlockchainType.evm,network:t.Network.TESTNET,WCBTC:{name:"Wrapped Citrea Bitcoin",decimals:18,symbol:"WCBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xD8e99df8cf77E7383c2f2a84bC6384b2DF88CAd3",tokenAddress:"0x8d0c9d1c17aE5e40ffF9bE350f57840E9E66Cd93"},WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",tokenAddress:"0x3edA22460259b29433704dda71cc921F528165Ea"},CBTC:{name:"Citrea Bitcoin",decimals:18,symbol:"CBTC",logo:"https://garden.imgix.net/token-images/bitcoin.svg",atomicSwapAddress:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",tokenAddress:"primary"},CBBTC:{name:"Citrea Bridged Bitcoin",decimals:8,symbol:"CBBTC",logo:"https://garden.imgix.net/token-images/bitcoin.svg",atomicSwapAddress:"0x8656d38352CD90ca55881eBd0AF6822839b435A8",tokenAddress:"0xeAa998aF280a62Ae08BaE4f9fa59C9b30e6BD306"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",tokenAddress:"0xCdA8661fDA031deFCc9BdD88C0e12669Cac47Fb0"},USDT:{name:"Tether USD",decimals:6,symbol:"USDT",logo:"https://garden.imgix.net/token-images/usdt.svg",atomicSwapAddress:"0x917cfef972d667dC0FeC76806cB5623585B81493",tokenAddress:"0xF5cFE09b852Ddb164cF6Db419B9c11aAb5F30cb6"}},monad_testnet:{type:e.BlockchainType.evm,network:t.Network.TESTNET,cbBTC:{name:"Coinbase Wrapped Bitcoin",decimals:8,symbol:"cbBTC",logo:"https://garden.imgix.net/token-images/cbBTC.svg",atomicSwapAddress:"0x8656d38352CD90ca55881eBd0AF6822839b435A8",tokenAddress:"0x6b6303fAb8eC7232b4f2a7b9fa58E5216F608fcb"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x730Be401ef981D199a0560C87DfdDaFd3EC1C493",tokenAddress:"0xf817257fed379853cde0fa4f97ab987181b1e5ea"}},starknet_sepolia:{type:e.BlockchainType.starknet,network:t.Network.TESTNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0x06579d255314109429a4477d89629bc2b94f529ae01979c2f8014f9246482603",tokenAddress:"0x496bef3ed20371382fbe0ca6a5a64252c5c848f9f1f0cccf8110fc4def912d5"}},sui_testnet:{type:e.BlockchainType.sui,network:t.Network.TESTNET,SUI:{name:"SUI",decimals:9,symbol:"SUI",logo:"https://garden-finance.imgix.net/chain_images/sui.svg",tokenAddress:"0x2::sui::SUI",atomicSwapAddress:"0x5c438715b7dcc02d12ab92449153a1e5ade2301620d5bf60aa748f006726d369"}},hyperliquid_testnet:{type:e.BlockchainType.evm,network:t.Network.TESTNET},bnbchain_testnet:{type:e.BlockchainType.evm,network:t.Network.TESTNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xd1E0Ba2b165726b3a6051b765d4564d030FDcf50",tokenAddress:"0x39f3294352208905fc6ebf033954E6c6455CdB4C"}},bitcoin:{type:e.BlockchainType.bitcoin,network:t.Network.MAINNET,BTC:{name:"Bitcoin",decimals:8,symbol:"BTC",logo:"https://garden.imgix.net/token-images/bitcoin.svg",atomicSwapAddress:"primary",tokenAddress:"primary"}},base:{type:e.BlockchainType.evm,network:t.Network.MAINNET,USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",tokenAddress:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},cBBTC:{name:"Coinbase Wrapped BTC",decimals:8,symbol:"cBBTC",logo:"https://coin-images.coingecko.com/coins/images/51336/large/cbbtc.png?1730814747",atomicSwapAddress:"0xe35d025d0f0d9492db4700FE8646f7F89150eC04",tokenAddress:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"}},arbitrum:{type:e.BlockchainType.evm,network:t.Network.MAINNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xb5AE9785349186069C48794a763DB39EC756B1cF",tokenAddress:"0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x8E12d730756457B99ce6E6AbFd60eBe751dA169B",tokenAddress:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},iBTC:{name:"iBTC",decimals:8,symbol:"iBTC",logo:"https://garden.imgix.net/token-images/iBTC.png",atomicSwapAddress:"0x7e8c18fa79bd4014cfCf49294Bf315139eD39f45",tokenAddress:"0x050C24dBf1eEc17babE5fc585F06116A259CC77A"},SEED:{name:"Seed Token",decimals:18,symbol:"SEED",logo:"https://garden.imgix.net/token-images/seed.svg",atomicSwapAddress:"0xFBD30cB9313fe580031A7E0258693E1cec002803",tokenAddress:"0x86f65121804D2Cdbef79F9f072D4e0c2eEbABC08"}},ethereum:{type:e.BlockchainType.evm,network:t.Network.MAINNET,ETH:{name:"Ethereum",decimals:18,symbol:"ETH",logo:"https://garden.imgix.net/chain_images/ethereum.svg",atomicSwapAddress:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",tokenAddress:"primary"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",tokenAddress:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",tokenAddress:"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"},cBBTC:{name:"Coinbase Wrapped BTC",decimals:8,symbol:"cBBTC",logo:"https://garden.imgix.net/token-images/cbBTC.svg",atomicSwapAddress:"0xe35d025d0f0d9492db4700FE8646f7F89150eC04",tokenAddress:"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"},iBTC:{name:"iBTC",decimals:8,symbol:"iBTC",logo:"https://garden.imgix.net/token-images/iBTC.png",atomicSwapAddress:"0x3aebBC6Dd1d024BE1C579E18e2EB92667B6f3579",tokenAddress:"0x20157DBAbb84e3BBFE68C349d0d44E48AE7B5AD2"},SEED:{name:"Seed Token",decimals:18,symbol:"SEED",logo:"https://garden.imgix.net/token-images/seed.svg",atomicSwapAddress:"0xCE511De667885f92B8c36fcfC79C3B5bEb875463",tokenAddress:"0x5eed99d066a8CaF10f3E4327c1b3D8b673485eED"}},solana:{type:e.BlockchainType.solana,network:t.Network.MAINNET,SOL:{name:"Solana",decimals:9,symbol:"SOL",logo:"https://garden-finance.imgix.net/chain_images/solana.png",atomicSwapAddress:"2bag6xpshpvPe7SJ9nSDLHpxqhEAoHPGpEkjNSv7gxoF",tokenAddress:"primary"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",tokenAddress:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},cBBTC:{name:"Coinbase Wrapped BTC",decimals:8,symbol:"cBBTC",logo:"https://garden.imgix.net/token-images/cbBTC.svg",atomicSwapAddress:"gdnvdMCHJgnidtU7SL8RkRshHPvDJU1pdfZEpoLvqdU",tokenAddress:"cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij"}},bera:{type:e.BlockchainType.evm,network:t.Network.MAINNET,LBTC:{name:"Lombard BTC",decimals:8,symbol:"LBTC",logo:"https://garden.imgix.net/token-images/LBTC.svg",atomicSwapAddress:"0x84A396920d8B8CA2e69bD9503Bc1B2f73f1b8b33",tokenAddress:"0xecAc9C5F704e954931349Da37F60E39f515c11c1"}},starknet:{type:e.BlockchainType.starknet,network:t.Network.MAINNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0x7defd8eb3b770005ab1ca5f89ad31f98fb5bc3c52deaeafd130be3b49f967b4",tokenAddress:"0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac"}},sui:{type:e.BlockchainType.sui,network:t.Network.MAINNET,SUI:{name:"Sui",decimals:9,symbol:"SUI",logo:"https://garden-finance.imgix.net/chain_images/sui.svg",atomicSwapAddress:"0xa4f4e653547e98d4b541378e14db2393a09aff4b829f158b133d2eb3c3a942b5",tokenAddress:"0x2::sui::SUI"}},hyperliquid:{type:e.BlockchainType.evm,network:t.Network.MAINNET,uBTC:{name:"uBTC",decimals:8,symbol:"uBTC",logo:"https://garden.imgix.net/token-images/bitcoin.svg",atomicSwapAddress:"0xDC74a45e86DEdf1fF7c6dac77e0c2F082f9E4F72",tokenAddress:"0x9FDBdA0A5e284c32744D2f17Ee5c74B284993463"}},unichain:{type:e.BlockchainType.evm,network:t.Network.MAINNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",tokenAddress:"0x927B51f251480a681271180DA4de28D44EC4AfB8"},USDC:{name:"USD Coin",decimals:6,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",tokenAddress:"0x078D782b760474a361dDA0AF3839290b0EF57AD6"}},corn:{type:e.BlockchainType.evm,network:t.Network.MAINNET,BTCN:{name:"Bitcorn",decimals:18,symbol:"BTCN",logo:"https://garden.imgix.net/token-images/bitcorn.svg",atomicSwapAddress:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",tokenAddress:"primary"}},botanix:{type:e.BlockchainType.evm,network:t.Network.MAINNET,BTC:{name:"Botanix Bitcoin",decimals:18,symbol:"BTC",logo:"https://garden.imgix.net/token-images/bitcoin.svg",atomicSwapAddress:"0xE413743B51f3cC8b3ac24addf50D18fa138cB0Bb",tokenAddress:"primary"}},bnbchain:{type:e.BlockchainType.evm,network:t.Network.MAINNET,BTCB:{name:"BTCB",decimals:18,symbol:"BTCB",logo:"https://garden.imgix.net/token-images/bitcoin.svg",atomicSwapAddress:"0xe74784E5A45528fDEcB257477DD6bd31c8ef0761",tokenAddress:"0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c"},USDC:{name:"USD Coin",decimals:18,symbol:"USDC",logo:"https://garden.imgix.net/token-images/usdc.svg",atomicSwapAddress:"0x5fA58e4E89c85B8d678Ade970bD6afD4311aF17E",tokenAddress:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"}},core:{type:e.BlockchainType.evm,network:t.Network.MAINNET,WBTC:{name:"Wrapped Bitcoin",decimals:8,symbol:"WBTC",logo:"https://garden.imgix.net/token-images/wbtc.svg",atomicSwapAddress:"0xD781a2abB3FCB9fC0D1Dd85697c237d06b75fe95",tokenAddress:"0x5832f53d147b3d6Cd4578B9CBD62425C7ea9d0Bd"}}},f=Object.keys(d).reduce((a,s)=>(a[s]=s,a),{}),E=T.buildAssetsWithChain(d),D=a=>d[a].network===t.Network.MAINNET;function i(a){return s=>d[s].type===a}const g=i(e.BlockchainType.evm),B=i(e.BlockchainType.bitcoin),p=i(e.BlockchainType.solana),l=i(e.BlockchainType.starknet),b=i(e.BlockchainType.sui),S=a=>d[a].type,n={[e.BlockchainType.evm]:"eth",[e.BlockchainType.solana]:"sol",[e.BlockchainType.sui]:"sui"},C=(a,s)=>g(a)&&s.toLowerCase()===n[e.BlockchainType.evm],k=(a,s)=>p(a)&&s.toLowerCase()===n[e.BlockchainType.solana],A=(a,s)=>b(a)&&s.toLowerCase()===n[e.BlockchainType.sui],x=a=>{const s=a.chain,c=a.symbol;return C(s,c)||k(s,c)||B(s)||A(s,c)||!l(s)};exports.Assets=E;exports.Chains=f;exports.Config=d;exports.NATIVE_TOKENS=n;exports.OrderLifecycle=r;exports.OrderStatus=m;exports.getBlockchainType=S;exports.is=i;exports.isBitcoin=B;exports.isEVM=g;exports.isEvmNativeToken=C;exports.isMainnet=D;exports.isNativeToken=x;exports.isSolana=p;exports.isSolanaNativeToken=k;exports.isStarknet=l;exports.isSui=b;exports.isSuiNativeToken=A;
|
|
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 o=(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))(o||{}),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 s={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"}}},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(s).reduce((c,t)=>(c[t]=t,c),{}),f=v.buildAssetsWithChain(s),E=c=>s[c].network===a.Network.MAINNET;function i(c){return t=>s[t]&&s[t].type===c}const h=i(e.BlockchainType.evm),l=i(e.BlockchainType.bitcoin),b=i(e.BlockchainType.solana),B=i(e.BlockchainType.starknet),k=i(e.BlockchainType.sui),D=c=>s[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],x=c=>{const t=c.chain,m=c.symbol;return g(t,m)||C(t,m)||l(t)||p(t,m)||!B(t)};exports.Assets=f;exports.Chains=T;exports.Config=s;exports.NATIVE_TOKENS=d;exports.OrderLifecycle=r;exports.OrderStatus=o;exports.getBlockchainType=D;exports.is=i;exports.isBitcoin=l;exports.isEVM=h;exports.isEvmNativeToken=g;exports.isMainnet=E;exports.isNativeToken=x;exports.isSolana=b;exports.isSolanaNativeToken=C;exports.isStarknet=B;exports.isSui=k;exports.isSuiNativeToken=p;
|