/**
 * Diamond Economy System
 *
 * Handles diamond earning, spending, and tracking.
 * Diamonds are the premium currency in BaoLife.
 *
 * All operations read/write player.c.diamonds directly.
 * When only a playerId string is provided, the player is resolved
 * via the connectionRegistry (active session lookup).
 */
export interface DiamondTransaction {
    playerId: string;
    transactionType: 'earn' | 'spend';
    amount: number;
    reason: string;
    timestamp: Date;
}
export interface DeductResult {
    success: boolean;
    message: string;
    newBalance?: number;
}
interface DiamondPlayerState {
    userId?: string;
    c?: {
        diamonds?: number;
    };
    character?: {
        diamonds?: number;
    };
}
export declare const DIAMOND_REWARDS: Record<string, number>;
/**
 * Initialize player diamond balance
 */
export declare function initializePlayerDiamonds(playerIdOrPlayer: string | DiamondPlayerState, initialAmount?: number, playerArg?: DiamondPlayerState): void;
/**
 * Award diamonds to player with tracking
 */
export declare function awardDiamonds(playerIdOrPlayer: string | DiamondPlayerState, reason: string, amount: number, playerArg?: DiamondPlayerState): boolean;
/**
 * Deduct diamonds from player with validation
 */
export declare function deductDiamonds(playerIdOrPlayer: string | DiamondPlayerState, reason: string, amount: number, playerArg?: DiamondPlayerState): DeductResult;
/**
 * Spend diamonds from player with validation
 */
export declare function spendDiamonds(playerIdOrPlayer: string | DiamondPlayerState, reason: string, amount: number, playerArg?: DiamondPlayerState): DeductResult;
/**
 * Get player's current diamond balance
 */
export declare function getDiamondBalance(playerIdOrPlayer: string | DiamondPlayerState, playerArg?: DiamondPlayerState): number;
/**
 * Get player's diamond transaction history
 */
export declare function getDiamondTransactionHistory(playerId: string, limit?: number): DiamondTransaction[];
/**
 * Get the diamond reward amount for a specific reason
 */
export declare function getRewardAmount(reason: string): number;
/**
 * Check if player can afford an amount
 */
export declare function canAfford(playerIdOrPlayer: string | DiamondPlayerState, amount: number, playerArg?: DiamondPlayerState): boolean;
/**
 * Set player's diamond balance directly (for admin/testing)
 */
export declare function setDiamondBalance(playerIdOrPlayer: string | DiamondPlayerState, amount: number, playerArg?: DiamondPlayerState): void;
/**
 * Clear player's diamond data (for testing)
 */
export declare function clearPlayerDiamonds(playerIdOrPlayer: string | DiamondPlayerState, playerArg?: DiamondPlayerState): void;
/**
 * Clear all diamond data (for testing)
 */
export declare function clearAllDiamonds(): void;
export {};
//# sourceMappingURL=diamondEconomy.d.ts.map