@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
JavaScript
;
/**
* 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