@kasarlabs/fibrous-mcp 0.1.4 → 0.1.5
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/lib/constants/index.d.ts +1 -1
- package/build/lib/constants/index.js +1 -1
- package/build/lib/constants/index.js.map +1 -1
- package/build/lib/types/index.d.ts +2 -0
- package/build/lib/utils/amount.d.ts +2 -0
- package/build/lib/utils/amount.js +12 -0
- package/build/lib/utils/amount.js.map +1 -0
- package/build/lib/utils/contractInteractor.js +10 -3
- package/build/lib/utils/contractInteractor.js.map +1 -1
- package/build/lib/utils/fibrousRouterSdk.d.ts +3 -0
- package/build/lib/utils/fibrousRouterSdk.js +12 -0
- package/build/lib/utils/fibrousRouterSdk.js.map +1 -0
- package/build/schemas/index.d.ts +6 -0
- package/build/schemas/index.js +12 -0
- package/build/schemas/index.js.map +1 -1
- package/build/tools/approval.js +5 -5
- package/build/tools/approval.js.map +1 -1
- package/build/tools/batchSwap.d.ts +3 -4
- package/build/tools/batchSwap.js +33 -37
- package/build/tools/batchSwap.js.map +1 -1
- package/build/tools/fetchRoute.d.ts +1 -1
- package/build/tools/fetchRoute.js +11 -17
- package/build/tools/fetchRoute.js.map +1 -1
- package/build/tools/fetchTokens.d.ts +2 -1
- package/build/tools/fetchTokens.js +15 -5
- package/build/tools/fetchTokens.js.map +1 -1
- package/build/tools/swap.d.ts +1 -1
- package/build/tools/swap.js +20 -19
- package/build/tools/swap.js.map +1 -1
- package/package.json +12 -6
- package/build/lib/abis/erc20Abi.d.ts +0 -89
- package/build/lib/abis/erc20Abi.js +0 -128
- package/build/lib/abis/erc20Abi.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const DEFAULT_SLIPPAGE_PERCENTAGE = 1;
|
|
2
2
|
export declare const DEFAULT_QUOTE_SIZE = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/constants/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/constants/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC"}
|
|
@@ -4,11 +4,13 @@ export interface SwapParams {
|
|
|
4
4
|
sellTokenSymbol: string;
|
|
5
5
|
buyTokenSymbol: string;
|
|
6
6
|
sellAmount: number;
|
|
7
|
+
slippage?: number;
|
|
7
8
|
}
|
|
8
9
|
export interface BatchSwapParams {
|
|
9
10
|
sellTokenSymbols: string[];
|
|
10
11
|
buyTokenSymbols: string[];
|
|
11
12
|
sellAmounts: number[] | BigNumber[];
|
|
13
|
+
slippage?: number;
|
|
12
14
|
}
|
|
13
15
|
export interface Token {
|
|
14
16
|
name: string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
+
export function formatToBaseUnits(amount, decimals) {
|
|
3
|
+
if (BigNumber.isBigNumber(amount)) {
|
|
4
|
+
return amount.toString();
|
|
5
|
+
}
|
|
6
|
+
const value = amount.toString();
|
|
7
|
+
const [whole, fraction = ''] = value.split('.');
|
|
8
|
+
const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);
|
|
9
|
+
const combined = `${whole}${paddedFraction}`;
|
|
10
|
+
return combined.replace(/^(-?)0+(?=\d)/, '$1') || '0';
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=amount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amount.js","sourceRoot":"","sources":["../../../src/lib/utils/amount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAUrD,MAAM,UAAU,iBAAiB,CAC/B,MAAmC,EACnC,QAAgB;IAEhB,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,cAAc,EAAE,CAAC;IAC7C,OAAO,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AACxD,CAAC"}
|
|
@@ -94,17 +94,24 @@ export class ContractInteractor {
|
|
|
94
94
|
throw new Error('Contract must be connected to an account to estimate fees');
|
|
95
95
|
}
|
|
96
96
|
try {
|
|
97
|
-
|
|
97
|
+
const estimate = await contract.estimate(method, args);
|
|
98
|
+
if ('overall_fee' in estimate) {
|
|
99
|
+
return estimate;
|
|
100
|
+
}
|
|
101
|
+
throw new Error('Unexpected estimate response format');
|
|
98
102
|
}
|
|
99
103
|
catch (error) {
|
|
100
104
|
throw new Error(`Failed to estimate contract write: ${error.message}`);
|
|
101
105
|
}
|
|
102
106
|
}
|
|
103
107
|
formatTokenAmount(amount, decimals = 18) {
|
|
108
|
+
if (decimals < 0) {
|
|
109
|
+
throw new Error('Decimals must be non-negative');
|
|
110
|
+
}
|
|
104
111
|
const value = typeof amount === 'string' ? amount : amount.toString();
|
|
105
112
|
const [whole, fraction = ''] = value.split('.');
|
|
106
|
-
const
|
|
107
|
-
return whole +
|
|
113
|
+
const truncatedFraction = fraction.slice(0, decimals).padEnd(decimals, '0');
|
|
114
|
+
return whole + truncatedFraction;
|
|
108
115
|
}
|
|
109
116
|
parseTokenAmount(amount, decimals = 18) {
|
|
110
117
|
const amountBigInt = BigInt(amount);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractInteractor.js","sourceRoot":"","sources":["../../../src/lib/utils/contractInteractor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contractInteractor.js","sourceRoot":"","sources":["../../../src/lib/utils/contractInteractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
export function getFibrousRouterCtor() {
|
|
3
|
+
const require = createRequire(import.meta.url);
|
|
4
|
+
const sdk = require('fibrous-router-sdk');
|
|
5
|
+
const m = sdk;
|
|
6
|
+
const RouterCtor = m.Router ?? m.default?.Router;
|
|
7
|
+
if (!RouterCtor) {
|
|
8
|
+
throw new Error('fibrous-router-sdk: Router export not found (ESM/CJS interop issue)');
|
|
9
|
+
}
|
|
10
|
+
return RouterCtor;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=fibrousRouterSdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fibrousRouterSdk.js","sourceRoot":"","sources":["../../../src/lib/utils/fibrousRouterSdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,UAAU,oBAAoB;IAGlC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAY,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,GAA2D,CAAC;IACtE,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,UAA+B,CAAC;AACzC,CAAC"}
|
package/build/schemas/index.d.ts
CHANGED
|
@@ -3,20 +3,25 @@ export declare const swapSchema: z.ZodObject<{
|
|
|
3
3
|
sellTokenSymbol: z.ZodString;
|
|
4
4
|
buyTokenSymbol: z.ZodString;
|
|
5
5
|
sellAmount: z.ZodNumber;
|
|
6
|
+
slippage: z.ZodDefault<z.ZodNumber>;
|
|
6
7
|
}, "strip", z.ZodTypeAny, {
|
|
7
8
|
sellTokenSymbol: string;
|
|
8
9
|
buyTokenSymbol: string;
|
|
9
10
|
sellAmount: number;
|
|
11
|
+
slippage: number;
|
|
10
12
|
}, {
|
|
11
13
|
sellTokenSymbol: string;
|
|
12
14
|
buyTokenSymbol: string;
|
|
13
15
|
sellAmount: number;
|
|
16
|
+
slippage?: number | undefined;
|
|
14
17
|
}>;
|
|
15
18
|
export declare const batchSwapSchema: z.ZodObject<{
|
|
16
19
|
sellTokenSymbols: z.ZodArray<z.ZodString, "many">;
|
|
17
20
|
buyTokenSymbols: z.ZodArray<z.ZodString, "many">;
|
|
18
21
|
sellAmounts: z.ZodArray<z.ZodNumber, "many">;
|
|
22
|
+
slippage: z.ZodDefault<z.ZodNumber>;
|
|
19
23
|
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
slippage: number;
|
|
20
25
|
sellTokenSymbols: string[];
|
|
21
26
|
buyTokenSymbols: string[];
|
|
22
27
|
sellAmounts: number[];
|
|
@@ -24,6 +29,7 @@ export declare const batchSwapSchema: z.ZodObject<{
|
|
|
24
29
|
sellTokenSymbols: string[];
|
|
25
30
|
buyTokenSymbols: string[];
|
|
26
31
|
sellAmounts: number[];
|
|
32
|
+
slippage?: number | undefined;
|
|
27
33
|
}>;
|
|
28
34
|
export declare const routeSchema: z.ZodObject<{
|
|
29
35
|
sellTokenSymbol: z.ZodString;
|
package/build/schemas/index.js
CHANGED
|
@@ -7,11 +7,23 @@ export const swapSchema = z.object({
|
|
|
7
7
|
.string()
|
|
8
8
|
.describe("Symbol of the token to buy (e.g., 'ETH', 'USDC')"),
|
|
9
9
|
sellAmount: z.number().min(0.000001).describe('Amount of tokens to sell'),
|
|
10
|
+
slippage: z
|
|
11
|
+
.number()
|
|
12
|
+
.min(0)
|
|
13
|
+
.max(100)
|
|
14
|
+
.default(1)
|
|
15
|
+
.describe('Slippage tolerance in percentage (default: 1)'),
|
|
10
16
|
});
|
|
11
17
|
export const batchSwapSchema = z.object({
|
|
12
18
|
sellTokenSymbols: z.array(z.string()).describe('Symbols of tokens to sell'),
|
|
13
19
|
buyTokenSymbols: z.array(z.string()).describe('Symbols of tokens to buy'),
|
|
14
20
|
sellAmounts: z.array(z.number()).describe('Amounts of tokens to sell'),
|
|
21
|
+
slippage: z
|
|
22
|
+
.number()
|
|
23
|
+
.min(0)
|
|
24
|
+
.max(100)
|
|
25
|
+
.default(1)
|
|
26
|
+
.describe('Slippage tolerance in percentage (default: 1)'),
|
|
15
27
|
});
|
|
16
28
|
export const routeSchema = z.object({
|
|
17
29
|
sellTokenSymbol: z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,mDAAmD,CAAC;IAChE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,mDAAmD,CAAC;IAChE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACzE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC3E,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACtE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,CAAC,mDAAmD,CAAC;IAChE,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;CAC1E,CAAC,CAAC"}
|
package/build/tools/approval.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Contract } from 'starknet';
|
|
2
|
-
import { ERC20_ABI } from '
|
|
3
|
-
import {
|
|
4
|
-
|
|
2
|
+
import { ERC20_ABI } from '@kasarlabs/ask-starknet-core';
|
|
3
|
+
import { getFibrousRouterCtor } from '../lib/utils/fibrousRouterSdk.js';
|
|
4
|
+
const FibrousRouterCtor = getFibrousRouterCtor();
|
|
5
5
|
export class ApprovalService {
|
|
6
6
|
constructor() {
|
|
7
|
-
this.fibrous = new
|
|
7
|
+
this.fibrous = new FibrousRouterCtor();
|
|
8
8
|
}
|
|
9
9
|
async checkAndGetApproveToken(account, tokenAddress, spenderAddress, amount) {
|
|
10
10
|
try {
|
|
@@ -28,7 +28,7 @@ export class ApprovalService {
|
|
|
28
28
|
}
|
|
29
29
|
const requiredAmount = BigInt(amount);
|
|
30
30
|
if (currentAllowance < requiredAmount) {
|
|
31
|
-
const calldata = await this.fibrous.buildApproveStarknet(
|
|
31
|
+
const calldata = await this.fibrous.buildApproveStarknet(BigInt(amount), tokenAddress);
|
|
32
32
|
return calldata;
|
|
33
33
|
}
|
|
34
34
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/tools/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/tools/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;AAEjD,MAAM,OAAO,eAAe;IAE1B;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,OAAgB,EAChB,YAAoB,EACpB,cAAsB,EACtB,MAAc;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;gBAC5B,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,YAAY;gBACrB,iBAAiB,EAAE,OAAO;aAC3B,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,SAAS,CAC9C,OAAO,CAAC,OAAO,EACf,cAAc,CACf,CAAC;YAEF,IAAI,gBAAwB,CAAC;YAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnC,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,IACL,OAAO,eAAe,KAAK,QAAQ;gBACnC,eAAe,KAAK,IAAI,EACxB,CAAC;gBACD,MAAM,KAAK,GAAQ,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAEtC,IAAI,gBAAgB,GAAG,cAAc,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CACtD,MAAM,CAAC,MAAM,CAAC,EACd,YAAY,CACb,CAAC;gBAEF,OAAO,QAAQ,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
2
|
-
import { BigNumber } from '@ethersproject/bignumber';
|
|
1
|
+
import type { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
3
2
|
import { BatchSwapParams } from '../lib/types/index.js';
|
|
4
3
|
import { onchainWrite, toolResult } from '@kasarlabs/ask-starknet-core';
|
|
5
4
|
export declare class BatchSwapService {
|
|
@@ -13,13 +12,13 @@ export declare class BatchSwapService {
|
|
|
13
12
|
extractBatchSwapParams(params: BatchSwapParams): {
|
|
14
13
|
sellTokenAddresses: string[];
|
|
15
14
|
buyTokenAddresses: string[];
|
|
16
|
-
sellAmounts:
|
|
15
|
+
sellAmounts: string[];
|
|
17
16
|
};
|
|
18
17
|
executeSwapTransaction(params: BatchSwapParams): Promise<{
|
|
19
18
|
status: string;
|
|
20
19
|
message: string;
|
|
21
20
|
transactionHash: string;
|
|
22
|
-
sellAmounts: number[] | BigNumber[];
|
|
21
|
+
sellAmounts: number[] | import("@ethersproject/bignumber").BigNumber[];
|
|
23
22
|
sellTokenSymbols: string[];
|
|
24
23
|
buyTokenSymbols: string[];
|
|
25
24
|
receipt: import("starknet").TransactionReceipt;
|
package/build/tools/batchSwap.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { Account } from 'starknet';
|
|
2
2
|
import { ApprovalService } from './approval.js';
|
|
3
3
|
import { TokenService } from './fetchTokens.js';
|
|
4
|
-
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
5
|
-
import { BigNumber } from '@ethersproject/bignumber';
|
|
6
4
|
import { getV3DetailsPayload } from '../lib/utils/utils.js';
|
|
7
5
|
import { TransactionMonitor } from '../lib/utils/transactionMonitor.js';
|
|
8
|
-
import {
|
|
6
|
+
import { DEFAULT_SLIPPAGE_PERCENTAGE } from '../lib/constants/index.js';
|
|
7
|
+
import { formatToBaseUnits } from '../lib/utils/amount.js';
|
|
8
|
+
import { getFibrousRouterCtor } from '../lib/utils/fibrousRouterSdk.js';
|
|
9
|
+
const FibrousRouterCtor = getFibrousRouterCtor();
|
|
9
10
|
export class BatchSwapService {
|
|
10
11
|
constructor(env, walletAddress, routerInstance) {
|
|
11
12
|
this.env = env;
|
|
12
13
|
this.walletAddress = walletAddress;
|
|
13
14
|
this.tokenService = new TokenService();
|
|
14
15
|
this.approvalService = new ApprovalService();
|
|
15
|
-
this.router = routerInstance || new
|
|
16
|
+
this.router = routerInstance || new FibrousRouterCtor();
|
|
16
17
|
}
|
|
17
18
|
async initialize() {
|
|
18
19
|
await this.tokenService.initializeTokens();
|
|
@@ -23,7 +24,7 @@ export class BatchSwapService {
|
|
|
23
24
|
const sellAmounts = [];
|
|
24
25
|
for (let i = 0; i < params.sellTokenSymbols.length; i++) {
|
|
25
26
|
const { sellToken, buyToken } = this.tokenService.validateTokenPair(params.sellTokenSymbols[i], params.buyTokenSymbols[i]);
|
|
26
|
-
const sellAmount =
|
|
27
|
+
const sellAmount = formatToBaseUnits(params.sellAmounts[i], Number(sellToken.decimals));
|
|
27
28
|
sellTokens.push(sellToken.address);
|
|
28
29
|
buyTokens.push(buyToken.address);
|
|
29
30
|
sellAmounts.push(sellAmount);
|
|
@@ -44,36 +45,35 @@ export class BatchSwapService {
|
|
|
44
45
|
signer: this.env.account.signer,
|
|
45
46
|
});
|
|
46
47
|
const swapParams = this.extractBatchSwapParams(params);
|
|
47
|
-
const routes = [];
|
|
48
|
-
for (let i = 0; i < swapParams.sellAmounts.length; i++) {
|
|
49
|
-
const route = await this.router.getBestRoute(swapParams.sellAmounts[i], swapParams.sellTokenAddresses[i], swapParams.buyTokenAddresses[i], 'starknet');
|
|
50
|
-
routes.push(route);
|
|
51
|
-
}
|
|
52
|
-
for (let i = 0; i < routes.length; i++) {
|
|
53
|
-
console.error(`${i}. Route information: `, {
|
|
54
|
-
sellToken: params.sellTokenSymbols[i],
|
|
55
|
-
buyToken: params.buyTokenSymbols[i],
|
|
56
|
-
sellAmount: params.sellAmounts[i],
|
|
57
|
-
buyAmount: routes[i] && routes[i].success
|
|
58
|
-
? routes[i].outputAmount
|
|
59
|
-
: 'N/A',
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
48
|
const destinationAddress = account.address;
|
|
63
|
-
const swapCalls = await this.router.buildBatchTransaction(
|
|
64
|
-
|
|
49
|
+
const swapCalls = await this.router.buildBatchTransaction({
|
|
50
|
+
inputAmounts: swapParams.sellAmounts,
|
|
51
|
+
tokenInAddresses: swapParams.sellTokenAddresses,
|
|
52
|
+
tokenOutAddresses: swapParams.buyTokenAddresses,
|
|
53
|
+
slippage: params.slippage ?? DEFAULT_SLIPPAGE_PERCENTAGE,
|
|
54
|
+
destination: destinationAddress,
|
|
55
|
+
chainName: 'starknet',
|
|
56
|
+
});
|
|
57
|
+
if (!swapCalls || !Array.isArray(swapCalls)) {
|
|
65
58
|
throw new Error('Calldata not available for this swap');
|
|
66
59
|
}
|
|
60
|
+
const approvalsByToken = new Map();
|
|
61
|
+
for (let i = 0; i < swapParams.sellTokenAddresses.length; i++) {
|
|
62
|
+
const tokenAddr = swapParams.sellTokenAddresses[i];
|
|
63
|
+
const amount = BigInt(swapParams.sellAmounts[i]);
|
|
64
|
+
approvalsByToken.set(tokenAddr, (approvalsByToken.get(tokenAddr) || 0n) + amount);
|
|
65
|
+
}
|
|
66
|
+
const routerAddress = await this.router.getRouterAddress('starknet');
|
|
67
67
|
let calldata = [];
|
|
68
|
-
for (
|
|
69
|
-
const approveCall = await this.approvalService.checkAndGetApproveToken(account,
|
|
68
|
+
for (const [tokenAddr, totalAmount] of approvalsByToken) {
|
|
69
|
+
const approveCall = await this.approvalService.checkAndGetApproveToken(account, tokenAddr, routerAddress, totalAmount.toString());
|
|
70
70
|
if (approveCall) {
|
|
71
|
-
calldata
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
calldata = [swapCalls[i]];
|
|
71
|
+
calldata.push(approveCall);
|
|
75
72
|
}
|
|
76
73
|
}
|
|
74
|
+
for (const swapCall of swapCalls) {
|
|
75
|
+
calldata.push(swapCall);
|
|
76
|
+
}
|
|
77
77
|
const swapResult = await account.execute(calldata, getV3DetailsPayload());
|
|
78
78
|
const { receipt, events } = await this.monitorSwapStatus(swapResult.transaction_hash);
|
|
79
79
|
return {
|
|
@@ -96,7 +96,7 @@ export class BatchSwapService {
|
|
|
96
96
|
}
|
|
97
97
|
async monitorSwapStatus(txHash) {
|
|
98
98
|
const transactionMonitor = new TransactionMonitor(this.env.provider);
|
|
99
|
-
const receipt = await transactionMonitor.waitForTransaction(txHash, (status) => console.
|
|
99
|
+
const receipt = await transactionMonitor.waitForTransaction(txHash, (status) => console.info('Swap status:', status));
|
|
100
100
|
const events = await transactionMonitor.getTransactionEvents(txHash);
|
|
101
101
|
return { receipt, events };
|
|
102
102
|
}
|
|
@@ -108,18 +108,14 @@ export const createSwapService = (env, walletAddress) => {
|
|
|
108
108
|
return new BatchSwapService(env, walletAddress);
|
|
109
109
|
};
|
|
110
110
|
export const batchSwapTokens = async (env, params) => {
|
|
111
|
-
return {
|
|
112
|
-
status: 'failure',
|
|
113
|
-
error: 'This tool is currently under maintenance. ',
|
|
114
|
-
};
|
|
115
111
|
const accountAddress = env.account?.address;
|
|
116
112
|
try {
|
|
117
113
|
const swapService = createSwapService(env, accountAddress);
|
|
118
114
|
const result = await swapService.executeSwapTransaction(params);
|
|
119
|
-
|
|
120
|
-
status: '
|
|
121
|
-
|
|
122
|
-
};
|
|
115
|
+
if (result.status === 'failure') {
|
|
116
|
+
return { status: 'failure', error: result.error ?? 'Batch swap failed' };
|
|
117
|
+
}
|
|
118
|
+
return { status: 'success', data: result };
|
|
123
119
|
}
|
|
124
120
|
catch (error) {
|
|
125
121
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchSwap.js","sourceRoot":"","sources":["../../src/tools/batchSwap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"batchSwap.js","sourceRoot":"","sources":["../../src/tools/batchSwap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { TokenService } from './fetchTokens.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { formatToBaseUnits } from '../lib/utils/amount.js';
|
|
3
|
+
import { getFibrousRouterCtor } from '../lib/utils/fibrousRouterSdk.js';
|
|
4
|
+
const FibrousRouterCtor = getFibrousRouterCtor();
|
|
4
5
|
export class RouteFetchService {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.tokenService = new TokenService();
|
|
7
|
-
this.router = new
|
|
8
|
+
this.router = new FibrousRouterCtor();
|
|
8
9
|
}
|
|
9
10
|
async initialize() {
|
|
10
11
|
await this.tokenService.initializeTokens();
|
|
@@ -13,20 +14,19 @@ export class RouteFetchService {
|
|
|
13
14
|
try {
|
|
14
15
|
await this.initialize();
|
|
15
16
|
const { sellToken, buyToken } = this.tokenService.validateTokenPair(params.sellTokenSymbol, params.buyTokenSymbol);
|
|
16
|
-
const formattedAmount =
|
|
17
|
-
const route = await this.router.getBestRoute(
|
|
17
|
+
const formattedAmount = formatToBaseUnits(params.sellAmount, Number(sellToken.decimals));
|
|
18
|
+
const route = await this.router.getBestRoute({
|
|
19
|
+
amount: formattedAmount,
|
|
20
|
+
tokenInAddress: sellToken.address,
|
|
21
|
+
tokenOutAddress: buyToken.address,
|
|
22
|
+
chainName: 'starknet',
|
|
23
|
+
});
|
|
18
24
|
if (!route?.success) {
|
|
19
25
|
return {
|
|
20
26
|
status: 'failure',
|
|
21
27
|
error: 'No routes available for this swap',
|
|
22
28
|
};
|
|
23
29
|
}
|
|
24
|
-
if (!route) {
|
|
25
|
-
return {
|
|
26
|
-
status: 'failure',
|
|
27
|
-
error: 'No valid route found in quote',
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
30
|
return {
|
|
31
31
|
status: 'success',
|
|
32
32
|
route,
|
|
@@ -42,12 +42,6 @@ export class RouteFetchService {
|
|
|
42
42
|
}
|
|
43
43
|
export const getRouteFibrous = async (params) => {
|
|
44
44
|
try {
|
|
45
|
-
return {
|
|
46
|
-
status: 'failure',
|
|
47
|
-
error: 'This tool is currently under maintenance. ',
|
|
48
|
-
};
|
|
49
|
-
const tokenService = new TokenService();
|
|
50
|
-
await tokenService.initializeTokens();
|
|
51
45
|
const routeService = new RouteFetchService();
|
|
52
46
|
return routeService.fetchRoute(params);
|
|
53
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRoute.js","sourceRoot":"","sources":["../../src/tools/fetchRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchRoute.js","sourceRoot":"","sources":["../../src/tools/fetchRoute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;AAQjD,MAAM,OAAO,iBAAiB;IAI5B;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAuB;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAExB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACjE,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,cAAc,CACtB,CAAC;YAGF,MAAM,eAAe,GAAG,iBAAiB,CACvC,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAC3B,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC3C,MAAM,EAAE,eAAe;gBACvB,cAAc,EAAE,SAAS,CAAC,OAAO;gBACjC,eAAe,EAAE,QAAQ,CAAC,OAAO;gBACjC,SAAS,EAAE,UAAU;aACtB,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;gBACpB,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,mCAAmC;iBAC3C,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,MAAuB,EACD,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC7C,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Token } from 'fibrous-router-sdk';
|
|
1
|
+
import type { Token } from 'fibrous-router-sdk';
|
|
2
2
|
export declare class TokenService {
|
|
3
3
|
private tokens;
|
|
4
|
+
private readonly aliases;
|
|
4
5
|
initializeTokens(): Promise<void>;
|
|
5
6
|
getToken(symbol: string): Token | undefined;
|
|
6
7
|
validateTokenPair(sellSymbol: string, buySymbol: string): {
|
|
@@ -1,17 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getFibrousRouterCtor } from '../lib/utils/fibrousRouterSdk.js';
|
|
2
|
+
const FibrousRouterCtor = getFibrousRouterCtor();
|
|
2
3
|
export class TokenService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.aliases = {
|
|
6
|
+
usdc: 'usdc.e',
|
|
7
|
+
};
|
|
8
|
+
}
|
|
3
9
|
async initializeTokens() {
|
|
4
10
|
try {
|
|
5
|
-
const fibrous = new
|
|
6
|
-
const
|
|
7
|
-
this.tokens =
|
|
11
|
+
const fibrous = new FibrousRouterCtor();
|
|
12
|
+
const tokens = await fibrous.supportedTokens('starknet');
|
|
13
|
+
this.tokens =
|
|
14
|
+
tokens instanceof Map
|
|
15
|
+
? tokens
|
|
16
|
+
: new Map(Object.entries(tokens));
|
|
8
17
|
}
|
|
9
18
|
catch (error) {
|
|
10
19
|
throw new Error(`Failed to initialize tokens: ${error.message}`);
|
|
11
20
|
}
|
|
12
21
|
}
|
|
13
22
|
getToken(symbol) {
|
|
14
|
-
|
|
23
|
+
const key = symbol.toLowerCase();
|
|
24
|
+
return this.tokens.get(key) ?? this.tokens.get(this.aliases[key]);
|
|
15
25
|
}
|
|
16
26
|
validateTokenPair(sellSymbol, buySymbol) {
|
|
17
27
|
const sellToken = this.getToken(sellSymbol);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTokens.js","sourceRoot":"","sources":["../../src/tools/fetchTokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetchTokens.js","sourceRoot":"","sources":["../../src/tools/fetchTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;AAEjD,MAAM,OAAO,YAAY;IAAzB;QAEmB,YAAO,GAA2B;YAEjD,IAAI,EAAE,QAAQ;SACf,CAAC;IAmCJ,CAAC;IAjCC,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB,IAAI,iBAAiB,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM;gBACT,MAAM,YAAY,GAAG;oBACnB,CAAC,CAAE,MAA6B;oBAChC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,iBAAiB,CACf,UAAkB,EAClB,SAAiB;QAKjB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,gBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,gBAAgB,CAAC,CAAC;QAEvE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF"}
|
package/build/tools/swap.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { onchainWrite, toolResult } from '@kasarlabs/ask-starknet-core';
|
|
2
|
-
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
2
|
+
import type { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
3
3
|
import { SwapResult, SwapParams } from '../lib/types/index.js';
|
|
4
4
|
export declare class SwapService {
|
|
5
5
|
private env;
|
package/build/tools/swap.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Account } from 'starknet';
|
|
2
2
|
import { ApprovalService } from './approval.js';
|
|
3
|
-
import {
|
|
3
|
+
import { DEFAULT_SLIPPAGE_PERCENTAGE } from '../lib/constants/index.js';
|
|
4
4
|
import { TokenService } from './fetchTokens.js';
|
|
5
|
-
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
6
|
-
import { BigNumber } from '@ethersproject/bignumber';
|
|
7
5
|
import { getV3DetailsPayload } from '../lib/utils/utils.js';
|
|
8
|
-
import { ContractInteractor } from '../lib/utils/contractInteractor.js';
|
|
9
6
|
import { TransactionMonitor } from '../lib/utils/transactionMonitor.js';
|
|
7
|
+
import { formatToBaseUnits } from '../lib/utils/amount.js';
|
|
8
|
+
import { getFibrousRouterCtor } from '../lib/utils/fibrousRouterSdk.js';
|
|
9
|
+
const FibrousRouterCtor = getFibrousRouterCtor();
|
|
10
10
|
export class SwapService {
|
|
11
11
|
constructor(env, walletAddress, router) {
|
|
12
12
|
this.env = env;
|
|
@@ -14,7 +14,6 @@ export class SwapService {
|
|
|
14
14
|
this.router = router;
|
|
15
15
|
this.tokenService = new TokenService();
|
|
16
16
|
this.approvalService = new ApprovalService();
|
|
17
|
-
this.router = new FibrousRouter();
|
|
18
17
|
}
|
|
19
18
|
async initialize() {
|
|
20
19
|
await this.tokenService.initializeTokens();
|
|
@@ -23,24 +22,30 @@ export class SwapService {
|
|
|
23
22
|
try {
|
|
24
23
|
await this.initialize();
|
|
25
24
|
const provider = this.env.provider;
|
|
26
|
-
const contractInteractor = new ContractInteractor(provider);
|
|
27
25
|
const account = new Account({
|
|
28
26
|
provider,
|
|
29
27
|
address: this.walletAddress,
|
|
30
28
|
signer: this.env.account.signer,
|
|
31
29
|
});
|
|
32
30
|
const { sellToken, buyToken } = this.tokenService.validateTokenPair(params.sellTokenSymbol, params.buyTokenSymbol);
|
|
33
|
-
const
|
|
34
|
-
const route = await this.router.getBestRoute(BigNumber.from(formattedAmount.toString()), sellToken.address, buyToken.address, 'starknet');
|
|
35
|
-
if (!route?.success) {
|
|
36
|
-
throw new Error('No routes available for this swap');
|
|
37
|
-
}
|
|
31
|
+
const inputAmount = formatToBaseUnits(params.sellAmount, Number(sellToken.decimals));
|
|
38
32
|
const destinationAddress = account.address;
|
|
39
|
-
const
|
|
33
|
+
const batchCalls = await this.router.buildBatchTransaction({
|
|
34
|
+
inputAmounts: [inputAmount],
|
|
35
|
+
tokenInAddresses: [sellToken.address],
|
|
36
|
+
tokenOutAddresses: [buyToken.address],
|
|
37
|
+
slippage: params.slippage ?? DEFAULT_SLIPPAGE_PERCENTAGE,
|
|
38
|
+
destination: destinationAddress,
|
|
39
|
+
chainName: 'starknet',
|
|
40
|
+
});
|
|
41
|
+
const swapCall = Array.isArray(batchCalls)
|
|
42
|
+
? batchCalls[0]
|
|
43
|
+
: null;
|
|
40
44
|
if (!swapCall) {
|
|
41
45
|
throw new Error('Calldata not available for this swap');
|
|
42
46
|
}
|
|
43
|
-
const
|
|
47
|
+
const routerAddress = await this.router.getRouterAddress('starknet');
|
|
48
|
+
const approveCalldata = await this.approvalService.checkAndGetApproveToken(account, sellToken.address, routerAddress, inputAmount);
|
|
44
49
|
let calldata = [];
|
|
45
50
|
if (approveCalldata) {
|
|
46
51
|
calldata = [approveCalldata, swapCall];
|
|
@@ -76,7 +81,7 @@ export class SwapService {
|
|
|
76
81
|
}
|
|
77
82
|
async monitorSwapStatus(txHash) {
|
|
78
83
|
const transactionMonitor = new TransactionMonitor(this.env.provider);
|
|
79
|
-
const receipt = await transactionMonitor.waitForTransaction(txHash, (status) => console.
|
|
84
|
+
const receipt = await transactionMonitor.waitForTransaction(txHash, (status) => console.info('Swap status:', status));
|
|
80
85
|
const events = await transactionMonitor.getTransactionEvents(txHash);
|
|
81
86
|
return { receipt, events };
|
|
82
87
|
}
|
|
@@ -85,13 +90,9 @@ export const createSwapService = (env, walletAddress) => {
|
|
|
85
90
|
if (!walletAddress) {
|
|
86
91
|
throw new Error('Wallet address not configured');
|
|
87
92
|
}
|
|
88
|
-
return new SwapService(env, walletAddress, new
|
|
93
|
+
return new SwapService(env, walletAddress, new FibrousRouterCtor());
|
|
89
94
|
};
|
|
90
95
|
export const swapTokensFibrous = async (env, params) => {
|
|
91
|
-
return {
|
|
92
|
-
status: 'failure',
|
|
93
|
-
error: 'This tool is currently under maintenance. ',
|
|
94
|
-
};
|
|
95
96
|
const accountAddress = env.account?.address;
|
|
96
97
|
try {
|
|
97
98
|
const swapService = createSwapService(env, accountAddress);
|
package/build/tools/swap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kasarlabs/fibrous-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,24 +10,30 @@
|
|
|
10
10
|
"build": "tsc && chmod 755 build/index.js",
|
|
11
11
|
"clean": "rm -rf build",
|
|
12
12
|
"clean:all": "rm -rf build node_modules",
|
|
13
|
-
"start": "node build/index.js"
|
|
13
|
+
"start": "node build/index.js",
|
|
14
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
|
|
15
|
+
"test:e2e": "NODE_OPTIONS=--experimental-vm-modules jest __tests__/e2e"
|
|
14
16
|
},
|
|
15
17
|
"files": [
|
|
16
18
|
"build"
|
|
17
19
|
],
|
|
18
20
|
"dependencies": {
|
|
19
21
|
"@ethersproject/bignumber": "^5.7.0",
|
|
20
|
-
"@kasarlabs/ask-starknet-core": "0.1.
|
|
22
|
+
"@kasarlabs/ask-starknet-core": "0.1.4",
|
|
21
23
|
"@langchain/core": "^0.3.42",
|
|
22
24
|
"@modelcontextprotocol/sdk": "1.22.0",
|
|
23
25
|
"dotenv": "^16.4.7",
|
|
24
|
-
"fibrous-router-sdk": "0.
|
|
25
|
-
"starknet": "8.
|
|
26
|
+
"fibrous-router-sdk": "^1.0.1",
|
|
27
|
+
"starknet": "~8.9.0",
|
|
26
28
|
"winston": "^3.17.0",
|
|
27
29
|
"zod": "^3.24.2"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
32
|
+
"@jest/globals": "^29.7.0",
|
|
33
|
+
"@types/jest": "^29.5.12",
|
|
30
34
|
"@types/node": "^22.13.10",
|
|
35
|
+
"jest": "^29.7.0",
|
|
36
|
+
"ts-jest": "^29.1.2",
|
|
31
37
|
"typescript": "^5.8.2"
|
|
32
38
|
},
|
|
33
39
|
"keywords": [
|
|
@@ -41,5 +47,5 @@
|
|
|
41
47
|
"publishConfig": {
|
|
42
48
|
"access": "public"
|
|
43
49
|
},
|
|
44
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "0799e2b085e950e5d102822d71a6b122290e8c38"
|
|
45
51
|
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
export declare const ERC20_ABI: readonly [{
|
|
2
|
-
readonly type: "function";
|
|
3
|
-
readonly name: "name";
|
|
4
|
-
readonly inputs: readonly [];
|
|
5
|
-
readonly outputs: readonly [{
|
|
6
|
-
readonly type: "core::felt252";
|
|
7
|
-
}];
|
|
8
|
-
readonly state_mutability: "view";
|
|
9
|
-
}, {
|
|
10
|
-
readonly type: "function";
|
|
11
|
-
readonly name: "symbol";
|
|
12
|
-
readonly inputs: readonly [];
|
|
13
|
-
readonly outputs: readonly [{
|
|
14
|
-
readonly type: "core::felt252";
|
|
15
|
-
}];
|
|
16
|
-
readonly state_mutability: "view";
|
|
17
|
-
}, {
|
|
18
|
-
readonly type: "function";
|
|
19
|
-
readonly name: "decimals";
|
|
20
|
-
readonly inputs: readonly [];
|
|
21
|
-
readonly outputs: readonly [{
|
|
22
|
-
readonly type: "core::integer::u8";
|
|
23
|
-
}];
|
|
24
|
-
readonly state_mutability: "view";
|
|
25
|
-
}, {
|
|
26
|
-
readonly type: "function";
|
|
27
|
-
readonly name: "balance_of";
|
|
28
|
-
readonly inputs: readonly [{
|
|
29
|
-
readonly name: "account";
|
|
30
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
31
|
-
}];
|
|
32
|
-
readonly outputs: readonly [{
|
|
33
|
-
readonly type: "core::integer::u256";
|
|
34
|
-
}];
|
|
35
|
-
readonly state_mutability: "view";
|
|
36
|
-
}, {
|
|
37
|
-
readonly type: "function";
|
|
38
|
-
readonly name: "balanceOf";
|
|
39
|
-
readonly inputs: readonly [{
|
|
40
|
-
readonly name: "account";
|
|
41
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
42
|
-
}];
|
|
43
|
-
readonly outputs: readonly [{
|
|
44
|
-
readonly type: "core::integer::u256";
|
|
45
|
-
}];
|
|
46
|
-
readonly state_mutability: "view";
|
|
47
|
-
}, {
|
|
48
|
-
readonly type: "function";
|
|
49
|
-
readonly name: "allowance";
|
|
50
|
-
readonly inputs: readonly [{
|
|
51
|
-
readonly name: "owner";
|
|
52
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
53
|
-
}, {
|
|
54
|
-
readonly name: "spender";
|
|
55
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
56
|
-
}];
|
|
57
|
-
readonly outputs: readonly [{
|
|
58
|
-
readonly type: "core::integer::u256";
|
|
59
|
-
}];
|
|
60
|
-
readonly state_mutability: "view";
|
|
61
|
-
}, {
|
|
62
|
-
readonly type: "function";
|
|
63
|
-
readonly name: "approve";
|
|
64
|
-
readonly inputs: readonly [{
|
|
65
|
-
readonly name: "spender";
|
|
66
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
67
|
-
}, {
|
|
68
|
-
readonly name: "amount";
|
|
69
|
-
readonly type: "core::integer::u256";
|
|
70
|
-
}];
|
|
71
|
-
readonly outputs: readonly [{
|
|
72
|
-
readonly type: "core::bool";
|
|
73
|
-
}];
|
|
74
|
-
readonly state_mutability: "external";
|
|
75
|
-
}, {
|
|
76
|
-
readonly type: "function";
|
|
77
|
-
readonly name: "transfer";
|
|
78
|
-
readonly inputs: readonly [{
|
|
79
|
-
readonly name: "recipient";
|
|
80
|
-
readonly type: "core::starknet::contract_address::ContractAddress";
|
|
81
|
-
}, {
|
|
82
|
-
readonly name: "amount";
|
|
83
|
-
readonly type: "core::integer::u256";
|
|
84
|
-
}];
|
|
85
|
-
readonly outputs: readonly [{
|
|
86
|
-
readonly type: "core::bool";
|
|
87
|
-
}];
|
|
88
|
-
readonly state_mutability: "external";
|
|
89
|
-
}];
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
export const ERC20_ABI = [
|
|
2
|
-
{
|
|
3
|
-
type: 'function',
|
|
4
|
-
name: 'name',
|
|
5
|
-
inputs: [],
|
|
6
|
-
outputs: [
|
|
7
|
-
{
|
|
8
|
-
type: 'core::felt252',
|
|
9
|
-
},
|
|
10
|
-
],
|
|
11
|
-
state_mutability: 'view',
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
type: 'function',
|
|
15
|
-
name: 'symbol',
|
|
16
|
-
inputs: [],
|
|
17
|
-
outputs: [
|
|
18
|
-
{
|
|
19
|
-
type: 'core::felt252',
|
|
20
|
-
},
|
|
21
|
-
],
|
|
22
|
-
state_mutability: 'view',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
type: 'function',
|
|
26
|
-
name: 'decimals',
|
|
27
|
-
inputs: [],
|
|
28
|
-
outputs: [
|
|
29
|
-
{
|
|
30
|
-
type: 'core::integer::u8',
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
state_mutability: 'view',
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
type: 'function',
|
|
37
|
-
name: 'balance_of',
|
|
38
|
-
inputs: [
|
|
39
|
-
{
|
|
40
|
-
name: 'account',
|
|
41
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
42
|
-
},
|
|
43
|
-
],
|
|
44
|
-
outputs: [
|
|
45
|
-
{
|
|
46
|
-
type: 'core::integer::u256',
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
state_mutability: 'view',
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
type: 'function',
|
|
53
|
-
name: 'balanceOf',
|
|
54
|
-
inputs: [
|
|
55
|
-
{
|
|
56
|
-
name: 'account',
|
|
57
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
outputs: [
|
|
61
|
-
{
|
|
62
|
-
type: 'core::integer::u256',
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
state_mutability: 'view',
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
type: 'function',
|
|
69
|
-
name: 'allowance',
|
|
70
|
-
inputs: [
|
|
71
|
-
{
|
|
72
|
-
name: 'owner',
|
|
73
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: 'spender',
|
|
77
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
78
|
-
},
|
|
79
|
-
],
|
|
80
|
-
outputs: [
|
|
81
|
-
{
|
|
82
|
-
type: 'core::integer::u256',
|
|
83
|
-
},
|
|
84
|
-
],
|
|
85
|
-
state_mutability: 'view',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'function',
|
|
89
|
-
name: 'approve',
|
|
90
|
-
inputs: [
|
|
91
|
-
{
|
|
92
|
-
name: 'spender',
|
|
93
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
name: 'amount',
|
|
97
|
-
type: 'core::integer::u256',
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
outputs: [
|
|
101
|
-
{
|
|
102
|
-
type: 'core::bool',
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
state_mutability: 'external',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
type: 'function',
|
|
109
|
-
name: 'transfer',
|
|
110
|
-
inputs: [
|
|
111
|
-
{
|
|
112
|
-
name: 'recipient',
|
|
113
|
-
type: 'core::starknet::contract_address::ContractAddress',
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
name: 'amount',
|
|
117
|
-
type: 'core::integer::u256',
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
outputs: [
|
|
121
|
-
{
|
|
122
|
-
type: 'core::bool',
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
state_mutability: 'external',
|
|
126
|
-
},
|
|
127
|
-
];
|
|
128
|
-
//# sourceMappingURL=erc20Abi.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"erc20Abi.js","sourceRoot":"","sources":["../../../src/lib/abis/erc20Abi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IAEvB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,eAAe;aACtB;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,eAAe;aACtB;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,mBAAmB;aAC1B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,mDAAmD;aAC1D;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,gBAAgB,EAAE,MAAM;KACzB;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,mDAAmD;aAC1D;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,YAAY;aACnB;SACF;QACD,gBAAgB,EAAE,UAAU;KAC7B;IAED;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,mDAAmD;aAC1D;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,qBAAqB;aAC5B;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,YAAY;aACnB;SACF;QACD,gBAAgB,EAAE,UAAU;KAC7B;CACO,CAAC"}
|