flowstate / src /lib /types.ts
muthuk1's picture
Upload project config and lib files
820c67c verified
raw
history blame
1.97 kB
export type ChurnRisk = 'critical' | 'high' | 'medium' | 'low' | 'safe'
export type CampaignType = 'leaderboard' | 'rebate' | 'raffle' | 'gift'
export type CampaignStatus = 'draft' | 'active' | 'ended' | 'distributed'
export interface Wallet { address: string; churnRisk: ChurnRisk; riskScore: number; lastActive: Date; totalVolume: number; streak: number; protocols: string[]; joinedAt: Date; savedCount: number; campaignsParticipated: number }
export interface Campaign { id: string; name: string; type: CampaignType; status: CampaignStatus; description: string; budget: number; tokenMint: string; startTime: Date; endTime: Date; participantCount: number; eventsProcessed: number; rewardsDistributed: number; formula?: string; createdBy: 'ai-agent' | 'manual' }
export interface LeaderboardEntry { rank: number; wallet: string; score: number; change24h: number; volume: number; streak: number; protocols: string[]; rewards: number }
export interface AgentAction { id: string; timestamp: Date; actionType: string; description: string; walletTarget?: string; campaignId?: string; success: boolean; metadata: Record<string, unknown> }
export interface ChurnEvent { id: string; wallet: string; eventType: string; timestamp: Date; metadata: Record<string, unknown>; campaignTriggered?: string; resolved: boolean }
export interface AnalyticsMetric { date: string; value: number }
export interface RetentionCohort { week: string; day1: number; day7: number; day14: number; day30: number; day60: number }
export interface ProtocolMetric { protocol: string; volume: number; users: number; churnRate: number; retentionRate: number; avgStreak: number; color: string }
export interface DashboardStats { totalWallets: number; activeWallets: number; walletsAtRisk: number; walletsSaved: number; totalCampaigns: number; activeCampaigns: number; totalEventsToday: number; rewardsDistributed: number; avgRetention: number; churnRate: number; agentActionsToday: number; roi: number }