@pendle/sdk-boros 1.1.4 → 1.1.5-strategies-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.
Files changed (34) hide show
  1. package/dist/entities/Calculator/exchangeFees.d.ts +47 -0
  2. package/dist/entities/Calculator/exchangeFees.js +93 -0
  3. package/dist/entities/Calculator/exchangeFees.js.map +1 -0
  4. package/dist/entities/Calculator/index.d.ts +7 -0
  5. package/dist/entities/Calculator/index.js +24 -0
  6. package/dist/entities/Calculator/index.js.map +1 -0
  7. package/dist/entities/Calculator/marginCalculator.d.ts +10 -0
  8. package/dist/entities/Calculator/marginCalculator.js +64 -0
  9. package/dist/entities/Calculator/marginCalculator.js.map +1 -0
  10. package/dist/entities/Calculator/strategyApr.d.ts +30 -0
  11. package/dist/entities/Calculator/strategyApr.js +97 -0
  12. package/dist/entities/Calculator/strategyApr.js.map +1 -0
  13. package/dist/entities/Calculator/strategyExecution.d.ts +28 -0
  14. package/dist/entities/Calculator/strategyExecution.js +137 -0
  15. package/dist/entities/Calculator/strategyExecution.js.map +1 -0
  16. package/dist/entities/Calculator/strategyFinder.d.ts +13 -0
  17. package/dist/entities/Calculator/strategyFinder.js +201 -0
  18. package/dist/entities/Calculator/strategyFinder.js.map +1 -0
  19. package/dist/entities/Calculator/strategyUtils.d.ts +18 -0
  20. package/dist/entities/Calculator/strategyUtils.js +68 -0
  21. package/dist/entities/Calculator/strategyUtils.js.map +1 -0
  22. package/dist/entities/Calculator/types.d.ts +69 -0
  23. package/dist/entities/Calculator/types.js +3 -0
  24. package/dist/entities/Calculator/types.js.map +1 -0
  25. package/dist/entities/index.d.ts +1 -0
  26. package/dist/entities/index.js +1 -0
  27. package/dist/entities/index.js.map +1 -1
  28. package/dist/errors/ErrorCodes.d.ts +67 -0
  29. package/dist/errors/ErrorCodes.js +70 -0
  30. package/dist/errors/ErrorCodes.js.map +1 -0
  31. package/dist/errors/index.d.ts +1 -0
  32. package/dist/errors/index.js +1 -0
  33. package/dist/errors/index.js.map +1 -1
  34. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
2
+ export declare const EXCHANGE_PERP_FEES: Record<string, {
3
+ maker: number;
4
+ taker: number;
5
+ }>;
6
+ export declare const DEFAULT_PERP_FEE: {
7
+ maker: number;
8
+ taker: number;
9
+ };
10
+ export type FeeType = 'maker' | 'taker';
11
+ export declare function getExchangePerpFee(exchange: string, feeType?: FeeType): number;
12
+ export declare function getBorosFeesFromMarket(market: MarketResponse): {
13
+ tradeFee: number;
14
+ settlementFee: number;
15
+ };
16
+ export declare function getStrategyFees(longMarket: MarketResponse, shortMarket: MarketResponse): {
17
+ exchangeFee1: number;
18
+ exchangeFee2: number;
19
+ borosTradeFee: number;
20
+ borosSettlementFee: number;
21
+ };
22
+ export type VipTier = 'base' | 'vip1' | 'vip2' | 'vip3' | 'vip4' | 'vip5';
23
+ export declare const BINANCE_VIP_FEES: Record<VipTier, {
24
+ maker: number;
25
+ taker: number;
26
+ }>;
27
+ export declare const HYPERLIQUID_TIER_FEES: Record<string, {
28
+ maker: number;
29
+ taker: number;
30
+ }>;
31
+ export declare const OKX_VIP_FEES: Record<VipTier, {
32
+ maker: number;
33
+ taker: number;
34
+ }>;
35
+ export declare function getExchangePerpFeeWithTier(exchange: string, tier?: VipTier, feeType?: FeeType): number;
36
+ export declare function formatFeeSummary(fees: {
37
+ exchangeFee1: number;
38
+ exchangeFee2: number;
39
+ borosTradeFee: number;
40
+ borosSettlementFee: number;
41
+ }): {
42
+ exchangeFee1Pct: string;
43
+ exchangeFee2Pct: string;
44
+ borosTradeFeePct: string;
45
+ borosSettlementFeePct: string;
46
+ totalFeePct: string;
47
+ };
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OKX_VIP_FEES = exports.HYPERLIQUID_TIER_FEES = exports.BINANCE_VIP_FEES = exports.DEFAULT_PERP_FEE = exports.EXCHANGE_PERP_FEES = void 0;
4
+ exports.getExchangePerpFee = getExchangePerpFee;
5
+ exports.getBorosFeesFromMarket = getBorosFeesFromMarket;
6
+ exports.getStrategyFees = getStrategyFees;
7
+ exports.getExchangePerpFeeWithTier = getExchangePerpFeeWithTier;
8
+ exports.formatFeeSummary = formatFeeSummary;
9
+ exports.EXCHANGE_PERP_FEES = {
10
+ Binance: {
11
+ maker: 0.0002,
12
+ taker: 0.0005,
13
+ },
14
+ Hyperliquid: {
15
+ maker: 0.0001,
16
+ taker: 0.00035,
17
+ },
18
+ OKX: {
19
+ maker: 0.0002,
20
+ taker: 0.0005,
21
+ },
22
+ };
23
+ exports.DEFAULT_PERP_FEE = {
24
+ maker: 0.0002,
25
+ taker: 0.0005,
26
+ };
27
+ function getExchangePerpFee(exchange, feeType = 'taker') {
28
+ const fees = exports.EXCHANGE_PERP_FEES[exchange] ?? exports.DEFAULT_PERP_FEE;
29
+ return fees[feeType];
30
+ }
31
+ function getBorosFeesFromMarket(market) {
32
+ const tradeFee = market.config.takerFee ? Number(market.config.takerFee) / 1e18 : 0.0015;
33
+ const settlementFee = market.extConfig.settleFeeRate ? Number(market.extConfig.settleFeeRate) / 1e18 : 0.0015;
34
+ return {
35
+ tradeFee,
36
+ settlementFee,
37
+ };
38
+ }
39
+ function getStrategyFees(longMarket, shortMarket) {
40
+ const exchange1 = longMarket.metadata?.platformName ?? 'Unknown';
41
+ const exchange2 = shortMarket.metadata?.platformName ?? 'Unknown';
42
+ const borosFees = getBorosFeesFromMarket(longMarket);
43
+ return {
44
+ exchangeFee1: getExchangePerpFee(exchange1, 'taker'),
45
+ exchangeFee2: getExchangePerpFee(exchange2, 'taker'),
46
+ borosTradeFee: borosFees.tradeFee,
47
+ borosSettlementFee: borosFees.settlementFee,
48
+ };
49
+ }
50
+ exports.BINANCE_VIP_FEES = {
51
+ base: { maker: 0.0002, taker: 0.0005 },
52
+ vip1: { maker: 0.00016, taker: 0.0004 },
53
+ vip2: { maker: 0.00014, taker: 0.00035 },
54
+ vip3: { maker: 0.00012, taker: 0.00032 },
55
+ vip4: { maker: 0.0001, taker: 0.0003 },
56
+ vip5: { maker: 0.00008, taker: 0.00027 },
57
+ };
58
+ exports.HYPERLIQUID_TIER_FEES = {
59
+ base: { maker: 0.0001, taker: 0.00035 },
60
+ referral: { maker: 0.0001, taker: 0.00035 },
61
+ vip: { maker: 0.00005, taker: 0.00025 },
62
+ };
63
+ exports.OKX_VIP_FEES = {
64
+ base: { maker: 0.0002, taker: 0.0005 },
65
+ vip1: { maker: 0.00018, taker: 0.00045 },
66
+ vip2: { maker: 0.00015, taker: 0.0004 },
67
+ vip3: { maker: 0.00012, taker: 0.00035 },
68
+ vip4: { maker: 0.0001, taker: 0.0003 },
69
+ vip5: { maker: 0.00008, taker: 0.00025 },
70
+ };
71
+ function getExchangePerpFeeWithTier(exchange, tier = 'base', feeType = 'taker') {
72
+ switch (exchange) {
73
+ case 'Binance':
74
+ return exports.BINANCE_VIP_FEES[tier]?.[feeType] ?? exports.BINANCE_VIP_FEES.base[feeType];
75
+ case 'OKX':
76
+ return exports.OKX_VIP_FEES[tier]?.[feeType] ?? exports.OKX_VIP_FEES.base[feeType];
77
+ case 'Hyperliquid':
78
+ return exports.HYPERLIQUID_TIER_FEES.base[feeType];
79
+ default:
80
+ return exports.DEFAULT_PERP_FEE[feeType];
81
+ }
82
+ }
83
+ function formatFeeSummary(fees) {
84
+ const totalFee = 2 * (fees.exchangeFee1 + fees.exchangeFee2 + fees.borosTradeFee + fees.borosSettlementFee);
85
+ return {
86
+ exchangeFee1Pct: `${(fees.exchangeFee1 * 100).toFixed(3)}%`,
87
+ exchangeFee2Pct: `${(fees.exchangeFee2 * 100).toFixed(3)}%`,
88
+ borosTradeFeePct: `${(fees.borosTradeFee * 100).toFixed(3)}%`,
89
+ borosSettlementFeePct: `${(fees.borosSettlementFee * 100).toFixed(3)}%`,
90
+ totalFeePct: `${(totalFee * 100).toFixed(3)}%`,
91
+ };
92
+ }
93
+ //# sourceMappingURL=exchangeFees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeFees.js","sourceRoot":"","sources":["../../../src/entities/Calculator/exchangeFees.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './types';
2
+ export * from './strategyFinder';
3
+ export * from './strategyExecution';
4
+ export * from './strategyApr';
5
+ export * from './exchangeFees';
6
+ export * from './marginCalculator';
7
+ export * from './strategyUtils';
@@ -0,0 +1,24 @@
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("./types"), exports);
18
+ __exportStar(require("./strategyFinder"), exports);
19
+ __exportStar(require("./strategyExecution"), exports);
20
+ __exportStar(require("./strategyApr"), exports);
21
+ __exportStar(require("./exchangeFees"), exports);
22
+ __exportStar(require("./marginCalculator"), exports);
23
+ __exportStar(require("./strategyUtils"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entities/Calculator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,iDAA+B;AAC/B,qDAAmC;AACnC,kDAAgC"}
@@ -0,0 +1,10 @@
1
+ import { FixedX18 } from '@pendle/boros-offchain-math';
2
+ import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
3
+ export declare function getMarginRequiredFor1YU(market: MarketResponse, leverage?: number): number;
4
+ export declare function getMarginRequiredFor1YUFixedX18(market: MarketResponse, leverage?: number): FixedX18;
5
+ export declare function getStrategyBorosMargin(longMarket: MarketResponse, shortMarket: MarketResponse, leverage?: number): number;
6
+ export declare function getStrategyMarginRequirements(longMarket: MarketResponse, shortMarket: MarketResponse, leverage?: number): {
7
+ marginRequired1: number;
8
+ marginRequired2: number;
9
+ totalBorosMargin: number;
10
+ };
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarginRequiredFor1YU = getMarginRequiredFor1YU;
4
+ exports.getMarginRequiredFor1YUFixedX18 = getMarginRequiredFor1YUFixedX18;
5
+ exports.getStrategyBorosMargin = getStrategyBorosMargin;
6
+ exports.getStrategyMarginRequirements = getStrategyMarginRequirements;
7
+ const boros_offchain_math_1 = require("@pendle/boros-offchain-math");
8
+ const market_1 = require("../market/market");
9
+ const DEFAULT_MIN_MARGIN_INDEX_RATE = boros_offchain_math_1.FixedX18.fromNumber(0.1);
10
+ const DEFAULT_MIN_MARGIN_INDEX_DURATION_S = 604800;
11
+ const ONE_YU = 10n ** 18n;
12
+ function extractMarketParams(market, leverage) {
13
+ const effectiveLeverage = leverage ?? market.metadata?.maxLeverage ?? 1;
14
+ const marginFactor = market.config.kIM
15
+ ? boros_offchain_math_1.FixedX18.fromRawValue(BigInt(market.config.kIM))
16
+ : boros_offchain_math_1.FixedX18.fromNumber(0.5);
17
+ const minMarginIndexDuration_s = market.config.tThresh ?? DEFAULT_MIN_MARGIN_INDEX_DURATION_S;
18
+ const timeToMaturity = market.data?.timeToMaturity ??
19
+ Math.max(0, market.imData.maturity - Math.floor(Date.now() / 1000));
20
+ const impliedApr = market.data?.ammImpliedApr ?? market.data?.midApr ?? 0;
21
+ const orderRate = boros_offchain_math_1.FixedX18.fromNumber(impliedApr);
22
+ const markRate = boros_offchain_math_1.FixedX18.fromNumber(market.data?.markApr ?? impliedApr);
23
+ return {
24
+ marginFactor,
25
+ markRate,
26
+ minMarginIndexRate: (0, boros_offchain_math_1.getRateAtTick)(BigInt(market.imData.iTickThresh), BigInt(market.imData.tickStep)),
27
+ minMarginIndexDuration_s,
28
+ timeToMaturity,
29
+ leverage: effectiveLeverage,
30
+ orderRate,
31
+ isMarketOrder: true,
32
+ };
33
+ }
34
+ function getMarginRequiredFor1YU(market, leverage) {
35
+ const params = extractMarketParams(market, leverage);
36
+ const marginBigInt = market_1.Market.getInitialMarginByOrderSize({
37
+ ...params,
38
+ orderSize: ONE_YU,
39
+ }, false);
40
+ return Number(marginBigInt) / 1e18;
41
+ }
42
+ function getMarginRequiredFor1YUFixedX18(market, leverage) {
43
+ const params = extractMarketParams(market, leverage);
44
+ const marginBigInt = market_1.Market.getInitialMarginByOrderSize({
45
+ ...params,
46
+ orderSize: ONE_YU,
47
+ }, false);
48
+ return boros_offchain_math_1.FixedX18.fromRawValue(marginBigInt);
49
+ }
50
+ function getStrategyBorosMargin(longMarket, shortMarket, leverage) {
51
+ const marginRequired1 = getMarginRequiredFor1YU(longMarket, leverage);
52
+ const marginRequired2 = getMarginRequiredFor1YU(shortMarket, leverage);
53
+ return marginRequired1 + marginRequired2;
54
+ }
55
+ function getStrategyMarginRequirements(longMarket, shortMarket, leverage) {
56
+ const marginRequired1 = getMarginRequiredFor1YU(longMarket, leverage);
57
+ const marginRequired2 = getMarginRequiredFor1YU(shortMarket, leverage);
58
+ return {
59
+ marginRequired1,
60
+ marginRequired2,
61
+ totalBorosMargin: marginRequired1 + marginRequired2,
62
+ };
63
+ }
64
+ //# sourceMappingURL=marginCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marginCalculator.js","sourceRoot":"","sources":["../../../src/entities/Calculator/marginCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { FixedX18 } from '@pendle/boros-offchain-math';
2
+ import type { Strategy, StrategyCalculatorInput, StrategyCalculatorResult, StrategyFixedAprParams } from './types';
3
+ export declare function calculateStrategyFixedApr(params: StrategyFixedAprParams): number;
4
+ export declare function calculateStrategyFixedAprFixedX18(params: {
5
+ perpLeverage: number;
6
+ daysToMaturity: number;
7
+ borosMargin: FixedX18;
8
+ impliedApr1: FixedX18;
9
+ impliedApr2: FixedX18;
10
+ exchangeFee1: FixedX18;
11
+ exchangeFee2: FixedX18;
12
+ borosTradeFee: FixedX18;
13
+ borosSettlementFee: FixedX18;
14
+ }): FixedX18;
15
+ export declare function calculateStrategy(input: StrategyCalculatorInput): StrategyCalculatorResult;
16
+ export declare function calculateStrategyAprFromStrategy(params: {
17
+ strategy: Strategy;
18
+ perpLeverage: number;
19
+ borosMargin: number;
20
+ exchangeFee1?: number;
21
+ exchangeFee2?: number;
22
+ borosTradeFee?: number;
23
+ borosSettlementFee?: number;
24
+ }): number;
25
+ export declare function calculateAprTimesMaxLeverage(strategy: Strategy, borosMargin: number, fees?: {
26
+ exchangeFee1?: number;
27
+ exchangeFee2?: number;
28
+ borosTradeFee?: number;
29
+ borosSettlementFee?: number;
30
+ }): number;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateStrategyFixedApr = calculateStrategyFixedApr;
4
+ exports.calculateStrategyFixedAprFixedX18 = calculateStrategyFixedAprFixedX18;
5
+ exports.calculateStrategy = calculateStrategy;
6
+ exports.calculateStrategyAprFromStrategy = calculateStrategyAprFromStrategy;
7
+ exports.calculateAprTimesMaxLeverage = calculateAprTimesMaxLeverage;
8
+ const boros_offchain_math_1 = require("@pendle/boros-offchain-math");
9
+ const strategyUtils_1 = require("./strategyUtils");
10
+ function calculateStrategyFixedApr(params) {
11
+ const { perpLeverage, daysToMaturity, borosMargin, impliedApr1, impliedApr2, exchangeFee1, exchangeFee2, borosTradeFee, borosSettlementFee, } = params;
12
+ if (daysToMaturity <= 0) {
13
+ return 0;
14
+ }
15
+ const impliedAprDiff = Math.abs(impliedApr1 - impliedApr2);
16
+ const annualizationFactor = 365 / daysToMaturity;
17
+ const annualizedExchangeFees = annualizationFactor * (exchangeFee1 + exchangeFee2);
18
+ const borosFees = 2 * (borosSettlementFee + borosTradeFee);
19
+ const totalFees = annualizedExchangeFees + borosFees;
20
+ const leverageFactor = 1 / (2 / perpLeverage + borosMargin);
21
+ const fixedApr = leverageFactor * (impliedAprDiff - totalFees);
22
+ return fixedApr;
23
+ }
24
+ function calculateStrategyFixedAprFixedX18(params) {
25
+ const { perpLeverage, daysToMaturity, borosMargin, impliedApr1, impliedApr2, exchangeFee1, exchangeFee2, borosTradeFee, borosSettlementFee, } = params;
26
+ if (daysToMaturity <= 0) {
27
+ return boros_offchain_math_1.FixedX18.ZERO;
28
+ }
29
+ const impliedAprDiff = impliedApr1.sub(impliedApr2).abs();
30
+ const annualizationFactor = boros_offchain_math_1.FixedX18.fromNumber(365 / daysToMaturity);
31
+ const two = boros_offchain_math_1.FixedX18.fromNumber(2);
32
+ const annualizedExchangeFees = exchangeFee1.add(exchangeFee2).mulDown(annualizationFactor);
33
+ const borosFees = borosSettlementFee.add(borosTradeFee).mulDown(two);
34
+ const totalFees = annualizedExchangeFees.add(borosFees);
35
+ const netReturn = impliedAprDiff.sub(totalFees);
36
+ const twoOverPerpLev = boros_offchain_math_1.FixedX18.fromNumber(2 / perpLeverage);
37
+ const denominator = twoOverPerpLev.add(borosMargin);
38
+ const leverageFactor = boros_offchain_math_1.FixedX18.ONE.divDown(denominator);
39
+ const fixedApr = leverageFactor.mulDown(netReturn);
40
+ return fixedApr;
41
+ }
42
+ function calculateStrategy(input) {
43
+ const { totalCapital, daysToMaturity, perpLeverage, borosMargin, impliedApr1, impliedApr2, exchangeFee1, exchangeFee2, borosTradeFee, borosSettlementFee, } = input;
44
+ const params = {
45
+ perpLeverage,
46
+ daysToMaturity,
47
+ borosMargin: borosMargin / 100,
48
+ impliedApr1: impliedApr1 / 100,
49
+ impliedApr2: impliedApr2 / 100,
50
+ exchangeFee1: exchangeFee1 / 100,
51
+ exchangeFee2: exchangeFee2 / 100,
52
+ borosTradeFee: borosTradeFee / 100,
53
+ borosSettlementFee: borosSettlementFee / 100,
54
+ };
55
+ const fixedApr = calculateStrategyFixedApr(params);
56
+ const roi = fixedApr * (daysToMaturity / 365);
57
+ const estimatedEarnings = totalCapital * roi;
58
+ const estimatedEarningsPerYear = totalCapital * fixedApr;
59
+ return {
60
+ fixedApr,
61
+ fixedAprPercentage: fixedApr * 100,
62
+ estimatedEarnings,
63
+ estimatedEarningsPerYear,
64
+ };
65
+ }
66
+ function calculateStrategyAprFromStrategy(params) {
67
+ const { strategy, perpLeverage, borosMargin, exchangeFee1 = 0.0005, exchangeFee2 = 0.0005, borosTradeFee = 0.0005, borosSettlementFee = 0.002, } = params;
68
+ const daysToMaturity = (0, strategyUtils_1.calculateDaysToMaturity)((0, strategyUtils_1.getMaturity)(strategy.longMarket.market));
69
+ return calculateStrategyFixedApr({
70
+ perpLeverage,
71
+ daysToMaturity,
72
+ borosMargin,
73
+ impliedApr1: (0, strategyUtils_1.getImpliedApr)(strategy.longMarket.market),
74
+ impliedApr2: (0, strategyUtils_1.getImpliedApr)(strategy.shortMarket.market),
75
+ exchangeFee1,
76
+ exchangeFee2,
77
+ borosTradeFee,
78
+ borosSettlementFee,
79
+ });
80
+ }
81
+ function calculateAprTimesMaxLeverage(strategy, borosMargin, fees) {
82
+ const { exchangeFee1 = 0.0005, exchangeFee2 = 0.0005, borosTradeFee = 0.0005, borosSettlementFee = 0.002, } = fees ?? {};
83
+ const daysToMaturity = (0, strategyUtils_1.calculateDaysToMaturity)((0, strategyUtils_1.getMaturity)(strategy.longMarket.market));
84
+ const maxPerpLeverage = Math.min((0, strategyUtils_1.getMaxLeverage)(strategy.longMarket.market), (0, strategyUtils_1.getMaxLeverage)(strategy.shortMarket.market));
85
+ return calculateStrategyFixedApr({
86
+ perpLeverage: maxPerpLeverage,
87
+ daysToMaturity,
88
+ borosMargin,
89
+ impliedApr1: (0, strategyUtils_1.getImpliedApr)(strategy.longMarket.market),
90
+ impliedApr2: (0, strategyUtils_1.getImpliedApr)(strategy.shortMarket.market),
91
+ exchangeFee1,
92
+ exchangeFee2,
93
+ borosTradeFee,
94
+ borosSettlementFee,
95
+ });
96
+ }
97
+ //# sourceMappingURL=strategyApr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategyApr.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyApr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { Strategy, StrategyExecutionPlan } from './types';
2
+ export type GenerateExecutionPlanParams = {
3
+ strategy: Strategy;
4
+ totalCapital: number;
5
+ perpLeverage: number;
6
+ borosMargin: number;
7
+ };
8
+ export declare function generateExecutionPlan(params: GenerateExecutionPlanParams): StrategyExecutionPlan;
9
+ export declare function getExecutionStepsSummary(plan: StrategyExecutionPlan): string[];
10
+ export declare function formatExecutionStepsForUI(plan: StrategyExecutionPlan): Array<{
11
+ action: 'Long' | 'Short';
12
+ size: string;
13
+ description: string;
14
+ platform: 'perp' | 'boros';
15
+ exchange: string;
16
+ clickable: boolean;
17
+ }>;
18
+ export declare function calculateCapitalAllocation(params: {
19
+ totalCapital: number;
20
+ perpLeverage: number;
21
+ liquidationThreshold?: number;
22
+ }): {
23
+ capitalPerPerpLeg: number;
24
+ capitalPerBorosLeg: number;
25
+ totalPerpCapital: number;
26
+ totalBorosCapital: number;
27
+ notionalExposurePerLeg: number;
28
+ };
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateExecutionPlan = generateExecutionPlan;
4
+ exports.getExecutionStepsSummary = getExecutionStepsSummary;
5
+ exports.formatExecutionStepsForUI = formatExecutionStepsForUI;
6
+ exports.calculateCapitalAllocation = calculateCapitalAllocation;
7
+ const strategyUtils_1 = require("./strategyUtils");
8
+ function generateExecutionPlan(params) {
9
+ const { strategy, totalCapital, perpLeverage, borosMargin } = params;
10
+ const positionSizePerLeg = totalCapital / (2 / perpLeverage + borosMargin);
11
+ const yuSize = positionSizePerLeg;
12
+ const asset = (0, strategyUtils_1.getAssetSymbol)(strategy.longMarket.market);
13
+ const longExchange = (0, strategyUtils_1.getPlatformName)(strategy.longMarket.market);
14
+ const shortExchange = (0, strategyUtils_1.getPlatformName)(strategy.shortMarket.market);
15
+ const steps = [
16
+ {
17
+ stepNumber: 1,
18
+ action: 'long',
19
+ platform: 'perp',
20
+ exchange: longExchange,
21
+ description: `Long ${asset} on ${longExchange} perpetual`,
22
+ details: {
23
+ asset,
24
+ size: `${positionSizePerLeg} ${asset}`,
25
+ marketType: 'perpetual',
26
+ },
27
+ },
28
+ {
29
+ stepNumber: 2,
30
+ action: 'short',
31
+ platform: 'perp',
32
+ exchange: shortExchange,
33
+ description: `Short ${asset} on ${shortExchange} perpetual`,
34
+ details: {
35
+ asset,
36
+ size: `${positionSizePerLeg} ${asset}`,
37
+ marketType: 'perpetual',
38
+ },
39
+ },
40
+ {
41
+ stepNumber: 3,
42
+ action: 'long',
43
+ platform: 'boros',
44
+ exchange: longExchange,
45
+ description: `Long ${asset} YU on Boros ${longExchange} market`,
46
+ marketId: (0, strategyUtils_1.getMarketId)(strategy.longMarket.market),
47
+ ammId: (0, strategyUtils_1.getAmmId)(strategy.longMarket.market),
48
+ details: {
49
+ asset,
50
+ size: `${yuSize} YU ${asset}`,
51
+ marketType: `Boros ${longExchange} market`,
52
+ },
53
+ },
54
+ {
55
+ stepNumber: 4,
56
+ action: 'short',
57
+ platform: 'boros',
58
+ exchange: shortExchange,
59
+ description: `Short ${asset} YU on Boros ${shortExchange} market`,
60
+ marketId: (0, strategyUtils_1.getMarketId)(strategy.shortMarket.market),
61
+ ammId: (0, strategyUtils_1.getAmmId)(strategy.shortMarket.market),
62
+ details: {
63
+ asset,
64
+ size: `${yuSize} YU ${asset}`,
65
+ marketType: `Boros ${shortExchange} market`,
66
+ },
67
+ },
68
+ ];
69
+ return {
70
+ strategy,
71
+ steps,
72
+ totalCapitalRequired: totalCapital,
73
+ perpLeverage,
74
+ borosMargin,
75
+ };
76
+ }
77
+ function getExecutionStepsSummary(plan) {
78
+ return plan.steps.map((step) => {
79
+ const actionText = step.action === 'long' ? 'Long' : 'Short';
80
+ return `${actionText} ${step.details.size} on ${step.details.marketType}`;
81
+ });
82
+ }
83
+ function formatExecutionStepsForUI(plan) {
84
+ const { strategy, totalCapitalRequired, perpLeverage, borosMargin } = plan;
85
+ const positionSize = totalCapitalRequired / (2 / perpLeverage + borosMargin);
86
+ const asset = (0, strategyUtils_1.getAssetSymbol)(strategy.longMarket.market);
87
+ const longExchange = (0, strategyUtils_1.getPlatformName)(strategy.longMarket.market);
88
+ const shortExchange = (0, strategyUtils_1.getPlatformName)(strategy.shortMarket.market);
89
+ return [
90
+ {
91
+ action: 'Long',
92
+ size: `${positionSize} ${asset}`,
93
+ description: `on ${longExchange} ${asset} perpetual`,
94
+ platform: 'perp',
95
+ exchange: longExchange,
96
+ clickable: true,
97
+ },
98
+ {
99
+ action: 'Short',
100
+ size: `${positionSize} ${asset}`,
101
+ description: `on ${shortExchange} ${asset} perpetual`,
102
+ platform: 'perp',
103
+ exchange: shortExchange,
104
+ clickable: true,
105
+ },
106
+ {
107
+ action: 'Long',
108
+ size: `${positionSize} YU ${asset}`,
109
+ description: `on Boros ${longExchange} ${asset} market`,
110
+ platform: 'boros',
111
+ exchange: longExchange,
112
+ clickable: true,
113
+ },
114
+ {
115
+ action: 'Short',
116
+ size: `${positionSize} YU ${asset}`,
117
+ description: `on Boros ${shortExchange} ${asset} market`,
118
+ platform: 'boros',
119
+ exchange: shortExchange,
120
+ clickable: true,
121
+ },
122
+ ];
123
+ }
124
+ function calculateCapitalAllocation(params) {
125
+ const { totalCapital, perpLeverage, liquidationThreshold } = params;
126
+ const capitalPerPerpLeg = totalCapital / 2;
127
+ const notionalExposurePerLeg = capitalPerPerpLeg * perpLeverage;
128
+ const capitalPerBorosLeg = 0;
129
+ return {
130
+ capitalPerPerpLeg,
131
+ capitalPerBorosLeg,
132
+ totalPerpCapital: totalCapital,
133
+ totalBorosCapital: 0,
134
+ notionalExposurePerLeg,
135
+ };
136
+ }
137
+ //# sourceMappingURL=strategyExecution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategyExecution.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyExecution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
2
+ import type { GetStrategiesParams, GetStrategiesResult, Strategy } from './types';
3
+ export declare function findStrategies(params?: GetStrategiesParams): Promise<GetStrategiesResult>;
4
+ export declare function findStrategiesByAsset(params: GetStrategiesParams & {
5
+ asset: string;
6
+ }): Promise<GetStrategiesResult>;
7
+ export declare function findStrategiesByMaturity(params: GetStrategiesParams & {
8
+ maturity: number;
9
+ }): Promise<GetStrategiesResult>;
10
+ export declare function findStrategiesByExchanges(params: GetStrategiesParams & {
11
+ exchanges: [string, string];
12
+ }): Promise<GetStrategiesResult>;
13
+ export declare function getStrategyByMarketIds(marketId1: number, marketId2: number, markets?: MarketResponse[]): Promise<Strategy | null>;
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findStrategies = findStrategies;
4
+ exports.findStrategiesByAsset = findStrategiesByAsset;
5
+ exports.findStrategiesByMaturity = findStrategiesByMaturity;
6
+ exports.findStrategiesByExchanges = findStrategiesByExchanges;
7
+ exports.getStrategyByMarketIds = getStrategyByMarketIds;
8
+ const module_1 = require("../../backend/secrettune/module");
9
+ const strategyUtils_1 = require("./strategyUtils");
10
+ async function fetchMarkets() {
11
+ const sdk = (0, module_1.getCoreSdk)();
12
+ const { data } = await sdk.markets.marketsControllerGetMarkets({});
13
+ return data.results;
14
+ }
15
+ function toStrategyMarket(market) {
16
+ if (!market.metadata) {
17
+ return null;
18
+ }
19
+ return { market };
20
+ }
21
+ function createMarketGroupKey(market) {
22
+ if (!market.metadata?.assetSymbol) {
23
+ return null;
24
+ }
25
+ return `${market.metadata.assetSymbol}-${market.tokenId}-${market.imData.maturity}`;
26
+ }
27
+ function createStrategyId(asset, collateralTokenId, maturity, longExchange, shortExchange) {
28
+ return `${asset}-${collateralTokenId}-${maturity}-${longExchange}-${shortExchange}`;
29
+ }
30
+ async function findStrategies(params) {
31
+ const { markets: providedMarkets, minImpliedAprSpread = 0, excludeDevTest = true } = params ?? {};
32
+ const markets = providedMarkets ?? (await fetchMarkets());
33
+ const validMarkets = markets.filter((market) => {
34
+ if (!market.metadata?.assetSymbol)
35
+ return false;
36
+ if (!market.metadata?.platformName)
37
+ return false;
38
+ if (market.state === 'Paused' || market.state === 'Halted')
39
+ return false;
40
+ if (excludeDevTest && market.metadata.isDevTest)
41
+ return false;
42
+ return true;
43
+ });
44
+ const marketGroups = new Map();
45
+ for (const market of validMarkets) {
46
+ const key = createMarketGroupKey(market);
47
+ if (!key)
48
+ continue;
49
+ const group = marketGroups.get(key) ?? [];
50
+ group.push(market);
51
+ marketGroups.set(key, group);
52
+ }
53
+ const strategies = [];
54
+ for (const [, groupMarkets] of marketGroups) {
55
+ if (groupMarkets.length < 2)
56
+ continue;
57
+ const byExchange = new Map();
58
+ for (const market of groupMarkets) {
59
+ const exchange = market.metadata.platformName;
60
+ const exchangeMarkets = byExchange.get(exchange) ?? [];
61
+ exchangeMarkets.push(market);
62
+ byExchange.set(exchange, exchangeMarkets);
63
+ }
64
+ const exchanges = Array.from(byExchange.keys());
65
+ if (exchanges.length < 2)
66
+ continue;
67
+ for (let i = 0; i < exchanges.length; i++) {
68
+ for (let j = i + 1; j < exchanges.length; j++) {
69
+ const exchange1Markets = byExchange.get(exchanges[i]);
70
+ const exchange2Markets = byExchange.get(exchanges[j]);
71
+ for (const market1 of exchange1Markets) {
72
+ for (const market2 of exchange2Markets) {
73
+ const strategyMarket1 = toStrategyMarket(market1);
74
+ const strategyMarket2 = toStrategyMarket(market2);
75
+ if (!strategyMarket1 || !strategyMarket2)
76
+ continue;
77
+ const impliedApr1 = (0, strategyUtils_1.getImpliedApr)(strategyMarket1.market);
78
+ const impliedApr2 = (0, strategyUtils_1.getImpliedApr)(strategyMarket2.market);
79
+ const impliedAprSpread = Math.abs(impliedApr1 - impliedApr2);
80
+ if (impliedAprSpread < minImpliedAprSpread)
81
+ continue;
82
+ let longMarket;
83
+ let shortMarket;
84
+ if (impliedApr1 >= impliedApr2) {
85
+ longMarket = strategyMarket1;
86
+ shortMarket = strategyMarket2;
87
+ }
88
+ else {
89
+ longMarket = strategyMarket2;
90
+ shortMarket = strategyMarket1;
91
+ }
92
+ const asset = (0, strategyUtils_1.getAssetSymbol)(longMarket.market);
93
+ const collateralTokenId = (0, strategyUtils_1.getCollateralTokenId)(longMarket.market);
94
+ const maturity = (0, strategyUtils_1.getMaturity)(longMarket.market);
95
+ const longExchange = (0, strategyUtils_1.getPlatformName)(longMarket.market);
96
+ const shortExchange = (0, strategyUtils_1.getPlatformName)(shortMarket.market);
97
+ const strategy = {
98
+ id: createStrategyId(asset, collateralTokenId, maturity, longExchange, shortExchange),
99
+ longMarket,
100
+ shortMarket,
101
+ };
102
+ strategies.push(strategy);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ strategies.sort((a, b) => {
109
+ const spreadA = Math.abs((0, strategyUtils_1.getImpliedApr)(a.longMarket.market) - (0, strategyUtils_1.getImpliedApr)(a.shortMarket.market));
110
+ const spreadB = Math.abs((0, strategyUtils_1.getImpliedApr)(b.longMarket.market) - (0, strategyUtils_1.getImpliedApr)(b.shortMarket.market));
111
+ return spreadB - spreadA;
112
+ });
113
+ return {
114
+ strategies,
115
+ totalCount: strategies.length,
116
+ };
117
+ }
118
+ async function findStrategiesByAsset(params) {
119
+ const { asset, ...rest } = params;
120
+ const result = await findStrategies(rest);
121
+ const filtered = result.strategies.filter((s) => (0, strategyUtils_1.getAssetSymbol)(s.longMarket.market).toUpperCase() === asset.toUpperCase());
122
+ return {
123
+ strategies: filtered,
124
+ totalCount: filtered.length,
125
+ };
126
+ }
127
+ async function findStrategiesByMaturity(params) {
128
+ const { maturity, ...rest } = params;
129
+ const result = await findStrategies(rest);
130
+ const filtered = result.strategies.filter((s) => (0, strategyUtils_1.getMaturity)(s.longMarket.market) === maturity);
131
+ return {
132
+ strategies: filtered,
133
+ totalCount: filtered.length,
134
+ };
135
+ }
136
+ async function findStrategiesByExchanges(params) {
137
+ const { exchanges, ...rest } = params;
138
+ const [exchange1, exchange2] = exchanges.map((e) => e.toLowerCase());
139
+ const result = await findStrategies(rest);
140
+ const filtered = result.strategies.filter((s) => {
141
+ const longExchange = (0, strategyUtils_1.getPlatformName)(s.longMarket.market).toLowerCase();
142
+ const shortExchange = (0, strategyUtils_1.getPlatformName)(s.shortMarket.market).toLowerCase();
143
+ return ((longExchange === exchange1 && shortExchange === exchange2) ||
144
+ (longExchange === exchange2 && shortExchange === exchange1));
145
+ });
146
+ return {
147
+ strategies: filtered,
148
+ totalCount: filtered.length,
149
+ };
150
+ }
151
+ async function getStrategyByMarketIds(marketId1, marketId2, markets) {
152
+ const allMarkets = markets ?? (await fetchMarkets());
153
+ const market1 = allMarkets.find((m) => m.marketId === marketId1);
154
+ const market2 = allMarkets.find((m) => m.marketId === marketId2);
155
+ if (!market1 || !market2) {
156
+ return null;
157
+ }
158
+ if (!market1.metadata?.assetSymbol || !market2.metadata?.assetSymbol) {
159
+ return null;
160
+ }
161
+ if (!market1.metadata?.platformName || !market2.metadata?.platformName) {
162
+ return null;
163
+ }
164
+ if (market1.metadata.assetSymbol !== market2.metadata.assetSymbol) {
165
+ return null;
166
+ }
167
+ if (market1.tokenId !== market2.tokenId) {
168
+ return null;
169
+ }
170
+ if (market1.imData.maturity !== market2.imData.maturity) {
171
+ return null;
172
+ }
173
+ const strategyMarket1 = toStrategyMarket(market1);
174
+ const strategyMarket2 = toStrategyMarket(market2);
175
+ if (!strategyMarket1 || !strategyMarket2) {
176
+ return null;
177
+ }
178
+ let longMarket;
179
+ let shortMarket;
180
+ const impliedApr1 = (0, strategyUtils_1.getImpliedApr)(strategyMarket1.market);
181
+ const impliedApr2 = (0, strategyUtils_1.getImpliedApr)(strategyMarket2.market);
182
+ if (impliedApr1 >= impliedApr2) {
183
+ longMarket = strategyMarket1;
184
+ shortMarket = strategyMarket2;
185
+ }
186
+ else {
187
+ longMarket = strategyMarket2;
188
+ shortMarket = strategyMarket1;
189
+ }
190
+ const asset = (0, strategyUtils_1.getAssetSymbol)(longMarket.market);
191
+ const collateralTokenId = (0, strategyUtils_1.getCollateralTokenId)(longMarket.market);
192
+ const maturity = (0, strategyUtils_1.getMaturity)(longMarket.market);
193
+ const longExchange = (0, strategyUtils_1.getPlatformName)(longMarket.market);
194
+ const shortExchange = (0, strategyUtils_1.getPlatformName)(shortMarket.market);
195
+ return {
196
+ id: createStrategyId(asset, collateralTokenId, maturity, longExchange, shortExchange),
197
+ longMarket,
198
+ shortMarket,
199
+ };
200
+ }
201
+ //# sourceMappingURL=strategyFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategyFinder.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyFinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
2
+ export declare function getMarketId(market: MarketResponse): number;
3
+ export declare function getImpliedApr(market: MarketResponse): number;
4
+ export declare function getMaxLeverage(market: MarketResponse): number;
5
+ export declare function getPlatformName(market: MarketResponse): string;
6
+ export declare function getAssetSymbol(market: MarketResponse): string;
7
+ export declare function getMaturity(market: MarketResponse): number;
8
+ export declare function getCollateralTokenId(market: MarketResponse): number;
9
+ export declare function getAmmId(market: MarketResponse): number | undefined;
10
+ export declare function calculateTimeToMaturity(maturityTime: number, currentTime?: number): number;
11
+ export declare function calculateDaysToMaturity(maturityTime: number, currentTime?: number): number;
12
+ export declare function calculateMaturityInfo(maturityTime: number, currentTime?: number): {
13
+ timeToMaturity: number;
14
+ daysToMaturity: number;
15
+ };
16
+ export declare function calculateImpliedAprSpread(impliedApr1: number, impliedApr2: number): number;
17
+ export declare function calculateMaxPerpLeverage(maxLeverage1: number, maxLeverage2: number): number;
18
+ export declare function aprToApy(apr: number, daysToMaturity: number): number;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarketId = getMarketId;
4
+ exports.getImpliedApr = getImpliedApr;
5
+ exports.getMaxLeverage = getMaxLeverage;
6
+ exports.getPlatformName = getPlatformName;
7
+ exports.getAssetSymbol = getAssetSymbol;
8
+ exports.getMaturity = getMaturity;
9
+ exports.getCollateralTokenId = getCollateralTokenId;
10
+ exports.getAmmId = getAmmId;
11
+ exports.calculateTimeToMaturity = calculateTimeToMaturity;
12
+ exports.calculateDaysToMaturity = calculateDaysToMaturity;
13
+ exports.calculateMaturityInfo = calculateMaturityInfo;
14
+ exports.calculateImpliedAprSpread = calculateImpliedAprSpread;
15
+ exports.calculateMaxPerpLeverage = calculateMaxPerpLeverage;
16
+ exports.aprToApy = aprToApy;
17
+ const SECONDS_PER_DAY = 86400;
18
+ function getMarketId(market) {
19
+ return market.marketId;
20
+ }
21
+ function getImpliedApr(market) {
22
+ return market.data?.ammImpliedApr ?? market.data?.midApr ?? 0;
23
+ }
24
+ function getMaxLeverage(market) {
25
+ return market.metadata?.maxLeverage ?? 0;
26
+ }
27
+ function getPlatformName(market) {
28
+ return market.metadata?.platformName ?? '';
29
+ }
30
+ function getAssetSymbol(market) {
31
+ return market.metadata?.assetSymbol ?? '';
32
+ }
33
+ function getMaturity(market) {
34
+ return market.imData.maturity;
35
+ }
36
+ function getCollateralTokenId(market) {
37
+ return market.tokenId;
38
+ }
39
+ function getAmmId(market) {
40
+ return market.metadata?.ammId;
41
+ }
42
+ function calculateTimeToMaturity(maturityTime, currentTime = Math.floor(Date.now() / 1000)) {
43
+ return Math.max(0, maturityTime - currentTime);
44
+ }
45
+ function calculateDaysToMaturity(maturityTime, currentTime = Math.floor(Date.now() / 1000)) {
46
+ const timeToMaturity = calculateTimeToMaturity(maturityTime, currentTime);
47
+ return Math.max(0, Math.ceil(timeToMaturity / SECONDS_PER_DAY));
48
+ }
49
+ function calculateMaturityInfo(maturityTime, currentTime = Math.floor(Date.now() / 1000)) {
50
+ const timeToMaturity = calculateTimeToMaturity(maturityTime, currentTime);
51
+ const daysToMaturity = Math.max(0, Math.ceil(timeToMaturity / SECONDS_PER_DAY));
52
+ return { timeToMaturity, daysToMaturity };
53
+ }
54
+ function calculateImpliedAprSpread(impliedApr1, impliedApr2) {
55
+ return Math.abs(impliedApr1 - impliedApr2);
56
+ }
57
+ function calculateMaxPerpLeverage(maxLeverage1, maxLeverage2) {
58
+ return Math.min(maxLeverage1, maxLeverage2);
59
+ }
60
+ function aprToApy(apr, daysToMaturity) {
61
+ if (daysToMaturity <= 0) {
62
+ return 0;
63
+ }
64
+ const periodsPerYear = 365 / daysToMaturity;
65
+ const periodRate = apr * daysToMaturity / 365;
66
+ return Math.pow(1 + periodRate, periodsPerYear) - 1;
67
+ }
68
+ //# sourceMappingURL=strategyUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategyUtils.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
2
+ export type StrategyMarket = {
3
+ market: MarketResponse;
4
+ };
5
+ export type Strategy = {
6
+ id: string;
7
+ longMarket: StrategyMarket;
8
+ shortMarket: StrategyMarket;
9
+ };
10
+ export type StrategyExecutionStep = {
11
+ stepNumber: number;
12
+ action: 'long' | 'short';
13
+ platform: 'boros' | 'perp';
14
+ exchange: string;
15
+ description: string;
16
+ marketId?: number;
17
+ ammId?: number;
18
+ details: {
19
+ asset: string;
20
+ size: string;
21
+ marketType: string;
22
+ };
23
+ };
24
+ export type StrategyExecutionPlan = {
25
+ strategy: Strategy;
26
+ steps: StrategyExecutionStep[];
27
+ totalCapitalRequired: number;
28
+ perpLeverage: number;
29
+ borosMargin: number;
30
+ };
31
+ export type StrategyFixedAprParams = {
32
+ perpLeverage: number;
33
+ daysToMaturity: number;
34
+ borosMargin: number;
35
+ impliedApr1: number;
36
+ impliedApr2: number;
37
+ exchangeFee1: number;
38
+ exchangeFee2: number;
39
+ borosTradeFee: number;
40
+ borosSettlementFee: number;
41
+ };
42
+ export type StrategyCalculatorInput = {
43
+ totalCapital: number;
44
+ liquidationThreshold?: number;
45
+ daysToMaturity: number;
46
+ perpLeverage: number;
47
+ borosMargin: number;
48
+ impliedApr1: number;
49
+ impliedApr2: number;
50
+ exchangeFee1: number;
51
+ exchangeFee2: number;
52
+ borosTradeFee: number;
53
+ borosSettlementFee: number;
54
+ };
55
+ export type StrategyCalculatorResult = {
56
+ fixedApr: number;
57
+ fixedAprPercentage: number;
58
+ estimatedEarnings: number;
59
+ estimatedEarningsPerYear: number;
60
+ };
61
+ export type GetStrategiesParams = {
62
+ markets?: MarketResponse[];
63
+ minImpliedAprSpread?: number;
64
+ excludeDevTest?: boolean;
65
+ };
66
+ export type GetStrategiesResult = {
67
+ strategies: Strategy[];
68
+ totalCount: number;
69
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/entities/Calculator/types.ts"],"names":[],"mappings":""}
@@ -10,3 +10,4 @@ export * from './subaccount';
10
10
  export * from './vePendle';
11
11
  export * from './crossChainDeposit';
12
12
  export * from './token';
13
+ export * from './Calculator';
@@ -26,4 +26,5 @@ __exportStar(require("./subaccount"), exports);
26
26
  __exportStar(require("./vePendle"), exports);
27
27
  __exportStar(require("./crossChainDeposit"), exports);
28
28
  __exportStar(require("./token"), exports);
29
+ __exportStar(require("./Calculator"), exports);
29
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,wCAAsB;AACtB,+CAA6B;AAC7B,gDAA8B;AAC9B,gEAA8C;AAC9C,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,sDAAoC;AACpC,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,2CAAyB;AACzB,6CAA2B;AAC3B,wCAAsB;AACtB,+CAA6B;AAC7B,gDAA8B;AAC9B,gEAA8C;AAC9C,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,sDAAoC;AACpC,0CAAwB;AACxB,+CAA6B"}
@@ -0,0 +1,67 @@
1
+ export declare const ErrorCodes: {
2
+ readonly REQUEST_VALIDATION_ERROR: "REQUEST_VALIDATION_ERROR";
3
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
4
+ readonly INVALID_INPUT: "INVALID_INPUT";
5
+ readonly INVALID_TIMESTAMP: "INVALID_TIMESTAMP";
6
+ readonly INVALID_AGENT: "INVALID_AGENT";
7
+ readonly INVALID_SIGNATURE: "INVALID_SIGNATURE";
8
+ readonly INVALID_ADDRESS: "INVALID_ADDRESS";
9
+ readonly INVALID_CHAIN_ID: "INVALID_CHAIN_ID";
10
+ readonly INVALID_ORDER_REQUEST: "INVALID_ORDER_REQUEST";
11
+ readonly INVALID_INTERVAL: "INVALID_INTERVAL";
12
+ readonly MARKET_NOT_FOUND: "MARKET_NOT_FOUND";
13
+ readonly ASSET_NOT_FOUND: "ASSET_NOT_FOUND";
14
+ readonly ORDER_NOT_FOUND: "ORDER_NOT_FOUND";
15
+ readonly POSITION_NOT_FOUND: "POSITION_NOT_FOUND";
16
+ readonly USER_NOT_FOUND: "USER_NOT_FOUND";
17
+ readonly UNDERLYING_APR_NOT_FOUND: "UNDERLYING_APR_NOT_FOUND";
18
+ readonly ORDER_BOOKS_NOT_FOUND: "ORDER_BOOKS_NOT_FOUND";
19
+ readonly AMM_NOT_FOUND: "AMM_NOT_FOUND";
20
+ readonly REFERRAL_CODE_NOT_FOUND: "REFERRAL_CODE_NOT_FOUND";
21
+ readonly LEADERBOARD_NOT_FOUND: "LEADERBOARD_NOT_FOUND";
22
+ readonly MERKLE_NOT_FOUND: "MERKLE_NOT_FOUND";
23
+ readonly MOON_PHASE_NOT_FOUND: "MOON_PHASE_NOT_FOUND";
24
+ readonly DEPOSIT_BOX_INTENT_NOT_FOUND: "DEPOSIT_BOX_INTENT_NOT_FOUND";
25
+ readonly INSUFFICIENT_BALANCE: "INSUFFICIENT_BALANCE";
26
+ readonly INSUFFICIENT_MARGIN: "INSUFFICIENT_MARGIN";
27
+ readonly MARKET_EXPIRED: "MARKET_EXPIRED";
28
+ readonly MARKET_PAUSED: "MARKET_PAUSED";
29
+ readonly SLIPPAGE_EXCEEDED: "SLIPPAGE_EXCEEDED";
30
+ readonly ORDER_ALREADY_FILLED: "ORDER_ALREADY_FILLED";
31
+ readonly ORDER_CANCELLED: "ORDER_CANCELLED";
32
+ readonly POSITION_CLOSED: "POSITION_CLOSED";
33
+ readonly LEVERAGE_EXCEEDS_MAX: "LEVERAGE_EXCEEDS_MAX";
34
+ readonly INITIAL_MARGIN_EXCEEDS_BALANCE: "INITIAL_MARGIN_EXCEEDS_BALANCE";
35
+ readonly VALUE_TOO_SMALL: "VALUE_TOO_SMALL";
36
+ readonly BULK_ORDERS_EMPTY: "BULK_ORDERS_EMPTY";
37
+ readonly TIME_RANGE_TOO_LONG: "TIME_RANGE_TOO_LONG";
38
+ readonly MINIMUM_DEPOSIT_NOT_MET: "MINIMUM_DEPOSIT_NOT_MET";
39
+ readonly DEPOSIT_LESS_THAN_TREASURY: "DEPOSIT_LESS_THAN_TREASURY";
40
+ readonly TOKEN_NOT_SUPPORTED: "TOKEN_NOT_SUPPORTED";
41
+ readonly DEPOSIT_BOX_ID_IN_USE: "DEPOSIT_BOX_ID_IN_USE";
42
+ readonly DEPOSIT_BOX_INTENT_EXISTS: "DEPOSIT_BOX_INTENT_EXISTS";
43
+ readonly DEPOSIT_BOX_INTENT_INVALID_STATUS: "DEPOSIT_BOX_INTENT_INVALID_STATUS";
44
+ readonly ESTIMATED_DURATION_TOO_LONG: "ESTIMATED_DURATION_TOO_LONG";
45
+ readonly MISSING_EXT_ROUTER: "MISSING_EXT_ROUTER";
46
+ readonly MISSING_EXT_CALLDATA: "MISSING_EXT_CALLDATA";
47
+ readonly USER_NOT_WHITELISTED: "USER_NOT_WHITELISTED";
48
+ readonly REFERRAL_CODE_EXISTS: "REFERRAL_CODE_EXISTS";
49
+ readonly USER_ALREADY_HAS_REFERRAL_CODE: "USER_ALREADY_HAS_REFERRAL_CODE";
50
+ readonly USER_ALREADY_JOINED_REFERRAL: "USER_ALREADY_JOINED_REFERRAL";
51
+ readonly CANNOT_JOIN_OWN_REFERRAL: "CANNOT_JOIN_OWN_REFERRAL";
52
+ readonly ELIGIBILITY_REQUIREMENT_NOT_MET: "ELIGIBILITY_REQUIREMENT_NOT_MET";
53
+ readonly UNAUTHORIZED: "UNAUTHORIZED";
54
+ readonly FORBIDDEN: "FORBIDDEN";
55
+ readonly AGENT_EXPIRED: "AGENT_EXPIRED";
56
+ readonly INVALID_API_KEY: "INVALID_API_KEY";
57
+ readonly USER_NOT_VIP: "USER_NOT_VIP";
58
+ readonly OTC_SHEET_WRITE_FAILED: "OTC_SHEET_WRITE_FAILED";
59
+ readonly INTERNAL_SERVER_ERROR: "INTERNAL_SERVER_ERROR";
60
+ readonly DATABASE_ERROR: "DATABASE_ERROR";
61
+ readonly EXTERNAL_SERVICE_ERROR: "EXTERNAL_SERVICE_ERROR";
62
+ readonly BLOCKCHAIN_RPC_ERROR: "BLOCKCHAIN_RPC_ERROR";
63
+ readonly HISTORICAL_PRICE_FETCH_FAILED: "HISTORICAL_PRICE_FETCH_FAILED";
64
+ readonly DATA_INCONSISTENCY: "DATA_INCONSISTENCY";
65
+ readonly HTTP_EXCEPTION: "HTTP_EXCEPTION";
66
+ };
67
+ export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorCodes = void 0;
4
+ exports.ErrorCodes = {
5
+ REQUEST_VALIDATION_ERROR: 'REQUEST_VALIDATION_ERROR',
6
+ VALIDATION_ERROR: 'VALIDATION_ERROR',
7
+ INVALID_INPUT: 'INVALID_INPUT',
8
+ INVALID_TIMESTAMP: 'INVALID_TIMESTAMP',
9
+ INVALID_AGENT: 'INVALID_AGENT',
10
+ INVALID_SIGNATURE: 'INVALID_SIGNATURE',
11
+ INVALID_ADDRESS: 'INVALID_ADDRESS',
12
+ INVALID_CHAIN_ID: 'INVALID_CHAIN_ID',
13
+ INVALID_ORDER_REQUEST: 'INVALID_ORDER_REQUEST',
14
+ INVALID_INTERVAL: 'INVALID_INTERVAL',
15
+ MARKET_NOT_FOUND: 'MARKET_NOT_FOUND',
16
+ ASSET_NOT_FOUND: 'ASSET_NOT_FOUND',
17
+ ORDER_NOT_FOUND: 'ORDER_NOT_FOUND',
18
+ POSITION_NOT_FOUND: 'POSITION_NOT_FOUND',
19
+ USER_NOT_FOUND: 'USER_NOT_FOUND',
20
+ UNDERLYING_APR_NOT_FOUND: 'UNDERLYING_APR_NOT_FOUND',
21
+ ORDER_BOOKS_NOT_FOUND: 'ORDER_BOOKS_NOT_FOUND',
22
+ AMM_NOT_FOUND: 'AMM_NOT_FOUND',
23
+ REFERRAL_CODE_NOT_FOUND: 'REFERRAL_CODE_NOT_FOUND',
24
+ LEADERBOARD_NOT_FOUND: 'LEADERBOARD_NOT_FOUND',
25
+ MERKLE_NOT_FOUND: 'MERKLE_NOT_FOUND',
26
+ MOON_PHASE_NOT_FOUND: 'MOON_PHASE_NOT_FOUND',
27
+ DEPOSIT_BOX_INTENT_NOT_FOUND: 'DEPOSIT_BOX_INTENT_NOT_FOUND',
28
+ INSUFFICIENT_BALANCE: 'INSUFFICIENT_BALANCE',
29
+ INSUFFICIENT_MARGIN: 'INSUFFICIENT_MARGIN',
30
+ MARKET_EXPIRED: 'MARKET_EXPIRED',
31
+ MARKET_PAUSED: 'MARKET_PAUSED',
32
+ SLIPPAGE_EXCEEDED: 'SLIPPAGE_EXCEEDED',
33
+ ORDER_ALREADY_FILLED: 'ORDER_ALREADY_FILLED',
34
+ ORDER_CANCELLED: 'ORDER_CANCELLED',
35
+ POSITION_CLOSED: 'POSITION_CLOSED',
36
+ LEVERAGE_EXCEEDS_MAX: 'LEVERAGE_EXCEEDS_MAX',
37
+ INITIAL_MARGIN_EXCEEDS_BALANCE: 'INITIAL_MARGIN_EXCEEDS_BALANCE',
38
+ VALUE_TOO_SMALL: 'VALUE_TOO_SMALL',
39
+ BULK_ORDERS_EMPTY: 'BULK_ORDERS_EMPTY',
40
+ TIME_RANGE_TOO_LONG: 'TIME_RANGE_TOO_LONG',
41
+ MINIMUM_DEPOSIT_NOT_MET: 'MINIMUM_DEPOSIT_NOT_MET',
42
+ DEPOSIT_LESS_THAN_TREASURY: 'DEPOSIT_LESS_THAN_TREASURY',
43
+ TOKEN_NOT_SUPPORTED: 'TOKEN_NOT_SUPPORTED',
44
+ DEPOSIT_BOX_ID_IN_USE: 'DEPOSIT_BOX_ID_IN_USE',
45
+ DEPOSIT_BOX_INTENT_EXISTS: 'DEPOSIT_BOX_INTENT_EXISTS',
46
+ DEPOSIT_BOX_INTENT_INVALID_STATUS: 'DEPOSIT_BOX_INTENT_INVALID_STATUS',
47
+ ESTIMATED_DURATION_TOO_LONG: 'ESTIMATED_DURATION_TOO_LONG',
48
+ MISSING_EXT_ROUTER: 'MISSING_EXT_ROUTER',
49
+ MISSING_EXT_CALLDATA: 'MISSING_EXT_CALLDATA',
50
+ USER_NOT_WHITELISTED: 'USER_NOT_WHITELISTED',
51
+ REFERRAL_CODE_EXISTS: 'REFERRAL_CODE_EXISTS',
52
+ USER_ALREADY_HAS_REFERRAL_CODE: 'USER_ALREADY_HAS_REFERRAL_CODE',
53
+ USER_ALREADY_JOINED_REFERRAL: 'USER_ALREADY_JOINED_REFERRAL',
54
+ CANNOT_JOIN_OWN_REFERRAL: 'CANNOT_JOIN_OWN_REFERRAL',
55
+ ELIGIBILITY_REQUIREMENT_NOT_MET: 'ELIGIBILITY_REQUIREMENT_NOT_MET',
56
+ UNAUTHORIZED: 'UNAUTHORIZED',
57
+ FORBIDDEN: 'FORBIDDEN',
58
+ AGENT_EXPIRED: 'AGENT_EXPIRED',
59
+ INVALID_API_KEY: 'INVALID_API_KEY',
60
+ USER_NOT_VIP: 'USER_NOT_VIP',
61
+ OTC_SHEET_WRITE_FAILED: 'OTC_SHEET_WRITE_FAILED',
62
+ INTERNAL_SERVER_ERROR: 'INTERNAL_SERVER_ERROR',
63
+ DATABASE_ERROR: 'DATABASE_ERROR',
64
+ EXTERNAL_SERVICE_ERROR: 'EXTERNAL_SERVICE_ERROR',
65
+ BLOCKCHAIN_RPC_ERROR: 'BLOCKCHAIN_RPC_ERROR',
66
+ HISTORICAL_PRICE_FETCH_FAILED: 'HISTORICAL_PRICE_FETCH_FAILED',
67
+ DATA_INCONSISTENCY: 'DATA_INCONSISTENCY',
68
+ HTTP_EXCEPTION: 'HTTP_EXCEPTION',
69
+ };
70
+ //# sourceMappingURL=ErrorCodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorCodes.js","sourceRoot":"","sources":["../../src/errors/ErrorCodes.ts"],"names":[],"mappings":";;;AAGa,QAAA,UAAU,GAAG;IAExB,wBAAwB,EAAE,0BAA0B;IACpD,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,qBAAqB,EAAE,uBAAuB;IAC9C,gBAAgB,EAAE,kBAAkB;IAGpC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,cAAc,EAAE,gBAAgB;IAChC,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAC9C,aAAa,EAAE,eAAe;IAC9B,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,4BAA4B,EAAE,8BAA8B;IAG5D,oBAAoB,EAAE,sBAAsB;IAC5C,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,8BAA8B,EAAE,gCAAgC;IAChE,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAG1C,uBAAuB,EAAE,yBAAyB;IAClD,0BAA0B,EAAE,4BAA4B;IACxD,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,yBAAyB,EAAE,2BAA2B;IACtD,iCAAiC,EAAE,mCAAmC;IACtE,2BAA2B,EAAE,6BAA6B;IAC1D,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAG5C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,8BAA8B,EAAE,gCAAgC;IAChE,4BAA4B,EAAE,8BAA8B;IAC5D,wBAAwB,EAAE,0BAA0B;IACpD,+BAA+B,EAAE,iCAAiC;IAGlE,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAGlC,YAAY,EAAE,cAAc;IAC5B,sBAAsB,EAAE,wBAAwB;IAGhD,qBAAqB,EAAE,uBAAuB;IAC9C,cAAc,EAAE,gBAAgB;IAChC,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,6BAA6B,EAAE,+BAA+B;IAC9D,kBAAkB,EAAE,oBAAoB;IAGxC,cAAc,EAAE,gBAAgB;CACxB,CAAC"}
@@ -2,3 +2,4 @@ export * from './ContractErrorFactory';
2
2
  export * from './PendleContractError';
3
3
  export * from './ViemErrorDecoder';
4
4
  export * from './UnrecognizedContractError';
5
+ export * from './ErrorCodes';
@@ -18,4 +18,5 @@ __exportStar(require("./ContractErrorFactory"), exports);
18
18
  __exportStar(require("./PendleContractError"), exports);
19
19
  __exportStar(require("./ViemErrorDecoder"), exports);
20
20
  __exportStar(require("./UnrecognizedContractError"), exports);
21
+ __exportStar(require("./ErrorCodes"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,wDAAsC;AACtC,qDAAmC;AACnC,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,wDAAsC;AACtC,qDAAmC;AACnC,8DAA4C;AAC5C,+CAA6B"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/sdk-boros",
3
3
  "description": "Pendle SDK for Boros",
4
4
  "license": "MIT",
5
- "version": "1.1.4",
5
+ "version": "1.1.5-strategies-1",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "files": [