@swapkit/helpers 1.0.0-rc.0 → 1.0.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,303 +1,661 @@
1
- var rt = Object.defineProperty;
2
- var st = (n, t, e) => t in n ? rt(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
3
- var _ = (n, t, e) => (st(n, typeof t != "symbol" ? t + "" : t, e), e), it = (n, t, e) => {
4
- if (!t.has(n))
1
+ var _t = Object.defineProperty;
2
+ var gt = (s, t, e) => t in s ? _t(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
+ var p = (s, t, e) => (gt(s, typeof t != "symbol" ? t + "" : t, e), e), bt = (s, t, e) => {
4
+ if (!t.has(s))
5
5
  throw TypeError("Cannot " + e);
6
6
  };
7
- var p = (n, t, e) => {
8
- if (t.has(n))
7
+ var y = (s, t, e) => {
8
+ if (t.has(s))
9
9
  throw TypeError("Cannot add the same private member more than once");
10
- t instanceof WeakSet ? t.add(n) : t.set(n, e);
10
+ t instanceof WeakSet ? t.add(s) : t.set(s, e);
11
11
  };
12
- var d = (n, t, e) => (it(n, t, "access private method"), e);
13
- import { FeeOption as x, BaseDecimal as h, Chain as i, ChainToRPC as at, MemoType as f } from "@swapkit/types";
14
- const vt = (n) => {
15
- if (n < 0)
16
- throw new Error("Invalid number of year");
17
- return 10 + n;
18
- }, St = (n) => {
19
- if (n.length > 30)
20
- return !1;
21
- const t = /^[a-zA-Z0-9+_-]+$/g;
22
- return !!n.match(t);
23
- }, Ct = ([n, t, e, r, s]) => `${n}'/${t}'/${e}'/${r}${typeof s != "number" ? "" : `/${s}`}`, Tt = async (n, t) => {
24
- const e = Object.entries(t || {}).reduce(
25
- (s, [a, c]) => (c && (s[a] = c), s),
26
- {}
27
- );
28
- return (await fetch(
29
- `${n}${t ? `?${new URLSearchParams(e).toString()}` : ""}`,
30
- { method: "GET", mode: "cors", credentials: "omit", referrer: "https://sk.thorswap.net" }
31
- )).json();
32
- }, ct = async (n, t, e, r = !1) => {
33
- const s = await fetch(`${n}`, {
34
- body: t,
35
- headers: e,
36
- method: "POST",
37
- referrer: "https://sk.thorswap.net"
38
- });
39
- return r ? s.text() : s.json();
40
- }, ot = "0x313ce567", z = async ({ chain: n, to: t }) => {
12
+ var f = (s, t, e) => (bt(s, t, "access private method"), e);
13
+ import { FeeOption as H, BaseDecimal as m, Chain as o, ChainToRPC as yt, MemoType as g } from "@swapkit/types";
14
+ const wt = "0x313ce567", rt = async ({ chain: s, to: t }) => {
41
15
  try {
42
- const e = await ct(
43
- at[n],
44
- JSON.stringify({
45
- method: "eth_call",
46
- params: [{ to: t.toLowerCase(), data: ot }, "latest"],
16
+ const { result: e } = await zt.post(yt[s], {
17
+ headers: { accept: "*/*", "cache-control": "no-cache" },
18
+ body: JSON.stringify({
47
19
  id: 44,
48
- jsonrpc: "2.0"
49
- }),
50
- { accept: "*/*", "cache-control": "no-cache", "content-type": "application/json" },
51
- !0
52
- ), { result: r } = JSON.parse(e);
53
- return parseInt(BigInt(r).toString());
20
+ jsonrpc: "2.0",
21
+ method: "eth_call",
22
+ params: [{ to: t.toLowerCase(), data: wt }, "latest"]
23
+ })
24
+ });
25
+ return parseInt(BigInt(e).toString());
54
26
  } catch (e) {
55
- return console.error(e), h[n];
56
- }
57
- }, ut = async (n) => {
58
- if (n === i.Ethereum)
59
- return h.ETH;
60
- const [, t] = n.split("-");
61
- return t != null && t.startsWith("0x") ? z({ chain: i.Ethereum, to: t }) : h.ETH;
62
- }, lt = async (n) => {
63
- const [, t] = n.split("-");
64
- return t != null && t.startsWith("0x") ? z({ chain: i.Avalanche, to: t.toLowerCase() }) : h.AVAX;
65
- }, dt = async (n) => n === i.BinanceSmartChain ? h.BSC : h.BSC, X = async ({ chain: n, symbol: t }) => {
66
- switch (n) {
67
- case i.Ethereum:
68
- return ut(t);
69
- case i.Avalanche:
70
- return lt(t);
71
- case i.BinanceSmartChain:
72
- return dt(t);
27
+ return console.error(e), m[s];
28
+ }
29
+ }, At = async (s) => {
30
+ if (s === o.Ethereum)
31
+ return m.ETH;
32
+ const [, t] = s.split("-");
33
+ return t != null && t.startsWith("0x") ? rt({ chain: o.Ethereum, to: t }) : m.ETH;
34
+ }, Tt = async (s) => {
35
+ const [, t] = s.split("-");
36
+ return t != null && t.startsWith("0x") ? rt({ chain: o.Avalanche, to: t.toLowerCase() }) : m.AVAX;
37
+ }, Rt = async (s) => s === o.BinanceSmartChain ? m.BSC : m.BSC, st = async ({ chain: s, symbol: t }) => {
38
+ switch (s) {
39
+ case o.Ethereum:
40
+ return At(t);
41
+ case o.Avalanche:
42
+ return Tt(t);
43
+ case o.BinanceSmartChain:
44
+ return Rt(t);
73
45
  default:
74
- return h[n];
75
- }
76
- }, yt = {
77
- [x.Average]: 1.2,
78
- [x.Fast]: 1.5,
79
- [x.Fastest]: 2
80
- }, mt = ({ chain: n, symbol: t }) => {
81
- switch (n) {
82
- case i.Bitcoin:
83
- case i.BitcoinCash:
84
- case i.Litecoin:
85
- case i.Dogecoin:
86
- case i.Binance:
87
- case i.Ethereum:
88
- case i.Avalanche:
89
- return t === n;
90
- case i.Arbitrum:
91
- case i.Optimism:
46
+ return m[s];
47
+ }
48
+ }, te = {
49
+ [H.Average]: 1.2,
50
+ [H.Fast]: 1.5,
51
+ [H.Fastest]: 2
52
+ }, St = ({ chain: s, symbol: t }) => {
53
+ switch (s) {
54
+ case o.Bitcoin:
55
+ case o.BitcoinCash:
56
+ case o.Litecoin:
57
+ case o.Dogecoin:
58
+ case o.Binance:
59
+ case o.Ethereum:
60
+ case o.Avalanche:
61
+ return t === s;
62
+ case o.Arbitrum:
63
+ case o.Optimism:
92
64
  return t === "ETH";
93
- case i.Maya:
65
+ case o.Maya:
94
66
  return t === "CACAO";
95
- case i.Cosmos:
67
+ case o.Kujira:
68
+ return t === "KUJI";
69
+ case o.Cosmos:
96
70
  return t === "ATOM";
97
- case i.Polygon:
71
+ case o.Polygon:
98
72
  return t === "MATIC";
99
- case i.BinanceSmartChain:
73
+ case o.BinanceSmartChain:
100
74
  return t === "BNB";
101
- case i.THORChain:
75
+ case o.THORChain:
102
76
  return t === "RUNE";
103
77
  }
104
- }, ht = (n) => {
105
- switch (n) {
78
+ }, vt = (s) => {
79
+ switch (s) {
106
80
  case "ETH.THOR":
107
81
  return { identifier: "ETH.THOR-0xa5f2211b9b8170f694421f2046281775e8468044", decimal: 18 };
108
82
  case "ETH.vTHOR":
109
83
  return { identifier: "ETH.vTHOR-0x815c23eca83261b6ec689b60cc4a58b54bc24d8d", decimal: 18 };
110
- case i.Cosmos:
111
- return { identifier: "GAIA.ATOM", decimal: h[n] };
112
- case i.THORChain:
113
- return { identifier: "THOR.RUNE", decimal: h[n] };
114
- case i.BinanceSmartChain:
115
- return { identifier: "BSC.BNB", decimal: h[n] };
116
- case i.Maya:
117
- return { identifier: "MAYA.CACAO", decimal: h.MAYA };
84
+ case o.Cosmos:
85
+ return { identifier: "GAIA.ATOM", decimal: m[s] };
86
+ case o.THORChain:
87
+ return { identifier: "THOR.RUNE", decimal: m[s] };
88
+ case o.BinanceSmartChain:
89
+ return { identifier: "BSC.BNB", decimal: m[s] };
90
+ case o.Maya:
91
+ return { identifier: "MAYA.CACAO", decimal: m.MAYA };
118
92
  case "MAYA.MAYA":
119
93
  return { identifier: "MAYA.MAYA", decimal: 4 };
120
- case i.Arbitrum:
121
- case i.Optimism:
122
- case i.BitcoinCash:
123
- case i.Litecoin:
124
- case i.Dogecoin:
125
- case i.Binance:
126
- case i.Avalanche:
127
- case i.Polygon:
128
- case i.Bitcoin:
129
- case i.Ethereum:
130
- return { identifier: `${n}.${n}`, decimal: h[n] };
131
- }
132
- }, _t = ({ chain: n, symbol: t }) => {
94
+ case o.Kujira:
95
+ case o.Arbitrum:
96
+ case o.Optimism:
97
+ case o.BitcoinCash:
98
+ case o.Litecoin:
99
+ case o.Dogecoin:
100
+ case o.Binance:
101
+ case o.Avalanche:
102
+ case o.Polygon:
103
+ case o.Bitcoin:
104
+ case o.Ethereum:
105
+ return { identifier: `${s}.${s}`, decimal: m[s] };
106
+ }
107
+ }, Ct = ({ chain: s, symbol: t }) => {
133
108
  if (t.includes("/"))
134
109
  return "Synth";
135
- switch (n) {
136
- case i.Bitcoin:
137
- case i.BitcoinCash:
138
- case i.Dogecoin:
139
- case i.Litecoin:
140
- case i.Maya:
141
- case i.THORChain:
110
+ switch (s) {
111
+ case o.Bitcoin:
112
+ case o.BitcoinCash:
113
+ case o.Dogecoin:
114
+ case o.Litecoin:
115
+ case o.Maya:
116
+ case o.THORChain:
142
117
  return "Native";
143
- case i.Cosmos:
144
- return t === "ATOM" ? "Native" : "GAIA";
145
- case i.Binance:
146
- return t === i.Binance ? "Native" : "BEP2";
147
- case i.BinanceSmartChain:
148
- return t === i.Binance ? "Native" : "BEP20";
149
- case i.Ethereum:
150
- return t === i.Ethereum ? "Native" : "ERC20";
151
- case i.Avalanche:
152
- return t === i.Avalanche ? "Native" : "AVAX";
153
- case i.Polygon:
154
- return t === i.Polygon ? "Native" : "POLYGON";
155
- case i.Arbitrum:
156
- return [i.Ethereum, i.Arbitrum].includes(t) ? "Native" : "ARBITRUM";
157
- case i.Optimism:
158
- return [i.Ethereum, i.Optimism].includes(t) ? "Native" : "OPTIMISM";
159
- }
160
- }, Bt = (n) => {
161
- var c;
162
- const [t, ...e] = n.split("."), r = n.includes("/"), s = e.join("."), a = (c = s == null ? void 0 : s.split("-")) == null ? void 0 : c[0];
163
- return { chain: t, symbol: s, ticker: a, synth: r };
164
- }, gt = ({
165
- liquidityUnits: n,
118
+ case o.Cosmos:
119
+ return t === "ATOM" ? "Native" : o.Cosmos;
120
+ case o.Kujira:
121
+ return t === o.Kujira ? "Native" : o.Kujira;
122
+ case o.Binance:
123
+ return t === o.Binance ? "Native" : "BEP2";
124
+ case o.BinanceSmartChain:
125
+ return t === o.Binance ? "Native" : "BEP20";
126
+ case o.Ethereum:
127
+ return t === o.Ethereum ? "Native" : "ERC20";
128
+ case o.Avalanche:
129
+ return t === o.Avalanche ? "Native" : o.Avalanche;
130
+ case o.Polygon:
131
+ return t === o.Polygon ? "Native" : "POLYGON";
132
+ case o.Arbitrum:
133
+ return [o.Ethereum, o.Arbitrum].includes(t) ? "Native" : "ARBITRUM";
134
+ case o.Optimism:
135
+ return [o.Ethereum, o.Optimism].includes(t) ? "Native" : "OPTIMISM";
136
+ }
137
+ }, ee = (s) => {
138
+ var a;
139
+ const [t, ...e] = s.split("."), r = s.includes("/"), n = e.join("."), i = (a = n == null ? void 0 : n.split("-")) == null ? void 0 : a[0];
140
+ return { chain: t, symbol: n, ticker: i, synth: r };
141
+ }, $t = new RegExp(
142
+ /(.)\1{6}|\.ORG|\.NET|\.FINANCE|\.COM|WWW|HTTP|\\\\|\/\/|[\s$%:[\]]/,
143
+ "gmi"
144
+ ), re = (s) => s.filter(
145
+ (t) => !$t.test(t.toString()) && !t.toString().includes("undefined")
146
+ ), It = ({
147
+ liquidityUnits: s,
166
148
  poolUnits: t,
167
149
  runeDepth: e
168
150
  }) => {
169
- const r = m(n), s = m(t), a = m(e), c = r.mul(a), o = s.mul(s).mul(2), l = s.mul(r).mul(2), u = r.mul(r), g = s.mul(s).mul(s);
170
- return c.mul(o.sub(l).add(u)).div(g);
171
- }, pt = ({
172
- liquidityUnits: n,
151
+ const r = d(s), n = d(t), i = d(e), a = r.mul(i), c = n.mul(n).mul(2), u = n.mul(r).mul(2), l = r.mul(r), h = n.mul(n).mul(n);
152
+ return a.mul(c.sub(u).add(l)).div(h);
153
+ }, Et = ({
154
+ liquidityUnits: s,
173
155
  poolUnits: t,
174
156
  assetDepth: e
175
157
  }) => {
176
- const r = m(n), s = m(t), a = m(e), c = r.mul(a), o = s.mul(s).mul(2), l = s.mul(r).mul(2), u = r.mul(r), g = c.mul(o.sub(l).add(u)), $ = s.mul(s).mul(s);
177
- return g.div($);
178
- }, Mt = ({
179
- percent: n,
158
+ const r = d(s), n = d(t), i = d(e), a = r.mul(i), c = n.mul(n).mul(2), u = n.mul(r).mul(2), l = r.mul(r), h = a.mul(c.sub(u).add(l)), _ = n.mul(n).mul(n);
159
+ return h.div(_);
160
+ }, se = ({
161
+ percent: s,
180
162
  runeDepth: t,
181
163
  liquidityUnits: e,
182
164
  poolUnits: r
183
- }) => gt({ runeDepth: t, liquidityUnits: e, poolUnits: r }).mul(n), Et = ({
184
- percent: n,
165
+ }) => It({ runeDepth: t, liquidityUnits: e, poolUnits: r }).mul(s), ne = ({
166
+ percent: s,
185
167
  assetDepth: t,
186
168
  liquidityUnits: e,
187
169
  poolUnits: r
188
- }) => pt({ assetDepth: t, liquidityUnits: e, poolUnits: r }).mul(n), m = (n) => new wt({ value: n, decimal: h.THOR }), Vt = ({
189
- liquidityUnits: n,
170
+ }) => Et({ assetDepth: t, liquidityUnits: e, poolUnits: r }).mul(s), d = (s) => new Qt({ value: s, decimal: m.THOR }), Ot = ({
171
+ liquidityUnits: s,
190
172
  poolUnits: t,
191
173
  runeDepth: e,
192
- assetDepth: r,
193
- percent: s
174
+ assetDepth: r
194
175
  }) => ({
195
- assetAmount: m(r).mul(n).div(t).mul(s),
196
- runeAmount: m(e).mul(n).div(t).mul(s)
197
- }), Ot = ({
198
- runeDepth: n,
176
+ assetAmount: d(r).mul(s).div(t),
177
+ runeAmount: d(e).mul(s).div(t)
178
+ }), ie = ({
179
+ liquidityUnits: s,
180
+ poolUnits: t,
181
+ runeDepth: e,
182
+ assetDepth: r,
183
+ percent: n
184
+ }) => Object.fromEntries(
185
+ Object.entries(Ot({ liquidityUnits: s, poolUnits: t, runeDepth: e, assetDepth: r })).map(
186
+ ([i, a]) => [i, a.mul(n)]
187
+ )
188
+ ), oe = ({
189
+ runeDepth: s,
199
190
  poolUnits: t,
200
191
  assetDepth: e,
201
192
  liquidityUnits: r,
202
- runeAmount: s,
203
- assetAmount: a
204
- }) => {
205
- const c = m(n), o = m(e), l = m(t), u = m(s), g = m(a), $ = u.mul(o), S = g.mul(c), D = u.mul(g), K = c.mul(o), tt = l.mul($.add(S.add(D.mul(2)))), et = $.add(S.add(K.mul(2))), G = tt.div(et), H = m(r).add(G);
206
- if (G.baseValueNumber === 0)
207
- return H.div(l).baseValueNumber;
208
- const nt = l.add(H);
209
- return H.div(nt).baseValueNumber;
210
- }, Nt = ({
211
193
  runeAmount: n,
194
+ assetAmount: i
195
+ }) => {
196
+ const a = d(s), c = d(e), u = d(t), l = d(n), h = d(i), _ = l.mul(c), T = h.mul(a), P = l.mul(h), dt = a.mul(c), mt = u.mul(_.add(T.add(P.mul(2)))), ft = _.add(T.add(dt.mul(2))), J = mt.div(ft), N = d(r).add(J);
197
+ if (J.baseValueNumber === 0)
198
+ return N.div(u).baseValueNumber;
199
+ const pt = u.add(N);
200
+ return N.div(pt).baseValueNumber;
201
+ }, ae = ({
202
+ runeAmount: s,
212
203
  assetAmount: t,
213
204
  runeDepth: e,
214
205
  assetDepth: r
215
206
  }) => {
216
- const s = m(e), a = m(r), c = m(t), o = m(n), l = c.mul(s).sub(a.mul(o)), u = a.mul(o).add(s.mul(a));
217
- return Math.abs(l.div(u).baseValueNumber);
218
- }, ft = ({
219
- symbol: n,
207
+ const n = d(e), i = d(r), a = d(t), c = d(s), u = a.mul(n).sub(i.mul(c)), l = i.mul(c).add(n.mul(i));
208
+ return Math.abs(u.div(l).baseValueNumber);
209
+ }, kt = ({
210
+ symbol: s,
220
211
  ticker: t,
221
212
  chain: e
222
- }) => e === "ETH" && t !== "ETH" ? `${t}-${n.slice(-3)}` : n, Rt = (n, t) => {
223
- switch (n) {
224
- case f.LEAVE:
225
- case f.BOND: {
213
+ }) => e === "ETH" && t !== "ETH" ? `${t}-${s.slice(-3)}` : s, ce = (s, t) => {
214
+ switch (s) {
215
+ case g.LEAVE:
216
+ case g.BOND: {
226
217
  const { address: e } = t;
227
- return `${n}:${e}`;
218
+ return `${s}:${e}`;
228
219
  }
229
- case f.UNBOND: {
220
+ case g.UNBOND: {
230
221
  const { address: e, unbondAmount: r } = t;
231
- return `${n}:${e}:${r * 10 ** 8}`;
222
+ return `${s}:${e}:${r * 10 ** 8}`;
232
223
  }
233
- case f.THORNAME_REGISTER: {
234
- const { name: e, chain: r, address: s, owner: a } = t;
235
- return `${n}:${e}:${r}:${s}${a ? `:${a}` : ""}`;
224
+ case g.THORNAME_REGISTER: {
225
+ const { name: e, chain: r, address: n, owner: i } = t;
226
+ return `${s}:${e}:${r}:${n}${i ? `:${i}` : ""}`;
236
227
  }
237
- case f.DEPOSIT: {
238
- const { chain: e, symbol: r, address: s, singleSide: a } = t;
239
- return a ? `${n}:${e}/${r}::t:0` : `${n}:${e}.${r}:${s || ""}:t:0`;
228
+ case g.DEPOSIT: {
229
+ const { chain: e, symbol: r, address: n, singleSide: i } = t;
230
+ return i ? `${s}:${e}/${r}::t:0` : `${s}:${e}.${r}:${n || ""}:t:0`;
240
231
  }
241
- case f.WITHDRAW: {
242
- const { chain: e, ticker: r, symbol: s, basisPoints: a, targetAssetString: c, singleSide: o } = t, l = !o && c ? `:${c}` : "", u = ft({ chain: e, symbol: s, ticker: r });
243
- return `${n}:${e}${o ? "/" : "."}${u}:${a}${l}`;
232
+ case g.WITHDRAW: {
233
+ const { chain: e, ticker: r, symbol: n, basisPoints: i, targetAssetString: a, singleSide: c } = t, u = !c && a ? `:${a}` : "", l = kt({ chain: e, symbol: n, ticker: r });
234
+ return `${s}:${e}${c ? "/" : "."}${l}:${i}${u}`;
244
235
  }
245
- case f.OPEN_LOAN:
246
- case f.CLOSE_LOAN: {
236
+ case g.OPEN_LOAN:
237
+ case g.CLOSE_LOAN: {
247
238
  const { asset: e, address: r } = t;
248
- return `${n}:${e}:${r}`;
239
+ return `${s}:${e}:${r}`;
249
240
  }
250
241
  default:
251
242
  return "";
252
243
  }
253
- }, B = 8, U = ({
254
- value: n,
255
- bigIntDecimal: t = B,
256
- decimal: e = B
257
- }) => {
258
- const r = n < 0n;
259
- let s = n.toString().substring(r ? 1 : 0);
260
- const a = e - (s.length - 1);
261
- a > 0 && (s = "0".repeat(a) + s);
262
- const c = s.length - e;
263
- let o = s.slice(-e);
264
- return parseInt(o[t]) >= 5 ? o = `${o.substring(0, t - 1)}${(parseInt(o[t - 1]) + 1).toString()}` : o = o.substring(0, t), `${r ? "-" : ""}${s.slice(0, c)}.${o}`.replace(
265
- /\.?0*$/,
266
- ""
267
- );
268
- }, W = Object.values(i), At = (n = "") => {
269
- const t = n.toUpperCase(), [e] = t.split(".");
270
- if (W.includes(e))
244
+ }, ue = (s) => {
245
+ if (s < 0)
246
+ throw new Error("Invalid number of year");
247
+ return 10 + s;
248
+ }, le = (s) => {
249
+ if (s.length > 30)
250
+ return !1;
251
+ const t = /^[a-zA-Z0-9+_-]+$/g;
252
+ return !!s.match(t);
253
+ }, he = ([s, t, e, r, n]) => `${s}'/${t}'/${e}'/${r}${typeof n != "number" ? "" : `/${n}`}`;
254
+ class K extends Error {
255
+ constructor(t, e, r) {
256
+ const n = t.status || t.status === 0 ? t.status : "", i = t.statusText || "", a = `${n} ${i}`.trim(), c = a ? `status code ${a}` : "an unknown error";
257
+ super(`Request failed with ${c}`), Object.defineProperty(this, "response", {
258
+ enumerable: !0,
259
+ configurable: !0,
260
+ writable: !0,
261
+ value: void 0
262
+ }), Object.defineProperty(this, "request", {
263
+ enumerable: !0,
264
+ configurable: !0,
265
+ writable: !0,
266
+ value: void 0
267
+ }), Object.defineProperty(this, "options", {
268
+ enumerable: !0,
269
+ configurable: !0,
270
+ writable: !0,
271
+ value: void 0
272
+ }), this.name = "HTTPError", this.response = t, this.request = e, this.options = r;
273
+ }
274
+ }
275
+ class nt extends Error {
276
+ constructor(t) {
277
+ super("Request timed out"), Object.defineProperty(this, "request", {
278
+ enumerable: !0,
279
+ configurable: !0,
280
+ writable: !0,
281
+ value: void 0
282
+ }), this.name = "TimeoutError", this.request = t;
283
+ }
284
+ }
285
+ const V = (s) => s !== null && typeof s == "object", B = (...s) => {
286
+ for (const t of s)
287
+ if ((!V(t) || Array.isArray(t)) && t !== void 0)
288
+ throw new TypeError("The `options` argument must be an object");
289
+ return z({}, ...s);
290
+ }, it = (s = {}, t = {}) => {
291
+ const e = new globalThis.Headers(s), r = t instanceof globalThis.Headers, n = new globalThis.Headers(t);
292
+ for (const [i, a] of n.entries())
293
+ r && a === "undefined" || a === void 0 ? e.delete(i) : e.set(i, a);
294
+ return e;
295
+ }, z = (...s) => {
296
+ let t = {}, e = {};
297
+ for (const r of s)
298
+ if (Array.isArray(r))
299
+ Array.isArray(t) || (t = []), t = [...t, ...r];
300
+ else if (V(r)) {
301
+ for (let [n, i] of Object.entries(r))
302
+ V(i) && n in t && (i = z(t[n], i)), t = { ...t, [n]: i };
303
+ V(r.headers) && (e = it(e, r.headers), t.headers = e);
304
+ }
305
+ return t;
306
+ }, Bt = (() => {
307
+ let s = !1, t = !1;
308
+ const e = typeof globalThis.ReadableStream == "function", r = typeof globalThis.Request == "function";
309
+ return e && r && (t = new globalThis.Request("https://empty.invalid", {
310
+ body: new globalThis.ReadableStream(),
311
+ method: "POST",
312
+ // @ts-expect-error - Types are outdated.
313
+ get duplex() {
314
+ return s = !0, "half";
315
+ }
316
+ }).headers.has("Content-Type")), s && !t;
317
+ })(), Vt = typeof globalThis.AbortController == "function", qt = typeof globalThis.ReadableStream == "function", Mt = typeof globalThis.FormData == "function", ot = ["get", "post", "put", "patch", "head", "delete"], xt = {
318
+ json: "application/json",
319
+ text: "text/*",
320
+ formData: "multipart/form-data",
321
+ arrayBuffer: "*/*",
322
+ blob: "*/*"
323
+ }, j = 2147483647, at = Symbol("stop"), Pt = {
324
+ json: !0,
325
+ parseJson: !0,
326
+ searchParams: !0,
327
+ prefixUrl: !0,
328
+ retry: !0,
329
+ timeout: !0,
330
+ hooks: !0,
331
+ throwHttpErrors: !0,
332
+ onDownloadProgress: !0,
333
+ fetch: !0
334
+ }, Nt = {
335
+ method: !0,
336
+ headers: !0,
337
+ body: !0,
338
+ mode: !0,
339
+ credentials: !0,
340
+ cache: !0,
341
+ redirect: !0,
342
+ referrer: !0,
343
+ referrerPolicy: !0,
344
+ integrity: !0,
345
+ keepalive: !0,
346
+ signal: !0,
347
+ window: !0,
348
+ dispatcher: !0,
349
+ duplex: !0
350
+ }, Ht = (s) => ot.includes(s) ? s.toUpperCase() : s, jt = ["get", "put", "head", "delete", "options", "trace"], Lt = [408, 413, 429, 500, 502, 503, 504], ct = [413, 429, 503], Q = {
351
+ limit: 2,
352
+ methods: jt,
353
+ statusCodes: Lt,
354
+ afterStatusCodes: ct,
355
+ maxRetryAfter: Number.POSITIVE_INFINITY,
356
+ backoffLimit: Number.POSITIVE_INFINITY,
357
+ delay: (s) => 0.3 * 2 ** (s - 1) * 1e3
358
+ }, Dt = (s = {}) => {
359
+ if (typeof s == "number")
360
+ return {
361
+ ...Q,
362
+ limit: s
363
+ };
364
+ if (s.methods && !Array.isArray(s.methods))
365
+ throw new Error("retry.methods must be an array");
366
+ if (s.statusCodes && !Array.isArray(s.statusCodes))
367
+ throw new Error("retry.statusCodes must be an array");
368
+ return {
369
+ ...Q,
370
+ ...s,
371
+ afterStatusCodes: ct
372
+ };
373
+ };
374
+ async function Ut(s, t, e, r) {
375
+ return new Promise((n, i) => {
376
+ const a = setTimeout(() => {
377
+ e && e.abort(), i(new nt(s));
378
+ }, r.timeout);
379
+ r.fetch(s, t).then(n).catch(i).then(() => {
380
+ clearTimeout(a);
381
+ });
382
+ });
383
+ }
384
+ async function Ft(s, { signal: t }) {
385
+ return new Promise((e, r) => {
386
+ t && (t.throwIfAborted(), t.addEventListener("abort", n, { once: !0 }));
387
+ function n() {
388
+ clearTimeout(i), r(t.reason);
389
+ }
390
+ const i = setTimeout(() => {
391
+ t == null || t.removeEventListener("abort", n), e();
392
+ }, s);
393
+ });
394
+ }
395
+ const Wt = (s, t) => {
396
+ const e = {};
397
+ for (const r in t)
398
+ !(r in Nt) && !(r in Pt) && !(r in s) && (e[r] = t[r]);
399
+ return e;
400
+ };
401
+ class q {
402
+ static create(t, e) {
403
+ const r = new q(t, e), n = async () => {
404
+ if (typeof r._options.timeout == "number" && r._options.timeout > j)
405
+ throw new RangeError(`The \`timeout\` option cannot be greater than ${j}`);
406
+ await Promise.resolve();
407
+ let c = await r._fetch();
408
+ for (const u of r._options.hooks.afterResponse) {
409
+ const l = await u(r.request, r._options, r._decorateResponse(c.clone()));
410
+ l instanceof globalThis.Response && (c = l);
411
+ }
412
+ if (r._decorateResponse(c), !c.ok && r._options.throwHttpErrors) {
413
+ let u = new K(c, r.request, r._options);
414
+ for (const l of r._options.hooks.beforeError)
415
+ u = await l(u);
416
+ throw u;
417
+ }
418
+ if (r._options.onDownloadProgress) {
419
+ if (typeof r._options.onDownloadProgress != "function")
420
+ throw new TypeError("The `onDownloadProgress` option must be a function");
421
+ if (!qt)
422
+ throw new Error("Streams are not supported in your environment. `ReadableStream` is missing.");
423
+ return r._stream(c.clone(), r._options.onDownloadProgress);
424
+ }
425
+ return c;
426
+ }, a = r._options.retry.methods.includes(r.request.method.toLowerCase()) ? r._retry(n) : n();
427
+ for (const [c, u] of Object.entries(xt))
428
+ a[c] = async () => {
429
+ r.request.headers.set("accept", r.request.headers.get("accept") || u);
430
+ const h = (await a).clone();
431
+ if (c === "json") {
432
+ if (h.status === 204 || (await h.clone().arrayBuffer()).byteLength === 0)
433
+ return "";
434
+ if (e.parseJson)
435
+ return e.parseJson(await h.text());
436
+ }
437
+ return h[c]();
438
+ };
439
+ return a;
440
+ }
441
+ // eslint-disable-next-line complexity
442
+ constructor(t, e = {}) {
443
+ if (Object.defineProperty(this, "request", {
444
+ enumerable: !0,
445
+ configurable: !0,
446
+ writable: !0,
447
+ value: void 0
448
+ }), Object.defineProperty(this, "abortController", {
449
+ enumerable: !0,
450
+ configurable: !0,
451
+ writable: !0,
452
+ value: void 0
453
+ }), Object.defineProperty(this, "_retryCount", {
454
+ enumerable: !0,
455
+ configurable: !0,
456
+ writable: !0,
457
+ value: 0
458
+ }), Object.defineProperty(this, "_input", {
459
+ enumerable: !0,
460
+ configurable: !0,
461
+ writable: !0,
462
+ value: void 0
463
+ }), Object.defineProperty(this, "_options", {
464
+ enumerable: !0,
465
+ configurable: !0,
466
+ writable: !0,
467
+ value: void 0
468
+ }), this._input = t, this._options = {
469
+ // TODO: credentials can be removed when the spec change is implemented in all browsers. Context: https://www.chromestatus.com/feature/4539473312350208
470
+ credentials: this._input.credentials || "same-origin",
471
+ ...e,
472
+ headers: it(this._input.headers, e.headers),
473
+ hooks: z({
474
+ beforeRequest: [],
475
+ beforeRetry: [],
476
+ beforeError: [],
477
+ afterResponse: []
478
+ }, e.hooks),
479
+ method: Ht(e.method ?? this._input.method),
480
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
481
+ prefixUrl: String(e.prefixUrl || ""),
482
+ retry: Dt(e.retry),
483
+ throwHttpErrors: e.throwHttpErrors !== !1,
484
+ timeout: e.timeout ?? 1e4,
485
+ fetch: e.fetch ?? globalThis.fetch.bind(globalThis)
486
+ }, typeof this._input != "string" && !(this._input instanceof URL || this._input instanceof globalThis.Request))
487
+ throw new TypeError("`input` must be a string, URL, or Request");
488
+ if (this._options.prefixUrl && typeof this._input == "string") {
489
+ if (this._input.startsWith("/"))
490
+ throw new Error("`input` must not begin with a slash when using `prefixUrl`");
491
+ this._options.prefixUrl.endsWith("/") || (this._options.prefixUrl += "/"), this._input = this._options.prefixUrl + this._input;
492
+ }
493
+ if (Vt) {
494
+ if (this.abortController = new globalThis.AbortController(), this._options.signal) {
495
+ const r = this._options.signal;
496
+ this._options.signal.addEventListener("abort", () => {
497
+ this.abortController.abort(r.reason);
498
+ });
499
+ }
500
+ this._options.signal = this.abortController.signal;
501
+ }
502
+ if (Bt && (this._options.duplex = "half"), this.request = new globalThis.Request(this._input, this._options), this._options.searchParams) {
503
+ const n = "?" + (typeof this._options.searchParams == "string" ? this._options.searchParams.replace(/^\?/, "") : new URLSearchParams(this._options.searchParams).toString()), i = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, n);
504
+ (Mt && this._options.body instanceof globalThis.FormData || this._options.body instanceof URLSearchParams) && !(this._options.headers && this._options.headers["content-type"]) && this.request.headers.delete("content-type"), this.request = new globalThis.Request(new globalThis.Request(i, { ...this.request }), this._options);
505
+ }
506
+ this._options.json !== void 0 && (this._options.body = JSON.stringify(this._options.json), this.request.headers.set("content-type", this._options.headers.get("content-type") ?? "application/json"), this.request = new globalThis.Request(this.request, { body: this._options.body }));
507
+ }
508
+ _calculateRetryDelay(t) {
509
+ if (this._retryCount++, this._retryCount < this._options.retry.limit && !(t instanceof nt)) {
510
+ if (t instanceof K) {
511
+ if (!this._options.retry.statusCodes.includes(t.response.status))
512
+ return 0;
513
+ const r = t.response.headers.get("Retry-After");
514
+ if (r && this._options.retry.afterStatusCodes.includes(t.response.status)) {
515
+ let n = Number(r);
516
+ return Number.isNaN(n) ? n = Date.parse(r) - Date.now() : n *= 1e3, this._options.retry.maxRetryAfter !== void 0 && n > this._options.retry.maxRetryAfter ? 0 : n;
517
+ }
518
+ if (t.response.status === 413)
519
+ return 0;
520
+ }
521
+ const e = this._options.retry.delay(this._retryCount);
522
+ return Math.min(this._options.retry.backoffLimit, e);
523
+ }
524
+ return 0;
525
+ }
526
+ _decorateResponse(t) {
527
+ return this._options.parseJson && (t.json = async () => this._options.parseJson(await t.text())), t;
528
+ }
529
+ async _retry(t) {
530
+ try {
531
+ return await t();
532
+ } catch (e) {
533
+ const r = Math.min(this._calculateRetryDelay(e), j);
534
+ if (r !== 0 && this._retryCount > 0) {
535
+ await Ft(r, { signal: this._options.signal });
536
+ for (const n of this._options.hooks.beforeRetry)
537
+ if (await n({
538
+ request: this.request,
539
+ options: this._options,
540
+ error: e,
541
+ retryCount: this._retryCount
542
+ }) === at)
543
+ return;
544
+ return this._retry(t);
545
+ }
546
+ throw e;
547
+ }
548
+ }
549
+ async _fetch() {
550
+ for (const e of this._options.hooks.beforeRequest) {
551
+ const r = await e(this.request, this._options);
552
+ if (r instanceof Request) {
553
+ this.request = r;
554
+ break;
555
+ }
556
+ if (r instanceof Response)
557
+ return r;
558
+ }
559
+ const t = Wt(this.request, this._options);
560
+ return this._options.timeout === !1 ? this._options.fetch(this.request.clone(), t) : Ut(this.request.clone(), t, this.abortController, this._options);
561
+ }
562
+ /* istanbul ignore next */
563
+ _stream(t, e) {
564
+ const r = Number(t.headers.get("content-length")) || 0;
565
+ let n = 0;
566
+ return t.status === 204 ? (e && e({ percent: 1, totalBytes: r, transferredBytes: n }, new Uint8Array()), new globalThis.Response(null, {
567
+ status: t.status,
568
+ statusText: t.statusText,
569
+ headers: t.headers
570
+ })) : new globalThis.Response(new globalThis.ReadableStream({
571
+ async start(i) {
572
+ const a = t.body.getReader();
573
+ e && e({ percent: 0, transferredBytes: 0, totalBytes: r }, new Uint8Array());
574
+ async function c() {
575
+ const { done: u, value: l } = await a.read();
576
+ if (u) {
577
+ i.close();
578
+ return;
579
+ }
580
+ if (e) {
581
+ n += l.byteLength;
582
+ const h = r === 0 ? 0 : n / r;
583
+ e({ percent: h, transferredBytes: n, totalBytes: r }, l);
584
+ }
585
+ i.enqueue(l), await c();
586
+ }
587
+ await c();
588
+ }
589
+ }), {
590
+ status: t.status,
591
+ statusText: t.statusText,
592
+ headers: t.headers
593
+ });
594
+ }
595
+ }
596
+ /*! MIT License © Sindre Sorhus */
597
+ const U = (s) => {
598
+ const t = (e, r) => q.create(e, B(s, r));
599
+ for (const e of ot)
600
+ t[e] = (r, n) => q.create(r, B(s, n, { method: e }));
601
+ return t.create = (e) => U(B(e)), t.extend = (e) => U(B(s, e)), t.stop = at, t;
602
+ }, Gt = U(), Yt = Gt, X = Yt.create({
603
+ headers: {
604
+ referrer: "https://sk.thorswap.net",
605
+ referer: "https://sk.thorswap.net",
606
+ "Content-Type": "application/json"
607
+ }
608
+ }), zt = {
609
+ get: (s, t) => X.get(s, t).json(),
610
+ post: (s, t) => X.post(s, t).json()
611
+ }, Z = Object.values(o), Jt = (s = "") => {
612
+ const t = s.toUpperCase(), [e] = t.split(".");
613
+ if (Z.includes(e))
271
614
  return !0;
272
615
  const [r] = t.split("/");
273
- if (W.includes(r))
616
+ if (Z.includes(r))
274
617
  return !0;
275
618
  throw new Error(
276
- `Invalid identifier: ${n}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`
619
+ `Invalid identifier: ${s}. Expected format: <Chain>.<Ticker> or <Chain>.<Ticker>-<ContractAddress>`
277
620
  );
278
- }, I = (n) => 10n ** BigInt(n), C = (n) => Math.log10(parseFloat(n.toString()));
279
- var w, T, R, J, k, Q, V, P, b, y, O, q, v, N;
280
- const M = class M {
621
+ }, $ = 8, R = (s) => 10n ** BigInt(s), S = (s) => Math.log10(parseFloat(s.toString()));
622
+ function tt({
623
+ value: s,
624
+ bigIntDecimal: t = $,
625
+ decimal: e = $
626
+ }) {
627
+ const r = s < 0n;
628
+ let n = s.toString().substring(r ? 1 : 0);
629
+ const i = e - (n.length - 1);
630
+ i > 0 && (n = "0".repeat(i) + n);
631
+ const a = n.length - e;
632
+ let c = n.slice(-e);
633
+ return parseInt(c[t]) >= 5 ? c = `${c.substring(0, t - 1)}${(parseInt(c[t - 1]) + 1).toString()}` : c = c.substring(0, t), `${r ? "-" : ""}${n.slice(0, a)}.${c}`.replace(
634
+ /\.?0*$/,
635
+ ""
636
+ );
637
+ }
638
+ var w, v, M, ut, x, lt, O, F, A, C, k, W;
639
+ const I = class I {
281
640
  constructor(t) {
282
- p(this, w);
283
- p(this, R);
284
- p(this, k);
285
- p(this, V);
286
- p(this, b);
287
- p(this, O);
288
- p(this, v);
289
- _(this, "decimalMultiplier", 10n ** 8n);
290
- _(this, "bigIntValue", 0n);
291
- _(this, "decimal");
292
- const e = typeof t == "object", r = e ? t.value : t;
293
- this.decimal = e ? t.decimal : void 0, this.decimalMultiplier = I(
294
- Math.max(d(this, O, q).call(this, d(this, b, y).call(this, r)), this.decimal || 0)
295
- ), d(this, R, J).call(this, r);
641
+ y(this, w);
642
+ y(this, M);
643
+ y(this, x);
644
+ y(this, O);
645
+ y(this, A);
646
+ y(this, k);
647
+ p(this, "decimalMultiplier", 10n ** 8n);
648
+ p(this, "bigIntValue", 0n);
649
+ p(this, "decimal");
650
+ const e = L(t);
651
+ this.decimal = typeof t == "object" ? t.decimal : void 0, this.decimalMultiplier = R(
652
+ Math.max(f(this, k, W).call(this, f(this, A, C).call(this, e)), this.decimal || 0)
653
+ ), f(this, M, ut).call(this, e);
296
654
  }
297
655
  static fromBigInt(t, e) {
298
- return new M({
656
+ return new I({
299
657
  decimal: e,
300
- value: U({ value: t, bigIntDecimal: e, decimal: e })
658
+ value: tt({ value: t, bigIntDecimal: e, decimal: e })
301
659
  });
302
660
  }
303
661
  static shiftDecimals({
@@ -305,40 +663,43 @@ const M = class M {
305
663
  from: e,
306
664
  to: r
307
665
  }) {
308
- return M.fromBigInt(
309
- new M(t).bigIntValue * I(r) / I(e),
666
+ return I.fromBigInt(
667
+ new I(t).bigIntValue * R(r) / R(e),
310
668
  r
311
669
  );
312
670
  }
313
- get unsafeNumber() {
314
- return parseFloat((this.bigIntValue / this.decimalMultiplier).toString());
315
- }
671
+ /**
672
+ * @deprecated Use `getBaseValue('string')` instead
673
+ */
316
674
  get baseValue() {
317
- return d(this, v, N).call(this, "string");
675
+ return this.getBaseValue("string");
318
676
  }
677
+ /**
678
+ * @deprecated Use `getBaseValue('number')` instead
679
+ */
319
680
  get baseValueNumber() {
320
- return d(this, v, N).call(this, "number");
681
+ return this.getBaseValue("number");
321
682
  }
683
+ /**
684
+ * @deprecated Use `getBaseValue('bigint')` instead
685
+ */
322
686
  get baseValueBigInt() {
323
- return d(this, v, N).call(this, "number");
687
+ return this.getBaseValue("bigint");
324
688
  }
325
- get value() {
326
- return this.formatBigIntToSafeValue(
327
- this.bigIntValue,
328
- this.decimal || C(this.decimalMultiplier)
329
- );
689
+ set(t) {
690
+ return new this.constructor({ decimal: this.decimal, value: t, identifier: this.toString() });
330
691
  }
331
692
  add(...t) {
332
- return d(this, w, T).call(this, "add", ...t);
693
+ return f(this, w, v).call(this, "add", ...t);
333
694
  }
334
695
  sub(...t) {
335
- return d(this, w, T).call(this, "sub", ...t);
696
+ return f(this, w, v).call(this, "sub", ...t);
336
697
  }
337
698
  mul(...t) {
338
- return d(this, w, T).call(this, "mul", ...t);
699
+ return f(this, w, v).call(this, "mul", ...t);
339
700
  }
340
701
  div(...t) {
341
- return d(this, w, T).call(this, "div", ...t);
702
+ return f(this, w, v).call(this, "div", ...t);
342
703
  }
343
704
  gt(t) {
344
705
  return this.bigIntValue > this.getBigIntValue(t);
@@ -355,136 +716,199 @@ const M = class M {
355
716
  eqValue(t) {
356
717
  return this.bigIntValue === this.getBigIntValue(t);
357
718
  }
719
+ getValue(t) {
720
+ const e = this.formatBigIntToSafeValue(
721
+ this.bigIntValue,
722
+ this.decimal || S(this.decimalMultiplier)
723
+ );
724
+ switch (t) {
725
+ case "number":
726
+ return Number(e);
727
+ case "string":
728
+ return e;
729
+ default:
730
+ return this.bigIntValue * BigInt(this.decimal || 8n) / this.decimalMultiplier;
731
+ }
732
+ }
733
+ getBaseValue(t) {
734
+ const e = this.decimalMultiplier / R(this.decimal || m.THOR), r = this.bigIntValue / e;
735
+ switch (t) {
736
+ case "number":
737
+ return Number(r);
738
+ case "string":
739
+ return r.toString();
740
+ default:
741
+ return r;
742
+ }
743
+ }
358
744
  getBigIntValue(t, e) {
359
- return !e && typeof t == "object" ? t.bigIntValue : (t = typeof t == "object" ? t.value : t, d(this, V, P).call(this, d(this, b, y).call(this, t), e));
745
+ if (!e && typeof t == "object")
746
+ return t.bigIntValue;
747
+ const r = L(t), n = f(this, A, C).call(this, r);
748
+ return n === "0" || n === "undefined" ? 0n : f(this, O, F).call(this, n, e);
360
749
  }
361
750
  formatBigIntToSafeValue(t, e) {
362
- const r = e || this.decimal || B, s = Math.max(
751
+ const r = e || this.decimal || $, n = Math.max(
363
752
  r,
364
- C(this.decimalMultiplier)
365
- ), a = t < 0n;
366
- let c = t.toString().substring(a ? 1 : 0);
367
- const o = s - (c.length - 1);
368
- o > 0 && (c = "0".repeat(o) + c);
369
- const l = c.length - s;
370
- let u = c.slice(-s);
371
- return parseInt(u[r]) >= 5 ? u = `${u.substring(0, r - 1)}${(parseInt(u[r - 1]) + 1).toString()}` : u = u.substring(0, r), `${a ? "-" : ""}${c.slice(0, l)}.${u}`.replace(
372
- /\.?0*$/,
373
- ""
374
- );
753
+ S(this.decimalMultiplier)
754
+ ), i = t < 0n, a = t.toString().substring(i ? 1 : 0), c = n - (a.length - 1), u = c > 0 ? "0".repeat(c) + a : a, l = u.length - n;
755
+ let h = u.slice(-n);
756
+ return parseInt(h[r]) >= 5 ? h = `${h.substring(0, r - 1)}${(parseInt(h[r - 1]) + 1).toString()}` : h = h.substring(0, r), `${i ? "-" : ""}${u.slice(
757
+ 0,
758
+ l
759
+ )}.${h}`.replace(/\.?0*$/, "");
760
+ }
761
+ toSignificant(t = 6) {
762
+ const [e, r] = this.getValue("string").split("."), n = e || "", i = r || "", a = parseInt(n) ? n.length + i.length : i.length;
763
+ if (a <= t)
764
+ return this.getValue("string");
765
+ if (n.length >= t)
766
+ return n.slice(0, t).padEnd(n.length, "0");
767
+ if (parseInt(n))
768
+ return `${n}.${i.slice(0, t - n.length)}`.padEnd(
769
+ a - t,
770
+ "0"
771
+ );
772
+ const c = parseInt(i), u = `${c}`.slice(0, t);
773
+ return `0.${u.padStart(
774
+ i.length - `${c}`.length + u.length,
775
+ "0"
776
+ )}`;
375
777
  }
376
- toSignificant(t) {
377
- const e = this.value.split("."), r = e[0], s = e[1];
378
- return s ? `${r}.${s.slice(0, t || this.decimal)}`.replace(
379
- /\.?0*$/,
380
- ""
381
- ) : r;
778
+ toFixed(t = 6) {
779
+ const [e, r] = this.getValue("string").split("."), n = e || "", i = r || "";
780
+ if (parseInt(n))
781
+ return `${n}.${i.slice(0, t)}`.padEnd(t, "0");
782
+ const a = parseInt(i), c = `${a}`.slice(0, t);
783
+ return `0.${c.padStart(
784
+ i.length - `${a}`.length + c.length,
785
+ "0"
786
+ )}`;
382
787
  }
383
788
  };
384
- w = new WeakSet(), T = function(t, ...e) {
385
- const r = d(this, k, Q).call(this, this, ...e), s = I(r), a = e.reduce(
386
- (o, l) => {
387
- const u = this.getBigIntValue(l, r);
388
- if (t === "div" && u === 0n)
389
- throw new RangeError("Division by zero");
390
- return t === "add" ? o + u : t === "sub" ? o - u : t === "mul" ? o * u / s : o * s / u;
789
+ w = new WeakSet(), v = function(t, ...e) {
790
+ const r = f(this, x, lt).call(this, this, ...e), n = R(r), i = e.reduce(
791
+ (c, u) => {
792
+ const l = this.getBigIntValue(u, r);
793
+ switch (t) {
794
+ case "add":
795
+ return c + l;
796
+ case "sub":
797
+ return c - l;
798
+ case "mul":
799
+ return c * l / n;
800
+ case "div": {
801
+ if (l === 0n)
802
+ throw new RangeError("Division by zero");
803
+ return c * n / l;
804
+ }
805
+ default:
806
+ return c;
807
+ }
391
808
  },
392
809
  //normalize is to precision multiplier base
393
- this.bigIntValue * s / this.decimalMultiplier
394
- ), c = U({
810
+ this.bigIntValue * n / this.decimalMultiplier
811
+ ), a = tt({
395
812
  bigIntDecimal: r,
396
- decimal: Math.max(r, C(this.decimalMultiplier)),
397
- value: a
813
+ decimal: Math.max(r, S(this.decimalMultiplier)),
814
+ value: i
398
815
  });
399
- return new this.constructor({ decimal: this.decimal, value: c, identifier: this.toString() });
400
- }, R = new WeakSet(), J = function(t, e) {
401
- const r = d(this, b, y).call(this, t) || "0";
402
- this.bigIntValue = e || d(this, V, P).call(this, r);
403
- }, k = new WeakSet(), Q = function(...t) {
816
+ return new this.constructor({ decimal: this.decimal, value: a, identifier: this.toString() });
817
+ }, M = new WeakSet(), ut = function(t) {
818
+ const e = f(this, A, C).call(this, t) || "0";
819
+ this.bigIntValue = f(this, O, F).call(this, e);
820
+ }, x = new WeakSet(), lt = function(...t) {
404
821
  const e = t.map(
405
- (r) => typeof r == "object" ? r.decimal || C(r.decimalMultiplier) : d(this, O, q).call(this, d(this, b, y).call(this, r))
822
+ (r) => typeof r == "object" ? r.decimal || S(r.decimalMultiplier) : f(this, k, W).call(this, f(this, A, C).call(this, r))
406
823
  ).filter(Boolean);
407
- return Math.max(...e, B);
408
- }, V = new WeakSet(), P = function(t, e) {
409
- const r = e ? I(e) : this.decimalMultiplier, s = C(r), [a, c = ""] = t.split(".");
410
- return BigInt(`${a}${c.padEnd(s, "0")}`);
411
- }, b = new WeakSet(), y = function(t) {
824
+ return Math.max(...e, $);
825
+ }, O = new WeakSet(), F = function(t, e) {
826
+ const r = e ? R(e) : this.decimalMultiplier, n = S(r), [i = "", a = ""] = t.split(".");
827
+ return BigInt(`${i}${a.padEnd(n, "0")}`);
828
+ }, A = new WeakSet(), C = function(t) {
412
829
  const r = `${typeof t == "number" ? Number(t).toLocaleString("fullwide", {
413
830
  useGrouping: !1,
414
831
  maximumFractionDigits: 20
415
- }) : t}`.replaceAll(",", ".").split(".");
832
+ }) : L(t)}`.replaceAll(",", ".").split(".");
416
833
  return r.length > 1 ? `${r.slice(0, -1).join("")}.${r.at(-1)}` : r[0];
417
- }, O = new WeakSet(), q = function(t) {
834
+ }, k = new WeakSet(), W = function(t) {
418
835
  var r;
419
836
  const e = ((r = t.split(".")[1]) == null ? void 0 : r.length) || 0;
420
- return Math.max(e, B);
421
- }, v = new WeakSet(), N = function(t) {
422
- const e = this.decimalMultiplier / I(this.decimal || 0), r = this.bigIntValue / e;
423
- switch (t) {
424
- case "number":
425
- return Number(r);
426
- case "string":
427
- return r.toString();
428
- default:
429
- return r;
430
- }
837
+ return Math.max(e, $);
431
838
  };
432
- let E = M, j;
433
- const L = (n) => {
434
- if (!j)
839
+ let E = I;
840
+ function L(s) {
841
+ return typeof s == "object" ? "getValue" in s ? s.getValue("string") : s.value : s;
842
+ }
843
+ let G;
844
+ const D = (s) => {
845
+ if (!G)
435
846
  throw new Error("Static assets not loaded, call await AssetValue.loadStaticAssets() first");
436
- return j.get(n.toUpperCase()) || { decimal: h.THOR, identifier: "" };
437
- }, Y = async (n, t = 0) => {
438
- At(n);
439
- const e = await X(F(n));
440
- return new A({ decimal: e, value: t, identifier: n });
847
+ return G.get(s.toUpperCase()) || { decimal: m.THOR, identifier: "" };
848
+ }, et = async (s, t = 0) => {
849
+ Jt(s);
850
+ const e = await st(Y(s));
851
+ return new b({ decimal: e, value: t, identifier: s });
441
852
  };
442
- class A extends E {
853
+ class b extends E {
443
854
  constructor(e) {
444
855
  super(
445
856
  e.value instanceof E ? e.value : { decimal: e.decimal, value: e.value }
446
857
  );
447
- _(this, "address");
448
- _(this, "chain");
449
- _(this, "isSynthetic", !1);
450
- _(this, "isGasAsset", !1);
451
- _(this, "symbol");
452
- _(this, "ticker");
453
- _(this, "type");
454
- const r = "identifier" in e ? e.identifier : `${e.chain}.${e.symbol}`, s = F(r);
455
- this.type = _t(s), this.chain = s.chain, this.ticker = s.ticker, this.symbol = s.symbol, this.address = s.address, this.isSynthetic = s.isSynthetic, this.isGasAsset = s.isGasAsset;
858
+ p(this, "address");
859
+ p(this, "chain");
860
+ p(this, "isSynthetic", !1);
861
+ p(this, "isGasAsset", !1);
862
+ p(this, "symbol");
863
+ p(this, "ticker");
864
+ p(this, "type");
865
+ const r = "identifier" in e ? e.identifier : `${e.chain}.${e.symbol}`, n = Y(r);
866
+ this.type = Ct(n), this.chain = n.chain, this.ticker = n.ticker, this.symbol = n.symbol, this.address = n.address, this.isSynthetic = n.isSynthetic, this.isGasAsset = n.isGasAsset;
867
+ }
868
+ get assetValue() {
869
+ return `${this.getValue("string")} ${this.ticker}`;
870
+ }
871
+ toString(e = !1) {
872
+ const r = this.isSynthetic ? this.ticker : `${this.chain}.${this.ticker}`;
873
+ return e ? r : (
874
+ // THOR.ETH/ETH | ETH.USDT-0x1234567890
875
+ `${this.chain}.${this.symbol}`
876
+ );
877
+ }
878
+ eq({ chain: e, symbol: r }) {
879
+ return this.chain === e && this.symbol === r;
456
880
  }
457
881
  static async fromString(e, r = 0) {
458
- return Y(e, r);
882
+ return et(e, r);
459
883
  }
460
884
  static fromStringSync(e, r = 0) {
461
- const { decimal: s, identifier: a } = L(
885
+ const { decimal: n, identifier: i } = D(
462
886
  e
463
887
  );
464
- return a ? new A({ decimal: s, identifier: a, value: r }) : void 0;
888
+ return i ? new b({ decimal: n, identifier: i, value: r }) : void 0;
465
889
  }
466
890
  static async fromIdentifier(e, r = 0) {
467
- return Y(e, r);
891
+ return et(e, r);
468
892
  }
469
893
  static fromIdentifierSync(e, r = 0) {
470
- const { decimal: s, identifier: a } = L(e);
471
- return new A({ decimal: s, identifier: a, value: r });
894
+ const { decimal: n, identifier: i } = D(e);
895
+ return new b({ decimal: n, identifier: i, value: r });
472
896
  }
473
897
  static fromChainOrSignature(e, r = 0) {
474
- const { decimal: s, identifier: a } = ht(e);
475
- return new A({ value: r, decimal: s, identifier: a });
898
+ const { decimal: n, identifier: i } = vt(e);
899
+ return new b({ value: r, decimal: n, identifier: i });
476
900
  }
477
901
  static async fromTCQuote(e, r = 0) {
478
- const s = await X(F(e)), a = this.shiftDecimals({ value: r, from: h.THOR, to: s });
479
- return new A({ value: a, identifier: e, decimal: s });
902
+ const n = await st(Y(e)), i = this.shiftDecimals({ value: r, from: m.THOR, to: n });
903
+ return new b({ value: i, identifier: e, decimal: n });
480
904
  }
481
905
  static fromTCQuoteStatic(e, r = 0) {
482
- const s = L(e), a = this.shiftDecimals({
906
+ const n = D(e), i = this.shiftDecimals({
483
907
  value: r,
484
- from: h.THOR,
485
- to: s.decimal
908
+ from: m.THOR,
909
+ to: n.decimal
486
910
  });
487
- return new A({ ...s, value: a });
911
+ return new b({ ...n, value: i });
488
912
  }
489
913
  static async loadStaticAssets() {
490
914
  return new Promise(
@@ -493,66 +917,57 @@ class A extends E {
493
917
  const {
494
918
  // Omit ThorchainList from import to avoid decimals conflict (TC uses 8 for all)
495
919
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
496
- ThorchainList: s,
497
- NativeList: a,
498
- ...c
499
- } = await import("./index.es-8503fb04.js");
500
- j = [a, ...Object.values(c)].reduce(
501
- (l, { tokens: u }) => (u.forEach(({ identifier: g, chain: $, ...S }) => {
502
- const D = "decimals" in S ? S.decimals : h[$];
503
- l.set(g, { identifier: g, decimal: D });
504
- }), l),
920
+ ThorchainList: n,
921
+ NativeList: i,
922
+ ...a
923
+ } = await import("@swapkit/tokens");
924
+ G = [i, ...Object.values(a)].reduce(
925
+ (u, { tokens: l }) => (l.forEach(({ identifier: h, chain: _, ...T }) => {
926
+ const P = "decimals" in T ? T.decimals : m[_];
927
+ u.set(h, { identifier: h, decimal: P });
928
+ }), u),
505
929
  /* @__PURE__ */ new Map()
506
930
  ), e({ ok: !0 });
507
- } catch (s) {
508
- console.error(s), r({
931
+ } catch (n) {
932
+ console.error(n), r({
509
933
  ok: !1,
510
- error: s,
934
+ error: n,
511
935
  message: "Couldn't load static assets. Ensure you have installed @swapkit/tokens package"
512
936
  });
513
937
  }
514
938
  }
515
939
  );
516
940
  }
517
- get assetValue() {
518
- return `${this.value} ${this.ticker}`;
519
- }
520
- toString() {
521
- return `${this.chain}.${this.symbol}`;
522
- }
523
- eq({ chain: e, symbol: r }) {
524
- return this.chain === e && this.symbol === r;
525
- }
526
941
  }
527
- const kt = (n) => {
528
- const t = A.fromChainOrSignature(n);
529
- switch (n) {
530
- case i.Bitcoin:
531
- case i.Litecoin:
532
- case i.BitcoinCash:
942
+ const de = (s) => {
943
+ const t = b.fromChainOrSignature(s);
944
+ switch (s) {
945
+ case o.Bitcoin:
946
+ case o.Litecoin:
947
+ case o.BitcoinCash:
533
948
  return t.add(10001);
534
- case i.Dogecoin:
949
+ case o.Dogecoin:
535
950
  return t.add(100000001);
536
- case i.Avalanche:
537
- case i.Ethereum:
951
+ case o.Avalanche:
952
+ case o.Ethereum:
538
953
  return t.add(10 * 10 ** 9);
539
- case i.THORChain:
540
- case i.Maya:
954
+ case o.THORChain:
955
+ case o.Maya:
541
956
  return t.add(0);
542
957
  default:
543
958
  return t.add(1);
544
959
  }
545
- }, F = (n) => {
546
- const t = n.slice(0, 14).includes("/"), e = n.includes(".") ? n : `${i.THORChain}.${n}`, [r, s] = e.split("."), [a, c] = s.split("-");
960
+ }, Y = (s) => {
961
+ const t = s.slice(0, 14).includes("/"), e = s.includes(".") ? s : `${o.THORChain}.${s}`, [r, n] = e.split("."), [i, a] = n.split("-");
547
962
  return {
548
- address: c == null ? void 0 : c.toLowerCase(),
963
+ address: a == null ? void 0 : a.toLowerCase(),
549
964
  chain: r,
550
- isGasAsset: mt({ chain: r, symbol: s }),
965
+ isGasAsset: St({ chain: r, symbol: n }),
551
966
  isSynthetic: t,
552
- symbol: c ? `${a}-${(c == null ? void 0 : c.toLowerCase()) ?? ""}` : s,
553
- ticker: t ? s : a
967
+ symbol: a ? `${i}-${(a == null ? void 0 : a.toLowerCase()) ?? ""}` : n,
968
+ ticker: t ? n : i
554
969
  };
555
- }, $t = {
970
+ }, Kt = {
556
971
  /**
557
972
  * Core
558
973
  */
@@ -609,43 +1024,41 @@ const kt = (n) => {
609
1024
  */
610
1025
  helpers_number_different_decimals: 99101
611
1026
  };
612
- class Z extends Error {
1027
+ class ht extends Error {
613
1028
  constructor(t, e) {
614
- console.error(e), super(t, { cause: { code: $t[t], message: t } }), Object.setPrototypeOf(this, Z.prototype);
1029
+ console.error(e), super(t, { cause: { code: Kt[t], message: t } }), Object.setPrototypeOf(this, ht.prototype);
615
1030
  }
616
1031
  }
617
- class wt extends E {
1032
+ class Qt extends E {
618
1033
  eq(t) {
619
1034
  return this.eqValue(t);
620
1035
  }
621
- toString() {
622
- return this.value;
623
- }
624
1036
  }
625
1037
  export {
626
- A as AssetValue,
627
- B as DEFAULT_DECIMAL,
628
- Z as SwapKitError,
629
- wt as SwapKitNumber,
630
- Bt as assetFromString,
631
- Ct as derivationPathToString,
632
- U as formatBigIntToSafeValue,
633
- yt as gasFeeMultiplier,
634
- _t as getAssetType,
635
- pt as getAsymmetricAssetShare,
636
- Et as getAsymmetricAssetWithdrawAmount,
637
- gt as getAsymmetricRuneShare,
638
- Mt as getAsymmetricRuneWithdrawAmount,
639
- ht as getCommonAssetInfo,
640
- X as getDecimal,
641
- Ot as getEstimatedPoolShare,
642
- Nt as getLiquiditySlippage,
643
- Rt as getMemoFor,
644
- kt as getMinAmountByChain,
645
- Tt as getRequest,
646
- Vt as getSymmetricWithdraw,
647
- vt as getTHORNameCost,
648
- mt as isGasAsset,
649
- ct as postRequest,
650
- St as validateTHORName
1038
+ b as AssetValue,
1039
+ E as BigIntArithmetics,
1040
+ zt as RequestClient,
1041
+ ht as SwapKitError,
1042
+ Qt as SwapKitNumber,
1043
+ ee as assetFromString,
1044
+ he as derivationPathToString,
1045
+ re as filterAssets,
1046
+ tt as formatBigIntToSafeValue,
1047
+ te as gasFeeMultiplier,
1048
+ Ct as getAssetType,
1049
+ Et as getAsymmetricAssetShare,
1050
+ ne as getAsymmetricAssetWithdrawAmount,
1051
+ It as getAsymmetricRuneShare,
1052
+ se as getAsymmetricRuneWithdrawAmount,
1053
+ vt as getCommonAssetInfo,
1054
+ st as getDecimal,
1055
+ oe as getEstimatedPoolShare,
1056
+ ae as getLiquiditySlippage,
1057
+ ce as getMemoFor,
1058
+ de as getMinAmountByChain,
1059
+ Ot as getSymmetricPoolShare,
1060
+ ie as getSymmetricWithdraw,
1061
+ ue as getTHORNameCost,
1062
+ St as isGasAsset,
1063
+ le as validateTHORName
651
1064
  };