import { Amount } from '../../../commonStateTypes/amount'; import { FetchStateAndError, ID, UpdateType } from '../../../commonStateTypes/common'; import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderTypes'; import { MonthYearPeriod, TimePeriod } from '../../../commonStateTypes/timePeriod'; import type { MonthYearPeriodId } from '../../../commonStateTypes/timePeriod'; import { TransactionPayload } from '../../../entity/transaction/payloadTypes/transactionPayload'; import { SupportedTransactionPayload } from '../../../entity/transaction/transactionState'; import { ZeniAPIStatus } from '../../../responsePayload'; import { type CompletedSubTab } from '../types/completedSubTab'; import { type BatchDetails, type BatchListItem, type BatchStatus, type BulkUploadResultsTab, type BulkUploadSortKey, type BulkUploadState, type ManualSearchResult, type MissingReceiptsViewState, type MissingReceiptsViewUIState } from '../types/missingReceiptsViewState'; export declare const getCompletedTransactionsCacheKey: (periodId: MonthYearPeriodId, sortKey: BulkUploadSortKey | undefined, sortOrder: SortOrder | undefined, subTab: CompletedSubTab) => string; export declare const initialBulkUploadState: BulkUploadState; export declare const initialState: MissingReceiptsViewState; /** Epic trigger only; batch-details fetch is handled in epics. */ export declare const fetchBulkUploadBatchDetails: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/fetchBulkUploadBatchDetails">; /** * Epic trigger only. Dispatched from the screen on missing-receipts entry / period switch so the * automatching banner is restored for the logged-in user even when they sit on the Missing tab * after a hard refresh. The epic owns the list + details API calls end-to-end. */ export declare const restoreBulkUploadAutomatchingOnMount: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/restoreBulkUploadAutomatchingOnMount">; /** * Epic trigger only. Targeted stale-while-revalidate refresh for a single batch's details — used * by `pusherBatchStatusCompletionEpic` so a Pusher 'completed' event re-fetches only that one * batch instead of wiping the entire `batchDetailsById` cache. The epic dedupes via * `lastBatchDetailRefreshAtById` so resend storms don't trigger waves of API calls. */ export declare const refreshBatchDetailsForBatchId: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ batchId: ID; }, string>; export declare const fetchMissingReceipts: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[period: TimePeriod, minimumTransactionAmount: Amount, cacheOverride?: any, refreshViewInBackground?: any], { period: TimePeriod; minimumTransactionAmount: Amount; cacheOverride: any; refreshViewInBackground: any; }, "expenseAutomationMissingReceiptsView/fetchMissingReceipts", never, never>, fetchMissingReceiptsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ selectedPeriod: MonthYearPeriod; transactionsPayload: TransactionPayload[]; }, "expenseAutomationMissingReceiptsView/fetchMissingReceiptsSuccess">, fetchMissingReceiptsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ selectedPeriod: MonthYearPeriod; status: ZeniAPIStatus; }, "expenseAutomationMissingReceiptsView/fetchMissingReceiptsFailure">, uploadMissingReceiptSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionPayload: SupportedTransactionPayload, updateType?: UpdateType | undefined], { transactionPayload: SupportedTransactionPayload; updateType: UpdateType; }, "expenseAutomationMissingReceiptsView/uploadMissingReceiptSuccess", never, never>, updateMissingReceiptUploadState: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: string, fetchStatus: FetchStateAndError], { transactionId: string; fetchStatus: FetchStateAndError; }, "expenseAutomationMissingReceiptsView/updateMissingReceiptUploadState", never, never>, updateMissingReceiptsUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload, "expenseAutomationMissingReceiptsView/updateMissingReceiptsUIState">, markMissingReceiptAsDone: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionPayload: SupportedTransactionPayload, selectedPeriod: MonthYearPeriod], { transactionPayload: SupportedTransactionPayload; selectedPeriod: MonthYearPeriod; }, "expenseAutomationMissingReceiptsView/markMissingReceiptAsDone", never, never>, clearExpenseAutomationMissingReceiptsView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/clearExpenseAutomationMissingReceiptsView">, bulkUploadReceipts: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[files: File[]], { files: File[]; fileCount: number; }, "expenseAutomationMissingReceiptsView/bulkUploadReceipts", never, never>, updateBulkUploadProgress: import("@reduxjs/toolkit").ActionCreatorWithPayload, setBulkUploadUploadedFileCount: import("@reduxjs/toolkit").ActionCreatorWithPayload, bulkUploadReceiptsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ batchId: ID; }, "expenseAutomationMissingReceiptsView/bulkUploadReceiptsSuccess">, bulkUploadReceiptsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ error: ZeniAPIStatus; }, "expenseAutomationMissingReceiptsView/bulkUploadReceiptsFailure">, restoreBulkUploadMatchingState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ batchId: ID; totalFiles: number; }, "expenseAutomationMissingReceiptsView/restoreBulkUploadMatchingState">, bulkUploadAutomatchingTimedOut: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[batchId: string], { batchId: string; }, "expenseAutomationMissingReceiptsView/bulkUploadAutomatchingTimedOut", never, never>, pusherBatchStatusUpdate: import("@reduxjs/toolkit").ActionCreatorWithPayload, requestMissingReceiptsTabNavigation: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ tab: BulkUploadResultsTab; }, "expenseAutomationMissingReceiptsView/requestMissingReceiptsTabNavigation">, clearMissingReceiptsTabNavigation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/clearMissingReceiptsTabNavigation">, fetchBulkUploadBatchDetailsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload, fetchBulkUploadBatchDetailsFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload: { error: ZeniAPIStatus; }], { error: ZeniAPIStatus; }, "expenseAutomationMissingReceiptsView/fetchBulkUploadBatchDetailsFailure", never, never>, storeBatchDetails: import("@reduxjs/toolkit").ActionCreatorWithPayload, batchDetailFetchFailed: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ batchId: ID; }, "expenseAutomationMissingReceiptsView/batchDetailFetchFailed">, setInitialBatchDetailsLoading: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/setInitialBatchDetailsLoading">, fetchMoreBatchDetails: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/fetchMoreBatchDetails">, fetchMoreBatchDetailsComplete: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/fetchMoreBatchDetailsComplete">, fetchMoreBatchDetailsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ error: ZeniAPIStatus; }, "expenseAutomationMissingReceiptsView/fetchMoreBatchDetailsFailure">, fetchBulkUploadBatches: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[input?: { cacheOverride?: boolean; invalidateBatchDetailsCache?: boolean; } | undefined], { cacheOverride: boolean; invalidateBatchDetailsCache: boolean; }, "expenseAutomationMissingReceiptsView/fetchBulkUploadBatches", never, never>, fetchBulkUploadBatchesSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ batchList: BatchListItem[]; selectedPeriod: MonthYearPeriod; }, "expenseAutomationMissingReceiptsView/fetchBulkUploadBatchesSuccess">, fetchBulkUploadBatchesFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ error: ZeniAPIStatus; selectedPeriod: MonthYearPeriod; }, "expenseAutomationMissingReceiptsView/fetchBulkUploadBatchesFailure">, clearBulkUploadBatchDetailsForScopeChange: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/clearBulkUploadBatchDetailsForScopeChange">, markBatchDetailRefreshAttempted: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ batchId: ID; timestamp: number; }, "expenseAutomationMissingReceiptsView/markBatchDetailRefreshAttempted">, confirmBulkUploadMatch: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[batchId: string, attachmentId: string, transactionId: string, transactionType: string, fileName: string], { batchId: string; attachmentId: string; transactionId: string; transactionType: string; fileName: string; }, "expenseAutomationMissingReceiptsView/confirmBulkUploadMatch", never, never>, confirmBulkUploadMatchSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ attachmentId: ID; batchId: ID; transactionId: ID; }, "expenseAutomationMissingReceiptsView/confirmBulkUploadMatchSuccess">, confirmBulkUploadMatchFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ error: ZeniAPIStatus; }, "expenseAutomationMissingReceiptsView/confirmBulkUploadMatchFailure">, setBulkUploadResultsTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"completed" | "unmatched", "expenseAutomationMissingReceiptsView/setBulkUploadResultsTab">, setBulkUploadCompletedSubTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"manual" | "all" | "ai_accountant", "expenseAutomationMissingReceiptsView/setBulkUploadCompletedSubTab">, setBulkUploadSortConfig: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ sortKey: BulkUploadSortKey | undefined; sortOrder: SortOrder | undefined; }, "expenseAutomationMissingReceiptsView/setBulkUploadSortConfig">, clearBulkUpload: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/clearBulkUpload">, searchTransactionsForManualMatch: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[query: string, pageToken?: string | null | undefined], { query: string; pageToken: string | undefined; }, "expenseAutomationMissingReceiptsView/searchTransactionsForManualMatch", never, never>, searchTransactionsForManualMatchSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ append: boolean; nextPageToken: string | null; results: ManualSearchResult[]; totalCount: number; }, "expenseAutomationMissingReceiptsView/searchTransactionsForManualMatchSuccess">, searchTransactionsForManualMatchFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ error: ZeniAPIStatus; }, "expenseAutomationMissingReceiptsView/searchTransactionsForManualMatchFailure">, clearManualSearchResults: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/clearManualSearchResults">, acknowledgeBulkUploadConfirmMatchComplete: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/acknowledgeBulkUploadConfirmMatchComplete">, fetchCompletedTransactions: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[pageToken?: string | undefined, cacheOverride?: boolean | undefined], { pageToken: string | undefined; cacheOverride: boolean | undefined; }, "expenseAutomationMissingReceiptsView/fetchCompletedTransactions", never, never>, fetchCompletedTransactionsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ completedSubTab: CompletedSubTab; isInitialLoad: boolean; nextPageToken: string | null; selectedPeriod: MonthYearPeriod; sortKey: BulkUploadSortKey | undefined; sortOrder: SortOrder | undefined; totalCount: number; transactionIds: ID[]; }, "expenseAutomationMissingReceiptsView/fetchCompletedTransactionsSuccess">, fetchCompletedTransactionsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ completedSubTab: CompletedSubTab; error: ZeniAPIStatus; selectedPeriod: MonthYearPeriod; sortKey: BulkUploadSortKey | undefined; sortOrder: SortOrder | undefined; }, "expenseAutomationMissingReceiptsView/fetchCompletedTransactionsFailure">; declare const _default: import("redux").Reducer; export default _default;