export type RankingType = 'comprehensive'|'creator'|'donor'; export type RankingPeriod = 'today'|'yesterday'|'week'|'month'|'last-month'|'all'; export interface MemberGradeDto { id: number; korName: string; image: string|null; textColor: string|null; order: number; } export interface RankingEntry { rank: number; previousRank: number|null; rankChange: number|null; memberID: number; memberName: string; memberThumb: string|null; channelName: string|null; channelThumb: string|null; category: string|null; score: number; moneyAmount: number; donorCount: number; broadcastSec: number; viewCount: number; likeCount: number; isAnonymous: boolean; memberGrade: MemberGradeDto|null; } export interface RisingEntry { memberID: number; memberName: string; memberThumb: string|null; channelName: string|null; recentAmount: number; previousAmount: number; growthRate: number; donorCount: number; } export interface RisingResponse { entries: RisingEntry[]; snapshotAt: string|null; } export type HallPeriod = 'today'|'week'|'month'|'quarter'|'half'|'all'; export interface HallEntry { rank: number; memberID: number; memberName: string; memberThumb: string|null; channelName: string|null; cumulativeAmount: number; donorCount: number; gradeID: number|null; gradeKorName: string|null; gradeImage: string|null; gradeTextColor: string|null; isAnonymous: boolean; } export interface HallOfFameResponse { top100: HallEntry[]; periodStart: string|null; periodEnd: string|null; } export interface MyRankInfo { rank: number; moneyAmount: number; score: number; previousRank: number|null; rankChange: number|null; } export interface RankingResponse { top3: RankingEntry[]; list: RankingEntry[]; myRank: MyRankInfo|null; total: number; periodStart: string; periodEnd: string; snapshotAt: string|null; }