UNPKG

@gala-chain/launchpad-mcp-server

Version:

MCP server for Gala Launchpad - 102 tools (pool management, event watchers, GSwap DEX trading, price history, token creation, wallet management, DEX pool discovery, liquidity positions, token locks, locked token queries, composite pool data, cross-chain b

153 lines 5.99 kB
"use strict"; /** * DEX Leaderboard Tools * * Tools for querying DEX leaderboard rankings and season management. * Provides access to seasonal leaderboards, current rankings, and player achievements. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.leaderboardTools = exports.fetchCurrentDexLeaderboardTool = exports.fetchDexLeaderboardBySeasonIdTool = exports.fetchCurrentDexSeasonTool = exports.fetchAllDexSeasonsTool = void 0; const response_formatter_js_1 = require("../../utils/response-formatter.js"); const error_handler_js_1 = require("../../utils/error-handler.js"); // Season ID schema for leaderboard queries const SEASON_ID_SCHEMA = { type: 'number', minimum: 1, description: 'DEX season identifier (positive integer)', }; /** * 1. Fetch All DEX Seasons * * Returns all available DEX leaderboard seasons with start/end dates and rules. * Non-paginated endpoint returning complete list of all seasons. */ exports.fetchAllDexSeasonsTool = { name: 'gala_launchpad_fetch_all_dex_seasons', description: 'Fetch all DEX leaderboard seasons - returns complete list of seasons with dates and rules', inputSchema: { type: 'object', properties: {}, }, handler: (0, error_handler_js_1.withErrorHandling)(async (sdk) => { const seasons = await sdk.fetchAllDexSeasons(); return (0, response_formatter_js_1.formatSuccess)({ seasons, totalSeasons: seasons.length, message: `Retrieved ${seasons.length} DEX seasons`, }); }), }; /** * 2. Fetch Current DEX Season * * Returns the currently active DEX leaderboard season based on current date/time. * Returns null if no season is currently active. */ exports.fetchCurrentDexSeasonTool = { name: 'gala_launchpad_fetch_current_dex_season', description: 'Fetch current active DEX leaderboard season - returns null if no season is active', inputSchema: { type: 'object', properties: {}, }, handler: (0, error_handler_js_1.withErrorHandling)(async (sdk) => { const season = await sdk.fetchCurrentDexSeason(); if (season === null) { return (0, response_formatter_js_1.formatSuccess)({ currentSeason: null, message: 'No active DEX season at this time', }); } return (0, response_formatter_js_1.formatSuccess)({ currentSeason: season, message: `Current season: ${season.name} (ID: ${season.id})`, seasonDates: { start: season.start.toISOString(), end: season.end.toISOString(), }, }); }), }; /** * 3. Fetch DEX Leaderboard by Season ID * * Returns the leaderboard rankings for a specific season. * Includes player rankings, XP metrics, and mastery achievements. */ exports.fetchDexLeaderboardBySeasonIdTool = { name: 'gala_launchpad_fetch_dex_leaderboard_by_season_id', description: 'Fetch DEX leaderboard for a specific season - returns rankings with XP metrics and achievements', inputSchema: { type: 'object', properties: { seasonId: SEASON_ID_SCHEMA, }, required: ['seasonId'], }, handler: (0, error_handler_js_1.withErrorHandling)(async (sdk, args) => { const leaderboard = await sdk.fetchDexLeaderboardBySeasonId(args.seasonId); // Get top 5 entries for summary const topEntries = leaderboard.entries.slice(0, 5); return (0, response_formatter_js_1.formatSuccess)({ leaderboard, totalEntries: leaderboard.entries.length, topEntries, topPlayer: { wallet: leaderboard.entries[0]?.wallet, rank: leaderboard.entries[0]?.rank, totalXp: leaderboard.entries[0]?.totalXp, titles: leaderboard.entries[0]?.masteryTitles.length || 0, }, message: `Leaderboard for season ${args.seasonId}: ${leaderboard.entries.length} players`, }); }), }; /** * 4. Fetch Current DEX Leaderboard * * Returns the leaderboard for the currently active season. * Combines current season detection with leaderboard retrieval. * Returns null if no season is currently active. */ exports.fetchCurrentDexLeaderboardTool = { name: 'gala_launchpad_fetch_current_dex_leaderboard', description: 'Fetch current DEX leaderboard for active season - returns null if no active season', inputSchema: { type: 'object', properties: {}, }, handler: (0, error_handler_js_1.withErrorHandling)(async (sdk) => { const leaderboard = await sdk.fetchCurrentDexLeaderboard(); if (leaderboard === null) { return (0, response_formatter_js_1.formatSuccess)({ currentLeaderboard: null, message: 'No active season - leaderboard unavailable', }); } // Get top 5 entries for summary const topEntries = leaderboard.entries.slice(0, 5); const topPlayer = leaderboard.entries[0]; return (0, response_formatter_js_1.formatSuccess)({ leaderboard, totalEntries: leaderboard.entries.length, topEntries, topPlayer: { wallet: topPlayer?.wallet, rank: topPlayer?.rank, totalXp: topPlayer?.totalXp, liquidityXp: topPlayer?.liquidityXp, tradingXp: topPlayer?.tradingXp, titles: topPlayer?.masteryTitles.length || 0, }, message: `Current leaderboard: ${leaderboard.entries.length} active players`, }); }), }; // Export all leaderboard tools exports.leaderboardTools = [ exports.fetchAllDexSeasonsTool, exports.fetchCurrentDexSeasonTool, exports.fetchDexLeaderboardBySeasonIdTool, exports.fetchCurrentDexLeaderboardTool, ]; //# sourceMappingURL=leaderboard.js.map