import { Theme } from '@mui/system'; import { BudgetsApi } from '../api'; import { GlobalStore } from './GlobalStore'; import { Budget, Category, DateRange, DetailedBudget, DetailedCategory, MerchantBudget } from '../types'; export declare class BudgetsStore { api: BudgetsApi; globalStore: GlobalStore; alert: { msg: string; severity: 'success' | 'error'; } | null; dateRange: DateRange; budgets: Budget[]; selectedBudget: DetailedBudget | undefined; selectedSubBudget: DetailedBudget | undefined; isDataLoaded: boolean; theme: Theme; merchantBudgets: MerchantBudget[]; constructor(globalStore: GlobalStore); loadBudgetData: () => Promise; get detailedBudgets(): DetailedBudget[]; get incomeBudget(): number | undefined; get unbudgetedCategories(): DetailedCategory[]; get totalBudgeted(): number; addBudget: (category: Category, amount: number, parentGuid?: string | null) => Promise; deleteBudget: (guid: string) => Promise; loadBudgets: () => Promise; setAlert: (alert: { msg: string; severity: "success" | "error"; } | null) => { msg: string; severity: "success" | "error"; } | null; setBudgets: (budgets: Budget[]) => void; setDateRange: (dateRange: DateRange) => DateRange; setSelectedBudget: (budget: DetailedBudget | undefined) => DetailedBudget | undefined; setSelectedSubBudget: (budget: DetailedBudget | undefined) => DetailedBudget | undefined; setTheme: (theme: Theme) => Theme; /** * Recalculate budget by using the average amount from top-level categories * @param categories Detailed categories */ recalculateBudgets: (categories: DetailedCategory[]) => Promise<{ data: Budget[]; isSuccess: boolean; }>; updateBudget: (budget: Budget) => Promise; getMerchantBudgetByMerchantGuid: (merchantGuid: string) => MerchantBudget | undefined; setMerchantBudgets: (merchantBudgets: MerchantBudget[]) => void; addMerchantBudget: (merchantGuid: string, amount: number) => Promise<{ isSuccess: boolean; }>; updateMerchantBudget: (merchantBudget: MerchantBudget) => Promise<{ isSuccess: boolean; }>; deleteMerchantBudget: (merchantBudgetGuid: string) => Promise<{ isSuccess: boolean; }>; }