@kasarlabs/ekubo-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.
- package/build/index.js +12 -2
- package/build/index.js.map +1 -1
- package/build/lib/constants/addresses.d.ts +0 -3
- package/build/lib/constants/addresses.js +0 -33
- package/build/lib/constants/addresses.js.map +1 -1
- package/build/lib/constants/index.d.ts +1 -0
- package/build/lib/constants/index.js +2 -0
- package/build/lib/constants/index.js.map +1 -0
- package/build/lib/utils/contracts.d.ts +3 -3
- package/build/lib/utils/contracts.js +8 -4
- package/build/lib/utils/contracts.js.map +1 -1
- package/build/lib/utils/math.d.ts +4 -0
- package/build/lib/utils/math.js +34 -1
- package/build/lib/utils/math.js.map +1 -1
- package/build/lib/utils/pools.js +4 -6
- package/build/lib/utils/pools.js.map +1 -1
- package/build/lib/utils/position.d.ts +10 -0
- package/build/lib/utils/position.js +95 -0
- package/build/lib/utils/position.js.map +1 -0
- package/build/lib/utils/quote.d.ts +2 -0
- package/build/lib/utils/quote.js +20 -0
- package/build/lib/utils/quote.js.map +1 -1
- package/build/lib/utils/swap.d.ts +1 -1
- package/build/lib/utils/swap.js +2 -2
- package/build/lib/utils/swap.js.map +1 -1
- package/build/lib/utils/token.d.ts +1 -15
- package/build/lib/utils/token.js +13 -19
- package/build/lib/utils/token.js.map +1 -1
- package/build/schemas/index.d.ts +222 -266
- package/build/schemas/index.js +129 -174
- package/build/schemas/index.js.map +1 -1
- package/build/tools/read/getPoolFeesPerLiquidity.d.ts +2 -13
- package/build/tools/read/getPoolFeesPerLiquidity.js +8 -3
- package/build/tools/read/getPoolFeesPerLiquidity.js.map +1 -1
- package/build/tools/read/getPoolInfo.d.ts +2 -21
- package/build/tools/read/getPoolInfo.js +7 -4
- package/build/tools/read/getPoolInfo.js.map +1 -1
- package/build/tools/read/getPoolLiquidity.d.ts +2 -12
- package/build/tools/read/getPoolLiquidity.js +8 -3
- package/build/tools/read/getPoolLiquidity.js.map +1 -1
- package/build/tools/read/getPosition.d.ts +25 -0
- package/build/tools/read/getPosition.js +64 -0
- package/build/tools/read/getPosition.js.map +1 -0
- package/build/tools/read/getTokenPrice.d.ts +2 -15
- package/build/tools/read/getTokenPrice.js +12 -6
- package/build/tools/read/getTokenPrice.js.map +1 -1
- package/build/tools/write/addLiquidity.d.ts +2 -20
- package/build/tools/write/addLiquidity.js +53 -25
- package/build/tools/write/addLiquidity.js.map +1 -1
- package/build/tools/write/createPosition.d.ts +2 -20
- package/build/tools/write/createPosition.js +50 -20
- package/build/tools/write/createPosition.js.map +1 -1
- package/build/tools/write/swap.d.ts +2 -18
- package/build/tools/write/swap.js +32 -20
- package/build/tools/write/swap.js.map +1 -1
- package/build/tools/write/transferPosition.d.ts +2 -15
- package/build/tools/write/transferPosition.js +5 -3
- package/build/tools/write/transferPosition.js.map +1 -1
- package/build/tools/write/withdrawLiquidity.d.ts +2 -18
- package/build/tools/write/withdrawLiquidity.js +29 -9
- package/build/tools/write/withdrawLiquidity.js.map +1 -1
- package/package.json +5 -5
- package/build/interfaces/index.d.ts +0 -21
- package/build/interfaces/index.js +0 -2
- package/build/interfaces/index.js.map +0 -1
package/build/index.js
CHANGED
|
@@ -3,11 +3,12 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import dotenv from 'dotenv';
|
|
5
5
|
import { registerToolsWithServer, getOnchainRead, getOnchainWrite, } from '@kasarlabs/ask-starknet-core';
|
|
6
|
-
import { poolKeySchema, getTokenPriceSchema, swapTokensSchema, addLiquiditySchema, withdrawLiquiditySchema, transferPositionSchema, createPositionSchema, } from './schemas/index.js';
|
|
6
|
+
import { poolKeySchema, getTokenPriceSchema, swapTokensSchema, addLiquiditySchema, withdrawLiquiditySchema, transferPositionSchema, createPositionSchema, getPositionSchema, } from './schemas/index.js';
|
|
7
7
|
import { getPoolInfo } from './tools/read/getPoolInfo.js';
|
|
8
8
|
import { getTokenPrice } from './tools/read/getTokenPrice.js';
|
|
9
9
|
import { getPoolLiquidity } from './tools/read/getPoolLiquidity.js';
|
|
10
10
|
import { getPoolFeesPerLiquidity } from './tools/read/getPoolFeesPerLiquidity.js';
|
|
11
|
+
import { getPosition } from './tools/read/getPosition.js';
|
|
11
12
|
import { swap } from './tools/write/swap.js';
|
|
12
13
|
import { createPosition } from './tools/write/createPosition.js';
|
|
13
14
|
import { addLiquidity } from './tools/write/addLiquidity.js';
|
|
@@ -55,9 +56,18 @@ const registerTools = (EkuboToolRegistry) => {
|
|
|
55
56
|
return await getPoolFeesPerLiquidity(onchainRead, params);
|
|
56
57
|
},
|
|
57
58
|
});
|
|
59
|
+
EkuboToolRegistry.push({
|
|
60
|
+
name: 'get_position',
|
|
61
|
+
description: 'Get liquidity information for a specific Ekubo position. Returns the liquidity amount and fees per liquidity for the position.',
|
|
62
|
+
schema: getPositionSchema,
|
|
63
|
+
execute: async (params) => {
|
|
64
|
+
const onchainRead = getOnchainRead();
|
|
65
|
+
return await getPosition(onchainRead, params);
|
|
66
|
+
},
|
|
67
|
+
});
|
|
58
68
|
EkuboToolRegistry.push({
|
|
59
69
|
name: 'swap',
|
|
60
|
-
description: 'Swap tokens on Ekubo DEX. Supports both exact input (specify input amount) and exact output (specify desired output amount) swaps with configurable slippage tolerance.',
|
|
70
|
+
description: 'Swap tokens on Ekubo DEX. Supports both exact input (specify input amount) and exact output (specify desired output amount) swaps with configurable slippage tolerance. You can use token symbols (e.g., "STRK", "USDC", "ETH") or contract addresses. Supported symbols: STRK, USDC, USDT, ETH, DAI, WBTC, and many others. Either token_in_symbol or token_in_address must be provided, and either token_out_symbol or token_out_address must be provided.',
|
|
61
71
|
schema: swapTokensSchema,
|
|
62
72
|
execute: async (params) => {
|
|
63
73
|
const onchainWrite = getOnchainWrite();
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAEL,uBAAuB,EACvB,cAAc,EACd,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,37 +16,4 @@ export const ekuboAddress = {
|
|
|
16
16
|
mainnet: '0x07b696af58c967c1b14c9dde0ace001720635a660a8e90c565ea459345318b30',
|
|
17
17
|
},
|
|
18
18
|
};
|
|
19
|
-
export const erc20Addresses = {
|
|
20
|
-
AKU: '0x137dfca7d96cdd526d13a63176454f35c691f55837497448fad352643cfe4d4',
|
|
21
|
-
ALF: '0x78d7dfcddb44667153513bd837ff534ef395484f4b6cf28faa25b2c46e063d9',
|
|
22
|
-
BROTHER: '0x3b405a98c9e795d427fe82cdeeeed803f221b52471e3a757574a2b4180793ee',
|
|
23
|
-
CASH: '0x498edfaf50ca5855666a700c25dd629d577eb9afccdf3b5977aec79aee55ada',
|
|
24
|
-
DAI: '0x5574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad',
|
|
25
|
-
DAIv0: '0xda114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3',
|
|
26
|
-
DICK: '0x388588584bd8c651151f6baf241a85827e7ff0574101f2a8194a3df68a7e2fe',
|
|
27
|
-
EKUBO: '0x75afe6402ad5a5c20dd25e10ec3b3986acaa647b77e4ae24b0cbc9a54a27a87',
|
|
28
|
-
ETH: '0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7',
|
|
29
|
-
LORDS: '0x124aeb495b947201f5fac96fd1138e326ad86195b98df6dec9009158a533b49',
|
|
30
|
-
LUSD: '0x70a76fd48ca0ef910631754d77dd822147fe98a569b826ec85e3c33fde586ac',
|
|
31
|
-
NSTR: '0xc530f2c0aa4c16a0806365b0898499fba372e5df7a7172dc6fe9ba777e8007',
|
|
32
|
-
PAL: '0x49201f03a0f0a9e70e28dcd74cbf44931174dbe3cc4b2ff488898339959e559',
|
|
33
|
-
SCHIZODIO: '0xacc2fa3bb7f6a6726c14d9e142d51fe3984dbfa32b5907e1e76425177875e2',
|
|
34
|
-
SLAY: '0x2ab526354a39e7f5d272f327fa94e757df3688188d4a92c6dc3623ab79894e2',
|
|
35
|
-
SLINK: '0x13ff4e86fa3e7286cc5c64b62f4099cf41e7918d727d22a5109ecfd00274d19',
|
|
36
|
-
SSTR: '0x102d5e124c51b936ee87302e0f938165aec96fb6c2027ae7f3a5ed46c77573b',
|
|
37
|
-
STRK: '0x4718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d',
|
|
38
|
-
SWAY: '0x4878d1148318a31829523ee9c6a5ee563af6cd87f90a30809e5b0d27db8a9b',
|
|
39
|
-
UNI: '0x49210ffc442172463f3177147c1aeaa36c51d152c1b0630f2364c300d4f48ee',
|
|
40
|
-
UNO: '0x719b5092403233201aa822ce928bd4b551d0cdb071a724edd7dc5e5f57b7f34',
|
|
41
|
-
USDC: '0x53c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8',
|
|
42
|
-
USDT: '0x68f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8',
|
|
43
|
-
WBTC: '0x3fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac',
|
|
44
|
-
WIZ: '0x6e987f1e703c549991e1c13b8f1b8e1e6f8bba068a0715b9aacb51dba2800f',
|
|
45
|
-
ZEND: '0x585c32b625999e6e5e78645ff8df7a9001cf5cf3eb6b80ccdd16cb64bd3a34',
|
|
46
|
-
kSTRK: '0x45cd05ee2caaac3459b87e5e2480099d201be2f62243f839f00e10dde7f500c',
|
|
47
|
-
rETH: '0x319111a5037cbec2b3e638cc34a3474e2d2608299f3e62866e9cc683208c610',
|
|
48
|
-
sSTRK: '0x356f304b154d29d2a8fe22f1cb9107a9b564a733cf6b4cc47fd121ac1af90c9',
|
|
49
|
-
wstETH: '0x42b8f0484674ca266ac5d08e4ac6a3fe65bd3129795def2dca5c34ecc5f96d2',
|
|
50
|
-
xSTRK: '0x28d709c875c0ceac3dce7065bec5328186dc89fe254527084d1689910954b0a',
|
|
51
|
-
};
|
|
52
19
|
//# sourceMappingURL=addresses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/lib/constants/addresses.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;IACD,SAAS,EAAE;QACT,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;IACD,QAAQ,EAAE;QACR,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;IACD,YAAY,EAAE;QACZ,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;CACO,CAAC
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/lib/constants/addresses.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE;QACJ,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;IACD,SAAS,EAAE;QACT,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;IACD,QAAQ,EAAE;QACR,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;IACD,YAAY,EAAE;QACZ,OAAO,EACL,oEAAoE;QACtE,OAAO,EACL,oEAAoE;KACvE;CACO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EKUBO_API_URL = "https://starknet-mainnet-api.ekubo.org";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/constants/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,wCAAwC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { RpcProvider, Contract } from 'starknet';
|
|
1
|
+
import { RpcProvider, Contract, Account } from 'starknet';
|
|
2
2
|
import { ekuboAddress } from '../constants/addresses.js';
|
|
3
3
|
export type Network = 'sepolia' | 'mainnet';
|
|
4
4
|
export type EkuboContract = keyof typeof ekuboAddress;
|
|
5
5
|
export declare function getChain(provider: RpcProvider): Promise<Network>;
|
|
6
6
|
export declare function getEkuboAddress(contract: EkuboContract, network: Network): string;
|
|
7
|
-
export declare function getContract(provider: RpcProvider, contractType: EkuboContract): Promise<Contract>;
|
|
8
|
-
export declare function getERC20Contract(
|
|
7
|
+
export declare function getContract(provider: RpcProvider, contractType: EkuboContract, account?: Account): Promise<Contract>;
|
|
8
|
+
export declare function getERC20Contract(account: Account, tokenAddress: string): Contract;
|
|
@@ -14,13 +14,17 @@ export async function getChain(provider) {
|
|
|
14
14
|
export function getEkuboAddress(contract, network) {
|
|
15
15
|
return ekuboAddress[contract][network];
|
|
16
16
|
}
|
|
17
|
-
export async function getContract(provider, contractType) {
|
|
17
|
+
export async function getContract(provider, contractType, account) {
|
|
18
18
|
const chain = await getChain(provider);
|
|
19
19
|
const address = getEkuboAddress(contractType, chain);
|
|
20
20
|
const abi = CONTRACT_ABIS[contractType];
|
|
21
|
-
return new Contract(abi, address, provider);
|
|
21
|
+
return new Contract({ abi, address, providerOrAccount: account ?? provider });
|
|
22
22
|
}
|
|
23
|
-
export function getERC20Contract(
|
|
24
|
-
return new Contract(
|
|
23
|
+
export function getERC20Contract(account, tokenAddress) {
|
|
24
|
+
return new Contract({
|
|
25
|
+
abi: NEW_ERC20_ABI,
|
|
26
|
+
address: tokenAddress,
|
|
27
|
+
providerOrAccount: account,
|
|
28
|
+
});
|
|
25
29
|
}
|
|
26
30
|
//# sourceMappingURL=contracts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/utils/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/lib/utils/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,QAAQ,EAAW,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,aAAa,EACb,0BAA0B,EAC1B,aAAa,EACb,UAAU,GACX,MAAM,4BAA4B,CAAC;AAMpC,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,aAAa;IACxB,YAAY,EAAE,0BAA0B;IACxC,QAAQ,EAAE,UAAU;CACZ,CAAC;AAKX,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAqB;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3E,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAQD,MAAM,UAAU,eAAe,CAC7B,QAAuB,EACvB,OAAgB;IAEhB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAqB,EACrB,YAA2B,EAC3B,OAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAExC,OAAO,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;AAChF,CAAC;AAQD,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,YAAoB;IAEpB,OAAO,IAAI,QAAQ,CAAC;QAClB,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,YAAY;QACrB,iBAAiB,EAAE,OAAO;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export declare function calculateActualPrice(sqrtPrice: bigint, token0Decimals: number, token1Decimals: number): number;
|
|
2
2
|
export declare function calculateTickFromSqrtPrice(sqrtPrice: bigint): number;
|
|
3
|
+
export declare function calculateTickFromPrice(price: number, token0Decimals: number, token1Decimals: number): number;
|
|
3
4
|
export declare function convertFeePercentToU128(feePercent: number): string;
|
|
5
|
+
export declare function convertFeeU128ToPercent(feeU128: string): number;
|
|
4
6
|
export declare function convertTickSpacingPercentToExponent(tickSpacingPercent: number): number;
|
|
7
|
+
export declare function convertTickSpacingExponentToPercent(tickSpacingExponent: number): number;
|
|
8
|
+
export declare function roundTickToSpacing(tick: number, tickSpacingExponent: number, roundDown: boolean): number;
|
package/build/lib/utils/math.js
CHANGED
|
@@ -9,7 +9,13 @@ export function calculateTickFromSqrtPrice(sqrtPrice) {
|
|
|
9
9
|
const Q128 = BigInt(2) ** BigInt(128);
|
|
10
10
|
const sqrtPriceFloat = Number(sqrtPrice) / Number(Q128);
|
|
11
11
|
const price = sqrtPriceFloat * sqrtPriceFloat;
|
|
12
|
-
return Math.floor(Math.log(price) / Math.log(1.
|
|
12
|
+
return Math.floor(Math.log(price) / Math.log(1.000001));
|
|
13
|
+
}
|
|
14
|
+
export function calculateTickFromPrice(price, token0Decimals, token1Decimals) {
|
|
15
|
+
const decimalAdjustment = 10 ** (token1Decimals - token0Decimals);
|
|
16
|
+
const rawPrice = price * decimalAdjustment;
|
|
17
|
+
const tick = Math.log(rawPrice) / Math.log(1.000001);
|
|
18
|
+
return Math.floor(tick);
|
|
13
19
|
}
|
|
14
20
|
export function convertFeePercentToU128(feePercent) {
|
|
15
21
|
const feeDecimal = feePercent / 100;
|
|
@@ -17,9 +23,36 @@ export function convertFeePercentToU128(feePercent) {
|
|
|
17
23
|
const feeU128 = BigInt(Math.floor(feeDecimal * Number(TWO_POW_128)));
|
|
18
24
|
return feeU128.toString();
|
|
19
25
|
}
|
|
26
|
+
export function convertFeeU128ToPercent(feeU128) {
|
|
27
|
+
const TWO_POW_128 = BigInt(2) ** BigInt(128);
|
|
28
|
+
const feeBigInt = BigInt(feeU128);
|
|
29
|
+
const feeDecimal = Number(feeBigInt) / Number(TWO_POW_128);
|
|
30
|
+
const feePercent = feeDecimal * 100;
|
|
31
|
+
return feePercent;
|
|
32
|
+
}
|
|
20
33
|
export function convertTickSpacingPercentToExponent(tickSpacingPercent) {
|
|
21
34
|
const spacingDecimal = tickSpacingPercent / 100;
|
|
22
35
|
const tickSpacing = Math.log(1 + spacingDecimal) / Math.log(1.000001);
|
|
23
36
|
return Math.round(tickSpacing);
|
|
24
37
|
}
|
|
38
|
+
export function convertTickSpacingExponentToPercent(tickSpacingExponent) {
|
|
39
|
+
const base = 1.000001;
|
|
40
|
+
const result = Math.pow(base, tickSpacingExponent);
|
|
41
|
+
const tickSpacingPercent = (result - 1) * 100;
|
|
42
|
+
return tickSpacingPercent;
|
|
43
|
+
}
|
|
44
|
+
export function roundTickToSpacing(tick, tickSpacingExponent, roundDown) {
|
|
45
|
+
if (tickSpacingExponent <= 0) {
|
|
46
|
+
return tick;
|
|
47
|
+
}
|
|
48
|
+
let quotient;
|
|
49
|
+
if (roundDown) {
|
|
50
|
+
quotient = Math.floor(tick / tickSpacingExponent);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
quotient = Math.ceil(tick / tickSpacingExponent);
|
|
54
|
+
}
|
|
55
|
+
const roundedTick = Math.round(quotient * tickSpacingExponent);
|
|
56
|
+
return roundedTick;
|
|
57
|
+
}
|
|
25
58
|
//# sourceMappingURL=math.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/lib/utils/math.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAClC,SAAiB,EACjB,cAAsB,EACtB,cAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/lib/utils/math.ts"],"names":[],"mappings":"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"}
|
package/build/lib/utils/pools.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { validateToken } from './token.js';
|
|
2
2
|
import { convertFeePercentToU128, convertTickSpacingPercentToExponent, } from './math.js';
|
|
3
3
|
export async function preparePoolKeyFromParams(provider, params) {
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const token0 = await validateToken(provider, symbolToken0, addressToken0);
|
|
7
|
-
const token1 = await validateToken(provider, symbolToken1, addressToken1);
|
|
4
|
+
const token0 = await validateToken(provider, params.token0_symbol, params.token0_address);
|
|
5
|
+
const token1 = await validateToken(provider, params.token1_symbol, params.token1_address);
|
|
8
6
|
const poolKey = {
|
|
9
|
-
...params,
|
|
10
7
|
token0: token0.address < token1.address ? token0.address : token1.address,
|
|
11
8
|
token1: token0.address < token1.address ? token1.address : token0.address,
|
|
12
9
|
fee: convertFeePercentToU128(params.fee),
|
|
13
10
|
tick_spacing: convertTickSpacingPercentToExponent(params.tick_spacing),
|
|
11
|
+
extension: params.extension,
|
|
14
12
|
};
|
|
15
13
|
const isTokenALower = token0.address < token1.address ? true : false;
|
|
16
14
|
return { poolKey, token0, token1, isTokenALower };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../src/lib/utils/pools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../src/lib/utils/pools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AACvD,OAAO,EACL,uBAAuB,EACvB,mCAAmC,GACpC,MAAM,WAAW,CAAC;AAEnB,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAqB,EACrB,MAAe;IAOf,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,QAAQ,EACR,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,cAAc,CACtB,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,QAAQ,EACR,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,cAAc,CACtB,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;QACzE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;QACzE,GAAG,EAAE,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC;QACxC,YAAY,EAAE,mCAAmC,CAAC,MAAM,CAAC,YAAY,CAAC;QACtE,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function fetchPositionOwner(positionId: number): Promise<string>;
|
|
2
|
+
export declare function fetchPositionData(positionId: number): Promise<{
|
|
3
|
+
tick_lower: string;
|
|
4
|
+
tick_upper: string;
|
|
5
|
+
tick_spacing: string;
|
|
6
|
+
extension: string;
|
|
7
|
+
fee: string;
|
|
8
|
+
token0: string;
|
|
9
|
+
token1: string;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { EKUBO_API_URL } from '../constants/index.js';
|
|
2
|
+
export async function fetchPositionOwner(positionId) {
|
|
3
|
+
const url = `${EKUBO_API_URL}/${positionId}/state`;
|
|
4
|
+
let response;
|
|
5
|
+
try {
|
|
6
|
+
response = await fetch(url, {
|
|
7
|
+
method: 'GET',
|
|
8
|
+
headers: {
|
|
9
|
+
accept: 'application/json',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
15
|
+
throw new Error(`Network error while fetching position owner: ${error.message}. This may be due to DNS resolution failure or connection refused.`);
|
|
16
|
+
}
|
|
17
|
+
throw new Error(`Failed to fetch position owner: ${error instanceof Error ? error.message : String(error)}`);
|
|
18
|
+
}
|
|
19
|
+
if (!response.ok) {
|
|
20
|
+
throw new Error(`Failed to fetch position owner: ${response.status} ${response.statusText}`);
|
|
21
|
+
}
|
|
22
|
+
let data;
|
|
23
|
+
try {
|
|
24
|
+
data = await response.json();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
throw new Error(`Failed to parse JSON response while fetching position owner: ${error instanceof Error ? error.message : String(error)}`);
|
|
28
|
+
}
|
|
29
|
+
const owner = data.last_owner || data.owner || data.owner_address || data.ownerAddress;
|
|
30
|
+
if (!owner) {
|
|
31
|
+
throw new Error(`Owner not found in API response: ${JSON.stringify(data)}`);
|
|
32
|
+
}
|
|
33
|
+
return String(owner);
|
|
34
|
+
}
|
|
35
|
+
export async function fetchPositionData(positionId) {
|
|
36
|
+
const url = `${EKUBO_API_URL}/${positionId}`;
|
|
37
|
+
let response;
|
|
38
|
+
try {
|
|
39
|
+
response = await fetch(url, {
|
|
40
|
+
method: 'GET',
|
|
41
|
+
headers: {
|
|
42
|
+
accept: 'application/json',
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
48
|
+
throw new Error(`Network error while fetching position data: ${error.message}. This may be due to DNS resolution failure or connection refused.`);
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Failed to fetch position data: ${error instanceof Error ? error.message : String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
if (!response.ok) {
|
|
53
|
+
throw new Error(`Failed to fetch position data: ${response.status} ${response.statusText}`);
|
|
54
|
+
}
|
|
55
|
+
let data;
|
|
56
|
+
try {
|
|
57
|
+
data = await response.json();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
throw new Error(`Failed to parse JSON response while fetching position data: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
+
}
|
|
62
|
+
const attributes = data.attributes || [];
|
|
63
|
+
const attributeMap = {};
|
|
64
|
+
for (const attr of attributes) {
|
|
65
|
+
if (attr.trait_type && attr.value !== undefined) {
|
|
66
|
+
attributeMap[attr.trait_type] = attr.value;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const tick_lower = attributeMap.tick_lower;
|
|
70
|
+
const tick_upper = attributeMap.tick_upper;
|
|
71
|
+
const tick_spacing = attributeMap.tick_spacing;
|
|
72
|
+
const extension = attributeMap.extension;
|
|
73
|
+
const fee = attributeMap.fee;
|
|
74
|
+
const token0 = attributeMap.token0;
|
|
75
|
+
const token1 = attributeMap.token1;
|
|
76
|
+
if (tick_lower === undefined ||
|
|
77
|
+
tick_upper === undefined ||
|
|
78
|
+
tick_spacing === undefined ||
|
|
79
|
+
extension === undefined ||
|
|
80
|
+
fee === undefined ||
|
|
81
|
+
token0 === undefined ||
|
|
82
|
+
token1 === undefined) {
|
|
83
|
+
throw new Error(`Missing required position data from API response: ${JSON.stringify(attributeMap)}`);
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
tick_lower: String(tick_lower),
|
|
87
|
+
tick_upper: String(tick_upper),
|
|
88
|
+
tick_spacing: String(tick_spacing),
|
|
89
|
+
extension: String(extension),
|
|
90
|
+
fee: String(fee),
|
|
91
|
+
token0: String(token0),
|
|
92
|
+
token1: String(token1),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=position.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/lib/utils/position.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,3 +3,5 @@ export declare function getSwapQuote(routerContract: Contract, routeNode: any, t
|
|
|
3
3
|
export declare function extractExpectedOutput(quote: any, isTokenALower: boolean): bigint;
|
|
4
4
|
export declare function calculateMinimumOutput(expectedOutput: bigint, slippageTolerance: number): string;
|
|
5
5
|
export declare function calculateMinimumOutputU256(expectedOutput: bigint, slippageTolerance: number): import("starknet").Uint256;
|
|
6
|
+
export declare function extractRequiredInput(quote: any, isTokenInToken0: boolean): bigint;
|
|
7
|
+
export declare function createExactOutputMinimum(desiredOutput: bigint): import("starknet").Uint256;
|
package/build/lib/utils/quote.js
CHANGED
|
@@ -14,4 +14,24 @@ export function calculateMinimumOutputU256(expectedOutput, slippageTolerance) {
|
|
|
14
14
|
const minimumAmountStr = calculateMinimumOutput(expectedOutput, slippageTolerance);
|
|
15
15
|
return cairo.uint256(minimumAmountStr);
|
|
16
16
|
}
|
|
17
|
+
export function extractRequiredInput(quote, isTokenInToken0) {
|
|
18
|
+
const amount0 = BigInt(quote.amount0.mag.toString());
|
|
19
|
+
const amount1 = BigInt(quote.amount1.mag.toString());
|
|
20
|
+
const sign0 = quote.amount0.sign;
|
|
21
|
+
const sign1 = quote.amount1.sign;
|
|
22
|
+
let requiredInput;
|
|
23
|
+
if (isTokenInToken0) {
|
|
24
|
+
requiredInput = sign0 ? -amount0 : amount0;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
requiredInput = sign1 ? -amount1 : amount1;
|
|
28
|
+
}
|
|
29
|
+
if (requiredInput < 0n) {
|
|
30
|
+
requiredInput = -requiredInput;
|
|
31
|
+
}
|
|
32
|
+
return requiredInput;
|
|
33
|
+
}
|
|
34
|
+
export function createExactOutputMinimum(desiredOutput) {
|
|
35
|
+
return cairo.uint256(desiredOutput.toString());
|
|
36
|
+
}
|
|
17
37
|
//# sourceMappingURL=quote.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../../../src/lib/utils/quote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAK3C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,cAAwB,EACxB,SAAc,EACd,WAAgB;IAEhB,OAAO,MAAM,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjE,CAAC;AAKD,MAAM,UAAU,qBAAqB,CACnC,KAAU,EACV,aAAsB;IAItB,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/D,CAAC;AAKD,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,iBAAyB;IAEzB,MAAM,kBAAkB,GAAG,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC,CACxD,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC;AAClC,CAAC;AAKD,MAAM,UAAU,0BAA0B,CACxC,cAAsB,EACtB,iBAAyB;IAEzB,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,cAAc,EACd,iBAAiB,CAClB,CAAC;IACF,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"quote.js","sourceRoot":"","sources":["../../../src/lib/utils/quote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAK3C,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,cAAwB,EACxB,SAAc,EACd,WAAgB;IAEhB,OAAO,MAAM,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjE,CAAC;AAKD,MAAM,UAAU,qBAAqB,CACnC,KAAU,EACV,aAAsB;IAItB,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/D,CAAC;AAKD,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,iBAAyB;IAEzB,MAAM,kBAAkB,GAAG,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC,CACxD,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC;AAClC,CAAC;AAKD,MAAM,UAAU,0BAA0B,CACxC,cAAsB,EACtB,iBAAyB;IAEzB,MAAM,gBAAgB,GAAG,sBAAsB,CAC7C,cAAc,EACd,iBAAiB,CAClB,CAAC;IACF,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAC;AAgBD,MAAM,UAAU,oBAAoB,CAClC,KAAU,EACV,eAAwB;IAExB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAEjC,IAAI,aAAqB,CAAC;IAE1B,IAAI,eAAe,EAAE,CAAC;QAIpB,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;SAAM,CAAC;QAEN,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;IAID,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;QACvB,aAAa,GAAG,CAAC,aAAa,CAAC;IACjC,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAcD,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -10,4 +10,4 @@ export declare function buildTokenAmount(tokenAddress: string, amount: string, i
|
|
|
10
10
|
sign: boolean;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
-
export declare function calculateSqrtRatioLimit(currentSqrtPrice: bigint, slippageTolerance: number,
|
|
13
|
+
export declare function calculateSqrtRatioLimit(currentSqrtPrice: bigint, slippageTolerance: number, isSellingToken0: boolean): string;
|
package/build/lib/utils/swap.js
CHANGED
|
@@ -16,8 +16,8 @@ export function buildTokenAmount(tokenAddress, amount, isAmountIn) {
|
|
|
16
16
|
},
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
export function calculateSqrtRatioLimit(currentSqrtPrice, slippageTolerance,
|
|
20
|
-
if (
|
|
19
|
+
export function calculateSqrtRatioLimit(currentSqrtPrice, slippageTolerance, isSellingToken0) {
|
|
20
|
+
if (isSellingToken0) {
|
|
21
21
|
const slippageMultiplier = 1 - slippageTolerance / 100;
|
|
22
22
|
const calculatedLimit = BigInt(Math.floor(Number(currentSqrtPrice) * Math.sqrt(slippageMultiplier)));
|
|
23
23
|
return calculatedLimit < currentSqrtPrice &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/lib/utils/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrE,MAAM,UAAU,cAAc,CAAC,OAAY,EAAE,cAAsB;IACjE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/C,UAAU,EAAE,CAAC;KACd,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../src/lib/utils/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrE,MAAM,UAAU,cAAc,CAAC,OAAY,EAAE,cAAsB;IACjE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/C,UAAU,EAAE,CAAC;KACd,CAAC;AACJ,CAAC;AAkBD,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,MAAc,EACd,UAAmB;IAEnB,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE;YACN,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,CAAC,UAAU;SAClB;KACF,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,uBAAuB,CACrC,gBAAwB,EACxB,iBAAyB,EACzB,eAAwB;IAExB,IAAI,eAAe,EAAE,CAAC;QAEpB,MAAM,kBAAkB,GAAG,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,CAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CACrE,CAAC;QACF,OAAO,eAAe,GAAG,gBAAgB;YACvC,eAAe,IAAI,cAAc;YACjC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE;YAC5B,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;SAAM,CAAC;QAEN,MAAM,kBAAkB,GAAG,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,CAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CACrE,CAAC;QACF,OAAO,eAAe,GAAG,gBAAgB;YACvC,eAAe,IAAI,cAAc;YACjC,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE;YAC5B,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Provider, Uint256
|
|
1
|
+
import { Provider, Uint256 } from 'starknet';
|
|
2
2
|
export declare const DECIMALS: {
|
|
3
3
|
USDC: number;
|
|
4
4
|
USDT: number;
|
|
@@ -13,10 +13,6 @@ export interface ParamsValidationResult {
|
|
|
13
13
|
address: string;
|
|
14
14
|
amount: Uint256;
|
|
15
15
|
}
|
|
16
|
-
export interface ExecuteV3Args {
|
|
17
|
-
call: Call;
|
|
18
|
-
account: Account;
|
|
19
|
-
}
|
|
20
16
|
export declare function detectAbiType(address: string, provider: Provider): Promise<({
|
|
21
17
|
type: string;
|
|
22
18
|
name: string;
|
|
@@ -115,13 +111,3 @@ export declare const validateTokenAddress: (symbol: string) => string;
|
|
|
115
111
|
export declare const formatTokenAmount: (amount: string, decimals: number) => string;
|
|
116
112
|
export declare const validateAndFormatParams: (address: string, amount: string, decimals: number) => ParamsValidationResult;
|
|
117
113
|
export declare function validateToken(provider: Provider, assetSymbol?: string, assetAddress?: string): Promise<validToken>;
|
|
118
|
-
export declare function extractAssetInfo(asset: {
|
|
119
|
-
assetType: 'SYMBOL' | 'ADDRESS';
|
|
120
|
-
assetValue: string;
|
|
121
|
-
}): {
|
|
122
|
-
assetSymbol: string;
|
|
123
|
-
assetAddress: undefined;
|
|
124
|
-
} | {
|
|
125
|
-
assetSymbol: undefined;
|
|
126
|
-
assetAddress: string;
|
|
127
|
-
};
|
package/build/lib/utils/token.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { validateAndParseAddress, Contract, shortString, cairo, } from 'starknet';
|
|
2
|
-
import { erc20Addresses } from '../constants/addresses.js';
|
|
3
2
|
import { NEW_ERC20_ABI, OLD_ERC20_ABI } from '../constants/abis/index.js';
|
|
3
|
+
import { starknetTokenAddresses } from '@kasarlabs/ask-starknet-core';
|
|
4
4
|
export const DECIMALS = {
|
|
5
5
|
USDC: 6,
|
|
6
6
|
USDT: 6,
|
|
@@ -8,7 +8,11 @@ export const DECIMALS = {
|
|
|
8
8
|
};
|
|
9
9
|
export async function detectAbiType(address, provider) {
|
|
10
10
|
try {
|
|
11
|
-
const contract = new Contract(
|
|
11
|
+
const contract = new Contract({
|
|
12
|
+
abi: OLD_ERC20_ABI,
|
|
13
|
+
address,
|
|
14
|
+
providerOrAccount: provider,
|
|
15
|
+
});
|
|
12
16
|
const symbol = await contract.symbol();
|
|
13
17
|
if (symbol == 0n) {
|
|
14
18
|
return NEW_ERC20_ABI;
|
|
@@ -49,9 +53,9 @@ export const formatBalance = (rawBalance, decimals) => {
|
|
|
49
53
|
}
|
|
50
54
|
};
|
|
51
55
|
export const validateTokenAddress = (symbol) => {
|
|
52
|
-
const tokenAddress =
|
|
56
|
+
const tokenAddress = starknetTokenAddresses[symbol];
|
|
53
57
|
if (!tokenAddress) {
|
|
54
|
-
throw new Error(`Token ${symbol} not supported. Available tokens: ${Object.keys(
|
|
58
|
+
throw new Error(`Token ${symbol} not supported. Available tokens: ${Object.keys(tokenAddress).join(', ')}`);
|
|
55
59
|
}
|
|
56
60
|
return tokenAddress;
|
|
57
61
|
};
|
|
@@ -97,7 +101,11 @@ export async function validateToken(provider, assetSymbol, assetAddress) {
|
|
|
97
101
|
address = validateAndParseAddress(assetAddress);
|
|
98
102
|
try {
|
|
99
103
|
const abi = await detectAbiType(address, provider);
|
|
100
|
-
const contract = new Contract(
|
|
104
|
+
const contract = new Contract({
|
|
105
|
+
abi,
|
|
106
|
+
address,
|
|
107
|
+
providerOrAccount: provider,
|
|
108
|
+
});
|
|
101
109
|
try {
|
|
102
110
|
const rawSymbol = await contract.symbol();
|
|
103
111
|
symbol =
|
|
@@ -133,18 +141,4 @@ export async function validateToken(provider, assetSymbol, assetAddress) {
|
|
|
133
141
|
decimals,
|
|
134
142
|
};
|
|
135
143
|
}
|
|
136
|
-
export function extractAssetInfo(asset) {
|
|
137
|
-
if (asset.assetType === 'SYMBOL') {
|
|
138
|
-
return {
|
|
139
|
-
assetSymbol: asset.assetValue,
|
|
140
|
-
assetAddress: undefined,
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
return {
|
|
145
|
-
assetSymbol: undefined,
|
|
146
|
-
assetAddress: asset.assetValue,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
144
|
//# sourceMappingURL=token.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/lib/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/lib/utils/token.ts"],"names":[],"mappings":"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"}
|