import { AccountReconciliationByAccount, Attachment, ContentType, ID } from '@zeniai/client-epic-state'; /** Fallback when client-side page count cannot be resolved. */ export declare const STATEMENT_PROCESSING_UNKNOWN_PAGE_COUNT_FALLBACK_SECONDS = 125; export type StatementProcessingFileRef = { signedUrl: string; contentType?: string; extension?: string; }; /** Steps 2…N share the countdown; step 1 is upload-bound. */ export declare function getStatementProcessingTimedStepCount(totalSteps: number): number; /** Elapsed countdown seconds for completed steps (only steps 2–N consume time). */ export declare function getStatementProcessingElapsedSecondsForCompletedSteps(completedSteps: number, totalDurationSeconds: number, totalSteps: number): number; export declare function getStatementProcessingCountdownSeconds(pageCount: number | undefined): number; export declare function isStatementProcessingImageFile(file: StatementProcessingFileRef): boolean; export declare function isStatementProcessingPdfFile(file: StatementProcessingFileRef): boolean; export declare function toStatementAttachmentContentType(file: Pick | undefined, fileUrl: string): ContentType; export declare function toFullScreenAttachment(fileUrl: string, file: Pick | undefined, fileName: string): Attachment; export declare function resolveStatementFilePageCount(file: StatementProcessingFileRef | undefined): Promise; export type StatementProcessingTimeRemainingStrings = { takingLongerThanExpected: string; timeRemainingMinutes: (minutes: number) => string; timeRemainingSeconds: (seconds: number) => string; }; export declare function getStatementProcessingTimeRemainingLabel(remainingSeconds: number, isProcessingComplete: boolean, strings: StatementProcessingTimeRemainingStrings): { label: string; showClock: boolean; } | null; export declare function toStatementProcessingFileRef(file: { signedUrl: unknown; contentType?: string; extension?: string; fileName?: string; } | undefined): StatementProcessingFileRef | undefined; export declare function formatReconAccountDisplayName(accountName: string, last4Digits?: string | null): string; export declare function getReconAccountDisplayName(accountReconciliation: AccountReconciliationByAccount): string; export declare function getStatementParseTransactionCount(accountReconciliation: AccountReconciliationByAccount): number; export declare function resolveActiveStatementUploadId(accountReconciliation: AccountReconciliationByAccount): string; export declare function hasParsedStatementDataReadyForReview(accountReconciliation: AccountReconciliationByAccount): boolean; export declare function isParsedStatementDataReadyForFlow(accountReconciliation: AccountReconciliationByAccount, activeStatementUploadId: string): boolean; export declare function needsCombinedStatementAccountMapping(accountReconciliation: AccountReconciliationByAccount): boolean; export declare function hasParsedStatementDataReadyForReviewAfterMapping(accountReconciliation: AccountReconciliationByAccount): boolean; export declare function isStatementProcessingInFlight(accountReconciliation: AccountReconciliationByAccount): boolean; export type StatementProcessingUiState = { completedSteps: number; isActive: boolean; showParseInfo: boolean; uploadComplete: boolean; }; export type StatementProcessingBackgroundSnapshot = { completedSteps: number; startedAtMs: number; totalDurationSeconds: number; accountMappings?: Array<{ accountId: ID; ledgerIdentifier: string; }>; }; /** Recompute cosmetic step progress from elapsed time after Continue in Background. */ export declare function computeStatementProcessingStepsFromElapsedTime({ startedAtMs, totalDurationSeconds, totalSteps, isParsedDataReady, minSteps, }: { isParsedDataReady: boolean; startedAtMs: number; totalDurationSeconds: number; totalSteps: number; minSteps?: number; }): number; export declare function resolveBackgroundStatementProcessingCompletedSteps(accountReconciliation: AccountReconciliationByAccount, totalSteps: number, activeStatementUploadId?: string): number; export declare function getInitialStatementProcessingUiState(accountReconciliation: AccountReconciliationByAccount, statementProcessingDismissedToBackground: boolean | undefined, totalSteps: number, activeStatementUploadId?: string): StatementProcessingUiState; export declare function shouldShowContinueParsingFooter(accountReconciliation: AccountReconciliationByAccount, isStatementFlowActive: boolean): boolean;