gamify-ui-core
Version:
🚀 The ultimate gamification engine for modern web applications. Framework-agnostic, real-time leaderboards, custom rule engine, streaks, missions, and AI-powered features.
108 lines • 2.51 kB
TypeScript
import { GameEvent } from '../types';
export interface UserSession {
id: string;
userId: string;
startTime: Date;
endTime?: Date;
events: GameEvent[];
totalXp: number;
levelUps: number;
achievements: number;
badges: number;
}
export interface UserMetrics {
userId: string;
totalSessions: number;
totalPlayTime: number;
averageSessionLength: number;
totalXp: number;
totalLevelUps: number;
totalAchievements: number;
totalBadges: number;
favoriteEvents: string[];
lastActive: Date;
engagementScore: number;
}
export interface EventAnalytics {
eventType: string;
totalOccurrences: number;
uniqueUsers: number;
averageXpPerEvent: number;
lastOccurrence: Date;
trend: 'increasing' | 'decreasing' | 'stable';
}
/**
* Manages analytics and user behavior tracking
*/
export declare class AnalyticsManager {
private readonly sessions;
private readonly eventHistory;
private readonly userMetrics;
/**
* Start a new user session
*/
startSession(userId: string): string;
/**
* End a user session
*/
endSession(userId: string, sessionId: string): void;
/**
* Track an event
*/
trackEvent(userId: string, event: GameEvent): void;
/**
* Get user metrics
*/
getUserMetrics(userId: string): UserMetrics | null;
/**
* Get all user metrics
*/
getAllUserMetrics(): UserMetrics[];
/**
* Get event analytics
*/
getEventAnalytics(): EventAnalytics[];
/**
* Get user engagement score
*/
getEngagementScore(userId: string): number;
/**
* Get leaderboard by engagement
*/
getEngagementLeaderboard(limit?: number): Array<{
userId: string;
score: number;
}>;
/**
* Get user session history
*/
getUserSessions(userId: string): UserSession[];
/**
* Get user event history
*/
getUserEvents(userId: string): GameEvent[];
/**
* Get popular events
*/
getPopularEvents(limit?: number): Array<{
eventType: string;
count: number;
}>;
/**
* Update user metrics
*/
private updateUserMetrics;
/**
* Get user's favorite events
*/
private getFavoriteEvents;
/**
* Calculate event trend
*/
private calculateTrend;
/**
* Clear analytics data (for testing)
*/
clearData(): void;
}
//# sourceMappingURL=AnalyticsManager.d.ts.map