import { default as React, Dispatch, SetStateAction } from 'react';
import { ClientAnalytics } from '@zeniai/client-analytics';
import { AccountBase, Attachment, AuthParams, AutoFields, BankAccount, BillPaymentStatus, BillStageCodeType, BillStatus, BillStatusCodeType, ClassBase, CompanyMileageConfigInfo, CountryWithCurrency, Currency, DuplicateLine, FetchState, FetchStateAndError, ID, Merchant, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, ReceiptsProcessingPayload, ReimbursementLineWithAttachmentAndRecommendation, UncategorizedAccounts, ZeniDate } from '@zeniai/client-epic-state';
import { CustomerSearchAutoComplete, LineInfoFormData } from './ReimbursementSection';
type Dispatcher<T> = Dispatch<SetStateAction<T>>;
export interface Props {
    accountList: AccountBase[];
    accountsHierarchyList: NestedAccountHierarchyForReport[];
    allCurrencies: CountryWithCurrency[];
    authParams: AuthParams;
    autoFieldsByLineId: Record<string, AutoFields>;
    bankAccounts: BankAccount[];
    classHierarchyList: NestedClassHierarchyForReport[];
    classList: ClassBase[];
    currencyConversionState: FetchStateAndError;
    defaultCurrency: Currency;
    duplicateLineByLineId: Record<string, DuplicateLine>;
    fileRequiredLineIds: ID[];
    hasDuplicateLine: boolean;
    index: number;
    isAccountingClassesEnabled: boolean;
    isAddReimbursementDisabled: boolean;
    isAutoFieldsExist: boolean;
    isFirstOrLastListItem: boolean;
    isReimbursementCommentingEnabled: boolean;
    isSignedInUserReimbursementCreator: boolean;
    lineData: LineInfoFormData;
    merchantList: Merchant[];
    reimbursementSectionRef: React.MutableRefObject<HTMLDivElement | null>;
    remiStage: BillStageCodeType;
    remiUploadStatus: FetchState;
    setRefByLineId: Dispatch<SetStateAction<Record<string, HTMLDivElement | null>>>;
    setShowBankAccountPage: Dispatcher<boolean>;
    showSkipAutoFill: boolean;
    showTotalAmountLoader: boolean;
    totalAmount: number;
    totalNumberOfLines: number;
    uncategorizedAccounts: UncategorizedAccounts;
    uploadInvoiceEndPoint: string;
    analytics?: ClientAnalytics;
    approvedDate?: ZeniDate;
    companyMileageConfigInfo?: CompanyMileageConfigInfo;
    createDate?: ZeniDate;
    customerSearchAutoComplete?: CustomerSearchAutoComplete;
    file?: Attachment;
    loggedInUserDepartmentId?: ID;
    paymentDate?: ZeniDate;
    paymentTo?: string;
    progressSectionObj?: BillPaymentStatus | BillStatus;
    recommendationFetchState?: FetchState;
    reimbursementId?: ID;
    remiStatus?: BillStatusCodeType;
    reportTitle?: string;
    scheduleDate?: ZeniDate;
    tentativeMerchantName?: string;
    onAddReimbursement: () => void;
    onDuplicateLineClick: (reimbursementId: ID, lineId: ID) => void;
    onReceiptsUpload: (response: ReceiptsProcessingPayload | undefined, lineId: number, shouldOverwrite: boolean) => void;
    onRemoveReimbursement: (lineIndex: number) => void;
    removeDuplicateReimbursementForLine: (lineId: string) => void;
    scrollToSection: (id: string) => void;
    setCurrentLineIdForUpload: (lineId: number) => void;
    setUploadedReceiptPayload: (payload: ReceiptsProcessingPayload) => void;
    clearTentativeNameForLine?: (lineId: string) => void;
    onDeleteBankAccount?: (bankAccountId: ID) => void;
    onReplaceClick?: () => void;
    removeFileFromLine?: (lineId: number) => void;
    updateInvoiceUploadFetchState?: (fetchState: FetchState) => void;
}
export declare const getAmountForReceiptRequiredCalculation: (lineData: LineInfoFormData | ReimbursementLineWithAttachmentAndRecommendation) => number;
declare const ReimbursementSectionWithInvoice: ({ remiUploadStatus, progressSectionObj, reimbursementId, createDate, scheduleDate, paymentDate, hasDuplicateLine, approvedDate, isFirstOrLastListItem, index, reimbursementSectionRef, showSkipAutoFill, lineData, currencyConversionState, authParams, uploadInvoiceEndPoint, accountList, classList, merchantList, remiStage, autoFieldsByLineId, isReimbursementCommentingEnabled, isAutoFieldsExist, totalAmount, showTotalAmountLoader, totalNumberOfLines, defaultCurrency, bankAccounts, fileRequiredLineIds, isAddReimbursementDisabled, duplicateLineByLineId, remiStatus, file, uncategorizedAccounts, reportTitle, recommendationFetchState, tentativeMerchantName, paymentTo, analytics, companyMileageConfigInfo, customerSearchAutoComplete, loggedInUserDepartmentId, isSignedInUserReimbursementCreator, setShowBankAccountPage, setRefByLineId, setCurrentLineIdForUpload, onDuplicateLineClick, setUploadedReceiptPayload, removeDuplicateReimbursementForLine, onReceiptsUpload, scrollToSection, onRemoveReimbursement, onAddReimbursement, clearTentativeNameForLine, onReplaceClick, onDeleteBankAccount, updateInvoiceUploadFetchState, removeFileFromLine, allCurrencies, accountsHierarchyList, classHierarchyList, isAccountingClassesEnabled, }: Props) => import("react/jsx-runtime").JSX.Element;
export declare const getTooltipInfo: (bankAccounts: BankAccount[], bankAccountId: string) => string;
export declare const getBankLabelForId: (bankAccounts: BankAccount[], selectedBankId: string) => string;
export default ReimbursementSectionWithInvoice;
