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 { AutoCompleteActions, AutoCompleteData } from '../common/autoComplete/autoCompleteProps';
import { CreateTransferPayload } from '../expenseAutomation/sections/transactionCategorization/transactionCategorizationTypes';
import { AutoCompleteGroupedSingleSelectCustomGroupFieldValue } from '../formElements/autoCompleteGroupedSingleSelectCustomGroupField/AutoCompleteGroupedSingleSelectCustomGroupField';
import { DisableMode } from '../formElements/common/common';
import { LineInfo } 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;
    isAiCfoAccessEnabled?: boolean;
    isDisabled?: DisableMode;
    isNavBarVisible?: boolean;
    isProjectsTransactionsEnabled?: boolean;
    isTransactionCommentingEnabled?: 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;
    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;
    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<Props>): import("react/jsx-runtime").JSX.Element;
export interface SelectedVendor {
    name: string;
    description?: string;
}
export interface FormData {
    [isUpdateVendorToAllLineItemsChecked]: boolean;
    [lineInfo]: LineInfo[];
    [transactionDetailMemo]: string;
    [updatePreviousTransactionWithNewVendor]: boolean;
    [vendorDetails]: AutoCompleteGroupedSingleSelectCustomGroupFieldValue;
}
export {};
