File size: 1,575 Bytes
820c67c de40b1a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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: string;
totalVolume: number; streak: number; protocols: string[]; savedCount: number
}
export interface Campaign {
id: string; name: string; type: CampaignType; status: CampaignStatus;
description: string; budget: number; tokenMint: string; 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 ChurnEvent {
id: string; wallet: string; eventType: string; timestamp: string;
resolved: boolean; campaignTriggered?: string
}
export interface ProtocolMetric {
protocol: string; volume: number; users: number; churnRate: number;
retentionRate: number; avgStreak: number; color: string
}
export interface RetentionCohort {
week: string; d1: number; d7: number; d14: number; d30: number; d60: number
}
export interface DashboardStats {
activeWallets: number; walletsAtRisk: number; walletsSaved: number;
activeCampaigns: number; totalEventsToday: number; rewardsDistributed: number;
avgRetention: number; churnRate: number; agentActionsToday: number; roi: number
}
|