import { ZeniDate } from '../../zeniDayJS'; import { Amount } from '../amount'; import { FetchStateAndError, ID } from '../common'; import { COABalanceType } from './coaBalanceType'; /** * Interface for any Chart of Account (COA) balance in a * date range. */ export interface COABalance { balance: Amount; balanceTimeFrame: COABalanceTimeFrame; endDate: ZeniDate; startDate: ZeniDate; type: COABalanceType; forecast?: Amount; id?: string; label?: string; sourceAccountIDs?: ID[]; totalBalance?: Amount; totalForecast?: Amount; } export interface COABalanceWithPercent extends COABalance { forecastPercentValue?: number; percentValue?: number; totalPercentValue?: number; } export declare const toCOABalanceTimeframe: (v?: string) => "month" | "year" | "quarter" | "week" | "free_range" | undefined; export type COABalanceTimeFrame = NonNullable>; export type COABalanceMonthQuarterTimeframe = Extract; export type COABalanceMonthQuarterYearTimeframe = Exclude; export type FetchStateByTimeframe = Record; export interface COABalanceGroupedByPeriod { months?: COABalance[]; quarters?: COABalance[]; weeks?: COABalance[]; years?: COABalance[]; } export interface COABalanceGrouped extends COABalanceGroupedByPeriod { totals: { months?: COABalance; quarters?: COABalance; weeks?: COABalance; years?: COABalance; }; } export interface COABalanceGroupedWithIDs extends COABalanceGrouped { accountGroupIDs: string[]; accountIDs: string[]; } export interface COABalanceGroupedWithAccountIDs extends COABalanceGrouped { accountIDs: string[]; }