43 lines
847 B
TypeScript
43 lines
847 B
TypeScript
export interface Subscription {
|
|
id: string;
|
|
name: string;
|
|
cost: number;
|
|
billingCycle: 'monthly' | 'yearly' | 'weekly';
|
|
category: string;
|
|
url?: string;
|
|
createdAt: string;
|
|
history: CostHistoryPoint[];
|
|
}
|
|
|
|
export interface CostHistoryPoint {
|
|
date: string;
|
|
amount: number;
|
|
}
|
|
|
|
export interface Budget {
|
|
monthlyLimit: number;
|
|
alertThreshold: number;
|
|
}
|
|
|
|
export interface ForecastResult {
|
|
nextMonthForecast: number;
|
|
trendDirection: 'up' | 'down' | 'stable';
|
|
trendPercent: number;
|
|
confidence: 'high' | 'medium' | 'low';
|
|
breakdown: CategoryBreakdown[];
|
|
alertTriggered: boolean;
|
|
alertMessage?: string;
|
|
}
|
|
|
|
export interface CategoryBreakdown {
|
|
category: string;
|
|
currentSpend: number;
|
|
forecastSpend: number;
|
|
percentOfTotal: number;
|
|
}
|
|
|
|
export interface AppState {
|
|
subscriptions: Subscription[];
|
|
budget: Budget;
|
|
}
|