/** * Engagement — streaks, leaderboards, achievements (code-first + Console overrides). * * GET /engagement/config — base (from code) + resolved + overrides * PATCH /engagement/streaks/override — override a single streak * PATCH /engagement/leaderboards/override — override a single leaderboard * PATCH /engagement/achievements/override — override a single achievement * POST /engagement/overrides/clear — clear all / by type / by entity * GET /engagement/stats — counts + active users * * Entity definitions live in application code and are synced to the * platform on SDK init (`lastSyncedAt`); Console overrides let operators * tune an entity without redeploying. Clearing an override restores the * code-defined default. */ import type { Client } from './client.js'; export type EntityType = 'streak' | 'leaderboard' | 'achievement' | 'all'; export type SortDirection = 'asc' | 'desc'; export interface BaseConfig { readonly streaks: readonly Readonly>[]; readonly leaderboards: readonly Readonly>[]; readonly achievements: readonly Readonly>[]; readonly achievementCategories: readonly Readonly>[]; } export interface ResolvedConfig { readonly streaks: readonly Readonly>[]; readonly leaderboards: readonly Readonly>[]; readonly achievements: readonly Readonly>[]; } export interface GetConfigResult { readonly exists: boolean; readonly base: BaseConfig; readonly resolved: ResolvedConfig; readonly overrides: Readonly> | null; readonly lastSyncedAt: string | null; } export declare const getConfig: (client: Client, projectId: string) => Promise; export interface StreakOverride { readonly name?: string; readonly description?: string; readonly gracePeriodHours?: number; readonly maxValue?: number; readonly resetOnMiss?: boolean; readonly enabled?: boolean; } export interface LeaderboardOverride { readonly name?: string; readonly description?: string; readonly maxEntries?: number; readonly sortDirection?: SortDirection; readonly enabled?: boolean; } export interface AchievementOverride { readonly name?: string; readonly description?: string; readonly unlockedDescription?: string; readonly points?: number; readonly tier?: 'bronze' | 'silver' | 'gold' | 'platinum' | 'diamond'; readonly secret?: boolean; readonly enabled?: boolean; } export declare const updateStreakOverride: (client: Client, projectId: string, streakId: string, override: StreakOverride) => Promise<{ success: boolean; }>; export declare const updateLeaderboardOverride: (client: Client, projectId: string, leaderboardId: string, override: LeaderboardOverride) => Promise<{ success: boolean; }>; export declare const updateAchievementOverride: (client: Client, projectId: string, achievementId: string, override: AchievementOverride) => Promise<{ success: boolean; }>; export interface ClearOverridesInput { readonly projectId: string; readonly entityType?: EntityType; readonly entityId?: string; } export declare const clearOverrides: (client: Client, input: ClearOverridesInput) => Promise<{ success: boolean; }>; export interface EngagementStats { readonly config: { readonly exists: boolean; readonly lastSyncedAt: string | null; readonly streakCount: number; readonly leaderboardCount: number; readonly achievementCount: number; }; readonly streaks: { readonly totalUsers: number; readonly activeStreaks: number; }; readonly leaderboards: { readonly totalParticipants: number; }; readonly achievements: { readonly totalProgress: number; readonly totalUnlocked: number; }; } export declare const stats: (client: Client, projectId: string) => Promise; //# sourceMappingURL=engagement.d.ts.map