@atomiqlabs/lp-lib 14.0.0-dev.21 → 14.0.0-dev.23
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/LICENSE +201 -201
- package/dist/fees/IBtcFeeEstimator.d.ts +3 -3
- package/dist/fees/IBtcFeeEstimator.js +2 -2
- package/dist/index.d.ts +42 -42
- package/dist/index.js +58 -58
- package/dist/info/InfoHandler.d.ts +17 -17
- package/dist/info/InfoHandler.js +61 -61
- package/dist/plugins/IPlugin.d.ts +143 -143
- package/dist/plugins/IPlugin.js +34 -34
- package/dist/plugins/PluginManager.d.ts +112 -112
- package/dist/plugins/PluginManager.js +259 -259
- package/dist/prices/BinanceSwapPrice.d.ts +26 -26
- package/dist/prices/BinanceSwapPrice.js +92 -92
- package/dist/prices/CoinGeckoSwapPrice.d.ts +30 -30
- package/dist/prices/CoinGeckoSwapPrice.js +64 -64
- package/dist/prices/ISwapPrice.d.ts +43 -43
- package/dist/prices/ISwapPrice.js +55 -55
- package/dist/prices/OKXSwapPrice.d.ts +26 -26
- package/dist/prices/OKXSwapPrice.js +92 -92
- package/dist/storage/IIntermediaryStorage.d.ts +18 -18
- package/dist/storage/IIntermediaryStorage.js +2 -2
- package/dist/storagemanager/IntermediaryStorageManager.d.ts +19 -19
- package/dist/storagemanager/IntermediaryStorageManager.js +111 -111
- package/dist/storagemanager/StorageManager.d.ts +13 -13
- package/dist/storagemanager/StorageManager.js +64 -64
- package/dist/swaps/SwapHandler.d.ts +153 -153
- package/dist/swaps/SwapHandler.js +160 -160
- package/dist/swaps/SwapHandlerSwap.d.ts +79 -79
- package/dist/swaps/SwapHandlerSwap.js +78 -78
- package/dist/swaps/assertions/AmountAssertions.d.ts +28 -28
- package/dist/swaps/assertions/AmountAssertions.js +72 -72
- package/dist/swaps/assertions/FromBtcAmountAssertions.d.ts +76 -76
- package/dist/swaps/assertions/FromBtcAmountAssertions.js +180 -180
- package/dist/swaps/assertions/LightningAssertions.d.ts +44 -44
- package/dist/swaps/assertions/LightningAssertions.js +86 -86
- package/dist/swaps/assertions/ToBtcAmountAssertions.d.ts +53 -53
- package/dist/swaps/assertions/ToBtcAmountAssertions.js +150 -150
- package/dist/swaps/escrow/EscrowHandler.d.ts +51 -51
- package/dist/swaps/escrow/EscrowHandler.js +158 -158
- package/dist/swaps/escrow/EscrowHandlerSwap.d.ts +35 -35
- package/dist/swaps/escrow/EscrowHandlerSwap.js +69 -69
- package/dist/swaps/escrow/FromBtcBaseSwap.d.ts +14 -14
- package/dist/swaps/escrow/FromBtcBaseSwap.js +32 -32
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.d.ts +102 -102
- package/dist/swaps/escrow/FromBtcBaseSwapHandler.js +210 -210
- package/dist/swaps/escrow/ToBtcBaseSwap.d.ts +36 -36
- package/dist/swaps/escrow/ToBtcBaseSwap.js +67 -67
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.d.ts +53 -53
- package/dist/swaps/escrow/ToBtcBaseSwapHandler.js +81 -81
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.d.ts +83 -83
- package/dist/swaps/escrow/frombtc_abstract/FromBtcAbs.js +318 -318
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.d.ts +21 -21
- package/dist/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.js +50 -50
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.d.ts +107 -107
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.js +675 -675
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.d.ts +33 -33
- package/dist/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.js +91 -91
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.d.ts +111 -111
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.js +684 -684
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.d.ts +55 -55
- package/dist/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.js +120 -120
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.d.ts +171 -171
- package/dist/swaps/escrow/tobtc_abstract/ToBtcAbs.js +706 -706
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.d.ts +26 -26
- package/dist/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.js +62 -62
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.d.ts +177 -177
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.js +863 -863
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.d.ts +24 -24
- package/dist/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.js +58 -58
- package/dist/swaps/spv_vault_swap/SpvVault.d.ts +40 -41
- package/dist/swaps/spv_vault_swap/SpvVault.js +111 -111
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.d.ts +67 -67
- package/dist/swaps/spv_vault_swap/SpvVaultSwap.js +158 -158
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.d.ts +68 -68
- package/dist/swaps/spv_vault_swap/SpvVaultSwapHandler.js +492 -492
- package/dist/swaps/spv_vault_swap/SpvVaults.d.ts +52 -52
- package/dist/swaps/spv_vault_swap/SpvVaults.js +386 -364
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.d.ts +51 -51
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrusted.js +650 -650
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.d.ts +52 -52
- package/dist/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.js +118 -118
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.d.ts +76 -76
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.js +494 -494
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.d.ts +34 -34
- package/dist/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.js +81 -81
- package/dist/utils/BitcoinUtils.d.ts +2 -2
- package/dist/utils/BitcoinUtils.js +45 -45
- package/dist/utils/Utils.d.ts +29 -29
- package/dist/utils/Utils.js +89 -89
- package/dist/utils/paramcoders/IParamReader.d.ts +5 -5
- package/dist/utils/paramcoders/IParamReader.js +2 -2
- package/dist/utils/paramcoders/IParamWriter.d.ts +4 -4
- package/dist/utils/paramcoders/IParamWriter.js +2 -2
- package/dist/utils/paramcoders/LegacyParamEncoder.d.ts +10 -10
- package/dist/utils/paramcoders/LegacyParamEncoder.js +22 -22
- package/dist/utils/paramcoders/ParamDecoder.d.ts +25 -25
- package/dist/utils/paramcoders/ParamDecoder.js +222 -222
- package/dist/utils/paramcoders/ParamEncoder.d.ts +9 -9
- package/dist/utils/paramcoders/ParamEncoder.js +22 -22
- package/dist/utils/paramcoders/SchemaVerifier.d.ts +21 -21
- package/dist/utils/paramcoders/SchemaVerifier.js +84 -84
- package/dist/utils/paramcoders/server/ServerParamDecoder.d.ts +8 -8
- package/dist/utils/paramcoders/server/ServerParamDecoder.js +107 -107
- package/dist/utils/paramcoders/server/ServerParamEncoder.d.ts +11 -11
- package/dist/utils/paramcoders/server/ServerParamEncoder.js +65 -65
- package/dist/wallets/IBitcoinWallet.d.ts +67 -67
- package/dist/wallets/IBitcoinWallet.js +2 -2
- package/dist/wallets/ILightningWallet.d.ts +117 -117
- package/dist/wallets/ILightningWallet.js +37 -37
- package/dist/wallets/ISpvVaultSigner.d.ts +7 -7
- package/dist/wallets/ISpvVaultSigner.js +2 -2
- package/package.json +36 -36
- package/src/fees/IBtcFeeEstimator.ts +6 -6
- package/src/index.ts +53 -53
- package/src/info/InfoHandler.ts +106 -106
- package/src/plugins/IPlugin.ts +168 -168
- package/src/plugins/PluginManager.ts +336 -336
- package/src/prices/BinanceSwapPrice.ts +113 -113
- package/src/prices/CoinGeckoSwapPrice.ts +87 -87
- package/src/prices/ISwapPrice.ts +88 -88
- package/src/prices/OKXSwapPrice.ts +113 -113
- package/src/storage/IIntermediaryStorage.ts +19 -19
- package/src/storagemanager/IntermediaryStorageManager.ts +118 -118
- package/src/storagemanager/StorageManager.ts +78 -78
- package/src/swaps/SwapHandler.ts +277 -277
- package/src/swaps/SwapHandlerSwap.ts +141 -141
- package/src/swaps/assertions/AmountAssertions.ts +76 -76
- package/src/swaps/assertions/FromBtcAmountAssertions.ts +246 -246
- package/src/swaps/assertions/LightningAssertions.ts +103 -103
- package/src/swaps/assertions/ToBtcAmountAssertions.ts +203 -203
- package/src/swaps/escrow/EscrowHandler.ts +179 -179
- package/src/swaps/escrow/EscrowHandlerSwap.ts +86 -86
- package/src/swaps/escrow/FromBtcBaseSwap.ts +38 -38
- package/src/swaps/escrow/FromBtcBaseSwapHandler.ts +286 -286
- package/src/swaps/escrow/ToBtcBaseSwap.ts +85 -85
- package/src/swaps/escrow/ToBtcBaseSwapHandler.ts +129 -129
- package/src/swaps/escrow/frombtc_abstract/FromBtcAbs.ts +452 -452
- package/src/swaps/escrow/frombtc_abstract/FromBtcSwapAbs.ts +61 -61
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnAbs.ts +856 -856
- package/src/swaps/escrow/frombtcln_abstract/FromBtcLnSwapAbs.ts +141 -141
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAuto.ts +850 -850
- package/src/swaps/escrow/frombtcln_autoinit/FromBtcLnAutoSwap.ts +196 -196
- package/src/swaps/escrow/tobtc_abstract/ToBtcAbs.ts +879 -879
- package/src/swaps/escrow/tobtc_abstract/ToBtcSwapAbs.ts +102 -102
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnAbs.ts +1112 -1112
- package/src/swaps/escrow/tobtcln_abstract/ToBtcLnSwapAbs.ts +80 -80
- package/src/swaps/spv_vault_swap/SpvVault.ts +143 -143
- package/src/swaps/spv_vault_swap/SpvVaultSwap.ts +225 -225
- package/src/swaps/spv_vault_swap/SpvVaultSwapHandler.ts +628 -628
- package/src/swaps/spv_vault_swap/SpvVaults.ts +458 -435
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrusted.ts +747 -747
- package/src/swaps/trusted/frombtc_trusted/FromBtcTrustedSwap.ts +185 -185
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrusted.ts +590 -590
- package/src/swaps/trusted/frombtcln_trusted/FromBtcLnTrustedSwap.ts +121 -121
- package/src/utils/BitcoinUtils.ts +42 -42
- package/src/utils/Utils.ts +104 -104
- package/src/utils/paramcoders/IParamReader.ts +7 -7
- package/src/utils/paramcoders/IParamWriter.ts +8 -8
- package/src/utils/paramcoders/LegacyParamEncoder.ts +27 -27
- package/src/utils/paramcoders/ParamDecoder.ts +218 -218
- package/src/utils/paramcoders/ParamEncoder.ts +29 -29
- package/src/utils/paramcoders/SchemaVerifier.ts +96 -96
- package/src/utils/paramcoders/server/ServerParamDecoder.ts +118 -118
- package/src/utils/paramcoders/server/ServerParamEncoder.ts +75 -75
- package/src/wallets/IBitcoinWallet.ts +68 -68
- package/src/wallets/ILightningWallet.ts +178 -178
- package/src/wallets/ISpvVaultSigner.ts +10 -10
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BinanceSwapPrice = void 0;
|
|
4
|
-
const ISwapPrice_1 = require("./ISwapPrice");
|
|
5
|
-
const CACHE_DURATION = 15000;
|
|
6
|
-
class BinanceSwapPrice extends ISwapPrice_1.ISwapPrice {
|
|
7
|
-
constructor(url, coins) {
|
|
8
|
-
const coinsMap = {};
|
|
9
|
-
for (let pair in coins) {
|
|
10
|
-
const chains = coins[pair];
|
|
11
|
-
for (let chainId in chains) {
|
|
12
|
-
const tokenData = chains[chainId];
|
|
13
|
-
if (coinsMap[chainId] == null)
|
|
14
|
-
coinsMap[chainId] = {};
|
|
15
|
-
coinsMap[chainId][tokenData.address] = {
|
|
16
|
-
pair,
|
|
17
|
-
decimals: tokenData.decimals
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
super(coinsMap);
|
|
22
|
-
this.cache = {};
|
|
23
|
-
this.url = url || "https://api.binance.com/api/v3";
|
|
24
|
-
}
|
|
25
|
-
async fetchPrice(pair) {
|
|
26
|
-
const response = await fetch(this.url + "/ticker/price?symbol=" + pair, {
|
|
27
|
-
method: "GET"
|
|
28
|
-
});
|
|
29
|
-
if (response.status !== 200) {
|
|
30
|
-
let resp;
|
|
31
|
-
try {
|
|
32
|
-
resp = await response.text();
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
throw new Error(response.statusText);
|
|
36
|
-
}
|
|
37
|
-
throw new Error(resp);
|
|
38
|
-
}
|
|
39
|
-
let jsonBody = await response.json();
|
|
40
|
-
return parseFloat(jsonBody.price);
|
|
41
|
-
}
|
|
42
|
-
async getPrice(tokenData) {
|
|
43
|
-
const pair = tokenData.pair;
|
|
44
|
-
if (pair.startsWith("$fixed-")) {
|
|
45
|
-
const amt = parseFloat(pair.substring(7));
|
|
46
|
-
return BigInt(Math.floor(amt * 1000000));
|
|
47
|
-
}
|
|
48
|
-
const arr = pair.split(";");
|
|
49
|
-
const promises = [];
|
|
50
|
-
const cachedValue = this.cache[pair];
|
|
51
|
-
if (cachedValue == null || cachedValue.expiry < Date.now()) {
|
|
52
|
-
let resultPrice = 1;
|
|
53
|
-
for (let pair of arr) {
|
|
54
|
-
let invert = false;
|
|
55
|
-
if (pair.startsWith("!")) {
|
|
56
|
-
invert = true;
|
|
57
|
-
pair = pair.substring(1);
|
|
58
|
-
}
|
|
59
|
-
const cachedValue = this.cache[pair];
|
|
60
|
-
if (cachedValue == null || cachedValue.expiry < Date.now()) {
|
|
61
|
-
promises.push(this.fetchPrice(pair).then(price => {
|
|
62
|
-
this.cache[pair] = {
|
|
63
|
-
price,
|
|
64
|
-
expiry: Date.now() + CACHE_DURATION
|
|
65
|
-
};
|
|
66
|
-
if (invert) {
|
|
67
|
-
resultPrice /= price;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
resultPrice *= price;
|
|
71
|
-
}
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
if (invert) {
|
|
76
|
-
resultPrice /= cachedValue.price;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
resultPrice *= cachedValue.price;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
await Promise.all(promises);
|
|
84
|
-
this.cache[pair] = {
|
|
85
|
-
price: resultPrice,
|
|
86
|
-
expiry: Date.now() + CACHE_DURATION
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
return BigInt(Math.floor(this.cache[pair].price * 100000000000000));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
exports.BinanceSwapPrice = BinanceSwapPrice;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BinanceSwapPrice = void 0;
|
|
4
|
+
const ISwapPrice_1 = require("./ISwapPrice");
|
|
5
|
+
const CACHE_DURATION = 15000;
|
|
6
|
+
class BinanceSwapPrice extends ISwapPrice_1.ISwapPrice {
|
|
7
|
+
constructor(url, coins) {
|
|
8
|
+
const coinsMap = {};
|
|
9
|
+
for (let pair in coins) {
|
|
10
|
+
const chains = coins[pair];
|
|
11
|
+
for (let chainId in chains) {
|
|
12
|
+
const tokenData = chains[chainId];
|
|
13
|
+
if (coinsMap[chainId] == null)
|
|
14
|
+
coinsMap[chainId] = {};
|
|
15
|
+
coinsMap[chainId][tokenData.address] = {
|
|
16
|
+
pair,
|
|
17
|
+
decimals: tokenData.decimals
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
super(coinsMap);
|
|
22
|
+
this.cache = {};
|
|
23
|
+
this.url = url || "https://api.binance.com/api/v3";
|
|
24
|
+
}
|
|
25
|
+
async fetchPrice(pair) {
|
|
26
|
+
const response = await fetch(this.url + "/ticker/price?symbol=" + pair, {
|
|
27
|
+
method: "GET"
|
|
28
|
+
});
|
|
29
|
+
if (response.status !== 200) {
|
|
30
|
+
let resp;
|
|
31
|
+
try {
|
|
32
|
+
resp = await response.text();
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
throw new Error(response.statusText);
|
|
36
|
+
}
|
|
37
|
+
throw new Error(resp);
|
|
38
|
+
}
|
|
39
|
+
let jsonBody = await response.json();
|
|
40
|
+
return parseFloat(jsonBody.price);
|
|
41
|
+
}
|
|
42
|
+
async getPrice(tokenData) {
|
|
43
|
+
const pair = tokenData.pair;
|
|
44
|
+
if (pair.startsWith("$fixed-")) {
|
|
45
|
+
const amt = parseFloat(pair.substring(7));
|
|
46
|
+
return BigInt(Math.floor(amt * 1000000));
|
|
47
|
+
}
|
|
48
|
+
const arr = pair.split(";");
|
|
49
|
+
const promises = [];
|
|
50
|
+
const cachedValue = this.cache[pair];
|
|
51
|
+
if (cachedValue == null || cachedValue.expiry < Date.now()) {
|
|
52
|
+
let resultPrice = 1;
|
|
53
|
+
for (let pair of arr) {
|
|
54
|
+
let invert = false;
|
|
55
|
+
if (pair.startsWith("!")) {
|
|
56
|
+
invert = true;
|
|
57
|
+
pair = pair.substring(1);
|
|
58
|
+
}
|
|
59
|
+
const cachedValue = this.cache[pair];
|
|
60
|
+
if (cachedValue == null || cachedValue.expiry < Date.now()) {
|
|
61
|
+
promises.push(this.fetchPrice(pair).then(price => {
|
|
62
|
+
this.cache[pair] = {
|
|
63
|
+
price,
|
|
64
|
+
expiry: Date.now() + CACHE_DURATION
|
|
65
|
+
};
|
|
66
|
+
if (invert) {
|
|
67
|
+
resultPrice /= price;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
resultPrice *= price;
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
if (invert) {
|
|
76
|
+
resultPrice /= cachedValue.price;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
resultPrice *= cachedValue.price;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
await Promise.all(promises);
|
|
84
|
+
this.cache[pair] = {
|
|
85
|
+
price: resultPrice,
|
|
86
|
+
expiry: Date.now() + CACHE_DURATION
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return BigInt(Math.floor(this.cache[pair].price * 100000000000000));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.BinanceSwapPrice = BinanceSwapPrice;
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { ISwapPrice } from "./ISwapPrice";
|
|
2
|
-
export type CoinGeckoPriceData = {
|
|
3
|
-
[coinId: string]: {
|
|
4
|
-
[chainId: string]: {
|
|
5
|
-
address: string;
|
|
6
|
-
decimals: number;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export declare class CoinGeckoSwapPrice extends ISwapPrice<{
|
|
11
|
-
coinId: string;
|
|
12
|
-
decimals: number;
|
|
13
|
-
}> {
|
|
14
|
-
url: string;
|
|
15
|
-
cache: {
|
|
16
|
-
[coinId: string]: {
|
|
17
|
-
price: bigint;
|
|
18
|
-
expiry: number;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
constructor(url: string, coins: CoinGeckoPriceData);
|
|
22
|
-
/**
|
|
23
|
-
* Returns coin price in mSat
|
|
24
|
-
*
|
|
25
|
-
* @param coin
|
|
26
|
-
*/
|
|
27
|
-
getPrice(coin: {
|
|
28
|
-
coinId: string;
|
|
29
|
-
}): Promise<bigint>;
|
|
30
|
-
}
|
|
1
|
+
import { ISwapPrice } from "./ISwapPrice";
|
|
2
|
+
export type CoinGeckoPriceData = {
|
|
3
|
+
[coinId: string]: {
|
|
4
|
+
[chainId: string]: {
|
|
5
|
+
address: string;
|
|
6
|
+
decimals: number;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare class CoinGeckoSwapPrice extends ISwapPrice<{
|
|
11
|
+
coinId: string;
|
|
12
|
+
decimals: number;
|
|
13
|
+
}> {
|
|
14
|
+
url: string;
|
|
15
|
+
cache: {
|
|
16
|
+
[coinId: string]: {
|
|
17
|
+
price: bigint;
|
|
18
|
+
expiry: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
constructor(url: string, coins: CoinGeckoPriceData);
|
|
22
|
+
/**
|
|
23
|
+
* Returns coin price in mSat
|
|
24
|
+
*
|
|
25
|
+
* @param coin
|
|
26
|
+
*/
|
|
27
|
+
getPrice(coin: {
|
|
28
|
+
coinId: string;
|
|
29
|
+
}): Promise<bigint>;
|
|
30
|
+
}
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CoinGeckoSwapPrice = void 0;
|
|
4
|
-
const ISwapPrice_1 = require("./ISwapPrice");
|
|
5
|
-
const CACHE_DURATION = 15000;
|
|
6
|
-
class CoinGeckoSwapPrice extends ISwapPrice_1.ISwapPrice {
|
|
7
|
-
constructor(url, coins) {
|
|
8
|
-
const coinsMap = {};
|
|
9
|
-
for (let coinId in coins) {
|
|
10
|
-
const chains = coins[coinId];
|
|
11
|
-
for (let chainId in chains) {
|
|
12
|
-
const tokenData = chains[chainId];
|
|
13
|
-
if (coinsMap[chainId] == null)
|
|
14
|
-
coinsMap[chainId] = {};
|
|
15
|
-
coinsMap[chainId][tokenData.address] = {
|
|
16
|
-
coinId,
|
|
17
|
-
decimals: tokenData.decimals
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
super(coinsMap);
|
|
22
|
-
this.cache = {};
|
|
23
|
-
this.url = url || "https://api.coingecko.com/api/v3";
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Returns coin price in mSat
|
|
27
|
-
*
|
|
28
|
-
* @param coin
|
|
29
|
-
*/
|
|
30
|
-
async getPrice(coin) {
|
|
31
|
-
const coinId = coin.coinId;
|
|
32
|
-
if (coinId.startsWith("$fixed-")) {
|
|
33
|
-
const amt = parseFloat(coinId.substring(7));
|
|
34
|
-
return BigInt(Math.floor(amt * 1000));
|
|
35
|
-
}
|
|
36
|
-
const cachedValue = this.cache[coinId];
|
|
37
|
-
if (cachedValue != null && cachedValue.expiry > Date.now()) {
|
|
38
|
-
return cachedValue.price;
|
|
39
|
-
}
|
|
40
|
-
const response = await fetch(this.url + "/simple/price?ids=" + coinId + "&vs_currencies=sats&precision=3", {
|
|
41
|
-
method: "GET",
|
|
42
|
-
headers: { 'Content-Type': 'application/json' }
|
|
43
|
-
});
|
|
44
|
-
if (response.status !== 200) {
|
|
45
|
-
let resp;
|
|
46
|
-
try {
|
|
47
|
-
resp = await response.text();
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
throw new Error(response.statusText);
|
|
51
|
-
}
|
|
52
|
-
throw new Error(resp);
|
|
53
|
-
}
|
|
54
|
-
let jsonBody = await response.json();
|
|
55
|
-
const amt = jsonBody[coinId].sats;
|
|
56
|
-
const result = BigInt(Math.floor(amt * 1000));
|
|
57
|
-
this.cache[coinId] = {
|
|
58
|
-
price: result,
|
|
59
|
-
expiry: Date.now() + CACHE_DURATION
|
|
60
|
-
};
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.CoinGeckoSwapPrice = CoinGeckoSwapPrice;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CoinGeckoSwapPrice = void 0;
|
|
4
|
+
const ISwapPrice_1 = require("./ISwapPrice");
|
|
5
|
+
const CACHE_DURATION = 15000;
|
|
6
|
+
class CoinGeckoSwapPrice extends ISwapPrice_1.ISwapPrice {
|
|
7
|
+
constructor(url, coins) {
|
|
8
|
+
const coinsMap = {};
|
|
9
|
+
for (let coinId in coins) {
|
|
10
|
+
const chains = coins[coinId];
|
|
11
|
+
for (let chainId in chains) {
|
|
12
|
+
const tokenData = chains[chainId];
|
|
13
|
+
if (coinsMap[chainId] == null)
|
|
14
|
+
coinsMap[chainId] = {};
|
|
15
|
+
coinsMap[chainId][tokenData.address] = {
|
|
16
|
+
coinId,
|
|
17
|
+
decimals: tokenData.decimals
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
super(coinsMap);
|
|
22
|
+
this.cache = {};
|
|
23
|
+
this.url = url || "https://api.coingecko.com/api/v3";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns coin price in mSat
|
|
27
|
+
*
|
|
28
|
+
* @param coin
|
|
29
|
+
*/
|
|
30
|
+
async getPrice(coin) {
|
|
31
|
+
const coinId = coin.coinId;
|
|
32
|
+
if (coinId.startsWith("$fixed-")) {
|
|
33
|
+
const amt = parseFloat(coinId.substring(7));
|
|
34
|
+
return BigInt(Math.floor(amt * 1000));
|
|
35
|
+
}
|
|
36
|
+
const cachedValue = this.cache[coinId];
|
|
37
|
+
if (cachedValue != null && cachedValue.expiry > Date.now()) {
|
|
38
|
+
return cachedValue.price;
|
|
39
|
+
}
|
|
40
|
+
const response = await fetch(this.url + "/simple/price?ids=" + coinId + "&vs_currencies=sats&precision=3", {
|
|
41
|
+
method: "GET",
|
|
42
|
+
headers: { 'Content-Type': 'application/json' }
|
|
43
|
+
});
|
|
44
|
+
if (response.status !== 200) {
|
|
45
|
+
let resp;
|
|
46
|
+
try {
|
|
47
|
+
resp = await response.text();
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
throw new Error(response.statusText);
|
|
51
|
+
}
|
|
52
|
+
throw new Error(resp);
|
|
53
|
+
}
|
|
54
|
+
let jsonBody = await response.json();
|
|
55
|
+
const amt = jsonBody[coinId].sats;
|
|
56
|
+
const result = BigInt(Math.floor(amt * 1000));
|
|
57
|
+
this.cache[coinId] = {
|
|
58
|
+
price: result,
|
|
59
|
+
expiry: Date.now() + CACHE_DURATION
|
|
60
|
+
};
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.CoinGeckoSwapPrice = CoinGeckoSwapPrice;
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
export type ISwapPriceCoinsMap<T extends {
|
|
2
|
-
decimals: number;
|
|
3
|
-
}> = {
|
|
4
|
-
[chainId: string]: {
|
|
5
|
-
[address: string]: T;
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
export declare abstract class ISwapPrice<T extends {
|
|
9
|
-
decimals: number;
|
|
10
|
-
} = {
|
|
11
|
-
decimals: number;
|
|
12
|
-
}> {
|
|
13
|
-
protected coinsMap: ISwapPriceCoinsMap<T>;
|
|
14
|
-
protected constructor(coinsMap: ISwapPriceCoinsMap<T>);
|
|
15
|
-
/**
|
|
16
|
-
* Returns coin price in mSat
|
|
17
|
-
*
|
|
18
|
-
* @param tokenData
|
|
19
|
-
*/
|
|
20
|
-
protected abstract getPrice(tokenData: T): Promise<bigint>;
|
|
21
|
-
getTokenData(tokenAddress: string, chainId: string): T;
|
|
22
|
-
preFetchPrice(token: string, chainId: string): Promise<bigint>;
|
|
23
|
-
/**
|
|
24
|
-
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
25
|
-
*
|
|
26
|
-
* @param fromAmount Amount of the token
|
|
27
|
-
* @param fromToken Token
|
|
28
|
-
* @param tokenChainIdentification Chain of the token
|
|
29
|
-
* @param roundUp Whether result should be rounded up
|
|
30
|
-
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
31
|
-
*/
|
|
32
|
-
getToBtcSwapAmount(fromAmount: bigint, fromToken: string, tokenChainIdentification: string, roundUp?: boolean, preFetch?: Promise<bigint>): Promise<bigint>;
|
|
33
|
-
/**
|
|
34
|
-
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
35
|
-
*
|
|
36
|
-
* @param fromAmount Amount of satoshis
|
|
37
|
-
* @param toToken Token
|
|
38
|
-
* @param tokenChainIdentification Chain of the token
|
|
39
|
-
* @param roundUp Whether result should be rounded up
|
|
40
|
-
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
41
|
-
*/
|
|
42
|
-
getFromBtcSwapAmount(fromAmount: bigint, toToken: string, tokenChainIdentification: string, roundUp?: boolean, preFetch?: Promise<bigint>): Promise<bigint>;
|
|
43
|
-
}
|
|
1
|
+
export type ISwapPriceCoinsMap<T extends {
|
|
2
|
+
decimals: number;
|
|
3
|
+
}> = {
|
|
4
|
+
[chainId: string]: {
|
|
5
|
+
[address: string]: T;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export declare abstract class ISwapPrice<T extends {
|
|
9
|
+
decimals: number;
|
|
10
|
+
} = {
|
|
11
|
+
decimals: number;
|
|
12
|
+
}> {
|
|
13
|
+
protected coinsMap: ISwapPriceCoinsMap<T>;
|
|
14
|
+
protected constructor(coinsMap: ISwapPriceCoinsMap<T>);
|
|
15
|
+
/**
|
|
16
|
+
* Returns coin price in mSat
|
|
17
|
+
*
|
|
18
|
+
* @param tokenData
|
|
19
|
+
*/
|
|
20
|
+
protected abstract getPrice(tokenData: T): Promise<bigint>;
|
|
21
|
+
getTokenData(tokenAddress: string, chainId: string): T;
|
|
22
|
+
preFetchPrice(token: string, chainId: string): Promise<bigint>;
|
|
23
|
+
/**
|
|
24
|
+
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
25
|
+
*
|
|
26
|
+
* @param fromAmount Amount of the token
|
|
27
|
+
* @param fromToken Token
|
|
28
|
+
* @param tokenChainIdentification Chain of the token
|
|
29
|
+
* @param roundUp Whether result should be rounded up
|
|
30
|
+
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
31
|
+
*/
|
|
32
|
+
getToBtcSwapAmount(fromAmount: bigint, fromToken: string, tokenChainIdentification: string, roundUp?: boolean, preFetch?: Promise<bigint>): Promise<bigint>;
|
|
33
|
+
/**
|
|
34
|
+
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
35
|
+
*
|
|
36
|
+
* @param fromAmount Amount of satoshis
|
|
37
|
+
* @param toToken Token
|
|
38
|
+
* @param tokenChainIdentification Chain of the token
|
|
39
|
+
* @param roundUp Whether result should be rounded up
|
|
40
|
+
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
41
|
+
*/
|
|
42
|
+
getFromBtcSwapAmount(fromAmount: bigint, toToken: string, tokenChainIdentification: string, roundUp?: boolean, preFetch?: Promise<bigint>): Promise<bigint>;
|
|
43
|
+
}
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ISwapPrice = void 0;
|
|
4
|
-
class ISwapPrice {
|
|
5
|
-
constructor(coinsMap) {
|
|
6
|
-
this.coinsMap = coinsMap;
|
|
7
|
-
}
|
|
8
|
-
getTokenData(tokenAddress, chainId) {
|
|
9
|
-
const chainTokens = this.coinsMap[chainId];
|
|
10
|
-
if (chainTokens == null)
|
|
11
|
-
throw new Error("Chain not found");
|
|
12
|
-
const tokenAddr = tokenAddress.toString();
|
|
13
|
-
const coin = chainTokens[tokenAddr];
|
|
14
|
-
if (coin == null)
|
|
15
|
-
throw new Error("Token not found");
|
|
16
|
-
return coin;
|
|
17
|
-
}
|
|
18
|
-
preFetchPrice(token, chainId) {
|
|
19
|
-
const coin = this.getTokenData(token, chainId);
|
|
20
|
-
return this.getPrice(coin);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
24
|
-
*
|
|
25
|
-
* @param fromAmount Amount of the token
|
|
26
|
-
* @param fromToken Token
|
|
27
|
-
* @param tokenChainIdentification Chain of the token
|
|
28
|
-
* @param roundUp Whether result should be rounded up
|
|
29
|
-
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
30
|
-
*/
|
|
31
|
-
async getToBtcSwapAmount(fromAmount, fromToken, tokenChainIdentification, roundUp, preFetch) {
|
|
32
|
-
if (fromAmount === 0n)
|
|
33
|
-
return 0n;
|
|
34
|
-
const coin = this.getTokenData(fromToken, tokenChainIdentification);
|
|
35
|
-
const price = (preFetch == null ? null : await preFetch) || await this.getPrice(coin);
|
|
36
|
-
return ((fromAmount * price / (10n ** BigInt(coin.decimals))) + (roundUp ? 999999n : 0n)) / 1000000n;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
40
|
-
*
|
|
41
|
-
* @param fromAmount Amount of satoshis
|
|
42
|
-
* @param toToken Token
|
|
43
|
-
* @param tokenChainIdentification Chain of the token
|
|
44
|
-
* @param roundUp Whether result should be rounded up
|
|
45
|
-
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
46
|
-
*/
|
|
47
|
-
async getFromBtcSwapAmount(fromAmount, toToken, tokenChainIdentification, roundUp, preFetch) {
|
|
48
|
-
if (fromAmount === 0n)
|
|
49
|
-
return 0n;
|
|
50
|
-
const coin = this.getTokenData(toToken, tokenChainIdentification);
|
|
51
|
-
const price = (preFetch == null ? null : await preFetch) || await this.getPrice(coin);
|
|
52
|
-
return ((fromAmount * (10n ** BigInt(coin.decimals)) * 1000000n) + (roundUp ? price - 1n : 0n)) / price;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
exports.ISwapPrice = ISwapPrice;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ISwapPrice = void 0;
|
|
4
|
+
class ISwapPrice {
|
|
5
|
+
constructor(coinsMap) {
|
|
6
|
+
this.coinsMap = coinsMap;
|
|
7
|
+
}
|
|
8
|
+
getTokenData(tokenAddress, chainId) {
|
|
9
|
+
const chainTokens = this.coinsMap[chainId];
|
|
10
|
+
if (chainTokens == null)
|
|
11
|
+
throw new Error("Chain not found");
|
|
12
|
+
const tokenAddr = tokenAddress.toString();
|
|
13
|
+
const coin = chainTokens[tokenAddr];
|
|
14
|
+
if (coin == null)
|
|
15
|
+
throw new Error("Token not found");
|
|
16
|
+
return coin;
|
|
17
|
+
}
|
|
18
|
+
preFetchPrice(token, chainId) {
|
|
19
|
+
const coin = this.getTokenData(token, chainId);
|
|
20
|
+
return this.getPrice(coin);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
|
|
24
|
+
*
|
|
25
|
+
* @param fromAmount Amount of the token
|
|
26
|
+
* @param fromToken Token
|
|
27
|
+
* @param tokenChainIdentification Chain of the token
|
|
28
|
+
* @param roundUp Whether result should be rounded up
|
|
29
|
+
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
30
|
+
*/
|
|
31
|
+
async getToBtcSwapAmount(fromAmount, fromToken, tokenChainIdentification, roundUp, preFetch) {
|
|
32
|
+
if (fromAmount === 0n)
|
|
33
|
+
return 0n;
|
|
34
|
+
const coin = this.getTokenData(fromToken, tokenChainIdentification);
|
|
35
|
+
const price = (preFetch == null ? null : await preFetch) || await this.getPrice(coin);
|
|
36
|
+
return ((fromAmount * price / (10n ** BigInt(coin.decimals))) + (roundUp ? 999999n : 0n)) / 1000000n;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
|
|
40
|
+
*
|
|
41
|
+
* @param fromAmount Amount of satoshis
|
|
42
|
+
* @param toToken Token
|
|
43
|
+
* @param tokenChainIdentification Chain of the token
|
|
44
|
+
* @param roundUp Whether result should be rounded up
|
|
45
|
+
* @param preFetch Price pre-fetch promise returned from preFetchPrice()
|
|
46
|
+
*/
|
|
47
|
+
async getFromBtcSwapAmount(fromAmount, toToken, tokenChainIdentification, roundUp, preFetch) {
|
|
48
|
+
if (fromAmount === 0n)
|
|
49
|
+
return 0n;
|
|
50
|
+
const coin = this.getTokenData(toToken, tokenChainIdentification);
|
|
51
|
+
const price = (preFetch == null ? null : await preFetch) || await this.getPrice(coin);
|
|
52
|
+
return ((fromAmount * (10n ** BigInt(coin.decimals)) * 1000000n) + (roundUp ? price - 1n : 0n)) / price;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.ISwapPrice = ISwapPrice;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { ISwapPrice } from "./ISwapPrice";
|
|
2
|
-
export type OKXPriceData = {
|
|
3
|
-
[pair: string]: {
|
|
4
|
-
[chainId: string]: {
|
|
5
|
-
address: string;
|
|
6
|
-
decimals: number;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export declare class OKXSwapPrice extends ISwapPrice<{
|
|
11
|
-
pair: string;
|
|
12
|
-
decimals: number;
|
|
13
|
-
}> {
|
|
14
|
-
url: string;
|
|
15
|
-
cache: {
|
|
16
|
-
[pair: string]: {
|
|
17
|
-
price: number;
|
|
18
|
-
expiry: number;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
constructor(url: string, coins: OKXPriceData);
|
|
22
|
-
fetchPrice(pair: string): Promise<number>;
|
|
23
|
-
getPrice(tokenData: {
|
|
24
|
-
pair: string;
|
|
25
|
-
}): Promise<bigint>;
|
|
26
|
-
}
|
|
1
|
+
import { ISwapPrice } from "./ISwapPrice";
|
|
2
|
+
export type OKXPriceData = {
|
|
3
|
+
[pair: string]: {
|
|
4
|
+
[chainId: string]: {
|
|
5
|
+
address: string;
|
|
6
|
+
decimals: number;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare class OKXSwapPrice extends ISwapPrice<{
|
|
11
|
+
pair: string;
|
|
12
|
+
decimals: number;
|
|
13
|
+
}> {
|
|
14
|
+
url: string;
|
|
15
|
+
cache: {
|
|
16
|
+
[pair: string]: {
|
|
17
|
+
price: number;
|
|
18
|
+
expiry: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
constructor(url: string, coins: OKXPriceData);
|
|
22
|
+
fetchPrice(pair: string): Promise<number>;
|
|
23
|
+
getPrice(tokenData: {
|
|
24
|
+
pair: string;
|
|
25
|
+
}): Promise<bigint>;
|
|
26
|
+
}
|