import { ClientAnalytics } from '@zeniai/client-analytics'; import { AccountBase, AuthParams, COTTransactionTracking, ClassBase, Entity, FetchState, ID, Month, RecommendationWithCOT, SupportedTransactionPayload, SupportedTransactionWithCOT, TimeframeTick, TransactionDetailLocalData, TransactionDetailReport, TransactionID, TransactionVendorUpdates, TrendWithTransactionsView, UncategorizedAccounts } from '@zeniai/client-epic-state'; import { RequestToOpenThreadType } from '../commentsAndNotes/utils/ThreadsProvider'; import { AutoCompleteActions, AutoCompleteData } from '../common/autoComplete/autoCompleteProps'; import { CreateTransferPayload } from '../expenseAutomation/sections/transactionCategorization/transactionCategorizationTypes'; import { AutoCompleteGroupedSingleSelectCustomGroupFieldValue } from '../formElements/autoCompleteGroupedSingleSelectCustomGroupField/AutoCompleteGroupedSingleSelectCustomGroupField'; import { AutoCompleteGroupedOption } from '../formElements/autoCompleteGroupedSingleSelectField/AutoCompleteGroupedSingleSelectField'; import { DisableMode } from '../formElements/common/common'; import { LineInfo, transactionDetailTransactionProject } from './common'; declare const lineInfo = "lineInfo"; declare const transactionDetailMemo = "memo"; declare const vendorDetails = "vendorDetails"; declare const updatePreviousTransactionWithNewVendor = "updatePreviousTransactionWithNewVendor"; declare const isUpdateVendorToAllLineItemsChecked = "isUpdateVendorToAllLineItemsChecked"; export declare const uniqueName: (sectionId: ID) => `${string}_form`; export interface Props { attachmentUploadEndpoint: string; authParams: AuthParams; autoCompleteActions: AutoCompleteActions; autoCompleteData: AutoCompleteData; enableBackClickOnSave: boolean; firstMonthOfFY: Month; isCOTEnabled: boolean; isVendorBulkUpdateOnTransactionEnabled: boolean; transactionAttachmentEndpointToDownload: string; transactionAttachmentsEndpointToFetch: string; transactionDetail: TransactionDetailReport; analytics?: ClientAnalytics; companyId?: string; companyName?: string; containerStyles?: React.CSSProperties; headerStyles?: React.CSSProperties; /** Email deep-link (?thread_id=) request captured by the host screen. */ initialOpenThreadRequest?: RequestToOpenThreadType; isAiCfoAccessEnabled?: boolean; isDisabled?: DisableMode; isNavBarVisible?: boolean; isProjectsTransactionsEnabled?: boolean; isTransactionCommentingEnabled?: boolean; /** Whether the user is currently in split-edit mode for this transaction. */ isTransactionSplitEditMode?: boolean; /** Feature gate: allow splitting expense-type transaction line items. */ isTransactionSplitEnabled?: boolean; trendReport?: TrendWithTransactionsView; uncategorizedAccounts?: UncategorizedAccounts; vendorSaveStatus?: FetchState; onDeleteAttachment: (attachmentFileName: string) => void; onUploadAttachmentAttachment: (transaction: SupportedTransactionPayload) => void; saveLatestSelectedEntity: (transactionId: TransactionID, lineId: ID, entity: Entity) => void; setIsVendorUpdateAllChecked: (transactionId: TransactionID, transaction: SupportedTransactionWithCOT, isEnabled: boolean) => void; updateVendorBulkRecommendationsFetchStatus: (transactionId: TransactionID, fetchState: FetchState) => void; clearRecommendationForLineId?: (transactionDetails: { lineId: ID; transaction: SupportedTransactionWithCOT; transactionId: TransactionID; }) => void; discardTransactionDetailLocalData?: (vendorId?: ID, customerId?: ID) => void; onAskAiCfoClick?: () => void; onBackClick?: () => void; onChangeCategoryClassWhenUpdateAllIsChecked?: (isUpdateAll: boolean, entity?: Entity) => void; onClickUpdateVendorToAllLineItems?: (transactionId: TransactionID, transaction: SupportedTransactionWithCOT, entity: Entity, recommendationsWithCOT?: RecommendationWithCOT[]) => void; onCreateTransferEntry?: (payload: CreateTransferPayload) => void; onFetchRecommendationsForEntity?: (entity: Entity, amount: number, transactionDetails: { lineIds: ID[]; transaction: SupportedTransactionWithCOT; transactionId: TransactionID; }, isBulkFetch: boolean) => void; /** Split / edit mode: called when the user clicks "+ Add line". */ onLineAdd?: () => void; /** Split / edit mode: called when the user clicks the delete icon on a line. */ onLineDelete?: (lineId: ID) => void; onPageRefresh?: () => void; onResetLineItemsCategoryClassInLocalData?: (transactionId: TransactionID, transaction: SupportedTransactionWithCOT, lineIdsForReplace: ID[], // only the account/class/both will be altered and updateALl lineIdsForUpdateAll: ID[], // only update all will be altered replace: "account" | "class" | "both", updateAll?: boolean) => void; onResetVendorToAllLineItems?: (transactionId: TransactionID, transaction: SupportedTransactionWithCOT, lineId: ID) => void; onResetVendorUpdates?: () => void; onSaveCustomerInLocalData?: (transactionId: TransactionID, customerUpdates: TransactionVendorUpdates, entity?: Entity, amount?: number, transactionDetails?: { lineIds: ID[]; transaction: SupportedTransactionWithCOT; transactionId: TransactionID; }) => void; onSaveSuccess?: () => void; onSaveTransactionDetailLocalData?: (transactionId: TransactionID, transactionLocalData: TransactionDetailLocalData) => void; onSaveTransactionIdInNewVendorLocalData?: (transactionId: TransactionID) => void; onSaveUpdates?: (transactionId: TransactionID, cotTransactionTracking: COTTransactionTracking, vendorId?: ID, fireVendorUpdate?: boolean) => void; onSaveVendorInLocalData?: (transactionId: TransactionID, vendorUpdates: TransactionVendorUpdates, entity?: Entity, amount?: number, transactionDetails?: { lineIds: ID[]; transaction: SupportedTransactionWithCOT; transactionId: TransactionID; }) => void; /** Split / edit mode: toggle edit mode on / off. */ onToggleSplitEditMode?: (editMode: boolean) => void; onTransactionClick?: (transactionId: TransactionID) => void; onTrendSelectedPeriodChange?: (selectedPeriod?: { addTimePeriod: TimeframeTick; timeframe: "month" | "quarter" | "year"; currentTimePeriod?: TimeframeTick; }) => void; onUpdateAllChecked?: (isUpdateAllChecked: boolean, chosenAccount?: { account: AccountBase; updateOrRetain: "update" | "retain"; }, chosenClass?: { classBase: ClassBase; updateOrRetain: "update" | "retain"; }, lineEntity?: Entity, recommendationsWithCOT?: RecommendationWithCOT[]) => void; onUpdateAllTranactionsWithCurrentVendorChecked?: (isChecked: boolean) => void; resetUpdateErrorState?: () => void; } export default function TransactionDetailPage(props: Readonly): import("react/jsx-runtime").JSX.Element; export interface SelectedVendor { name: string; description?: string; } export interface FormData { [isUpdateVendorToAllLineItemsChecked]: boolean; [lineInfo]: LineInfo[]; [transactionDetailMemo]: string; [transactionDetailTransactionProject]: { allOptions: AutoCompleteGroupedOption[]; selectedOption: string | undefined; }; [updatePreviousTransactionWithNewVendor]: boolean; [vendorDetails]: AutoCompleteGroupedSingleSelectCustomGroupFieldValue; } export {};