export interface UserUsage { id: string user_id: string period_start: string period_end: string // Current usage counts smart_prompts_used: number fast_prompts_used: number storage_used_gb: number custom_templates_created: number books_created: number // Metadata last_reset_at: string created_at: string updated_at: string } export interface UsageLog { id: string user_id: string feature_type: string action: 'increment' | 'decrement' | 'reset' amount: number metadata?: Record created_at: string } export interface UsagePeriod { start: Date end: Date type: 'monthly' | 'annually' } export interface UsageStats { period: UsagePeriod usage: UserUsage limits: { smart_prompts: number fast_prompts: number | null // null = unlimited storage_gb: number custom_templates: number | null | undefined // null/undefined = unlimited books: number | null | undefined // null/undefined = unlimited } quotas: { smart_prompts: { used: number; limit: number; percentage: number } fast_prompts: { used: number; limit: number | null; percentage: number | null } storage_gb: { used: number; limit: number; percentage: number } custom_templates: { used: number; limit: number | null | undefined; percentage: number | null } books: { used: number; limit: number | null | undefined; percentage: number | null } } } // For API requests export type FeatureType = 'smart_prompts' | 'fast_prompts' | 'storage_gb' | 'custom_templates' | 'books' export interface IncrementUsageRequest { feature_type: FeatureType amount?: number // defaults to 1 metadata?: Record } export interface ResetUsageRequest { user_id: string feature_types?: string[] // if not provided, resets all }