/**
 * Daily Login Reward System
 *
 * Tracks 7-day login streaks and awards diamonds, energy, items, or prestige.
 * Streak resets if player misses a day.
 *
 * Ported from Python: ws/retention/daily_rewards.py
 */
export interface DailyReward {
    day: number;
    type: 'diamonds' | 'energy' | 'prestige' | 'item';
    amount: number;
    name: string;
    itemId?: string | null;
}
export interface DayReward {
    id: number;
    diamonds: number;
    energy: number | null;
    money: number | null;
    bonusItem: string | null;
    claimed: boolean;
}
export interface LoginCheckResult {
    rewardAvailable: boolean;
    streak: number;
    reward: DailyReward | null;
    streakBroken: boolean;
}
export interface ClaimResult {
    success: boolean;
    reward: DailyReward | null;
    message: string;
}
export interface LoginStreakInfo {
    currentStreak: number;
    totalLogins: number;
    nextRewardDay: number;
    lastLoginDate: string | null;
}
export interface DailyRewardState {
    currentStreak: number;
    lastLoginDate: string;
    nextResetDate: string;
    canClaim: boolean;
    todaysClaimed: boolean;
    rewards: DayReward[];
}
interface DiamondAwardPlayer {
    userId?: string;
    c?: {
        diamonds?: number;
    };
    character?: {
        diamonds?: number;
    };
}
/**
 * Initialize daily rewards in database.
 * Called during server startup.
 */
export declare function initializeDailyRewards(): Promise<void>;
/**
 * Get reward for specific day from database
 */
export declare function getDailyReward(dayNumber: number): Promise<DailyReward | null>;
/**
 * Get all daily reward definitions
 */
export declare function getAllRewards(): Promise<DailyReward[]>;
/**
 * Check and update daily login streak.
 * Called when player connects to server.
 */
export declare function checkDailyLogin(playerId: string): Promise<LoginCheckResult>;
/**
 * Claim today's reward.
 * Awards the reward to player and marks as claimed.
 */
export declare function claimDailyReward(playerId: string, player?: DiamondAwardPlayer): Promise<ClaimResult>;
/**
 * Get complete daily reward state for iOS DailyRewardState model.
 */
export declare function getDailyRewardState(playerId: string): Promise<DailyRewardState>;
/**
 * Get player's login streak information
 */
export declare function getLoginStreakInfo(playerId: string): Promise<LoginStreakInfo>;
/**
 * Handle daily login check (WebSocket handler).
 * Called when player connects to server.
 */
export declare function handleDailyLoginCheck(playerId: string, sendToClient: (playerId: string, message: Record<string, unknown>) => void): Promise<void>;
/**
 * Clear player streak (for testing or new game)
 */
export declare function clearPlayerStreak(playerId: string): Promise<void>;
/**
 * Clear all streaks (for testing)
 */
export declare function clearAllStreaks(): Promise<void>;
/**
 * Reset player's claimed_today flag (for testing)
 */
export declare function resetTodayClaim(playerId: string): Promise<void>;
/**
 * Ensure required database tables exist
 */
export declare function ensureDailyRewardsTables(): Promise<void>;
export {};
//# sourceMappingURL=dailyRewards.d.ts.map