@kasarlabs/vesu-mcp 0.1.2 → 0.1.4

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 (84) hide show
  1. package/build/index.js +86 -6
  2. package/build/index.js.map +1 -1
  3. package/build/interfaces/index.d.ts +661 -8
  4. package/build/interfaces/index.js +57 -1
  5. package/build/interfaces/index.js.map +1 -1
  6. package/build/lib/abis/ekuboCore.d.ts +92 -0
  7. package/build/lib/abis/ekuboCore.js +1341 -0
  8. package/build/lib/abis/ekuboCore.js.map +1 -0
  9. package/build/lib/abis/multiplyAbi.d.ts +245 -0
  10. package/build/lib/abis/multiplyAbi.js +341 -0
  11. package/build/lib/abis/multiplyAbi.js.map +1 -0
  12. package/build/lib/abis/poolAbi.d.ts +289 -0
  13. package/build/lib/abis/poolAbi.js +402 -0
  14. package/build/lib/abis/poolAbi.js.map +1 -0
  15. package/build/lib/abis/routerAbi.d.ts +88 -0
  16. package/build/lib/abis/routerAbi.js +86 -0
  17. package/build/lib/abis/routerAbi.js.map +1 -0
  18. package/build/lib/constants/index.d.ts +9 -3
  19. package/build/lib/constants/index.js +8 -3
  20. package/build/lib/constants/index.js.map +1 -1
  21. package/build/lib/utils/contracts.d.ts +535 -89
  22. package/build/lib/utils/contracts.js +39 -5
  23. package/build/lib/utils/contracts.js.map +1 -1
  24. package/build/lib/utils/ekubo.d.ts +55 -0
  25. package/build/lib/utils/ekubo.js +81 -0
  26. package/build/lib/utils/ekubo.js.map +1 -0
  27. package/build/lib/utils/getEkuboQuote.d.ts +4 -0
  28. package/build/lib/utils/getEkuboQuote.js +116 -0
  29. package/build/lib/utils/getEkuboQuote.js.map +1 -0
  30. package/build/lib/utils/math.d.ts +8 -0
  31. package/build/lib/utils/math.js +22 -0
  32. package/build/lib/utils/math.js.map +1 -0
  33. package/build/lib/utils/multiplyCalls.d.ts +10 -0
  34. package/build/lib/utils/multiplyCalls.js +248 -0
  35. package/build/lib/utils/multiplyCalls.js.map +1 -0
  36. package/build/lib/utils/pools.d.ts +8 -0
  37. package/build/lib/utils/pools.js +72 -0
  38. package/build/lib/utils/pools.js.map +1 -0
  39. package/build/lib/utils/tokens.d.ts +6 -0
  40. package/build/lib/utils/tokens.js +23 -0
  41. package/build/lib/utils/tokens.js.map +1 -0
  42. package/build/schemas/index.d.ts +176 -0
  43. package/build/schemas/index.js +201 -1
  44. package/build/schemas/index.js.map +1 -1
  45. package/build/tools/read/getPools.d.ts +3 -0
  46. package/build/tools/read/getPools.js +57 -0
  47. package/build/tools/read/getPools.js.map +1 -0
  48. package/build/tools/read/getPositions.d.ts +3 -0
  49. package/build/tools/read/getPositions.js +43 -0
  50. package/build/tools/read/getPositions.js.map +1 -0
  51. package/build/tools/read/getTokens.d.ts +3 -0
  52. package/build/tools/read/getTokens.js +50 -0
  53. package/build/tools/read/getTokens.js.map +1 -0
  54. package/build/tools/write/deposit_borrow.d.ts +10 -0
  55. package/build/tools/write/deposit_borrow.js +312 -0
  56. package/build/tools/write/deposit_borrow.js.map +1 -0
  57. package/build/tools/write/deposit_earn.d.ts +10 -0
  58. package/build/tools/write/deposit_earn.js +82 -0
  59. package/build/tools/write/deposit_earn.js.map +1 -0
  60. package/build/tools/write/deposit_multiply.d.ts +10 -0
  61. package/build/tools/write/deposit_multiply.js +140 -0
  62. package/build/tools/write/deposit_multiply.js.map +1 -0
  63. package/build/tools/write/repay_borrow.d.ts +10 -0
  64. package/build/tools/write/repay_borrow.js +358 -0
  65. package/build/tools/write/repay_borrow.js.map +1 -0
  66. package/build/tools/write/update_multiply.d.ts +10 -0
  67. package/build/tools/write/update_multiply.js +264 -0
  68. package/build/tools/write/update_multiply.js.map +1 -0
  69. package/build/tools/write/withdraw_earn.d.ts +10 -0
  70. package/build/tools/write/withdraw_earn.js +116 -0
  71. package/build/tools/write/withdraw_earn.js.map +1 -0
  72. package/build/tools/write/withdraw_multiply.d.ts +9 -0
  73. package/build/tools/write/withdraw_multiply.js +187 -0
  74. package/build/tools/write/withdraw_multiply.js.map +1 -0
  75. package/package.json +6 -5
  76. package/build/lib/abis/erc20Abi.d.ts +0 -89
  77. package/build/lib/abis/erc20Abi.js +0 -128
  78. package/build/lib/abis/erc20Abi.js.map +0 -1
  79. package/build/tools/depositService.d.ts +0 -19
  80. package/build/tools/depositService.js +0 -117
  81. package/build/tools/depositService.js.map +0 -1
  82. package/build/tools/withdrawService.d.ts +0 -20
  83. package/build/tools/withdrawService.js +0 -122
  84. package/build/tools/withdrawService.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/utils/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACnD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5E,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACrE,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5E,OAAO,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACvD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5E,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC7E,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACvD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5E,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC7E,CAAC,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/utils/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { IBaseToken } from '../../interfaces/index.js';
2
+ export type EkuboPoolKey = {
3
+ token0: string;
4
+ token1: string;
5
+ fee: bigint;
6
+ tickSpacing: bigint;
7
+ extension: string;
8
+ };
9
+ export type EkuboRoute = {
10
+ poolKey: EkuboPoolKey;
11
+ sqrtRatioLimit: bigint;
12
+ skipAhead: bigint;
13
+ };
14
+ export type EkuboSplit = {
15
+ amountSpecified: bigint;
16
+ amountCalculated: bigint;
17
+ route: EkuboRoute[];
18
+ };
19
+ export type EkuboQuoteType = 'exactIn' | 'exactOut';
20
+ export type EkuboQuote = {
21
+ type: EkuboQuoteType;
22
+ splits: EkuboSplit[];
23
+ totalCalculated: bigint;
24
+ priceImpact: number | null;
25
+ error?: string;
26
+ };
27
+ export interface BigIntValue {
28
+ value: bigint;
29
+ decimals: number;
30
+ }
31
+ export declare const calculateEkuboWeights: (ekuboQuote: EkuboQuote) => bigint[];
32
+ export declare const calculateEkuboLeverSwapData: (token0: IBaseToken, quotedAmount: BigIntValue, ekuboQuote: EkuboQuote, weights: bigint[]) => {
33
+ token_amount: {
34
+ token: `0x${string}`;
35
+ amount: {
36
+ mag: bigint;
37
+ sign: boolean;
38
+ };
39
+ };
40
+ route: {
41
+ pool_key: {
42
+ extension: string;
43
+ token0: string;
44
+ token1: string;
45
+ fee: bigint;
46
+ tick_spacing: bigint;
47
+ };
48
+ sqrt_ratio_limit: bigint;
49
+ skip_ahead: bigint;
50
+ }[];
51
+ }[];
52
+ export declare const applySlippageToEkuboLimitAmount: (limitAmount: bigint, ekuboQuoteType: EkuboQuoteType, slippage: BigIntValue) => bigint;
53
+ export declare function safeStringify(obj: any): string;
54
+ export declare const adjustEkuboWeights: (weights: bigint[]) => bigint[];
55
+ export { getEkuboQuoteFromAPI } from './getEkuboQuote.js';
@@ -0,0 +1,81 @@
1
+ import { DEFAULT_DECIMALS } from '../constants/index.js';
2
+ export const calculateEkuboWeights = (ekuboQuote) => {
3
+ if (ekuboQuote.totalCalculated === 0n) {
4
+ return ekuboQuote.splits.map(() => 0n);
5
+ }
6
+ const weights = ekuboQuote.splits.map((split, index) => {
7
+ const weight = (split.amountCalculated * 10n ** BigInt(DEFAULT_DECIMALS)) /
8
+ ekuboQuote.totalCalculated;
9
+ return weight;
10
+ });
11
+ return weights;
12
+ };
13
+ export const calculateEkuboLeverSwapData = (token0, quotedAmount, ekuboQuote, weights) => {
14
+ const ZERO_BI = { value: 0n, decimals: DEFAULT_DECIMALS };
15
+ const result = ekuboQuote.splits.map((split, index) => {
16
+ const weight = weights[index] || ZERO_BI.value;
17
+ const amount = (quotedAmount.value * weight) / 10n ** BigInt(DEFAULT_DECIMALS);
18
+ return {
19
+ token_amount: {
20
+ token: token0.address,
21
+ amount: {
22
+ mag: amount,
23
+ sign: ekuboQuote.type === 'exactOut' ? true : false,
24
+ },
25
+ },
26
+ route: split.route.map((route) => ({
27
+ pool_key: {
28
+ extension: route.poolKey.extension,
29
+ token0: route.poolKey.token0,
30
+ token1: route.poolKey.token1,
31
+ fee: route.poolKey.fee,
32
+ tick_spacing: route.poolKey.tickSpacing,
33
+ },
34
+ sqrt_ratio_limit: route.sqrtRatioLimit,
35
+ skip_ahead: route.skipAhead,
36
+ })),
37
+ };
38
+ });
39
+ return result;
40
+ };
41
+ export const applySlippageToEkuboLimitAmount = (limitAmount, ekuboQuoteType, slippage) => {
42
+ const ONE_BI = {
43
+ value: 10n ** BigInt(DEFAULT_DECIMALS),
44
+ decimals: DEFAULT_DECIMALS,
45
+ };
46
+ const fixedSlippage = slippage.value * 10n ** BigInt(ONE_BI.decimals - slippage.decimals);
47
+ const fixedSlippageMul = ekuboQuoteType === 'exactOut'
48
+ ? ONE_BI.value + fixedSlippage
49
+ : ONE_BI.value - fixedSlippage;
50
+ let adjusted = (limitAmount * fixedSlippageMul) / ONE_BI.value;
51
+ if (adjusted < 0n) {
52
+ adjusted = -adjusted;
53
+ }
54
+ return adjusted;
55
+ };
56
+ export function safeStringify(obj) {
57
+ return JSON.stringify(obj, (_, value) => (typeof value === 'bigint' ? value.toString() : value), 2);
58
+ }
59
+ export const adjustEkuboWeights = (weights) => {
60
+ if (weights.length === 0)
61
+ return [];
62
+ const TARGET_SUM = 10n ** BigInt(DEFAULT_DECIMALS);
63
+ const currentSum = weights.reduce((sum, weight) => sum + weight, 0n);
64
+ if (currentSum === TARGET_SUM) {
65
+ return weights;
66
+ }
67
+ const adjustedWeights = [...weights];
68
+ const lastIndex = adjustedWeights.length - 1;
69
+ const difference = TARGET_SUM - currentSum;
70
+ adjustedWeights[lastIndex] = adjustedWeights[lastIndex] + difference;
71
+ if (adjustedWeights[lastIndex] < 0n) {
72
+ throw new Error(`Cannot normalize weights: adjustment would result in negative weight (${adjustedWeights[lastIndex]})`);
73
+ }
74
+ const newSum = adjustedWeights.reduce((sum, weight) => sum + weight, 0n);
75
+ if (newSum !== TARGET_SUM) {
76
+ throw new Error(`Failed to normalize weights: sum is ${newSum}, expected ${TARGET_SUM}`);
77
+ }
78
+ return adjustedWeights;
79
+ };
80
+ export { getEkuboQuoteFromAPI } from './getEkuboQuote.js';
81
+ //# sourceMappingURL=ekubo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ekubo.js","sourceRoot":"","sources":["../../../src/lib/utils/ekubo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { RpcProvider } from 'starknet';
2
+ import { IBaseToken } from '../../interfaces/index.js';
3
+ import { EkuboQuote } from './ekubo.js';
4
+ export declare function getEkuboQuoteFromAPI(provider: RpcProvider, tokenIn: IBaseToken, tokenOut: IBaseToken, amount: bigint, isExactIn: boolean, ekuboQuoterUrl?: string): Promise<EkuboQuote>;
@@ -0,0 +1,116 @@
1
+ import { safeStringify } from './ekubo.js';
2
+ export async function getEkuboQuoteFromAPI(provider, tokenIn, tokenOut, amount, isExactIn, ekuboQuoterUrl) {
3
+ const baseUrl = ekuboQuoterUrl || 'https://starknet-mainnet-quoter-api.ekubo.org';
4
+ const apiAmount = isExactIn ? amount : -amount;
5
+ const url = `${baseUrl}/${apiAmount}/${tokenIn.address}/${tokenOut.address}`;
6
+ const response = await fetch(url);
7
+ if (!response.ok) {
8
+ throw new Error(`Ekubo API request failed with status ${response.status}`);
9
+ }
10
+ const ekuboData = await response.json();
11
+ if (!ekuboData.splits || ekuboData.splits.length === 0) {
12
+ throw new Error('No splits found in Ekubo API response');
13
+ }
14
+ const splits = ekuboData.splits.map((splitData) => {
15
+ const amountSpecified = BigInt(splitData.amount_specified);
16
+ const amountCalculated = BigInt(splitData.amount_calculated);
17
+ const routes = splitData.route.map((routeData, routeIdx) => {
18
+ let feeValue;
19
+ if (typeof routeData.pool_key.fee === 'object' &&
20
+ routeData.pool_key.fee !== null) {
21
+ const feeObj = routeData.pool_key.fee;
22
+ if (feeObj.low !== undefined) {
23
+ feeValue = BigInt(feeObj.low);
24
+ }
25
+ else {
26
+ throw new Error(`route[${routeIdx}].pool_key.fee is an object but missing low: ${safeStringify(routeData.pool_key.fee)}`);
27
+ }
28
+ }
29
+ else {
30
+ feeValue = BigInt(routeData.pool_key.fee);
31
+ }
32
+ let tickSpacingValue;
33
+ if (typeof routeData.pool_key.tick_spacing === 'object' &&
34
+ routeData.pool_key.tick_spacing !== null) {
35
+ const tickSpacingObj = routeData.pool_key.tick_spacing;
36
+ if (tickSpacingObj.low !== undefined) {
37
+ tickSpacingValue = BigInt(tickSpacingObj.low);
38
+ }
39
+ else {
40
+ throw new Error(`route[${routeIdx}].pool_key.tick_spacing is an object but missing low: ${safeStringify(routeData.pool_key.tick_spacing)}`);
41
+ }
42
+ }
43
+ else {
44
+ tickSpacingValue = BigInt(routeData.pool_key.tick_spacing);
45
+ }
46
+ let extensionValue = routeData.pool_key.extension || '0x0';
47
+ if (extensionValue === '0x0' || extensionValue === '0x') {
48
+ extensionValue =
49
+ '0x0000000000000000000000000000000000000000000000000000000000000000';
50
+ }
51
+ else if (!extensionValue.startsWith('0x')) {
52
+ extensionValue = `0x${extensionValue}`;
53
+ }
54
+ if (extensionValue.length < 66) {
55
+ const withoutPrefix = extensionValue.slice(2);
56
+ extensionValue = `0x${withoutPrefix.padStart(64, '0')}`;
57
+ }
58
+ let sqrtRatioLimitValue;
59
+ if (typeof routeData.sqrt_ratio_limit === 'object' &&
60
+ routeData.sqrt_ratio_limit !== null) {
61
+ const { low, high } = routeData.sqrt_ratio_limit;
62
+ if (low !== undefined && high !== undefined) {
63
+ sqrtRatioLimitValue = BigInt(low) + BigInt(high) * 2n ** 128n;
64
+ }
65
+ else {
66
+ sqrtRatioLimitValue = 2n ** 128n;
67
+ }
68
+ }
69
+ else if (routeData.sqrt_ratio_limit) {
70
+ sqrtRatioLimitValue = BigInt(routeData.sqrt_ratio_limit);
71
+ }
72
+ else {
73
+ sqrtRatioLimitValue = 2n ** 128n;
74
+ }
75
+ let skipAheadValue;
76
+ if (typeof routeData.skip_ahead === 'object' &&
77
+ routeData.skip_ahead !== null) {
78
+ const skipAheadObj = routeData.skip_ahead;
79
+ if (skipAheadObj.low !== undefined) {
80
+ skipAheadValue = BigInt(skipAheadObj.low);
81
+ }
82
+ else {
83
+ skipAheadValue = 0n;
84
+ }
85
+ }
86
+ else {
87
+ skipAheadValue = BigInt(routeData.skip_ahead || 0);
88
+ }
89
+ return {
90
+ poolKey: {
91
+ token0: routeData.pool_key.token0,
92
+ token1: routeData.pool_key.token1,
93
+ fee: feeValue,
94
+ tickSpacing: tickSpacingValue,
95
+ extension: extensionValue,
96
+ },
97
+ sqrtRatioLimit: sqrtRatioLimitValue,
98
+ skipAhead: skipAheadValue,
99
+ };
100
+ });
101
+ return {
102
+ amountSpecified,
103
+ amountCalculated,
104
+ route: routes,
105
+ };
106
+ });
107
+ const totalCalculated = BigInt(ekuboData.total_calculated);
108
+ const quote = {
109
+ type: isExactIn ? 'exactIn' : 'exactOut',
110
+ splits,
111
+ totalCalculated,
112
+ priceImpact: ekuboData.price_impact ?? null,
113
+ };
114
+ return quote;
115
+ }
116
+ //# sourceMappingURL=getEkuboQuote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEkuboQuote.js","sourceRoot":"","sources":["../../../src/lib/utils/getEkuboQuote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type ResultWad = {
2
+ netValueWad: bigint;
3
+ targetLtvWad: bigint;
4
+ newDebtWad: bigint;
5
+ newCollateralWad: bigint;
6
+ deltaDebtWad?: bigint;
7
+ };
8
+ export declare function computeCandD_from_T_and_N_wad(netValueWad: bigint, targetLtvWad: bigint, currentDebtWad?: bigint): ResultWad;
@@ -0,0 +1,22 @@
1
+ import { WAD } from '../constants/index.js';
2
+ export function computeCandD_from_T_and_N_wad(netValueWad, targetLtvWad, currentDebtWad) {
3
+ if (netValueWad <= 0n)
4
+ throw new Error('netValueWad must be > 0');
5
+ if (targetLtvWad < 0n || targetLtvWad >= WAD) {
6
+ throw new Error('targetLtvWad must satisfy 0 <= T < 1e18 (WAD)');
7
+ }
8
+ const denom = WAD - targetLtvWad;
9
+ const newDebtWad = (targetLtvWad * netValueWad) / denom;
10
+ const newCollateralWad = netValueWad + newDebtWad;
11
+ const res = {
12
+ netValueWad,
13
+ targetLtvWad,
14
+ newDebtWad,
15
+ newCollateralWad,
16
+ };
17
+ if (currentDebtWad !== undefined) {
18
+ res.deltaDebtWad = currentDebtWad - newDebtWad;
19
+ }
20
+ return res;
21
+ }
22
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/lib/utils/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAU5C,MAAM,UAAU,6BAA6B,CAC3C,WAAmB,EACnB,YAAoB,EACpB,cAAuB;IAEvB,IAAI,WAAW,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAClE,IAAI,YAAY,GAAG,EAAE,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,GAAG,YAAY,CAAC;IAEjC,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC;IACxD,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,CAAC;IAElD,MAAM,GAAG,GAAc;QACrB,WAAW;QACX,YAAY;QACZ,UAAU;QACV,gBAAgB;KACjB,CAAC;IAEF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Call } from 'starknet';
2
+ import { Account } from 'starknet';
3
+ import { IBaseToken } from '../../interfaces/index.js';
4
+ import { type EkuboQuote, type BigIntValue } from './ekubo.js';
5
+ import { Hex } from './num.js';
6
+ export declare const buildMultiplyCalls: (collateralAmount: bigint, collateralAsset: IBaseToken, debtAmount: bigint, debtAsset: IBaseToken, poolContractAddress: Hex, account: Account, provider: any, ekuboQuote?: EkuboQuote, slippageBps?: bigint) => Promise<Call[]>;
7
+ export declare const buildCloseMultiplyCalls: (collateralAsset: IBaseToken, debtAsset: IBaseToken, poolContractAddress: Hex, account: Account, provider: any, ekuboQuote?: EkuboQuote, slippageBps?: bigint) => Promise<Call[]>;
8
+ export declare const buildWithdrawMultiplyCalls: (collateralAsset: IBaseToken, debtAsset: IBaseToken, poolContractAddress: Hex, account: Account, provider: any, withdrawAmount: BigIntValue) => Promise<Call[]>;
9
+ export declare const getDecreaseMultiplierCalls: (collateralAsset: IBaseToken, debtAsset: IBaseToken, poolContractAddress: Hex, account: Account, provider: any, ekuboQuote: EkuboQuote, quotedAmount: BigIntValue, slippage: BigIntValue) => Promise<Call[]>;
10
+ export declare const getIncreaseMultiplierCalls: (collateralAsset: IBaseToken, debtAsset: IBaseToken, poolContractAddress: Hex, account: Account, provider: any, ekuboQuote: EkuboQuote | undefined, quotedAmount: bigint, slippageBps: bigint) => Promise<Call[]>;
@@ -0,0 +1,248 @@
1
+ import { CairoCustomEnum } from 'starknet';
2
+ import { Contract } from 'starknet';
3
+ import { MULTIPLY_CONTRACT_ADDRESS, DEFAULT_DECIMALS, } from '../constants/index.js';
4
+ import { getMultiplyContract, getErc20Contract, getPoolContract, } from './contracts.js';
5
+ import { calculateEkuboWeights, calculateEkuboLeverSwapData, applySlippageToEkuboLimitAmount, adjustEkuboWeights, } from './ekubo.js';
6
+ export const buildMultiplyCalls = async (collateralAmount, collateralAsset, debtAmount, debtAsset, poolContractAddress, account, provider, ekuboQuote, slippageBps) => {
7
+ const ZERO_BI = { value: 0n, decimals: DEFAULT_DECIMALS };
8
+ let leverSwap = [];
9
+ let leverSwapLimitAmount = 0n;
10
+ if (ekuboQuote && ekuboQuote.splits.length > 0) {
11
+ const weights = calculateEkuboWeights(ekuboQuote);
12
+ const quotedAmount = {
13
+ value: debtAmount,
14
+ decimals: debtAsset.decimals,
15
+ };
16
+ leverSwap = calculateEkuboLeverSwapData(collateralAsset, quotedAmount, ekuboQuote, weights);
17
+ const slippage = {
18
+ value: slippageBps || 50n,
19
+ decimals: 4,
20
+ };
21
+ leverSwapLimitAmount = applySlippageToEkuboLimitAmount(ekuboQuote.totalCalculated, ekuboQuote.type, slippage);
22
+ }
23
+ const tokenContract = getErc20Contract(collateralAsset.address);
24
+ const multiplyContract = getMultiplyContract(MULTIPLY_CONTRACT_ADDRESS);
25
+ const poolContract = getPoolContract(poolContractAddress);
26
+ const multiplyContractForTx = new Contract({
27
+ abi: multiplyContract.abi,
28
+ address: MULTIPLY_CONTRACT_ADDRESS,
29
+ providerOrAccount: provider,
30
+ });
31
+ const poolContractForTx = new Contract({
32
+ abi: poolContract.abi,
33
+ address: poolContractAddress,
34
+ providerOrAccount: provider,
35
+ });
36
+ const approveCall = await tokenContract.populateTransaction.approve(MULTIPLY_CONTRACT_ADDRESS, collateralAmount);
37
+ const modifyDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, true);
38
+ const modifyLeverCall = await multiplyContractForTx.populateTransaction.modify_lever({
39
+ action: new CairoCustomEnum({
40
+ IncreaseLever: {
41
+ pool: poolContractAddress,
42
+ collateral_asset: collateralAsset.address,
43
+ debt_asset: debtAsset.address,
44
+ user: account.address,
45
+ add_margin: collateralAmount,
46
+ margin_swap: [],
47
+ margin_swap_limit_amount: ZERO_BI.value,
48
+ lever_swap: leverSwap,
49
+ lever_swap_limit_amount: leverSwapLimitAmount,
50
+ },
51
+ }),
52
+ });
53
+ const revokeDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, false);
54
+ return [
55
+ approveCall,
56
+ modifyDelegationCall,
57
+ modifyLeverCall,
58
+ revokeDelegationCall,
59
+ ];
60
+ };
61
+ export const buildCloseMultiplyCalls = async (collateralAsset, debtAsset, poolContractAddress, account, provider, ekuboQuote, slippageBps) => {
62
+ const ZERO_BI = { value: 0n, decimals: DEFAULT_DECIMALS };
63
+ const multiplyContract = getMultiplyContract(MULTIPLY_CONTRACT_ADDRESS);
64
+ const poolContract = getPoolContract(poolContractAddress);
65
+ const multiplyContractForTx = new Contract({
66
+ abi: multiplyContract.abi,
67
+ address: MULTIPLY_CONTRACT_ADDRESS,
68
+ providerOrAccount: provider,
69
+ });
70
+ const poolContractForTx = new Contract({
71
+ abi: poolContract.abi,
72
+ address: poolContractAddress,
73
+ providerOrAccount: provider,
74
+ });
75
+ const modifyDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, true);
76
+ let leverSwap = [];
77
+ let leverSwapLimitAmount = 0n;
78
+ let adjustedWeights = [];
79
+ if (ekuboQuote && ekuboQuote.splits.length > 0) {
80
+ const weights = calculateEkuboWeights(ekuboQuote);
81
+ leverSwap = calculateEkuboLeverSwapData(debtAsset, ZERO_BI, ekuboQuote, weights);
82
+ adjustedWeights = adjustEkuboWeights(weights);
83
+ const slippage = {
84
+ value: slippageBps || 50n,
85
+ decimals: 4,
86
+ };
87
+ leverSwapLimitAmount = applySlippageToEkuboLimitAmount(ekuboQuote.totalCalculated, ekuboQuote.type, slippage);
88
+ if (leverSwapLimitAmount < 0n) {
89
+ leverSwapLimitAmount = -leverSwapLimitAmount;
90
+ }
91
+ }
92
+ const revokeDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, false);
93
+ const modifyLeverCall = await multiplyContractForTx.populateTransaction.modify_lever({
94
+ action: new CairoCustomEnum({
95
+ DecreaseLever: {
96
+ pool: poolContractAddress,
97
+ collateral_asset: collateralAsset.address,
98
+ debt_asset: debtAsset.address,
99
+ user: account.address,
100
+ sub_margin: ZERO_BI.value,
101
+ recipient: account.address,
102
+ lever_swap: leverSwap,
103
+ lever_swap_limit_amount: leverSwapLimitAmount,
104
+ lever_swap_weights: adjustedWeights,
105
+ withdraw_swap: [],
106
+ withdraw_swap_limit_amount: ZERO_BI.value,
107
+ withdraw_swap_weights: [],
108
+ close_position: true,
109
+ },
110
+ }),
111
+ });
112
+ return [modifyDelegationCall, modifyLeverCall, revokeDelegationCall];
113
+ };
114
+ export const buildWithdrawMultiplyCalls = async (collateralAsset, debtAsset, poolContractAddress, account, provider, withdrawAmount) => {
115
+ const ZERO_BI = { value: 0n, decimals: DEFAULT_DECIMALS };
116
+ const multiplyContract = getMultiplyContract(MULTIPLY_CONTRACT_ADDRESS);
117
+ const poolContract = getPoolContract(poolContractAddress);
118
+ const multiplyContractForTx = new Contract({
119
+ abi: multiplyContract.abi,
120
+ address: MULTIPLY_CONTRACT_ADDRESS,
121
+ providerOrAccount: provider,
122
+ });
123
+ const poolContractForTx = new Contract({
124
+ abi: poolContract.abi,
125
+ address: poolContractAddress,
126
+ providerOrAccount: provider,
127
+ });
128
+ const modifyDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, true);
129
+ const revokeDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, false);
130
+ const modifyLeverCall = await multiplyContractForTx.populateTransaction.modify_lever({
131
+ action: new CairoCustomEnum({
132
+ DecreaseLever: {
133
+ pool: poolContractAddress,
134
+ collateral_asset: collateralAsset.address,
135
+ debt_asset: debtAsset.address,
136
+ user: account.address,
137
+ sub_margin: withdrawAmount.value,
138
+ recipient: account.address,
139
+ lever_swap: [],
140
+ lever_swap_limit_amount: ZERO_BI.value,
141
+ lever_swap_weights: [],
142
+ withdraw_swap: [],
143
+ withdraw_swap_limit_amount: ZERO_BI.value,
144
+ withdraw_swap_weights: [],
145
+ close_position: false,
146
+ },
147
+ }),
148
+ });
149
+ return [modifyDelegationCall, modifyLeverCall, revokeDelegationCall];
150
+ };
151
+ export const getDecreaseMultiplierCalls = async (collateralAsset, debtAsset, poolContractAddress, account, provider, ekuboQuote, quotedAmount, slippage) => {
152
+ const ZERO_BI = { value: 0n, decimals: DEFAULT_DECIMALS };
153
+ const multiplyContract = getMultiplyContract(MULTIPLY_CONTRACT_ADDRESS);
154
+ const poolContract = getPoolContract(poolContractAddress);
155
+ const multiplyContractForTx = new Contract({
156
+ abi: multiplyContract.abi,
157
+ address: MULTIPLY_CONTRACT_ADDRESS,
158
+ providerOrAccount: provider,
159
+ });
160
+ const poolContractForTx = new Contract({
161
+ abi: poolContract.abi,
162
+ address: poolContractAddress,
163
+ providerOrAccount: provider,
164
+ });
165
+ const modifyDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, true);
166
+ const weights = calculateEkuboWeights(ekuboQuote);
167
+ const leverSwap = calculateEkuboLeverSwapData(collateralAsset, quotedAmount, ekuboQuote, weights);
168
+ const adjustedWeights = adjustEkuboWeights(weights);
169
+ const limitAmount = applySlippageToEkuboLimitAmount(ekuboQuote.totalCalculated, ekuboQuote.type, slippage);
170
+ const decreaseLeverParams = {
171
+ pool: poolContractAddress,
172
+ collateral_asset: collateralAsset.address,
173
+ debt_asset: debtAsset.address,
174
+ user: account.address,
175
+ sub_margin: ZERO_BI.value,
176
+ recipient: account.address,
177
+ lever_swap: leverSwap,
178
+ lever_swap_limit_amount: limitAmount,
179
+ lever_swap_weights: adjustedWeights,
180
+ withdraw_swap: [],
181
+ withdraw_swap_limit_amount: ZERO_BI.value,
182
+ withdraw_swap_weights: [],
183
+ close_position: false,
184
+ };
185
+ const modifyLeverCall = await multiplyContractForTx.populateTransaction.modify_lever({
186
+ action: new CairoCustomEnum({
187
+ DecreaseLever: decreaseLeverParams,
188
+ }),
189
+ });
190
+ const revokeDelegationCallData = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, false);
191
+ const calls = [
192
+ modifyDelegationCall,
193
+ modifyLeverCall,
194
+ revokeDelegationCallData,
195
+ ];
196
+ return calls;
197
+ };
198
+ export const getIncreaseMultiplierCalls = async (collateralAsset, debtAsset, poolContractAddress, account, provider, ekuboQuote, quotedAmount, slippageBps) => {
199
+ const ZERO_BI = { value: 0n, decimals: DEFAULT_DECIMALS };
200
+ const multiplyContract = getMultiplyContract(MULTIPLY_CONTRACT_ADDRESS);
201
+ const poolContract = getPoolContract(poolContractAddress);
202
+ const multiplyContractForTx = new Contract({
203
+ abi: multiplyContract.abi,
204
+ address: MULTIPLY_CONTRACT_ADDRESS,
205
+ providerOrAccount: provider,
206
+ });
207
+ const poolContractForTx = new Contract({
208
+ abi: poolContract.abi,
209
+ address: poolContractAddress,
210
+ providerOrAccount: provider,
211
+ });
212
+ const modifyDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, true);
213
+ let leverSwap = [];
214
+ let leverSwapLimitAmount = 0n;
215
+ if (ekuboQuote && ekuboQuote.splits.length > 0) {
216
+ const weights = calculateEkuboWeights(ekuboQuote);
217
+ const slippage = {
218
+ value: slippageBps,
219
+ decimals: 4,
220
+ };
221
+ const quotedAmountValue = {
222
+ value: quotedAmount,
223
+ decimals: debtAsset.decimals,
224
+ };
225
+ leverSwap = calculateEkuboLeverSwapData(collateralAsset, quotedAmountValue, ekuboQuote, weights);
226
+ leverSwapLimitAmount = applySlippageToEkuboLimitAmount(ekuboQuote.totalCalculated, ekuboQuote.type, slippage);
227
+ }
228
+ const increaseLeverParams = {
229
+ pool: poolContractAddress,
230
+ collateral_asset: collateralAsset.address,
231
+ debt_asset: debtAsset.address,
232
+ user: account.address,
233
+ add_margin: ZERO_BI.value,
234
+ margin_swap: [],
235
+ margin_swap_limit_amount: ZERO_BI.value,
236
+ lever_swap: leverSwap,
237
+ lever_swap_limit_amount: leverSwapLimitAmount,
238
+ };
239
+ const modifyLeverCall = await multiplyContractForTx.populateTransaction.modify_lever({
240
+ action: new CairoCustomEnum({
241
+ IncreaseLever: increaseLeverParams,
242
+ }),
243
+ });
244
+ const revokeDelegationCall = await poolContractForTx.populateTransaction.modify_delegation(MULTIPLY_CONTRACT_ADDRESS, false);
245
+ const calls = [modifyDelegationCall, modifyLeverCall, revokeDelegationCall];
246
+ return calls;
247
+ };
248
+ //# sourceMappingURL=multiplyCalls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiplyCalls.js","sourceRoot":"","sources":["../../../src/lib/utils/multiplyCalls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { IBaseToken, IPool, IPoolAsset, ITokenValue } from '../../interfaces/index.js';
2
+ import { Hex } from './num.js';
3
+ import type { Address } from '../../interfaces/index.js';
4
+ export declare function getExtensionContractAddress(pool: IPool): Address | null;
5
+ export declare function getSingletonAddress(pool: IPool): Promise<Address | null>;
6
+ export declare function getTokenPrice(token: IBaseToken, poolId: string, poolExtension: Hex): Promise<ITokenValue | undefined>;
7
+ export declare function getPoolAssetsPriceAndRiskMdx(pool: IPool, poolAssets: IPoolAsset[]): Promise<IPoolAsset[]>;
8
+ export declare function getPool(poolId: string): Promise<IPool>;