import { FetchStateAndError, FetchedState, ID } from '../../../commonStateTypes/common'; import { CategoryCombinationOperator, FilterCategoryType } from '../../../commonStateTypes/filterPrimitives'; import { PriorityCodeType, TaskStatusCodeType } from '../../../entity/task/taskState'; import { ZeniDate } from '../../../zeniDayJS'; import { SpendManagementUIState } from '../../spendManagement/billPay/billList/billListState'; export declare const ALL_TASK_LIST_TABS: readonly ["live", "completed", "archived", "deleted", "snoozed"]; export type TaskListTab = (typeof ALL_TASK_LIST_TABS)[number]; export interface TaskListTabData { taskIds: ID[]; taskIdsByAssignees: Record; taskIdsByDueDate: Record; taskIdsByGroupsIds: Record; taskIdsByPriority: Record; taskIdsByStatus: Record; taskIdsByTags: Record; } export interface TaskListLocalData { defaultTaskGroupId: ID | null; existingTaskGroupNamesByGroupId: Record; newTaskGroupName: string; selectedTaskIds: ID[]; } export declare const DUE_DATE_GROUP_KEYS: readonly ["overdue", "today", "this_week", "this_month", "upcoming"]; export declare const toDueDateGroupKeyType: (v: string) => "overdue" | "today" | "this_week" | "this_month" | "upcoming"; export declare type DueDateGroupKey = ReturnType; export interface TaskListState extends FetchedState { byTab: Record; currentTab: TaskListTab; filters: TaskListFilters; localData: TaskListLocalData; taskIds: ID[]; taskIdsByAssignees: Record; taskIdsByDueDate: Record; taskIdsByGroupsIds: Record; taskIdsByPriority: Record; taskIdsByStatus: Record; taskIdsByTags: Record; uiState: TaskListUIState; updateTasksFetchState: FetchStateAndError; } export interface TaskListFilters { categories: TaskFilterCategory[]; categoryCombinationOperator: CategoryCombinationOperator; } export interface TaskFilterCategory { field: TaskListFilterCategoryField; matchingOperator: 'equal' | 'not_equal'; values: (string | ZeniDate)[]; valuesCombinationOperator: 'ANY'; } export type TaskListFilterCategoryField = 'status' | 'dueDate' | 'assignee' | 'creationDate' | 'priority' | 'tag'; export declare const TASK_LIST_GROUP_BY_KEYS: readonly ["groupName", "status", "dueDate", "assignee", "priority", "tag"]; export declare const toTaskListGroupByKeyType: (v: string) => "status" | "dueDate" | "priority" | "assignee" | "tag" | "groupName"; export declare const toTaskListGroupByKeyTypeStrict: (v: string) => "status" | "dueDate" | "priority" | "assignee" | "tag" | "groupName" | undefined; export declare type TaskGroupKey = ReturnType; export interface TaskListUIState extends SpendManagementUIState { groupByKey: TaskGroupKey; searchText: string; sortKey: TaskListViewSortKey; } declare const toTaskListSortKeyType: (v: string) => "status" | "dueDate" | "name" | "priority" | "assignee" | "creationDate" | "tag" | "visibility" | "timeSpent"; export declare type TaskListViewSortKey = ReturnType; export declare const TASK_LIST_FILTER_CATEGORIES: TaskListFilterCategoryOption[]; interface TaskListFilterCategoryOption { value: TaskListFilterCategoryField; multiple?: boolean; type?: FilterCategoryType; } interface TaskListGroupByCategoryOption { value: TaskGroupKey; } export declare const TASK_LIST_GROUP_BY_CATEGORIES: TaskListGroupByCategoryOption[]; export {};