export interface DonationAlertData { alertID: number; donationID: number; correlationID: string; sponsorMemberID: number; sendName: string; amount: number; netAmount: number; message: string|null; channelID: number; channelName: string; crewMemberID: number|null; crewMemberNickname: string|null; isTest: boolean; createdAt: string; } export interface DonationAlertConfig { id: number; title: string; amount: number; matchType: number; message: string; playDelaySec: number; displayDurationSec: number; popupEffect: string|null; textEffect: string|null; nicknameFontFamily: string|null; nicknameFontSize: number; nicknameFontColor: string; amountFontFamily: string|null; amountFontSize: number; amountFontColor: string; messageFontFamily: string|null; messageFontSize: number; messageFontColor: string; templateFontFamily: string|null; templateFontSize: number; templateFontColor: string; enableImage: boolean; imageUrl: string|null; enableSound: boolean; soundUrl: string|null; isActive: boolean; } export interface DonationRemoteState { isPaused: boolean; isAccepting: boolean; isAudioOnly: boolean; isVideoOnly: boolean; } export interface CrewRankItem { rank: number; crewMemberID: number; nickname: string; icon: string|null; channelName: string|null; totalAmount: number; donationCount: number; contributionRate: number; } export interface GoalProgress { goalConfigID: number; title: string; startAmount: number; targetAmount: number; currentAmount: number; percent: number; }