import { SessionParser } from './parser.js';
export interface LeaderboardSubmission {
    anonymousId: string;
    displayName: string;
    submittedAt: string;
    stats: {
        totalSessions: number;
        totalTokens: number;
        totalHours: number;
        languageCount: number;
        longestStreak: number;
        mostActiveHour: number;
        avgSessionLength: number;
    };
}
export interface LeaderboardData {
    userSubmission: LeaderboardSubmission | null;
    lastUpdated: string;
}
export declare class LeaderboardService {
    private data;
    private parser;
    constructor(parser: SessionParser);
    private loadData;
    private saveData;
    private generateAnonymousId;
    getUserStats(): LeaderboardSubmission['stats'];
    submitStats(displayName: string): LeaderboardSubmission;
    removeSubmission(): void;
    getSubmission(): LeaderboardSubmission | null;
    getLeaderboard(category?: 'tokens' | 'sessions' | 'streak' | 'languages' | 'hours'): {
        entries: (LeaderboardSubmission & {
            rank: number;
            isUser: boolean;
        })[];
        userRank: number | null;
        totalParticipants: number;
    };
    getPercentile(category?: 'tokens' | 'sessions' | 'streak' | 'languages' | 'hours'): number | null;
    getAchievementTitle(): {
        title: string;
        emoji: string;
    };
}
//# sourceMappingURL=leaderboard.d.ts.map