@cityofzion/bs-neo3 1.7.1 → 1.8.1
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/BSNeo3.d.ts +13 -14
- package/dist/BSNeo3.js +46 -43
- package/dist/index.d.ts +0 -5
- package/dist/index.js +0 -5
- package/dist/services/ledger/NeonDappKitLedgerServiceNeo3.d.ts +6 -6
- package/dist/services/ledger/NeonDappKitLedgerServiceNeo3.js +4 -3
- package/package.json +2 -2
- package/dist/builder/invocation/FlamingoSwapInvocationBuilderNeo3.d.ts +0 -7
- package/dist/builder/invocation/FlamingoSwapInvocationBuilderNeo3.js +0 -217
- package/dist/constants/FlamingoSwapConstants.d.ts +0 -36
- package/dist/constants/FlamingoSwapConstants.js +0 -691
- package/dist/helpers/FlamingoSwapHelper.d.ts +0 -27
- package/dist/helpers/FlamingoSwapHelper.js +0 -129
- package/dist/services/swap/FlamingoSwapServiceNeo3.d.ts +0 -22
- package/dist/services/swap/FlamingoSwapServiceNeo3.js +0 -283
- package/dist/services/swap/handlers/FlamingoSwapDetailsHandler.d.ts +0 -24
- package/dist/services/swap/handlers/FlamingoSwapDetailsHandler.js +0 -178
- package/dist/services/swap/handlers/FlamingoSwapRouteHandler.d.ts +0 -13
- package/dist/services/swap/handlers/FlamingoSwapRouteHandler.js +0 -194
- package/dist/services/swap/handlers/FlamingoSwapSocketHandler.d.ts +0 -9
- package/dist/services/swap/handlers/FlamingoSwapSocketHandler.js +0 -57
- package/dist/services/swap/handlers/index.d.ts +0 -3
- package/dist/services/swap/handlers/index.js +0 -19
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
-
};
|
|
10
|
-
var _a, _FlamingoSwapDetailsHandler_calculateUsingAmountToReceive, _FlamingoSwapDetailsHandler_calculateUsingAmountToUse, _FlamingoSwapDetailsHandler_formatSwapDetails, _FlamingoSwapDetailsHandler_createTradeData, _FlamingoSwapDetailsHandler_calculateAmountToUse, _FlamingoSwapDetailsHandler_calculateAmountToReceive;
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.FlamingoSwapDetailsHandler = void 0;
|
|
13
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
14
|
-
const FlamingoSwapConstants_1 = require("../../../constants/FlamingoSwapConstants");
|
|
15
|
-
const FlamingoSwapHelper_1 = require("../../../helpers/FlamingoSwapHelper");
|
|
16
|
-
class FlamingoSwapDetailsHandler {
|
|
17
|
-
static calculateSwapDetails({ amountToReceive, amountToUse, network, route, slippage, tokenToReceive, tokenToUse, }) {
|
|
18
|
-
const overrodeTokenToUse = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideToken(network, tokenToUse);
|
|
19
|
-
const overrodeTokenToReceive = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideToken(network, tokenToReceive);
|
|
20
|
-
const overrodeRoute = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideRoute(network, route);
|
|
21
|
-
const slippageFormatted = new bignumber_js_1.default(slippage * 10).shiftedBy(-3);
|
|
22
|
-
if (amountToReceive) {
|
|
23
|
-
return __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_calculateUsingAmountToReceive).call(this, {
|
|
24
|
-
network,
|
|
25
|
-
amountToReceive,
|
|
26
|
-
overrodeRoute,
|
|
27
|
-
overrodeTokenToUse,
|
|
28
|
-
overrodeTokenToReceive,
|
|
29
|
-
slippageFormatted,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
else if (amountToUse) {
|
|
33
|
-
return __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_calculateUsingAmountToUse).call(this, {
|
|
34
|
-
network,
|
|
35
|
-
amountToUse,
|
|
36
|
-
overrodeRoute,
|
|
37
|
-
overrodeTokenToUse,
|
|
38
|
-
overrodeTokenToReceive,
|
|
39
|
-
slippageFormatted,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
throw new Error('AmountToReceive or amountToUse are required, but both aren`t provided');
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.FlamingoSwapDetailsHandler = FlamingoSwapDetailsHandler;
|
|
48
|
-
_a = FlamingoSwapDetailsHandler, _FlamingoSwapDetailsHandler_calculateUsingAmountToReceive = function _FlamingoSwapDetailsHandler_calculateUsingAmountToReceive({ network, amountToReceive, overrodeRoute, overrodeTokenToUse, overrodeTokenToReceive, slippageFormatted, }) {
|
|
49
|
-
const amountToReceiveBn = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideAmountInput(network, amountToReceive, overrodeTokenToReceive);
|
|
50
|
-
const amountToUse = __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_calculateAmountToUse).call(this, {
|
|
51
|
-
amountToReceive,
|
|
52
|
-
route: overrodeRoute,
|
|
53
|
-
});
|
|
54
|
-
const amountToUseBn = new bignumber_js_1.default(amountToUse);
|
|
55
|
-
const maximumSelling = amountToUseBn
|
|
56
|
-
.times(FlamingoSwapConstants_1.FlamingoSwapConstants.BN_1.plus(slippageFormatted))
|
|
57
|
-
.dp(0)
|
|
58
|
-
.shiftedBy(-overrodeTokenToUse.decimals)
|
|
59
|
-
.toFixed();
|
|
60
|
-
const amountToUseToDisplay = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideAmountToDisplay(network, amountToUse, overrodeTokenToUse);
|
|
61
|
-
const { fee, price, priceImpact } = __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_createTradeData).call(this, {
|
|
62
|
-
amountToReceive: amountToReceiveBn,
|
|
63
|
-
amountToUse: amountToUseBn,
|
|
64
|
-
route: overrodeRoute,
|
|
65
|
-
});
|
|
66
|
-
return __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_formatSwapDetails).call(this, {
|
|
67
|
-
amountToReceiveToDisplay: amountToReceive,
|
|
68
|
-
amountToUseToDisplay,
|
|
69
|
-
fee,
|
|
70
|
-
price,
|
|
71
|
-
priceImpact,
|
|
72
|
-
overrodeTokenToUse,
|
|
73
|
-
overrodeTokenToReceive,
|
|
74
|
-
slippageFormatted,
|
|
75
|
-
minimumReceived: null,
|
|
76
|
-
maximumSelling,
|
|
77
|
-
});
|
|
78
|
-
}, _FlamingoSwapDetailsHandler_calculateUsingAmountToUse = function _FlamingoSwapDetailsHandler_calculateUsingAmountToUse({ network, amountToUse, overrodeRoute, overrodeTokenToUse, overrodeTokenToReceive, slippageFormatted, }) {
|
|
79
|
-
const amountToUseBn = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideAmountInput(network, amountToUse, overrodeTokenToUse);
|
|
80
|
-
const amountToReceive = __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_calculateAmountToReceive).call(this, {
|
|
81
|
-
amountToUse,
|
|
82
|
-
route: overrodeRoute,
|
|
83
|
-
});
|
|
84
|
-
const amountToReceiveBn = new bignumber_js_1.default(amountToReceive);
|
|
85
|
-
const minimumReceived = amountToReceiveBn
|
|
86
|
-
.times(FlamingoSwapConstants_1.FlamingoSwapConstants.BN_1.minus(slippageFormatted))
|
|
87
|
-
.dp(0)
|
|
88
|
-
.shiftedBy(-overrodeTokenToReceive.decimals)
|
|
89
|
-
.toFixed();
|
|
90
|
-
const amountToReceiveToDisplay = FlamingoSwapHelper_1.FlamingoSwapHelper.overrideAmountToDisplay(network, amountToReceiveBn.toString(), overrodeTokenToReceive);
|
|
91
|
-
const { fee, price, priceImpact } = __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_createTradeData).call(this, {
|
|
92
|
-
amountToReceive: amountToReceiveBn,
|
|
93
|
-
amountToUse: amountToUseBn,
|
|
94
|
-
route: overrodeRoute,
|
|
95
|
-
});
|
|
96
|
-
return __classPrivateFieldGet(this, _a, "m", _FlamingoSwapDetailsHandler_formatSwapDetails).call(this, {
|
|
97
|
-
amountToReceiveToDisplay,
|
|
98
|
-
amountToUseToDisplay: amountToUse,
|
|
99
|
-
fee,
|
|
100
|
-
price,
|
|
101
|
-
priceImpact,
|
|
102
|
-
overrodeTokenToUse,
|
|
103
|
-
overrodeTokenToReceive,
|
|
104
|
-
slippageFormatted,
|
|
105
|
-
minimumReceived,
|
|
106
|
-
maximumSelling: null,
|
|
107
|
-
});
|
|
108
|
-
}, _FlamingoSwapDetailsHandler_formatSwapDetails = function _FlamingoSwapDetailsHandler_formatSwapDetails({ amountToReceiveToDisplay, amountToUseToDisplay, fee, price, priceImpact, overrodeTokenToUse, overrodeTokenToReceive, minimumReceived, maximumSelling, }) {
|
|
109
|
-
const priceInverse = FlamingoSwapConstants_1.FlamingoSwapConstants.BN_1.div(price);
|
|
110
|
-
const diffDecimals = overrodeTokenToUse.decimals - overrodeTokenToReceive.decimals;
|
|
111
|
-
return {
|
|
112
|
-
amountToReceiveToDisplay,
|
|
113
|
-
amountToUseToDisplay,
|
|
114
|
-
liquidityProviderFee: fee.shiftedBy(-8).plus(FlamingoSwapConstants_1.FlamingoSwapConstants.BN_0).toFixed(4),
|
|
115
|
-
priceImpact: isFinite(Number(priceImpact)) ? priceImpact.shiftedBy(2).toFixed(4) : null,
|
|
116
|
-
priceInverse: isFinite(Number(priceInverse)) ? priceInverse.multipliedBy(Math.pow(10, diffDecimals)).toFixed() : null,
|
|
117
|
-
minimumReceived,
|
|
118
|
-
maximumSelling,
|
|
119
|
-
};
|
|
120
|
-
}, _FlamingoSwapDetailsHandler_createTradeData = function _FlamingoSwapDetailsHandler_createTradeData({ amountToReceive, amountToUse, route }) {
|
|
121
|
-
const fee = amountToUse.minus(route.reduce(acc => acc.times(FlamingoSwapConstants_1.FlamingoSwapConstants.BN_1.minus(FlamingoSwapConstants_1.FlamingoSwapConstants.FEE_RATE)), amountToUse));
|
|
122
|
-
const price = amountToUse.div(amountToReceive);
|
|
123
|
-
const midPrice = route.reduce((acc, item) => acc.times(item.reserveTokenToUse).div(item.reserveTokenToReceive), FlamingoSwapConstants_1.FlamingoSwapConstants.BN_1);
|
|
124
|
-
const priceImpact = price.minus(midPrice).div(price).minus(fee.div(amountToUse));
|
|
125
|
-
return {
|
|
126
|
-
fee,
|
|
127
|
-
price,
|
|
128
|
-
priceImpact,
|
|
129
|
-
midPrice,
|
|
130
|
-
};
|
|
131
|
-
}, _FlamingoSwapDetailsHandler_calculateAmountToUse = function _FlamingoSwapDetailsHandler_calculateAmountToUse({ amountToReceive, route }) {
|
|
132
|
-
let amountToUse = '';
|
|
133
|
-
let tempAmountToReceive = amountToReceive;
|
|
134
|
-
route
|
|
135
|
-
.reverse()
|
|
136
|
-
.map(({ tokenToUse: tradeTokenToUse, tokenToReceive: tradeTokenToReceive, reserveTokenToUse, reserveTokenToReceive, }, index) => {
|
|
137
|
-
if (amountToUse) {
|
|
138
|
-
tempAmountToReceive = amountToUse;
|
|
139
|
-
}
|
|
140
|
-
const reserveTokenToUseBn = new bignumber_js_1.default(reserveTokenToUse);
|
|
141
|
-
const reserveTokenToReceiveBn = new bignumber_js_1.default(reserveTokenToReceive);
|
|
142
|
-
const tempAmountToReceiveBn = new bignumber_js_1.default(tempAmountToReceive).shiftedBy(tradeTokenToReceive.decimals);
|
|
143
|
-
amountToUse = reserveTokenToUseBn
|
|
144
|
-
.times(tempAmountToReceiveBn)
|
|
145
|
-
.times(1000)
|
|
146
|
-
.idiv(reserveTokenToReceiveBn.minus(tempAmountToReceiveBn).times(997))
|
|
147
|
-
.plus(1)
|
|
148
|
-
.toFixed();
|
|
149
|
-
if (route.length > 1) {
|
|
150
|
-
amountToUse = new bignumber_js_1.default(amountToUse).shiftedBy(-tradeTokenToUse.decimals).toFixed();
|
|
151
|
-
if (index === route.length - 1) {
|
|
152
|
-
amountToUse = new bignumber_js_1.default(amountToUse).shiftedBy(tradeTokenToUse.decimals).toFixed();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
return amountToUse;
|
|
157
|
-
}, _FlamingoSwapDetailsHandler_calculateAmountToReceive = function _FlamingoSwapDetailsHandler_calculateAmountToReceive({ amountToUse, route }) {
|
|
158
|
-
let amountToReceive = '';
|
|
159
|
-
let tempAmountToUse = amountToUse;
|
|
160
|
-
route.map(({ tokenToUse: tradeTokenToUse, tokenToReceive: tradeTokenToReceive, reserveTokenToUse, reserveTokenToReceive }, index) => {
|
|
161
|
-
if (amountToReceive) {
|
|
162
|
-
tempAmountToUse = amountToReceive;
|
|
163
|
-
}
|
|
164
|
-
const reserveTokenToUseBn = new bignumber_js_1.default(reserveTokenToUse);
|
|
165
|
-
const tempAmountToUseWithFee = new bignumber_js_1.default(tempAmountToUse).times(997).shiftedBy(tradeTokenToUse.decimals);
|
|
166
|
-
amountToReceive = tempAmountToUseWithFee
|
|
167
|
-
.times(reserveTokenToReceive)
|
|
168
|
-
.idiv(reserveTokenToUseBn.times(1000).plus(tempAmountToUseWithFee))
|
|
169
|
-
.toFixed();
|
|
170
|
-
if (route.length > 1) {
|
|
171
|
-
amountToReceive = new bignumber_js_1.default(amountToReceive).shiftedBy(-tradeTokenToReceive.decimals).toFixed();
|
|
172
|
-
if (index === route.length - 1) {
|
|
173
|
-
amountToReceive = new bignumber_js_1.default(amountToReceive).shiftedBy(tradeTokenToReceive.decimals).toFixed();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
return amountToReceive;
|
|
178
|
-
};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Network, PoolGraph, SwapRoute, Token } from '@cityofzion/blockchain-service';
|
|
2
|
-
import { BSNeo3NetworkId } from '../../../constants/BSNeo3Constants';
|
|
3
|
-
type CalculateBestRouteForSwapArgs = {
|
|
4
|
-
tokenToUse: Token;
|
|
5
|
-
tokenToReceive: Token;
|
|
6
|
-
network: Network<BSNeo3NetworkId>;
|
|
7
|
-
};
|
|
8
|
-
export declare class FlamingoSwapRouteHandler {
|
|
9
|
-
#private;
|
|
10
|
-
static calculateBestRouteForSwap({ tokenToUse, tokenToReceive, network, }: CalculateBestRouteForSwapArgs): Promise<SwapRoute[]>;
|
|
11
|
-
static createPoolGraph(network: Network<BSNeo3NetworkId>): PoolGraph;
|
|
12
|
-
}
|
|
13
|
-
export {};
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
-
};
|
|
16
|
-
var _a, _FlamingoSwapRouteHandler_invokeReserves, _FlamingoSwapRouteHandler_createSwapRoute, _FlamingoSwapRouteHandler_getShortestRoutePath;
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.FlamingoSwapRouteHandler = void 0;
|
|
19
|
-
const neon_dappkit_1 = require("@cityofzion/neon-dappkit");
|
|
20
|
-
const neon_dappkit_types_1 = require("@cityofzion/neon-dappkit-types");
|
|
21
|
-
const NeonDappKitInvocationBuilderNeo3_1 = require("../../../builder/invocation/NeonDappKitInvocationBuilderNeo3");
|
|
22
|
-
const FlamingoSwapHelper_1 = require("../../../helpers/FlamingoSwapHelper");
|
|
23
|
-
class FlamingoSwapRouteHandler {
|
|
24
|
-
static calculateBestRouteForSwap({ tokenToUse, tokenToReceive, network, }) {
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const routePath = __classPrivateFieldGet(this, _a, "m", _FlamingoSwapRouteHandler_getShortestRoutePath).call(this, {
|
|
27
|
-
network,
|
|
28
|
-
startToken: tokenToUse,
|
|
29
|
-
targetToken: tokenToReceive,
|
|
30
|
-
});
|
|
31
|
-
if (routePath.length === 0)
|
|
32
|
-
return [];
|
|
33
|
-
const isWrapOrUnwrapNeo = FlamingoSwapHelper_1.FlamingoSwapHelper.isWrapNeo(network, [tokenToUse, tokenToReceive]) ||
|
|
34
|
-
FlamingoSwapHelper_1.FlamingoSwapHelper.isUnwrapNeo(network, [tokenToReceive, tokenToUse]);
|
|
35
|
-
if (isWrapOrUnwrapNeo) {
|
|
36
|
-
const swapRoute = [
|
|
37
|
-
{
|
|
38
|
-
reserveTokenToReceive: '0',
|
|
39
|
-
reserveTokenToUse: '0',
|
|
40
|
-
tokenToReceive,
|
|
41
|
-
tokenToUse,
|
|
42
|
-
},
|
|
43
|
-
];
|
|
44
|
-
return swapRoute;
|
|
45
|
-
}
|
|
46
|
-
const { stack: reservesStack } = yield __classPrivateFieldGet(this, _a, "m", _FlamingoSwapRouteHandler_invokeReserves).call(this, { network, routePath });
|
|
47
|
-
return __classPrivateFieldGet(this, _a, "m", _FlamingoSwapRouteHandler_createSwapRoute).call(this, { network, routePath, reservesStack });
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
static createPoolGraph(network) {
|
|
51
|
-
const poolGraph = {};
|
|
52
|
-
const pools = FlamingoSwapHelper_1.FlamingoSwapHelper.getFlamingoSwapPools(network);
|
|
53
|
-
const tokens = FlamingoSwapHelper_1.FlamingoSwapHelper.getFlamingoSwapTokens(network);
|
|
54
|
-
const { NEO, bNEO } = tokens;
|
|
55
|
-
// Initialize poolGraph with empty arrays
|
|
56
|
-
Object.keys(tokens).forEach(tokenSymbol => {
|
|
57
|
-
poolGraph[tokenSymbol] = [];
|
|
58
|
-
});
|
|
59
|
-
// Add edges to poolGraph
|
|
60
|
-
Object.values(pools).forEach(pool => {
|
|
61
|
-
const tokenASymbol = pool.tokens[0].symbol;
|
|
62
|
-
const tokenBSymbol = pool.tokens[1].symbol;
|
|
63
|
-
poolGraph[tokenASymbol].push(tokenBSymbol);
|
|
64
|
-
poolGraph[tokenBSymbol].push(tokenASymbol);
|
|
65
|
-
});
|
|
66
|
-
// Remove duplicates from poolGraph
|
|
67
|
-
Object.keys(tokens).forEach(tokenSymbol => {
|
|
68
|
-
poolGraph[tokenSymbol] = Array.from(new Set(poolGraph[tokenSymbol]));
|
|
69
|
-
});
|
|
70
|
-
// Include NEO to the poolGraph
|
|
71
|
-
poolGraph[NEO.symbol] = Object.keys(tokens).filter(tokenSymbol => tokenSymbol === bNEO.symbol);
|
|
72
|
-
// Include relationship between NEO and bNEO
|
|
73
|
-
poolGraph[bNEO.symbol].push(NEO.symbol);
|
|
74
|
-
return poolGraph;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.FlamingoSwapRouteHandler = FlamingoSwapRouteHandler;
|
|
78
|
-
_a = FlamingoSwapRouteHandler, _FlamingoSwapRouteHandler_invokeReserves = function _FlamingoSwapRouteHandler_invokeReserves({ network, routePath }) {
|
|
79
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
-
const invoker = yield neon_dappkit_1.NeonInvoker.init({
|
|
81
|
-
rpcAddress: network.url,
|
|
82
|
-
});
|
|
83
|
-
const scriptHashes = FlamingoSwapHelper_1.FlamingoSwapHelper.getFlamingoSwapScriptHashes(network);
|
|
84
|
-
const routerScriptHash = scriptHashes.flamingoSwapRouter;
|
|
85
|
-
// Remove NEO token from the routePath because it's not supported by the router
|
|
86
|
-
const routePathWithoutNeo = routePath.filter(route => !FlamingoSwapHelper_1.FlamingoSwapHelper.isNeoToken(network, route.tokenToUse) &&
|
|
87
|
-
!FlamingoSwapHelper_1.FlamingoSwapHelper.isNeoToken(network, route.tokenToReceive));
|
|
88
|
-
const getReservesContractInvocations = routePathWithoutNeo.map(route => NeonDappKitInvocationBuilderNeo3_1.NeonDappKitInvocationBuilderNeo3.getReservesContractInvocation({
|
|
89
|
-
routerScriptHash,
|
|
90
|
-
tokenToUseHash: route.tokenToUse.hash,
|
|
91
|
-
tokenToReceiveHash: route.tokenToReceive.hash,
|
|
92
|
-
}));
|
|
93
|
-
const getReservesContractInvocationMulti = {
|
|
94
|
-
invocations: [...getReservesContractInvocations],
|
|
95
|
-
};
|
|
96
|
-
return yield invoker.testInvoke(getReservesContractInvocationMulti);
|
|
97
|
-
});
|
|
98
|
-
}, _FlamingoSwapRouteHandler_createSwapRoute = function _FlamingoSwapRouteHandler_createSwapRoute({ network, routePath, reservesStack }) {
|
|
99
|
-
const isNeoTokenToUse = FlamingoSwapHelper_1.FlamingoSwapHelper.isNeoToken(network, routePath[0].tokenToUse);
|
|
100
|
-
const isNeoTokenToReceive = FlamingoSwapHelper_1.FlamingoSwapHelper.isNeoToken(network, routePath[routePath.length - 1].tokenToReceive);
|
|
101
|
-
const swapRoute = [];
|
|
102
|
-
for (let index = 0; index < reservesStack.length; index++) {
|
|
103
|
-
const item = reservesStack[index];
|
|
104
|
-
if (!neon_dappkit_types_1.TypeChecker.isStackTypeArray(item) ||
|
|
105
|
-
!neon_dappkit_types_1.TypeChecker.isStackTypeInteger(item.value[0]) ||
|
|
106
|
-
!neon_dappkit_types_1.TypeChecker.isStackTypeInteger(item.value[1])) {
|
|
107
|
-
throw new Error('Invalid reserves response');
|
|
108
|
-
}
|
|
109
|
-
// Include NEO token in the swapRoute with 0 reserves because it wasn't supported by the router during the reserves invocation
|
|
110
|
-
if (isNeoTokenToUse && index === 0) {
|
|
111
|
-
swapRoute.push({
|
|
112
|
-
tokenToUse: routePath[index].tokenToUse,
|
|
113
|
-
reserveTokenToUse: '0',
|
|
114
|
-
tokenToReceive: routePath[index].tokenToReceive,
|
|
115
|
-
reserveTokenToReceive: '0',
|
|
116
|
-
});
|
|
117
|
-
index++;
|
|
118
|
-
}
|
|
119
|
-
swapRoute.push({
|
|
120
|
-
tokenToUse: routePath[index].tokenToUse,
|
|
121
|
-
reserveTokenToUse: item.value[1].value,
|
|
122
|
-
tokenToReceive: routePath[index].tokenToReceive,
|
|
123
|
-
reserveTokenToReceive: item.value[0].value,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
// Include NEO token in the swapRoute with 0 reserves because it wasn't supported by the router during the reserves invocation
|
|
127
|
-
if (isNeoTokenToReceive) {
|
|
128
|
-
swapRoute.push({
|
|
129
|
-
tokenToUse: routePath[routePath.length - 1].tokenToUse,
|
|
130
|
-
reserveTokenToUse: '0',
|
|
131
|
-
tokenToReceive: routePath[routePath.length - 1].tokenToReceive,
|
|
132
|
-
reserveTokenToReceive: '0',
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
return swapRoute;
|
|
136
|
-
}, _FlamingoSwapRouteHandler_getShortestRoutePath = function _FlamingoSwapRouteHandler_getShortestRoutePath({ network, startToken, targetToken }) {
|
|
137
|
-
// Initialize an empty object to track predecessors of each token
|
|
138
|
-
const predecessor = {};
|
|
139
|
-
// Create a graph representation of the token network
|
|
140
|
-
const poolGraph = this.createPoolGraph(network);
|
|
141
|
-
// Initialize the queue with the start token's symbol
|
|
142
|
-
const queue = [startToken.symbol];
|
|
143
|
-
// Track visited tokens, starting with the start token marked as visited
|
|
144
|
-
const tokensVisited = {
|
|
145
|
-
[startToken.symbol]: true,
|
|
146
|
-
};
|
|
147
|
-
// Initialize an empty array to store the path of tokens
|
|
148
|
-
let path = [];
|
|
149
|
-
while (queue.length) {
|
|
150
|
-
// Remove and get the first token symbol from the queue
|
|
151
|
-
const currentTokenSymbol = queue.shift();
|
|
152
|
-
if (!currentTokenSymbol)
|
|
153
|
-
break;
|
|
154
|
-
const currentToken = FlamingoSwapHelper_1.FlamingoSwapHelper.getFlamingoSwapToken(network, currentTokenSymbol);
|
|
155
|
-
if (!currentToken)
|
|
156
|
-
continue;
|
|
157
|
-
// Get the neighbors of the current token from the graph
|
|
158
|
-
const neighbours = poolGraph[currentToken.symbol];
|
|
159
|
-
for (const neighbourSymbol of neighbours || []) {
|
|
160
|
-
if (tokensVisited[neighbourSymbol])
|
|
161
|
-
continue; // Skip if the neighbor has already been visited
|
|
162
|
-
// Mark the neighbor token as visited
|
|
163
|
-
tokensVisited[neighbourSymbol] = true;
|
|
164
|
-
// Record the current token as the predecessor of the neighbor token
|
|
165
|
-
predecessor[neighbourSymbol] = currentToken;
|
|
166
|
-
// Add the neighbor token symbol to the queue
|
|
167
|
-
queue.push(neighbourSymbol);
|
|
168
|
-
if (neighbourSymbol === targetToken.symbol) {
|
|
169
|
-
// Initialize the path with the target token
|
|
170
|
-
path = [targetToken];
|
|
171
|
-
// Start reconstructing the path from the target token back to the start token
|
|
172
|
-
let prevToken = currentToken;
|
|
173
|
-
while (prevToken && prevToken.symbol !== startToken.symbol) {
|
|
174
|
-
path.push(prevToken); // Add the predecessor token to the path
|
|
175
|
-
prevToken = predecessor[prevToken.symbol]; // Move to the predecessor token
|
|
176
|
-
}
|
|
177
|
-
// If the start token is reached, add it to the path and reverse the path to start-to-end order
|
|
178
|
-
if (prevToken) {
|
|
179
|
-
path.push(prevToken);
|
|
180
|
-
path.reverse();
|
|
181
|
-
}
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (path.length)
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
const routePath = [];
|
|
189
|
-
// Convert the token path into route paths
|
|
190
|
-
for (let i = 0; i < path.length - 1; i++) {
|
|
191
|
-
routePath.push({ tokenToUse: path[i], tokenToReceive: path[i + 1] });
|
|
192
|
-
}
|
|
193
|
-
return routePath;
|
|
194
|
-
};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
12
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
13
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
14
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
-
};
|
|
17
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
18
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
19
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
20
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
21
|
-
};
|
|
22
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
-
};
|
|
25
|
-
var _FlamingoSwapSocketService_ws;
|
|
26
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
-
exports.FlamingoSwapSocketService = void 0;
|
|
28
|
-
const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
|
|
29
|
-
const FlamingoSwapConstants_1 = require("../../../constants/FlamingoSwapConstants");
|
|
30
|
-
class FlamingoSwapSocketService {
|
|
31
|
-
constructor() {
|
|
32
|
-
_FlamingoSwapSocketService_ws.set(this, void 0);
|
|
33
|
-
}
|
|
34
|
-
onBlockAdded({ callback }) {
|
|
35
|
-
__classPrivateFieldSet(this, _FlamingoSwapSocketService_ws, new isomorphic_ws_1.default(FlamingoSwapConstants_1.BLOCKCHAIN_WSS_URL), "f");
|
|
36
|
-
__classPrivateFieldGet(this, _FlamingoSwapSocketService_ws, "f").onopen = () => {
|
|
37
|
-
const block_added = {
|
|
38
|
-
jsonrpc: '2.0',
|
|
39
|
-
method: 'subscribe',
|
|
40
|
-
params: ['block_added'],
|
|
41
|
-
id: 1,
|
|
42
|
-
};
|
|
43
|
-
__classPrivateFieldGet(this, _FlamingoSwapSocketService_ws, "f").send(JSON.stringify(block_added));
|
|
44
|
-
};
|
|
45
|
-
__classPrivateFieldGet(this, _FlamingoSwapSocketService_ws, "f").onmessage = () => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
yield callback();
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
closeConnection() {
|
|
50
|
-
if (!__classPrivateFieldGet(this, _FlamingoSwapSocketService_ws, "f"))
|
|
51
|
-
return;
|
|
52
|
-
__classPrivateFieldGet(this, _FlamingoSwapSocketService_ws, "f").close();
|
|
53
|
-
__classPrivateFieldSet(this, _FlamingoSwapSocketService_ws, null, "f");
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.FlamingoSwapSocketService = FlamingoSwapSocketService;
|
|
57
|
-
_FlamingoSwapSocketService_ws = new WeakMap();
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./FlamingoSwapDetailsHandler"), exports);
|
|
18
|
-
__exportStar(require("./FlamingoSwapRouteHandler"), exports);
|
|
19
|
-
__exportStar(require("./FlamingoSwapSocketHandler"), exports);
|