import { FetchStateAndError, ID } from '../../../commonStateTypes/common'; import { JEAccruedSchedule, JEOneTimeAccrual } from '../../../entity/jeSchedules/jeSchedulesSelector'; import { OneTimeAccrualEdits } from '../../../entity/jeSchedules/jeSchedulesState'; import { ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes'; import { RootState } from '../../../rootStateTypes'; import { ExpenseAutomationJESchedulesViewSelector, JEScheduleRow } from '../selectorTypes/jeSchedulesSelectorTypes'; /** * `posting_blocked` is written by the posting Cron when a JE fails to post. It is an internal * failure state with no human action attached, so it is dropped here rather than hidden at render * time — filtering in the view would leave the group counts and KPI totals counting rows nobody * can see. The expense-automation endpoint applies no status filter on the close-period path, so * these rows do arrive. */ export declare function isRenderableOneTimeAccrual(accrual: JEOneTimeAccrual): boolean; export declare function getJEScheduleRowType(schedule: JEScheduleRow): ScheduleTypes | undefined; export declare function isPendingReviewRow(schedule: JEScheduleRow): boolean; export declare function isExistingTabRow(schedule: JEScheduleRow): boolean; export declare const isAiAccountantSchedule: (schedule: JEScheduleRow) => boolean; export declare function isAccruedScheduleRow(schedule: JEScheduleRow): schedule is JEAccruedSchedule; export declare function isOneTimeAccrualRow(schedule: JEScheduleRow): schedule is JEOneTimeAccrual; export declare function getExpenseAutomationJESchedulesView(state: RootState): ExpenseAutomationJESchedulesViewSelector; export interface ExpenseAutomationJEOneTimeAccrualDetailView { actionFetchState: FetchStateAndError; detailFetchState: FetchStateAndError; accrual?: JEOneTimeAccrual; localData?: OneTimeAccrualEdits; } /** * One accrual plus the status of its promote / ignore request, for the detail screen. * * `accrual` is undefined on a cold load — a refresh or a shared link, where the list has never run * — so the screen dispatches `fetchOneTimeAccrual` and waits on `detailFetchState`. The two states * are separate on purpose: `actionFetchState` drives the row spinner and the post-revert navigation, * and a page load must not look like an action that just finished. */ export declare function getExpenseAutomationJEOneTimeAccrualDetailView(state: RootState, accrualId: ID): ExpenseAutomationJEOneTimeAccrualDetailView;