@@ -16,8 +16,8 @@ import { formatTokenAmount } from '../minswap.utils';
1616export async function getMinswapAmmLiquidityQuote (
1717 network : string ,
1818 poolAddress ?: string ,
19- baseToken ?: string ,
20- quoteToken ?: string ,
19+ baseToken ?: CardanoToken ,
20+ quoteToken ?: CardanoToken ,
2121 baseTokenAmount ?: number ,
2222 quoteTokenAmount ?: number ,
2323 _slippagePct ?: number ,
@@ -45,16 +45,10 @@ export async function getMinswapAmmLiquidityQuote(
4545
4646 const minswap = await Minswap . getInstance ( networkToUse ) ;
4747
48- const baseTokenObj = minswap . cardano . getTokenBySymbol ( baseToken ) ;
49- const quoteTokenObj = minswap . cardano . getTokenBySymbol ( quoteToken ) ;
50- if ( ! baseTokenObj || ! quoteTokenObj ) {
51- throw new Error ( `Token not found: ${ ! baseTokenObj ? baseToken : quoteToken } ` ) ;
52- }
53-
5448 let poolAddressToUse = poolAddress ;
5549 let existingPool = true ;
5650 if ( ! poolAddressToUse ) {
57- poolAddressToUse = await minswap . findDefaultPool ( baseToken , quoteToken , 'amm' ) ;
51+ poolAddressToUse = await minswap . findDefaultPool ( baseToken . symbol , quoteToken . symbol , 'amm' ) ;
5852 if ( ! poolAddressToUse ) {
5953 existingPool = false ;
6054 logger . info ( `No existing pool found for ${ baseToken } -${ quoteToken } , providing theoretical quote` ) ;
@@ -77,11 +71,9 @@ export async function getMinswapAmmLiquidityQuote(
7771 const quoteReserve : bigint = poolState . reserveB ;
7872
7973 // ── 3) Convert user inputs into raw bigints ───────────
80- const baseRaw = baseTokenAmount
81- ? BigInt ( Math . floor ( baseTokenAmount * 10 ** baseTokenObj . decimals ) . toString ( ) )
82- : null ;
74+ const baseRaw = baseTokenAmount ? BigInt ( Math . floor ( baseTokenAmount * 10 ** baseToken . decimals ) . toString ( ) ) : null ;
8375 const quoteRaw = quoteTokenAmount
84- ? BigInt ( Math . floor ( quoteTokenAmount * 10 ** quoteTokenObj . decimals ) . toString ( ) )
76+ ? BigInt ( Math . floor ( quoteTokenAmount * 10 ** quoteToken . decimals ) . toString ( ) )
8577 : null ;
8678
8779 // ── 4) Compute the “optimal” opposite amount ───────────
@@ -90,21 +82,21 @@ export async function getMinswapAmmLiquidityQuote(
9082 const quoteOptimal = ( baseRaw * quoteReserve ) / baseReserve ;
9183 if ( quoteOptimal <= quoteRaw ) {
9284 baseLimited = true ;
93- quoteTokenAmountOptimal = Number ( formatTokenAmount ( quoteOptimal . toString ( ) , quoteTokenObj . decimals ) ) ;
85+ quoteTokenAmountOptimal = Number ( formatTokenAmount ( quoteOptimal . toString ( ) , quoteToken . decimals ) ) ;
9486 } else {
9587 baseLimited = false ;
9688 const baseOptimal = ( quoteRaw * baseReserve ) / quoteReserve ;
97- baseTokenAmountOptimal = Number ( formatTokenAmount ( baseOptimal . toString ( ) , baseTokenObj . decimals ) ) ;
89+ baseTokenAmountOptimal = Number ( formatTokenAmount ( baseOptimal . toString ( ) , baseToken . decimals ) ) ;
9890 }
9991 } else if ( baseRaw !== null ) {
10092 // only base provided
10193 const quoteOptimal = baseReserve === BigInt ( 0 ) ? BigInt ( 0 ) : ( baseRaw * quoteReserve ) / baseReserve ;
102- quoteTokenAmountOptimal = Number ( formatTokenAmount ( quoteOptimal . toString ( ) , quoteTokenObj . decimals ) ) ;
94+ quoteTokenAmountOptimal = Number ( formatTokenAmount ( quoteOptimal . toString ( ) , quoteToken . decimals ) ) ;
10395 baseLimited = true ;
10496 } else if ( quoteRaw !== null ) {
10597 // only quote provided
10698 const baseOptimal = quoteReserve === BigInt ( 0 ) ? BigInt ( 0 ) : ( quoteRaw * baseReserve ) / quoteReserve ;
107- baseTokenAmountOptimal = Number ( formatTokenAmount ( baseOptimal . toString ( ) , baseTokenObj . decimals ) ) ;
99+ baseTokenAmountOptimal = Number ( formatTokenAmount ( baseOptimal . toString ( ) , baseToken . decimals ) ) ;
108100 baseLimited = false ;
109101 }
110102 } else {
@@ -116,11 +108,9 @@ export async function getMinswapAmmLiquidityQuote(
116108 }
117109
118110 // ── 5) Convert back into Ethers BigNumber for any on‐chain tx ───
119- const rawBaseTokenAmount = BigNumber . from (
120- Math . floor ( baseTokenAmountOptimal * 10 ** baseTokenObj . decimals ) . toString ( ) ,
121- ) ;
111+ const rawBaseTokenAmount = BigNumber . from ( Math . floor ( baseTokenAmountOptimal * 10 ** baseToken . decimals ) . toString ( ) ) ;
122112 const rawQuoteTokenAmount = BigNumber . from (
123- Math . floor ( quoteTokenAmountOptimal * 10 ** quoteTokenObj . decimals ) . toString ( ) ,
113+ Math . floor ( quoteTokenAmountOptimal * 10 ** quoteToken . decimals ) . toString ( ) ,
124114 ) ;
125115
126116 return {
@@ -129,8 +119,8 @@ export async function getMinswapAmmLiquidityQuote(
129119 quoteTokenAmount : quoteTokenAmountOptimal ,
130120 baseTokenAmountMax : baseTokenAmount ?? baseTokenAmountOptimal ,
131121 quoteTokenAmountMax : quoteTokenAmount ?? quoteTokenAmountOptimal ,
132- baseTokenObj,
133- quoteTokenObj,
122+ baseTokenObj : baseToken ,
123+ quoteTokenObj : quoteToken ,
134124 poolAddress : poolAddressToUse ,
135125 rawBaseTokenAmount,
136126 rawQuoteTokenAmount,
@@ -183,8 +173,11 @@ export const quoteLiquidityRoute: FastifyPluginAsync = async (fastify) => {
183173
184174 const poolInfo = await minswap . getAmmPoolInfo ( poolAddress ) ;
185175
186- const baseToken = poolInfo . baseTokenAddress ;
187- const quoteToken = poolInfo . quoteTokenAddress ;
176+ const baseTokenAddress = poolInfo . baseTokenAddress ;
177+ const quoteTokenAddress = poolInfo . quoteTokenAddress ;
178+ // Find token symbol from token address
179+ const baseToken = await minswap . cardano . getTokenByAddress ( baseTokenAddress ) ;
180+ const quoteToken = await minswap . cardano . getTokenByAddress ( quoteTokenAddress ) ;
188181
189182 const quote = await getMinswapAmmLiquidityQuote (
190183 network ,
0 commit comments