import { FetchState, FetchedState, ID } from '../../../../commonStateTypes/common'; import { CategoryCombinationOperator, FilterCategoryType } from '../../../../commonStateTypes/filterPrimitives'; import { TimePeriod } from '../../../../commonStateTypes/timePeriod'; import { ZeniDate } from '../../../../zeniDayJS'; import { SpendManagementUIState } from '../../billPay/billList/billListState'; export declare const getRemiListKey: (period: TimePeriod, tab: string) => string; export type RemiListKey = ReturnType; export interface RemiListStatus extends FetchedState { pendingApprovalTransactionIDs: ID[]; transactionIDs: ID[]; uiState: RemiListUIState; } export declare const remiListInitialState: RemiListStatus; export interface RemiListState { byRemiListKey: Record; currentSubTab: RemiSubTabType; currentTab: RemiTabType; downloadUIState: RemiListDownloadUIState; filters: ReimbursementFilters; searchText: string; userIDs: ID[]; remiDetailSaveCode?: SaveRemiStageCode; selectedRemiId?: ID; } export interface RemiListUIState extends SpendManagementUIState { sortKey: ReimbursementViewSortKey; } export interface RemiListDownloadUIState extends RemiListUIState { downloadState: FetchState; } export type SaveRemiStageCode = 'draft' | 'pending_approval' | undefined; export declare const ALL_REMI_TABS: readonly ["paid", "pending_approval", "scheduled", "draft"]; export declare const toRemiTabType: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft"; export declare const toRemiTabTypeStrict: (v: string) => "paid" | "pending_approval" | "scheduled" | "draft" | undefined; export type RemiTabType = ReturnType; export declare const toRemiSubTabType: (v: string) => "failed" | "deleted" | "cancelled" | "rejected" | "ach" | "wire" | "all" | "overdue" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval"; export declare const toRemiSubTabTypeStrict: (v: string) => "failed" | "deleted" | "cancelled" | "rejected" | "ach" | "wire" | "all" | "overdue" | "myDrafts" | "awaitingApproval" | "awaitingMyApproval" | "awaitingAllApproval" | undefined; export type RemiSubTabType = ReturnType; export declare const toRemiSubTabUnderScoreType: (v: string) => "failed" | "deleted" | "cancelled" | "rejected" | "ach" | "wire" | "all" | "overdue" | "awaiting_approval" | "awaiting_my_approval" | "my_drafts" | "awaiting_all_approval"; export type RemiSubTabUnderScoreType = ReturnType; declare const toReimbursementSortKeyType: (v: string) => "type" | "status" | "amount" | "createdBy" | "submittedOn" | "reportName"; export type ReimbursementViewSortKey = ReturnType; export interface ReimbursementFilters { categories: ReimbursementFilterCategory[]; categoryCombinationOperator: CategoryCombinationOperator; } export interface ReimbursementFilterCategory { field: RemiListViewFilterCategoryField; matchingOperator: 'equal' | 'not_equal'; values: (string | ZeniDate)[]; valuesCombinationOperator: 'ANY'; } export type RemiListViewFilterCategoryField = 'createdBy' | 'status' | 'amount' | 'receiptDate' | 'creationDate' | 'paymentMethod'; export interface ReimbursementFilterCategoryDropdownOption { value: RemiListViewFilterCategoryField; multiple?: boolean; type?: FilterCategoryType; } export declare const REIMBURSEMENT_FILTER_CATEGORIES: ReimbursementFilterCategoryDropdownOption[]; export declare const REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED: ReimbursementFilterCategoryDropdownOption[]; export type RemiBulkSelectExceptionInfoType = 'processingSelectTogether' | 'processingWithOthers'; export {};