Skip to content

Commit 1da3464

Browse files
committed
Revert "Merge branch 'feat/cardano' of https://github.com/AIQUANT-Tech/gateway into feat/cardano"
This reverts commit 17a5b9b, reversing changes made to 6f3affc.
1 parent 17a5b9b commit 1da3464

File tree

12 files changed

+141
-174
lines changed

12 files changed

+141
-174
lines changed

src/chains/cardano/cardano.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -436,15 +436,6 @@ export class Cardano {
436436
}
437437
}
438438

439-
public async getTokenByAddress(tokenAddress: string): Promise<CardanoToken | undefined> {
440-
const token = this.tokenList.find((token: CardanoToken) => {
441-
const splitAddress = token.address.split('.').join('');
442-
const splitTokenAddress = tokenAddress.split('.').join('');
443-
return splitTokenAddress === splitAddress;
444-
});
445-
return token;
446-
}
447-
448439
async close() {
449440
if (this._chain in Cardano._instances) {
450441
delete Cardano._instances[this._chain];

src/connectors/minswap/amm-routes/addLiquidity.ts

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@ import { TxComplete } from '@aiquant/lucid-cardano';
22
import { calculateDeposit, Dex } from '@aiquant/minswap-sdk';
33
import { FastifyPluginAsync } from 'fastify';
44

5-
import { CardanoToken } from '#src/tokens/types';
6-
75
import {
86
AddLiquidityRequestType,
97
AddLiquidityRequest,
@@ -20,8 +18,8 @@ async function addLiquidity(
2018
network: string,
2119
walletAddress: string,
2220
poolAddress: string,
23-
baseToken: CardanoToken,
24-
quoteToken: CardanoToken,
21+
baseToken: string,
22+
quoteToken: string,
2523
baseTokenAmount: number,
2624
quoteTokenAmount: number,
2725
slippagePct?: number, // decimal, e.g. 0.01 for 1%
@@ -159,18 +157,8 @@ export const addLiquidityRoute: FastifyPluginAsync = async (fastify) => {
159157

160158
const poolInfo = await minswap.getAmmPoolInfo(reqPool);
161159

162-
const baseTokenAddress = poolInfo.baseTokenAddress;
163-
// console.log('baseTokenAddress', baseTokenAddress);
164-
165-
const quoteTokenAddress = poolInfo.quoteTokenAddress;
166-
// console.log('quoteTokenAddress', quoteTokenAddress);
167-
168-
// Find token symbol from token address
169-
const baseToken = await minswap.cardano.getTokenByAddress(baseTokenAddress);
170-
// console.log('baseToken', baseToken);
171-
172-
const quoteToken = await minswap.cardano.getTokenByAddress(quoteTokenAddress);
173-
// console.log('quoteToken', quoteToken);
160+
const baseToken = poolInfo.baseTokenAddress;
161+
const quoteToken = poolInfo.quoteTokenAddress;
174162

175163
return await addLiquidity(
176164
fastify,

src/connectors/minswap/amm-routes/quoteLiquidity.ts

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import { formatTokenAmount } from '../minswap.utils';
1616
export async function getMinswapAmmLiquidityQuote(
1717
network: string,
1818
poolAddress?: string,
19-
baseToken?: CardanoToken,
20-
quoteToken?: CardanoToken,
19+
baseToken?: string,
20+
quoteToken?: string,
2121
baseTokenAmount?: number,
2222
quoteTokenAmount?: number,
2323
_slippagePct?: number,
@@ -45,10 +45,16 @@ 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+
4854
let poolAddressToUse = poolAddress;
4955
let existingPool = true;
5056
if (!poolAddressToUse) {
51-
poolAddressToUse = await minswap.findDefaultPool(baseToken.symbol, quoteToken.symbol, 'amm');
57+
poolAddressToUse = await minswap.findDefaultPool(baseToken, quoteToken, 'amm');
5258
if (!poolAddressToUse) {
5359
existingPool = false;
5460
logger.info(`No existing pool found for ${baseToken}-${quoteToken}, providing theoretical quote`);
@@ -71,9 +77,11 @@ export async function getMinswapAmmLiquidityQuote(
7177
const quoteReserve: bigint = poolState.reserveB;
7278

7379
// ── 3) Convert user inputs into raw bigints ───────────
74-
const baseRaw = baseTokenAmount ? BigInt(Math.floor(baseTokenAmount * 10 ** baseToken.decimals).toString()) : null;
80+
const baseRaw = baseTokenAmount
81+
? BigInt(Math.floor(baseTokenAmount * 10 ** baseTokenObj.decimals).toString())
82+
: null;
7583
const quoteRaw = quoteTokenAmount
76-
? BigInt(Math.floor(quoteTokenAmount * 10 ** quoteToken.decimals).toString())
84+
? BigInt(Math.floor(quoteTokenAmount * 10 ** quoteTokenObj.decimals).toString())
7785
: null;
7886

7987
// ── 4) Compute the “optimal” opposite amount ───────────
@@ -82,21 +90,21 @@ export async function getMinswapAmmLiquidityQuote(
8290
const quoteOptimal = (baseRaw * quoteReserve) / baseReserve;
8391
if (quoteOptimal <= quoteRaw) {
8492
baseLimited = true;
85-
quoteTokenAmountOptimal = Number(formatTokenAmount(quoteOptimal.toString(), quoteToken.decimals));
93+
quoteTokenAmountOptimal = Number(formatTokenAmount(quoteOptimal.toString(), quoteTokenObj.decimals));
8694
} else {
8795
baseLimited = false;
8896
const baseOptimal = (quoteRaw * baseReserve) / quoteReserve;
89-
baseTokenAmountOptimal = Number(formatTokenAmount(baseOptimal.toString(), baseToken.decimals));
97+
baseTokenAmountOptimal = Number(formatTokenAmount(baseOptimal.toString(), baseTokenObj.decimals));
9098
}
9199
} else if (baseRaw !== null) {
92100
// only base provided
93101
const quoteOptimal = baseReserve === BigInt(0) ? BigInt(0) : (baseRaw * quoteReserve) / baseReserve;
94-
quoteTokenAmountOptimal = Number(formatTokenAmount(quoteOptimal.toString(), quoteToken.decimals));
102+
quoteTokenAmountOptimal = Number(formatTokenAmount(quoteOptimal.toString(), quoteTokenObj.decimals));
95103
baseLimited = true;
96104
} else if (quoteRaw !== null) {
97105
// only quote provided
98106
const baseOptimal = quoteReserve === BigInt(0) ? BigInt(0) : (quoteRaw * baseReserve) / quoteReserve;
99-
baseTokenAmountOptimal = Number(formatTokenAmount(baseOptimal.toString(), baseToken.decimals));
107+
baseTokenAmountOptimal = Number(formatTokenAmount(baseOptimal.toString(), baseTokenObj.decimals));
100108
baseLimited = false;
101109
}
102110
} else {
@@ -108,9 +116,11 @@ export async function getMinswapAmmLiquidityQuote(
108116
}
109117

110118
// ── 5) Convert back into Ethers BigNumber for any on‐chain tx ───
111-
const rawBaseTokenAmount = BigNumber.from(Math.floor(baseTokenAmountOptimal * 10 ** baseToken.decimals).toString());
119+
const rawBaseTokenAmount = BigNumber.from(
120+
Math.floor(baseTokenAmountOptimal * 10 ** baseTokenObj.decimals).toString(),
121+
);
112122
const rawQuoteTokenAmount = BigNumber.from(
113-
Math.floor(quoteTokenAmountOptimal * 10 ** quoteToken.decimals).toString(),
123+
Math.floor(quoteTokenAmountOptimal * 10 ** quoteTokenObj.decimals).toString(),
114124
);
115125

116126
return {
@@ -119,8 +129,8 @@ export async function getMinswapAmmLiquidityQuote(
119129
quoteTokenAmount: quoteTokenAmountOptimal,
120130
baseTokenAmountMax: baseTokenAmount ?? baseTokenAmountOptimal,
121131
quoteTokenAmountMax: quoteTokenAmount ?? quoteTokenAmountOptimal,
122-
baseTokenObj: baseToken,
123-
quoteTokenObj: quoteToken,
132+
baseTokenObj,
133+
quoteTokenObj,
124134
poolAddress: poolAddressToUse,
125135
rawBaseTokenAmount,
126136
rawQuoteTokenAmount,
@@ -173,11 +183,8 @@ export const quoteLiquidityRoute: FastifyPluginAsync = async (fastify) => {
173183

174184
const poolInfo = await minswap.getAmmPoolInfo(poolAddress);
175185

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);
186+
const baseToken = poolInfo.baseTokenAddress;
187+
const quoteToken = poolInfo.quoteTokenAddress;
181188

182189
const quote = await getMinswapAmmLiquidityQuote(
183190
network,

src/connectors/minswap/amm-routes/removeLiquidity.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,33 +76,35 @@ export const removeLiquidityRoute: FastifyPluginAsync = async (fastify) => {
7676

7777
const poolInfo = await minswap.getAmmPoolInfo(requestedPoolAddress);
7878

79-
const baseTokenAddress = poolInfo.baseTokenAddress;
80-
// console.log('baseTokenAddress', baseTokenAddress);
79+
const baseToken = poolInfo.baseTokenAddress;
80+
const quoteToken = poolInfo.quoteTokenAddress;
8181

82-
const quoteTokenAddress = poolInfo.quoteTokenAddress;
83-
// console.log('quoteTokenAddress', quoteTokenAddress);
82+
// Resolve tokens
83+
const baseTokenObj = minswap.cardano.getTokenBySymbol(baseToken);
84+
const quoteTokenObj = minswap.cardano.getTokenBySymbol(quoteToken);
8485

85-
// Find token symbol from token address
86-
const baseToken = await minswap.cardano.getTokenByAddress(baseTokenAddress);
87-
// console.log('baseToken', baseToken);
88-
89-
const quoteToken = await minswap.cardano.getTokenByAddress(quoteTokenAddress);
90-
// console.log('quoteToken', quoteToken);
91-
92-
if (!baseToken || !quoteToken) {
93-
throw fastify.httpErrors.badRequest(`Token not found: ${!baseToken ? baseToken : quoteToken}`);
86+
if (!baseTokenObj || !quoteTokenObj) {
87+
throw fastify.httpErrors.badRequest(`Token not found: ${!baseTokenObj ? baseToken : quoteToken}`);
9488
}
9589

9690
// Find pool address if not provided
9791
let poolAddress = requestedPoolAddress;
9892
if (!poolAddress) {
99-
poolAddress = await minswap.findDefaultPool(baseToken.symbol, quoteToken.symbol, 'amm');
93+
poolAddress = await minswap.findDefaultPool(baseToken, quoteToken, 'amm');
10094

10195
if (!poolAddress) {
10296
throw fastify.httpErrors.notFound(`No AMM pool found for pair ${baseToken}-${quoteToken}`);
10397
}
10498
}
10599
// 5) Fetch on-chain pool state for withdraw calculation
100+
const assetA: Asset = {
101+
policyId: baseTokenObj.policyId,
102+
tokenName: baseTokenObj.assetName,
103+
};
104+
const assetB: Asset = {
105+
policyId: quoteTokenObj.policyId,
106+
tokenName: quoteTokenObj.assetName,
107+
};
106108
const { poolState, poolDatum } = await minswap.getPoolData(poolAddress);
107109

108110
// 6) Fetch wallet UTxOs (this also selects the key in Lucid)
@@ -141,8 +143,8 @@ export const removeLiquidityRoute: FastifyPluginAsync = async (fastify) => {
141143
const fee = txBuild.fee;
142144

143145
// 10) Compute how many tokens were removed (roughly)
144-
const baseTokenAmountRemoved = formatTokenAmount(amountAReceive, baseToken.decimals);
145-
const quoteTokenAmountRemoved = formatTokenAmount(amountBReceive, quoteToken.decimals);
146+
const baseTokenAmountRemoved = formatTokenAmount(amountAReceive, baseTokenObj.decimals);
147+
const quoteTokenAmountRemoved = formatTokenAmount(amountBReceive, quoteTokenObj.decimals);
146148

147149
return {
148150
signature: txHash,

src/connectors/minswap/minswap.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ export class Minswap {
171171

172172
return {
173173
address: poolAddress,
174-
baseTokenAddress: pool.assetA === 'lovelace' ? 'adalovelace' : pool.assetA,
175-
quoteTokenAddress: pool.assetB === 'lovelace' ? 'adalovelace' : pool.assetB,
174+
baseTokenAddress: pool.assetA,
175+
quoteTokenAddress: pool.assetB,
176176
feePct: 2,
177177
price: price[0],
178178
baseTokenAmount: baseTokenAmount,

src/connectors/sundaeswap/amm-routes/addLiquidity.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import { AssetAmount, IAssetAmountMetadata } from '@sundaeswap/asset';
55
import { BigNumber } from 'ethers';
66
import { FastifyPluginAsync } from 'fastify';
77

8-
import { CardanoToken } from '#src/tokens/types';
9-
108
import {
119
AddLiquidityRequestType,
1210
AddLiquidityRequest,
@@ -24,8 +22,8 @@ async function addLiquidity(
2422
network: string,
2523
walletAddress: string,
2624
poolAddress: string,
27-
baseToken: CardanoToken,
28-
quoteToken: CardanoToken,
25+
baseToken: string,
26+
quoteToken: string,
2927
baseTokenAmount: number,
3028
quoteTokenAmount: number,
3129
slippagePct?: number, // decimal, e.g. 0.01 for 1%
@@ -147,12 +145,8 @@ export const addLiquidityRoute: FastifyPluginAsync = async (fastify) => {
147145

148146
const poolInfo = await sundaeswap.getAmmPoolInfo(reqPool);
149147

150-
const baseTokenAddress = poolInfo.baseTokenAddress;
151-
const quoteTokenAddress = poolInfo.quoteTokenAddress;
152-
// Find token symbol from token address
153-
const baseToken = await sundaeswap.cardano.getTokenByAddress(baseTokenAddress);
154-
const quoteToken = await sundaeswap.cardano.getTokenByAddress(quoteTokenAddress);
155-
148+
const baseToken = poolInfo.baseTokenAddress;
149+
const quoteToken = poolInfo.quoteTokenAddress;
156150
return await addLiquidity(
157151
fastify,
158152
network || 'mainnet',

src/connectors/sundaeswap/amm-routes/poolInfo.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export const ammPoolInfoRoute: FastifyPluginAsync = async (fastify) => {
1818
...GetPoolInfoRequest,
1919
properties: {
2020
network: { type: 'string', examples: ['mainnet'] },
21-
poolAddress: {
21+
poolIdent: {
2222
type: 'string',
2323
examples: ['2f36866691fa75a9aab66dec99f7cc2d297ca09e34d9ce68cde04773'],
2424
},
@@ -33,18 +33,18 @@ export const ammPoolInfoRoute: FastifyPluginAsync = async (fastify) => {
3333
},
3434
async (request): Promise<PoolInfo> => {
3535
try {
36-
const { poolAddress } = request.query;
36+
const { poolAddress: poolIdent } = request.query;
3737
const network = request.query.network || 'mainnet';
3838

3939
const sundaeswap = await Sundaeswap.getInstance(network);
40-
// console.log('sundaeswap ', sundaeswap);
4140

42-
// Check if either poolAddress or both baseToken and quoteToken are provided
43-
if (!poolAddress) {
44-
throw fastify.httpErrors.badRequest('poolAddress is required');
41+
// Check if either poolIdent or both baseToken and quoteToken are provided
42+
if (!poolIdent) {
43+
throw fastify.httpErrors.badRequest('poolIdent is required');
4544
}
4645

47-
const poolInfo = await sundaeswap.getAmmPoolInfo(poolAddress);
46+
const poolIdentToUse = poolIdent;
47+
const poolInfo = await sundaeswap.getAmmPoolInfo(poolIdentToUse);
4848
if (!poolInfo) throw fastify.httpErrors.notFound('Pool not found');
4949
return poolInfo;
5050
} catch (e) {

0 commit comments

Comments
 (0)