@aituber-onair/kizuna
Version:
A sophisticated bond system (絆 - Kizuna) for managing relationships between users and AI characters in AITuber OnAir.
90 lines (89 loc) • 2 kB
TypeScript
/**
* PointCalculator - Point calculation class
*
* Manages platform-specific point rules and performs point calculations
*/
import type { PointContext, PointRule, KizunaUser, KizunaConfig } from "./types";
/**
* Point calculation result
*/
interface CalculationResult {
/** Points to be awarded */
points: number;
/** Applied rules */
appliedRules: PointRule[];
/** Calculation details */
breakdown: CalculationBreakdown[];
}
/**
* Calculation details
*/
interface CalculationBreakdown {
/** Rule name */
ruleName: string;
/** Points */
points: number;
/** Description */
description: string;
}
/**
* Point calculation class
*/
export declare class PointCalculator {
private config;
private cooldowns;
constructor(config: KizunaConfig);
/**
* Main method for point calculation
*/
calculatePoints(context: PointContext, user: KizunaUser): CalculationResult;
/**
* Check if a specific rule can be applied
*/
canApplyRule(rule: PointRule, context: PointContext, user: KizunaUser): boolean;
/**
* Record rule application (cooldown management)
*/
recordRuleApplication(rule: PointRule, userId: string): void;
/**
* Clear cooldown data
*/
clearCooldowns(): void;
/**
* Reset cooldowns for specific user
*/
resetUserCooldowns(userId: string): void;
/**
* Calculate base points
*/
private calculateBasePoints;
/**
* Apply platform-specific rules
*/
private applyPlatformRules;
/**
* Apply custom rules
*/
private applyCustomRules;
/**
* Check daily bonus
*/
private checkDailyBonus;
/**
* Get platform configuration
*/
private getPlatformConfig;
/**
* Get action type
*/
private getActionType;
/**
* Get or create cooldown record
*/
private getCooldownRecord;
/**
* Log output
*/
private log;
}
export {};