feat: restore operator WIP — PMM JSON sync entrypoint, dotenv RPC trim + secrets, pool env alignment
- Resolve stash: merge load_deployment_env path with secure-secrets and CR/LF RPC strip - create-pmm-full-mesh-chain138.sh delegates to sync-chain138-pmm-pools-from-json.sh - env.additions.example: canonical PMM pool defaults (cUSDT/USDT per crosscheck) - Include Chain138 scripts, official mirror deploy scaffolding, and prior staged changes Made-with: Cursor
This commit is contained in:
@@ -7,6 +7,7 @@ import { CoinGeckoAdapter } from '../../adapters/coingecko-adapter';
|
||||
import { CoinMarketCapAdapter } from '../../adapters/cmc-adapter';
|
||||
import { DexScreenerAdapter } from '../../adapters/dexscreener-adapter';
|
||||
import { cacheMiddleware } from '../middleware/cache';
|
||||
import { resolvePoolTokenDisplays } from '../../services/token-display';
|
||||
import { logger } from '../../utils/logger';
|
||||
|
||||
const router: Router = Router();
|
||||
@@ -150,19 +151,34 @@ router.get('/tokens/:address/pools', cacheMiddleware(60 * 1000), async (req: Req
|
||||
const pools = await poolRepo.getPoolsByToken(chainId, address);
|
||||
|
||||
res.json({
|
||||
pools: pools.map((pool) => ({
|
||||
address: pool.poolAddress,
|
||||
dex: pool.dexType,
|
||||
token0: pool.token0Address,
|
||||
token1: pool.token1Address,
|
||||
reserves: {
|
||||
token0: pool.reserve0,
|
||||
token1: pool.reserve1,
|
||||
},
|
||||
tvl: pool.totalLiquidityUsd,
|
||||
volume24h: pool.volume24h,
|
||||
feeTier: pool.feeTier,
|
||||
})),
|
||||
pools: await Promise.all(
|
||||
pools.map(async (pool) => {
|
||||
const { token0, token1 } = await resolvePoolTokenDisplays(tokenRepo, chainId, pool.token0Address, pool.token1Address);
|
||||
return {
|
||||
address: pool.poolAddress,
|
||||
dex: pool.dexType,
|
||||
token0: {
|
||||
address: pool.token0Address,
|
||||
symbol: token0.symbol,
|
||||
name: token0.name,
|
||||
source: token0.source,
|
||||
},
|
||||
token1: {
|
||||
address: pool.token1Address,
|
||||
symbol: token1.symbol,
|
||||
name: token1.name,
|
||||
source: token1.source,
|
||||
},
|
||||
reserves: {
|
||||
token0: pool.reserve0,
|
||||
token1: pool.reserve1,
|
||||
},
|
||||
tvl: pool.totalLiquidityUsd,
|
||||
volume24h: pool.volume24h,
|
||||
feeTier: pool.feeTier,
|
||||
};
|
||||
})
|
||||
),
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('Error fetching pools:', error);
|
||||
@@ -272,8 +288,12 @@ router.get('/pools/:poolAddress', cacheMiddleware(60 * 1000), async (req: Reques
|
||||
pool: {
|
||||
address: pool.poolAddress,
|
||||
dex: pool.dexType,
|
||||
token0: pool.token0Address,
|
||||
token1: pool.token1Address,
|
||||
token0: {
|
||||
address: pool.token0Address,
|
||||
},
|
||||
token1: {
|
||||
address: pool.token1Address,
|
||||
},
|
||||
reserves: {
|
||||
token0: pool.reserve0,
|
||||
token1: pool.reserve1,
|
||||
|
||||
Reference in New Issue
Block a user