import { Dispatch, SetStateAction } from 'react';
import { ClientAnalytics } from '@zeniai/client-analytics';
import { Amount, AuthParams, BankAccount, BankNameByRoutingState, BillStageCodeType, CompanyMileageConfigInfo, CreateBankAccountLocalData, Currency, EditRemiDetailSelectorView, FetchState, FetchStateAndError, ID, PlaidConnectionDetails, PlaidLinkTokenType, ReceiptsProcessingPayload, ReimbursementTypeCode, RemiDetailLocalData, UncategorizedAccounts } from '@zeniai/client-epic-state';
import { RequestToOpenThreadType } from '../../commentsAndNotes/utils/ThreadsProvider';
import { AutoCompleteActions, AutoCompleteData } from '../../common/autoComplete/autoCompleteProps';
import { CreatableSingleSelectFieldValue } from '../../creatableSingleSelect/CreatableSingleSelectField';
import { FormData as UserBankAccountFormData } from './UserBankAccountPage';
import { LineInfoFormData } from './sections/ReimbursementSection';
import { lineInfoSectionId, paymentAtSectionId, whatForSectionId } from './types';
export interface WhatForSectionFormData {
    reportTitle?: string;
}
/**
 * Form Data Type
 */
export interface FormData {
    [lineInfoSectionId]: LineInfoFormData[];
    [paymentAtSectionId]: CreatableSingleSelectFieldValue;
    [whatForSectionId]: WhatForSectionFormData;
}
export declare const uniqueName: (sectionId: ID) => `${string}_form`;
export interface EditReimbursementDetailPageProps {
    authParams: AuthParams;
    bankAccountCreationState: FetchStateAndError;
    bankAccounts: BankAccount[];
    bankNameByRouting: Record<string, BankNameByRoutingState>;
    defaultCurrency: Currency;
    fetchBankNameByRoutingStatus: FetchStateAndError;
    isAccountingClassesEnabled: boolean;
    isReimbursementCommentingEnabled: boolean;
    isSignedInUserReimbursementCreator: boolean;
    isUserAdmin: boolean;
    plaidConnectionDetails: PlaidConnectionDetails;
    remiDetails: EditRemiDetailSelectorView;
    uncategorizedAccounts: UncategorizedAccounts;
    uploadInvoiceEndPoint: string;
    analytics?: ClientAnalytics;
    bankAccountToCreate?: CreateBankAccountLocalData;
    companyMileageConfigInfo?: CompanyMileageConfigInfo;
    customerSearchAutoCompleteActions?: AutoCompleteActions;
    customerSearchAutoCompleteData?: AutoCompleteData;
    disableInternalOverlay?: boolean;
    initialOpenThreadRequest?: RequestToOpenThreadType;
    isAiCfoAccessEnabled?: boolean;
    reimbursementId?: string;
    setShowSkipAutoFill?: Dispatch<SetStateAction<boolean>>;
    showSkipAutoFill?: boolean;
    clearAddRemiAutoFields: (lineId: ID) => void;
    clearDuplicateReimbursementDetail: () => void;
    clearRemiSaveStatus: () => void;
    discardReimbursementDetailsFromLocalStore: (reimbursementId?: ID) => void;
    fetchDuplicateReimbursement: () => void;
    onAmountChanged: (lineID: ID, currencyCode: string) => void;
    onBackClickFromBankAccountPage: () => void;
    onDuplicateLineClick: (reimbursementId: ID, lineId: ID) => void;
    onExistingMerchantChange: (merchantId: string, lineId: string) => void;
    onFetchBankName: (routingNumber: string) => void;
    onHomeCurrencyConversionUpdate: (homeCurrencyConversions: Amount, lineId: ID, reimbursementId?: ID) => void;
    onNewMerchantChange: (merchantName: string, lineId: string) => void;
    onReceiptsUpload: (response: ReceiptsProcessingPayload | undefined, lineId: number, shouldOverwrite: boolean) => void;
    onSaveBankAccount: () => void;
    onUserBankDetailsUpdated: (formData: UserBankAccountFormData) => void;
    removeDuplicateReimbursementForLine: (lineId: ID) => void;
    saveRemiDetails: (remiStageCode: BillStageCodeType) => void;
    submitRemiDetails: () => void;
    updateReimbursementType: (reimbursementType: ReimbursementTypeCode, lineId: ID, reimbursementId?: ID) => void;
    clearTentativeNameForLine?: (lineId: string) => void;
    deleteBankAccount?: (bankAccountId: ID) => void;
    deleteReimbursement?: () => void;
    onAddNewRule?: () => void;
    onAskAiCfoClick?: () => void;
    onCurrentLineIdForUploadChange?: (lineId: number) => void;
    onEstablishConnectionClick?: (publicToken: ID) => void;
    onFetchLinkTokenClick?: (plaidLinkTokenType: PlaidLinkTokenType) => void;
    onReimbursementDetailsChanged?: (remiDetailLocalData: RemiDetailLocalData) => void;
    redirectToReimbursementDetailScreen?: () => void;
    redirectToReimbursementListScreen?: () => void;
    removeFileFromLine?: (lineId: number) => void;
    updateInvoiceUploadFetchState?: (fetchState: FetchState) => void;
}
declare const EditReimbursementDetailPage: ({ remiDetails, authParams, defaultCurrency, customerSearchAutoCompleteData, customerSearchAutoCompleteActions, companyMileageConfigInfo, uploadInvoiceEndPoint, isAccountingClassesEnabled, isReimbursementCommentingEnabled, isUserAdmin, analytics, reimbursementId, plaidConnectionDetails, bankAccountCreationState, bankNameByRouting, bankAccounts, isSignedInUserReimbursementCreator, uncategorizedAccounts, bankAccountToCreate, fetchBankNameByRoutingStatus, onUserBankDetailsUpdated, onFetchBankName, onSaveBankAccount, fetchDuplicateReimbursement, clearDuplicateReimbursementDetail, clearRemiSaveStatus, removeDuplicateReimbursementForLine, onDuplicateLineClick, onExistingMerchantChange, onNewMerchantChange, onReceiptsUpload, saveRemiDetails, submitRemiDetails, discardReimbursementDetailsFromLocalStore, onReimbursementDetailsChanged, updateReimbursementType, onHomeCurrencyConversionUpdate, redirectToReimbursementListScreen, redirectToReimbursementDetailScreen, deleteReimbursement, removeFileFromLine, onAmountChanged, updateInvoiceUploadFetchState, clearTentativeNameForLine, onAddNewRule, onFetchLinkTokenClick, onEstablishConnectionClick, deleteBankAccount, onBackClickFromBankAccountPage, initialOpenThreadRequest, disableInternalOverlay, isAiCfoAccessEnabled, onAskAiCfoClick, onCurrentLineIdForUploadChange, showSkipAutoFill: showSkipAutoFillProp, setShowSkipAutoFill: setShowSkipAutoFillProp, }: EditReimbursementDetailPageProps) => import("react/jsx-runtime").JSX.Element;
export default EditReimbursementDetailPage;
