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
}