@sonarwatch/portfolio-plugins 0.14.112 → 0.14.114
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +2045 -2032
- package/README.md +3 -3
- package/package.json +1 -1
- package/src/plugins/abex/positionsFetcher.js +7 -3
- package/src/plugins/abex/positionsFetcher.js.map +1 -1
- package/src/plugins/balancer/helpers/pools.js +21 -21
- package/src/plugins/jupiter/exchange/constants.d.ts +1 -1
- package/src/plugins/jupiter/exchange/constants.js +2 -2
- package/src/plugins/jupiter/exchange/constants.js.map +1 -1
- package/src/plugins/jupiter/exchange/custodiesJob.js +1 -1
- package/src/plugins/jupiter/exchange/custodiesJob.js.map +1 -1
- package/src/plugins/jupiter/exchange/dcaFetcher.js +19 -45
- package/src/plugins/jupiter/exchange/dcaFetcher.js.map +1 -1
- package/src/plugins/jupiter/exchange/helpers.d.ts +2 -0
- package/src/plugins/jupiter/exchange/helpers.js +29 -0
- package/src/plugins/jupiter/exchange/helpers.js.map +1 -0
- package/src/plugins/jupiter/exchange/limitFetcher.js +32 -44
- package/src/plugins/jupiter/exchange/limitFetcher.js.map +1 -1
- package/src/plugins/jupiter/exchange/perpetualFetcher.js +12 -8
- package/src/plugins/jupiter/exchange/perpetualFetcher.js.map +1 -1
- package/src/plugins/jupiter/exchange/structs.d.ts +12 -1
- package/src/plugins/jupiter/exchange/structs.js +13 -3
- package/src/plugins/jupiter/exchange/structs.js.map +1 -1
- package/src/plugins/jupiter/exchange/valueAverageFetcher.js +45 -55
- package/src/plugins/jupiter/exchange/valueAverageFetcher.js.map +1 -1
- package/src/plugins/jupiter/helpers.d.ts +0 -2
- package/src/plugins/jupiter/helpers.js +1 -23
- package/src/plugins/jupiter/helpers.js.map +1 -1
- package/src/plugins/jupiter/types.d.ts +11 -0
- package/src/plugins/jupiter/types.js.map +1 -1
- package/src/plugins/sushiswap/helpers.js +24 -24
- package/src/plugins/uniswap-v2/helpers.js +22 -22
- package/src/plugins/zeta/airdropFetcher.js +14 -14
- package/src/utils/elementbuilder/AssetBuilder.d.ts +1 -1
- package/src/utils/elementbuilder/AssetGenericBuilder.d.ts +3 -3
- package/src/utils/elementbuilder/AssetGenericBuilder.js +1 -1
- package/src/utils/elementbuilder/AssetGenericBuilder.js.map +1 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.d.ts +1 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.js +1 -1
- package/src/utils/elementbuilder/AssetTokenBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ElementBorrowlendBuilder.d.ts +5 -5
- package/src/utils/elementbuilder/ElementBorrowlendBuilder.js +7 -11
- package/src/utils/elementbuilder/ElementBorrowlendBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ElementBuilder.d.ts +1 -1
- package/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.d.ts +3 -3
- package/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.js +1 -1
- package/src/utils/elementbuilder/ElementConcentratedLiquidityBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ElementLeverageBuilder.d.ts +10 -5
- package/src/utils/elementbuilder/ElementLeverageBuilder.js +58 -12
- package/src/utils/elementbuilder/ElementLeverageBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ElementLiquidityBuilder.d.ts +3 -3
- package/src/utils/elementbuilder/ElementLiquidityBuilder.js +2 -2
- package/src/utils/elementbuilder/ElementLiquidityBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ElementMultipleBuilder.d.ts +3 -3
- package/src/utils/elementbuilder/ElementMultipleBuilder.js +3 -3
- package/src/utils/elementbuilder/ElementMultipleBuilder.js.map +1 -1
- package/src/utils/elementbuilder/ElementRegistry.d.ts +4 -0
- package/src/utils/elementbuilder/ElementRegistry.js +10 -1
- package/src/utils/elementbuilder/ElementRegistry.js.map +1 -1
- package/src/utils/elementbuilder/ElementTradeBuilder.d.ts +11 -0
- package/src/utils/elementbuilder/ElementTradeBuilder.js +87 -0
- package/src/utils/elementbuilder/ElementTradeBuilder.js.map +1 -0
- package/src/utils/elementbuilder/LevPositionBuilder.d.ts +12 -7
- package/src/utils/elementbuilder/LevPositionBuilder.js +25 -40
- package/src/utils/elementbuilder/LevPositionBuilder.js.map +1 -1
- package/src/utils/elementbuilder/Params.d.ts +17 -13
- package/src/utils/misc/tokenPriceToAssetToken.d.ts +1 -1
- package/src/utils/misc/tokenPriceToAssetToken.js +2 -2
- package/src/utils/misc/tokenPriceToAssetToken.js.map +1 -1
- package/src/utils/sei/constants.js +8 -8
- package/src/utils/sei/getQueryBalanceByOwner.js +4 -4
@@ -1,12 +1,17 @@
|
|
1
1
|
import { NetworkIdType, PortfolioElementLeverage } from '@sonarwatch/portfolio-core';
|
2
2
|
import { ElementBuilder } from './ElementBuilder';
|
3
|
-
import {
|
3
|
+
import { CrossLevPositionParams, IsoLevPositionParams, Params, PortfolioAssetTokenParams } from './Params';
|
4
4
|
import { TokenPriceMap } from '../../TokenPriceMap';
|
5
|
-
import {
|
5
|
+
import { CrossLevPositionBuilder, IsoLevPositionBuilder } from './LevPositionBuilder';
|
6
|
+
import { AssetTokenBuilder } from './AssetTokenBuilder';
|
6
7
|
export declare class ElementLeverageBuilder extends ElementBuilder {
|
7
|
-
|
8
|
+
isoPositions: IsoLevPositionBuilder[];
|
9
|
+
crossPositions: CrossLevPositionBuilder[];
|
10
|
+
crossCollateralAssets: AssetTokenBuilder[];
|
8
11
|
constructor(params: Params);
|
9
|
-
|
10
|
-
|
12
|
+
tokenAddresses(): string[];
|
13
|
+
addIsoPosition(params: IsoLevPositionParams): IsoLevPositionBuilder;
|
14
|
+
addCrossPosition(params: CrossLevPositionParams): CrossLevPositionBuilder;
|
15
|
+
addCrossCollateral(params: PortfolioAssetTokenParams): void;
|
11
16
|
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap): PortfolioElementLeverage | null;
|
12
17
|
}
|
@@ -4,30 +4,76 @@ exports.ElementLeverageBuilder = void 0;
|
|
4
4
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
5
5
|
const ElementBuilder_1 = require("./ElementBuilder");
|
6
6
|
const LevPositionBuilder_1 = require("./LevPositionBuilder");
|
7
|
+
const AssetTokenBuilder_1 = require("./AssetTokenBuilder");
|
7
8
|
class ElementLeverageBuilder extends ElementBuilder_1.ElementBuilder {
|
8
9
|
constructor(params) {
|
9
10
|
super(params);
|
10
|
-
this.
|
11
|
+
this.isoPositions = [];
|
12
|
+
this.crossPositions = [];
|
13
|
+
this.crossCollateralAssets = [];
|
11
14
|
}
|
12
|
-
|
13
|
-
const
|
14
|
-
this.
|
15
|
-
|
15
|
+
tokenAddresses() {
|
16
|
+
const addresses = [];
|
17
|
+
this.isoPositions.forEach((p) => {
|
18
|
+
if (p.tokenAddress)
|
19
|
+
addresses.push(p.tokenAddress);
|
20
|
+
});
|
21
|
+
this.crossPositions.forEach((p) => {
|
22
|
+
if (p.tokenAddress)
|
23
|
+
addresses.push(p.tokenAddress);
|
24
|
+
});
|
25
|
+
this.crossCollateralAssets.forEach((p) => {
|
26
|
+
addresses.push(p.address);
|
27
|
+
});
|
28
|
+
return addresses;
|
16
29
|
}
|
17
|
-
|
18
|
-
|
30
|
+
addIsoPosition(params) {
|
31
|
+
const isoPositionBuilder = new LevPositionBuilder_1.IsoLevPositionBuilder(params);
|
32
|
+
this.isoPositions.push(isoPositionBuilder);
|
33
|
+
return isoPositionBuilder;
|
34
|
+
}
|
35
|
+
addCrossPosition(params) {
|
36
|
+
const crossPositionBuilder = new LevPositionBuilder_1.CrossLevPositionBuilder(params);
|
37
|
+
this.crossPositions.push(crossPositionBuilder);
|
38
|
+
return crossPositionBuilder;
|
39
|
+
}
|
40
|
+
addCrossCollateral(params) {
|
41
|
+
this.crossCollateralAssets.push(new AssetTokenBuilder_1.AssetTokenBuilder(params));
|
19
42
|
}
|
20
43
|
get(networkId, platformId, tokenPrices) {
|
21
44
|
var _a;
|
22
|
-
const
|
45
|
+
const isoPositions = this.isoPositions.map((p) => p.get(networkId));
|
46
|
+
const isoValue = (0, portfolio_core_1.getUsdValueSum)([...isoPositions.map((a) => a.value)]);
|
47
|
+
const crossPositions = this.crossPositions.map((p) => p.get(networkId));
|
48
|
+
const crossCollateralAssets = this.crossCollateralAssets
|
23
49
|
.map((p) => p.get(networkId, tokenPrices))
|
24
|
-
.filter((
|
25
|
-
const
|
50
|
+
.filter((a) => a !== null);
|
51
|
+
const crossValue = (0, portfolio_core_1.getUsdValueSum)([
|
52
|
+
...crossCollateralAssets.map((a) => a.value),
|
53
|
+
...crossPositions.map((p) => p.pnlValue),
|
54
|
+
]);
|
55
|
+
const crossSizeValueTotal = (0, portfolio_core_1.getUsdValueSumStrict)(crossPositions.map((p) => p.sizeValue));
|
56
|
+
const crossLeverage = crossSizeValueTotal && crossValue
|
57
|
+
? crossSizeValueTotal / crossValue
|
58
|
+
: undefined;
|
59
|
+
const value = (0, portfolio_core_1.getUsdValueSum)([crossValue, isoValue]);
|
26
60
|
return {
|
27
|
-
type:
|
61
|
+
type: portfolio_core_1.PortfolioElementType.leverage,
|
62
|
+
name: this.name,
|
63
|
+
tags: this.tags,
|
28
64
|
label: this.label,
|
29
65
|
data: {
|
30
|
-
|
66
|
+
isolated: {
|
67
|
+
positions: isoPositions,
|
68
|
+
value: isoValue,
|
69
|
+
},
|
70
|
+
cross: {
|
71
|
+
positions: crossPositions,
|
72
|
+
collateralAssets: crossCollateralAssets,
|
73
|
+
collateralValue: (0, portfolio_core_1.getUsdValueSum)(crossCollateralAssets.map((a) => a.value)),
|
74
|
+
value: crossValue,
|
75
|
+
leverage: crossLeverage,
|
76
|
+
},
|
31
77
|
value,
|
32
78
|
ref: (_a = this.ref) === null || _a === void 0 ? void 0 : _a.toString(),
|
33
79
|
sourceRefs: this.sourceRefs,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementLeverageBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementLeverageBuilder.ts"],"names":[],"mappings":";;;AAAA,+
|
1
|
+
{"version":3,"file":"ElementLeverageBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementLeverageBuilder.ts"],"names":[],"mappings":";;;AAAA,+DAOoC;AACpC,qDAAkD;AAQlD,6DAG8B;AAC9B,2DAAwD;AAExD,MAAa,sBAAuB,SAAQ,+BAAc;IAKxD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;IAClC,CAAC;IAEQ,cAAc;QACrB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,YAAY;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,CAAC,YAAY;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACvC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,MAA4B;QACzC,MAAM,kBAAkB,GAAG,IAAI,0CAAqB,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,MAA8B;QAC7C,MAAM,oBAAoB,GAAG,IAAI,4CAAuB,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/C,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,kBAAkB,CAAC,MAAiC;QAClD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,UAAkB,EAClB,WAA0B;;QAE1B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAA,+BAAc,EAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;aACrD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAqB,CAAC;QACjD,MAAM,UAAU,GAAG,IAAA,+BAAc,EAAC;YAChC,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5C,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,IAAA,qCAAoB,EAC9C,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CACvC,CAAC;QACF,MAAM,aAAa,GACjB,mBAAmB,IAAI,UAAU;YAC/B,CAAC,CAAC,mBAAmB,GAAG,UAAU;YAClC,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,KAAK,GAAG,IAAA,+BAAc,EAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAErD,OAAO;YACL,IAAI,EAAE,qCAAoB,CAAC,QAAQ;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE;gBACJ,QAAQ,EAAE;oBACR,SAAS,EAAE,YAAY;oBACvB,KAAK,EAAE,QAAQ;iBAChB;gBACD,KAAK,EAAE;oBACL,SAAS,EAAE,cAAc;oBACzB,gBAAgB,EAAE,qBAAqB;oBACvC,eAAe,EAAE,IAAA,+BAAc,EAC7B,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAC1C;oBACD,KAAK,EAAE,UAAU;oBACjB,QAAQ,EAAE,aAAa;iBACxB;gBACD,KAAK;gBACL,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;YACD,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;YACzC,KAAK;SACN,CAAC;IACJ,CAAC;CACF;AAhGD,wDAgGC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NetworkIdType,
|
1
|
+
import { NetworkIdType, PortfolioElementLiquidity } from '@sonarwatch/portfolio-core';
|
2
2
|
import { ElementBuilder } from './ElementBuilder';
|
3
3
|
import { LiquidityParams, Params } from './Params';
|
4
4
|
import { TokenPriceMap } from '../../TokenPriceMap';
|
@@ -7,6 +7,6 @@ export declare class ElementLiquidityBuilder extends ElementBuilder {
|
|
7
7
|
liquidities: LiquidityBuilder[];
|
8
8
|
constructor(params: Params);
|
9
9
|
addLiquidity(params?: LiquidityParams): LiquidityBuilder;
|
10
|
-
|
11
|
-
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap):
|
10
|
+
tokenAddresses(): string[];
|
11
|
+
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap): PortfolioElementLiquidity | null;
|
12
12
|
}
|
@@ -14,7 +14,7 @@ class ElementLiquidityBuilder extends ElementBuilder_1.ElementBuilder {
|
|
14
14
|
this.liquidities.push(liquidityBuilder);
|
15
15
|
return liquidityBuilder;
|
16
16
|
}
|
17
|
-
|
17
|
+
tokenAddresses() {
|
18
18
|
return this.liquidities.map((liquidity) => liquidity.mints()).flat();
|
19
19
|
}
|
20
20
|
get(networkId, platformId, tokenPrices) {
|
@@ -24,7 +24,7 @@ class ElementLiquidityBuilder extends ElementBuilder_1.ElementBuilder {
|
|
24
24
|
if (liquidities.length === 0)
|
25
25
|
return null;
|
26
26
|
return {
|
27
|
-
type:
|
27
|
+
type: portfolio_core_1.PortfolioElementType.liquidity,
|
28
28
|
label: this.label,
|
29
29
|
networkId,
|
30
30
|
platformId: this.platformId || platformId,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementLiquidityBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementLiquidityBuilder.ts"],"names":[],"mappings":";;;AAAA,+DAMoC;AACpC,qDAAkD;AAGlD,yDAAsD;AAEtD,MAAa,uBAAwB,SAAQ,+BAAc;IAGzD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,MAAwB;QACnC,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,
|
1
|
+
{"version":3,"file":"ElementLiquidityBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementLiquidityBuilder.ts"],"names":[],"mappings":";;;AAAA,+DAMoC;AACpC,qDAAkD;AAGlD,yDAAsD;AAEtD,MAAa,uBAAwB,SAAQ,+BAAc;IAGzD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,MAAwB;QACnC,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IAEQ,GAAG,CACV,SAAwB,EACxB,UAAkB,EAClB,WAA0B;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAyB,CAAC;QAErD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1C,OAAO;YACL,IAAI,EAAE,qCAAoB,CAAC,SAAS;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;YACzC,IAAI,EAAE;gBACJ,WAAW;aACZ;YACD,KAAK,EAAE,IAAA,+BAAc,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;CACF;AA1CD,0DA0CC"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NetworkIdType,
|
1
|
+
import { NetworkIdType, PortfolioElementMultiple } from '@sonarwatch/portfolio-core';
|
2
2
|
import { ElementBuilder } from './ElementBuilder';
|
3
3
|
import { Params, PortfolioAssetGenericParams, PortfolioAssetTokenParams } from './Params';
|
4
4
|
import { TokenPriceMap } from '../../TokenPriceMap';
|
@@ -8,6 +8,6 @@ export declare class ElementMultipleBuilder extends ElementBuilder {
|
|
8
8
|
constructor(params: Params);
|
9
9
|
addAsset(params: PortfolioAssetTokenParams): void;
|
10
10
|
addGenericAsset(params: PortfolioAssetGenericParams): void;
|
11
|
-
|
12
|
-
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap):
|
11
|
+
tokenAddresses(): string[];
|
12
|
+
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap): PortfolioElementMultiple | null;
|
13
13
|
}
|
@@ -16,8 +16,8 @@ class ElementMultipleBuilder extends ElementBuilder_1.ElementBuilder {
|
|
16
16
|
addGenericAsset(params) {
|
17
17
|
this.assets.push(new AssetGenericBuilder_1.AssetGenericBuilder(params));
|
18
18
|
}
|
19
|
-
|
20
|
-
return [...this.assets.map((a) => a.
|
19
|
+
tokenAddresses() {
|
20
|
+
return [...this.assets.map((a) => a.tokenAddresses())].flat();
|
21
21
|
}
|
22
22
|
get(networkId, platformId, tokenPrices) {
|
23
23
|
var _a;
|
@@ -27,7 +27,7 @@ class ElementMultipleBuilder extends ElementBuilder_1.ElementBuilder {
|
|
27
27
|
if (assets.length === 0)
|
28
28
|
return null;
|
29
29
|
return {
|
30
|
-
type:
|
30
|
+
type: portfolio_core_1.PortfolioElementType.multiple,
|
31
31
|
label: this.label,
|
32
32
|
networkId,
|
33
33
|
platformId: this.platformId || platformId,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementMultipleBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementMultipleBuilder.ts"],"names":[],"mappings":";;;AAAA,+
|
1
|
+
{"version":3,"file":"ElementMultipleBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementMultipleBuilder.ts"],"names":[],"mappings":";;;AAAA,+DAMoC;AACpC,qDAAkD;AAClD,2DAAwD;AAQxD,+DAA4D;AAE5D,MAAa,sBAAuB,SAAQ,+BAAc;IAGxD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,MAAiC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,eAAe,CAAC,MAAmC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,yCAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,cAAc;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,GAAG,CACD,SAAwB,EACxB,UAAkB,EAClB,WAA0B;;QAE1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAqB,CAAC;QAEjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,OAAO;YACL,IAAI,EAAE,qCAAoB,CAAC,QAAQ;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;YACzC,IAAI,EAAE;gBACJ,MAAM;gBACN,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,0CAAE,QAAQ,EAAE;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;YACD,KAAK,EAAE,IAAA,+BAAc,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;IACJ,CAAC;CACF;AA/CD,wDA+CC"}
|
@@ -7,6 +7,7 @@ import { ElementLiquidityBuilder } from './ElementLiquidityBuilder';
|
|
7
7
|
import { ElementBorrowlendBuilder } from './ElementBorrowlendBuilder';
|
8
8
|
import { ElementLeverageBuilder } from './ElementLeverageBuilder';
|
9
9
|
import { ElementConcentratedLiquidityBuilder } from './ElementConcentratedLiquidityBuilder';
|
10
|
+
import { ElementTradeBuilder } from './ElementTradeBuilder';
|
10
11
|
export declare class ElementRegistry {
|
11
12
|
readonly networkId: NetworkIdType;
|
12
13
|
readonly platformId: string;
|
@@ -19,5 +20,8 @@ export declare class ElementRegistry {
|
|
19
20
|
}): ElementConcentratedLiquidityBuilder;
|
20
21
|
addElementBorrowlend(params: Omit<Params, 'type'>): ElementBorrowlendBuilder;
|
21
22
|
addElementLeverage(params: Omit<Params, 'type'>): ElementLeverageBuilder;
|
23
|
+
addElementTrade(elementParams?: Omit<Params, 'type' | 'label'> & {
|
24
|
+
label?: PortfolioElementLabel;
|
25
|
+
}): ElementTradeBuilder;
|
22
26
|
getElements(cache: Cache): Promise<PortfolioElement[]>;
|
23
27
|
}
|
@@ -16,6 +16,7 @@ const ElementLiquidityBuilder_1 = require("./ElementLiquidityBuilder");
|
|
16
16
|
const ElementBorrowlendBuilder_1 = require("./ElementBorrowlendBuilder");
|
17
17
|
const ElementLeverageBuilder_1 = require("./ElementLeverageBuilder");
|
18
18
|
const ElementConcentratedLiquidityBuilder_1 = require("./ElementConcentratedLiquidityBuilder");
|
19
|
+
const ElementTradeBuilder_1 = require("./ElementTradeBuilder");
|
19
20
|
class ElementRegistry {
|
20
21
|
constructor(networkId, platformId) {
|
21
22
|
this.networkId = networkId;
|
@@ -47,9 +48,17 @@ class ElementRegistry {
|
|
47
48
|
this.elements.push(elementBuilder);
|
48
49
|
return elementBuilder;
|
49
50
|
}
|
51
|
+
addElementTrade(elementParams) {
|
52
|
+
const elementBuilder = new ElementTradeBuilder_1.ElementTradeBuilder({
|
53
|
+
type: portfolio_core_1.PortfolioElementType.trade,
|
54
|
+
label: (elementParams === null || elementParams === void 0 ? void 0 : elementParams.label) || 'LimitOrder',
|
55
|
+
});
|
56
|
+
this.elements.push(elementBuilder);
|
57
|
+
return elementBuilder;
|
58
|
+
}
|
50
59
|
getElements(cache) {
|
51
60
|
return __awaiter(this, void 0, void 0, function* () {
|
52
|
-
const mints = this.elements.map((e) => e.
|
61
|
+
const mints = this.elements.map((e) => e.tokenAddresses()).flat();
|
53
62
|
const tokenPrices = yield cache.getTokenPricesAsMap(mints, this.networkId);
|
54
63
|
return this.elements
|
55
64
|
.map((e) => e.get(this.networkId, this.platformId, tokenPrices))
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ElementRegistry.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementRegistry.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAKoC;AAIpC,qEAAkE;AAClE,uEAAoE;AACpE,yEAAsE;AACtE,qEAAkE;AAClE,+FAA4F;
|
1
|
+
{"version":3,"file":"ElementRegistry.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementRegistry.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { NetworkIdType, PortfolioElementTrade } from '@sonarwatch/portfolio-core';
|
2
|
+
import { ElementBuilder } from './ElementBuilder';
|
3
|
+
import { Params, TradeParams } from './Params';
|
4
|
+
import { TokenPriceMap } from '../../TokenPriceMap';
|
5
|
+
export declare class ElementTradeBuilder extends ElementBuilder {
|
6
|
+
params?: TradeParams;
|
7
|
+
constructor(params: Params);
|
8
|
+
setTrade(params: TradeParams): void;
|
9
|
+
tokenAddresses(): string[];
|
10
|
+
get(networkId: NetworkIdType, platformId: string, tokenPrices: TokenPriceMap): PortfolioElementTrade | null;
|
11
|
+
}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.ElementTradeBuilder = void 0;
|
7
|
+
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
9
|
+
const ElementBuilder_1 = require("./ElementBuilder");
|
10
|
+
const AssetTokenBuilder_1 = require("./AssetTokenBuilder");
|
11
|
+
class ElementTradeBuilder extends ElementBuilder_1.ElementBuilder {
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor
|
13
|
+
constructor(params) {
|
14
|
+
super(params);
|
15
|
+
}
|
16
|
+
setTrade(params) {
|
17
|
+
this.params = params;
|
18
|
+
}
|
19
|
+
tokenAddresses() {
|
20
|
+
var _a, _b;
|
21
|
+
const mints = [];
|
22
|
+
if ((_a = this.params) === null || _a === void 0 ? void 0 : _a.inputAsset)
|
23
|
+
mints.push(...new AssetTokenBuilder_1.AssetTokenBuilder(this.params.inputAsset).tokenAddresses());
|
24
|
+
if ((_b = this.params) === null || _b === void 0 ? void 0 : _b.outputAsset)
|
25
|
+
mints.push(this.params.outputAsset.address.toString());
|
26
|
+
return mints;
|
27
|
+
}
|
28
|
+
get(networkId, platformId, tokenPrices) {
|
29
|
+
var _a, _b, _c;
|
30
|
+
if (!this.params)
|
31
|
+
return null;
|
32
|
+
const inputAsset = new AssetTokenBuilder_1.AssetTokenBuilder(this.params.inputAsset).get(networkId, tokenPrices);
|
33
|
+
if (!(inputAsset === null || inputAsset === void 0 ? void 0 : inputAsset.data.amount))
|
34
|
+
return null;
|
35
|
+
const outputAsset = new bignumber_js_1.default(this.params.outputAsset.amount || 0).gt(0)
|
36
|
+
? new AssetTokenBuilder_1.AssetTokenBuilder({
|
37
|
+
address: this.params.outputAsset.address.toString(),
|
38
|
+
amount: new bignumber_js_1.default(this.params.outputAsset.amount || 0).toNumber(),
|
39
|
+
}).get(networkId, tokenPrices)
|
40
|
+
: null;
|
41
|
+
const inputPrice = tokenPrices.get(this.params.inputAsset.address.toString());
|
42
|
+
const outputPrice = tokenPrices.get(this.params.outputAsset.address.toString());
|
43
|
+
if (!inputPrice)
|
44
|
+
return null;
|
45
|
+
const initialInputAmount = new bignumber_js_1.default(this.params.initialInputAmount).dividedBy(Math.pow(10, inputPrice.decimals));
|
46
|
+
return {
|
47
|
+
networkId,
|
48
|
+
label: this.label,
|
49
|
+
platformId,
|
50
|
+
type: portfolio_core_1.PortfolioElementType.trade,
|
51
|
+
name: this.name,
|
52
|
+
tags: this.tags,
|
53
|
+
data: {
|
54
|
+
assets: {
|
55
|
+
input: inputAsset,
|
56
|
+
output: outputAsset,
|
57
|
+
},
|
58
|
+
inputAddress: this.params.inputAsset.address.toString(),
|
59
|
+
outputAddress: this.params.outputAsset.address.toString(),
|
60
|
+
initialInputAmount: initialInputAmount.toNumber(),
|
61
|
+
withdrawnOutputAmount: this.params.withdrawnOutputAmount && outputPrice
|
62
|
+
? new bignumber_js_1.default(this.params.withdrawnOutputAmount)
|
63
|
+
.dividedBy(Math.pow(10, outputPrice.decimals))
|
64
|
+
.toNumber()
|
65
|
+
: 0,
|
66
|
+
expectedOutputAmount: this.params.expectedOutputAmount && outputPrice
|
67
|
+
? new bignumber_js_1.default(this.params.expectedOutputAmount)
|
68
|
+
.dividedBy(Math.pow(10, outputPrice.decimals))
|
69
|
+
.toNumber()
|
70
|
+
: undefined,
|
71
|
+
filledPercentage: new bignumber_js_1.default(1)
|
72
|
+
.minus(new bignumber_js_1.default(inputAsset.data.amount).dividedBy(initialInputAmount))
|
73
|
+
.toNumber(),
|
74
|
+
inputPrice: inputPrice.price,
|
75
|
+
outputPrice: (outputPrice === null || outputPrice === void 0 ? void 0 : outputPrice.price) || null,
|
76
|
+
createdAt: (_a = this.params) === null || _a === void 0 ? void 0 : _a.createdAt,
|
77
|
+
expireAt: (_b = this.params) === null || _b === void 0 ? void 0 : _b.expireAt,
|
78
|
+
ref: (_c = this.ref) === null || _c === void 0 ? void 0 : _c.toString(),
|
79
|
+
sourceRefs: this.sourceRefs,
|
80
|
+
link: this.link,
|
81
|
+
},
|
82
|
+
value: (0, portfolio_core_1.getUsdValueSum)([inputAsset.value, (outputAsset === null || outputAsset === void 0 ? void 0 : outputAsset.value) || 0]),
|
83
|
+
};
|
84
|
+
}
|
85
|
+
}
|
86
|
+
exports.ElementTradeBuilder = ElementTradeBuilder;
|
87
|
+
//# sourceMappingURL=ElementTradeBuilder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ElementTradeBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/ElementTradeBuilder.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,14 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
|
4
|
-
export declare class LevPositionBuilder {
|
1
|
+
import { CrossLevPosition, IsoLevPosition, NetworkIdType } from '@sonarwatch/portfolio-core';
|
2
|
+
import { CrossLevPositionParams, IsoLevPositionParams } from './Params';
|
3
|
+
export declare class IsoLevPositionBuilder {
|
5
4
|
private params;
|
6
|
-
constructor(params:
|
7
|
-
|
8
|
-
get(
|
5
|
+
constructor(params: IsoLevPositionParams);
|
6
|
+
get(networkId: NetworkIdType): IsoLevPosition;
|
7
|
+
get tokenAddress(): string | undefined;
|
8
|
+
}
|
9
|
+
export declare class CrossLevPositionBuilder {
|
10
|
+
private params;
|
11
|
+
constructor(params: CrossLevPositionParams);
|
12
|
+
get(networkId: NetworkIdType): CrossLevPosition;
|
13
|
+
get tokenAddress(): string | undefined;
|
9
14
|
}
|
@@ -1,50 +1,35 @@
|
|
1
1
|
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.
|
3
|
+
exports.CrossLevPositionBuilder = exports.IsoLevPositionBuilder = void 0;
|
4
|
+
/* eslint-disable max-classes-per-file */
|
7
5
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
8
|
-
|
9
|
-
class LevPositionBuilder {
|
6
|
+
class IsoLevPositionBuilder {
|
10
7
|
constructor(params) {
|
11
8
|
this.params = params;
|
12
9
|
}
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
10
|
+
get(networkId) {
|
11
|
+
return Object.assign(Object.assign({}, this.params), { address: this.params.address
|
12
|
+
? (0, portfolio_core_1.formatTokenAddress)(this.params.address, networkId)
|
13
|
+
: undefined, value: this.params.value ||
|
14
|
+
(0, portfolio_core_1.getUsdValueSum)([this.params.collateralValue, this.params.pnlValue]) });
|
17
15
|
}
|
18
|
-
get(
|
19
|
-
|
20
|
-
let collateralValue;
|
21
|
-
if (this.params.collateralAmount) {
|
22
|
-
const collateralTokenPrice = tokenPrices.get(this.params.address);
|
23
|
-
if (!collateralTokenPrice)
|
24
|
-
return null;
|
25
|
-
collateralValue = this.params.collateralAmount
|
26
|
-
.dividedBy(Math.pow(10, collateralTokenPrice.decimals))
|
27
|
-
.multipliedBy(collateralTokenPrice.price);
|
28
|
-
}
|
29
|
-
else if (!this.params.collateralValue) {
|
30
|
-
return null;
|
31
|
-
}
|
32
|
-
else {
|
33
|
-
collateralValue = new bignumber_js_1.default(this.params.collateralValue);
|
34
|
-
}
|
35
|
-
return {
|
36
|
-
address: (0, portfolio_core_1.formatTokenAddress)(this.params.address, networkId),
|
37
|
-
side: this.params.side,
|
38
|
-
liquidationPrice: this.params.liquidationPrice || null,
|
39
|
-
collateralValue: collateralValue.toNumber(),
|
40
|
-
sizeValue: this.params.sizeValue.toNumber(),
|
41
|
-
pnlValue: (_a = this.params.pnlValue) === null || _a === void 0 ? void 0 : _a.toNumber(),
|
42
|
-
value: collateralValue.plus(this.params.pnlValue || 0).toNumber(),
|
43
|
-
name: this.params.name,
|
44
|
-
imageUri: this.params.imageUri,
|
45
|
-
leverage: this.params.leverage,
|
46
|
-
};
|
16
|
+
get tokenAddress() {
|
17
|
+
return this.params.address;
|
47
18
|
}
|
48
19
|
}
|
49
|
-
exports.
|
20
|
+
exports.IsoLevPositionBuilder = IsoLevPositionBuilder;
|
21
|
+
class CrossLevPositionBuilder {
|
22
|
+
constructor(params) {
|
23
|
+
this.params = params;
|
24
|
+
}
|
25
|
+
get(networkId) {
|
26
|
+
return Object.assign(Object.assign({}, this.params), { address: this.params.address
|
27
|
+
? (0, portfolio_core_1.formatTokenAddress)(this.params.address, networkId)
|
28
|
+
: undefined });
|
29
|
+
}
|
30
|
+
get tokenAddress() {
|
31
|
+
return this.params.address;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
exports.CrossLevPositionBuilder = CrossLevPositionBuilder;
|
50
35
|
//# sourceMappingURL=LevPositionBuilder.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LevPositionBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/LevPositionBuilder.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"LevPositionBuilder.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/elementbuilder/LevPositionBuilder.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,+DAMoC;AAGpC,MAAa,qBAAqB;IAGhC,YAAY,MAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,SAAwB;QAC1B,uCACK,IAAI,CAAC,MAAM,KACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC1B,CAAC,CAAC,IAAA,mCAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;gBACpD,CAAC,CAAC,SAAS,EACb,KAAK,EACH,IAAI,CAAC,MAAM,CAAC,KAAK;gBACjB,IAAA,+BAAc,EAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IACrE;IACJ,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACF;AAtBD,sDAsBC;AAED,MAAa,uBAAuB;IAGlC,YAAY,MAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,GAAG,CAAC,SAAwB;QAC1B,uCACK,IAAI,CAAC,MAAM,KACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC1B,CAAC,CAAC,IAAA,mCAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;gBACpD,CAAC,CAAC,SAAS,IACb;IACJ,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACF;AAnBD,0DAmBC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="@drift-labs/sdk/node_modules/@solana/web3.js" />
|
2
2
|
/// <reference types="jito-ts/node_modules/@solana/web3.js" />
|
3
|
-
import {
|
3
|
+
import { CrossLevPosition, IsoLevPosition, PortfolioAssetAttributes, PortfolioElementLabel, PortfolioElementTypeType, SourceRef, UsdValue } from '@sonarwatch/portfolio-core';
|
4
4
|
import { PublicKey } from '@solana/web3.js';
|
5
5
|
import BigNumber from 'bignumber.js';
|
6
6
|
export type Params = {
|
@@ -36,18 +36,6 @@ export type ConcentratedLiquidityParams = {
|
|
36
36
|
ref?: string | PublicKey;
|
37
37
|
link?: string;
|
38
38
|
};
|
39
|
-
export type LevPositionParams = {
|
40
|
-
address: string;
|
41
|
-
collateralAmount?: BigNumber;
|
42
|
-
collateralValue?: UsdValue;
|
43
|
-
side: LeverageSide;
|
44
|
-
sizeValue: BigNumber;
|
45
|
-
liquidationPrice?: BigNumber;
|
46
|
-
pnlValue?: BigNumber;
|
47
|
-
name?: string;
|
48
|
-
imageUri?: string;
|
49
|
-
leverage?: number;
|
50
|
-
};
|
51
39
|
export type PortfolioAssetGenericParams = {
|
52
40
|
address?: string | PublicKey;
|
53
41
|
amount?: number | BigNumber | string;
|
@@ -62,3 +50,19 @@ export type PortfolioAssetTokenParams = {
|
|
62
50
|
attributes?: PortfolioAssetAttributes;
|
63
51
|
alreadyShifted?: boolean;
|
64
52
|
};
|
53
|
+
export type TradeParams = {
|
54
|
+
inputAsset: PortfolioAssetTokenParams;
|
55
|
+
outputAsset: {
|
56
|
+
address: string | PublicKey;
|
57
|
+
amount?: number | BigNumber | string;
|
58
|
+
};
|
59
|
+
initialInputAmount: number | BigNumber | string;
|
60
|
+
expectedOutputAmount?: number | BigNumber | string;
|
61
|
+
withdrawnOutputAmount: number | BigNumber | string;
|
62
|
+
createdAt?: number;
|
63
|
+
expireAt?: number;
|
64
|
+
};
|
65
|
+
export type IsoLevPositionParams = Omit<IsoLevPosition, 'value'> & {
|
66
|
+
value?: UsdValue;
|
67
|
+
};
|
68
|
+
export type CrossLevPositionParams = CrossLevPosition;
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { NetworkIdType, PortfolioAssetAttributes, PortfolioAssetToken, TokenPrice, TokenPriceUnderlying } from '@sonarwatch/portfolio-core';
|
2
|
-
export default function tokenPriceToAssetToken(address: string, amount: number, networkId: NetworkIdType, tokenPrice?: TokenPrice | TokenPriceUnderlying | null, price?: number, attributes?: PortfolioAssetAttributes,
|
2
|
+
export default function tokenPriceToAssetToken(address: string, amount: number, networkId: NetworkIdType, tokenPrice?: TokenPrice | TokenPriceUnderlying | null, price?: number, attributes?: PortfolioAssetAttributes, link?: string): PortfolioAssetToken;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const portfolio_core_1 = require("@sonarwatch/portfolio-core");
|
4
|
-
function tokenPriceToAssetToken(address, amount, networkId, tokenPrice, price, attributes,
|
4
|
+
function tokenPriceToAssetToken(address, amount, networkId, tokenPrice, price, attributes, link) {
|
5
5
|
const fPrice = (tokenPrice === null || tokenPrice === void 0 ? void 0 : tokenPrice.price) || price || null;
|
6
6
|
return {
|
7
7
|
type: portfolio_core_1.PortfolioAssetType.token,
|
@@ -13,7 +13,7 @@ function tokenPriceToAssetToken(address, amount, networkId, tokenPrice, price, a
|
|
13
13
|
price: fPrice,
|
14
14
|
},
|
15
15
|
attributes: attributes || {},
|
16
|
-
|
16
|
+
link,
|
17
17
|
};
|
18
18
|
}
|
19
19
|
exports.default = tokenPriceToAssetToken;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tokenPriceToAssetToken.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/tokenPriceToAssetToken.ts"],"names":[],"mappings":";;AAAA,+DASoC;AAEpC,SAAwB,sBAAsB,CAC5C,OAAe,EACf,MAAc,EACd,SAAwB,EACxB,UAAqD,EACrD,KAAc,EACd,UAAqC,EACrC,
|
1
|
+
{"version":3,"file":"tokenPriceToAssetToken.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/tokenPriceToAssetToken.ts"],"names":[],"mappings":";;AAAA,+DASoC;AAEpC,SAAwB,sBAAsB,CAC5C,OAAe,EACf,MAAc,EACd,SAAwB,EACxB,UAAqD,EACrD,KAAc,EACd,UAAqC,EACrC,IAAa;IAEb,MAAM,MAAM,GAAa,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,KAAK,KAAI,KAAK,IAAI,IAAI,CAAC;IAC5D,OAAO;QACL,IAAI,EAAE,mCAAkB,CAAC,KAAK;QAC9B,SAAS;QACT,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI;QACtC,IAAI,EAAE;YACJ,OAAO,EAAE,IAAA,mCAAkB,EAAC,OAAO,EAAE,SAAS,CAAC;YAC/C,MAAM;YACN,KAAK,EAAE,MAAM;SACd;QACD,UAAU,EAAE,UAAU,IAAI,EAAE;QAC5B,IAAI;KACL,CAAC;AACJ,CAAC;AAtBD,yCAsBC"}
|
@@ -1,16 +1,16 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.poolQueryMsg = exports.minterQueryMsg = exports.tokenInfoQueryMsg = exports.infoQueryMsg = void 0;
|
4
|
-
exports.infoQueryMsg = JSON.parse(`{
|
5
|
-
"info": {}
|
4
|
+
exports.infoQueryMsg = JSON.parse(`{
|
5
|
+
"info": {}
|
6
6
|
}`);
|
7
|
-
exports.tokenInfoQueryMsg = JSON.parse(`{
|
8
|
-
"token_info": {}
|
7
|
+
exports.tokenInfoQueryMsg = JSON.parse(`{
|
8
|
+
"token_info": {}
|
9
9
|
}`);
|
10
|
-
exports.minterQueryMsg = JSON.parse(`{
|
11
|
-
"minter": {}
|
10
|
+
exports.minterQueryMsg = JSON.parse(`{
|
11
|
+
"minter": {}
|
12
12
|
}`);
|
13
|
-
exports.poolQueryMsg = JSON.parse(`{
|
14
|
-
"pool": {}
|
13
|
+
exports.poolQueryMsg = JSON.parse(`{
|
14
|
+
"pool": {}
|
15
15
|
}`);
|
16
16
|
//# sourceMappingURL=constants.js.map
|
@@ -1,10 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
function getQueryBalanceByOwner(owner) {
|
4
|
-
return JSON.parse(`{
|
5
|
-
"balance": {
|
6
|
-
"address": "${owner}"
|
7
|
-
}
|
4
|
+
return JSON.parse(`{
|
5
|
+
"balance": {
|
6
|
+
"address": "${owner}"
|
7
|
+
}
|
8
8
|
}`);
|
9
9
|
}
|
10
10
|
exports.default = getQueryBalanceByOwner;
|