import { ClientAnalytics } from '@zeniai/client-analytics';
import { BillStageCodeType, EditBillDetailSelectorView, EntityAutoCompleteView, ID, PaymentToOption, PlaidLinkTokenType, SameDayAchDisablementConfig, TenantView, TransactionWithAccountAndClassLine, UncategorizedAccounts, ZeniAccountsPromoConfig } from '@zeniai/client-epic-state';
import { RequestToOpenThreadType } from '../../../commentsAndNotes/utils/ThreadsProvider';
import { AutoCompleteActions, AutoCompleteData } from '../../../common/autoComplete/autoCompleteProps';
import { LineItemsSectionFormData, PaymentDetailsSectionFormData, VendorDetailsFormData, WhatForSectionFormData, whosItForSectionId } from './EditableBillDetailPageHelpers';
export type PageType = "new_bill" | "edit_bill" | "view_bill";
declare const whatForSection = "whatFor";
declare const lineItems = "lineItems";
declare const paymentDetails = "paymentDetails";
export interface EditableBillDetailPageProps {
    accountsPromoConfig: ZeniAccountsPromoConfig;
    analytics: ClientAnalytics;
    billDetails: EditBillDetailSelectorView;
    currentTenant: TenantView;
    customerSearchAutoCompleteActions: AutoCompleteActions;
    customerSearchAutoCompleteData: AutoCompleteData;
    isAccountingClassesEnabled: boolean;
    isAccountsEnabled: boolean;
    isAdmin: boolean;
    isBillPayCommentingEnabled: boolean;
    isDetectInsufficientFundsEnabled: boolean;
    isInternationalPaymentShaVsOurEnabled: boolean;
    isLocalCurrencyEnabled: boolean;
    isMagicLinkEnabled: boolean;
    isOurDisabled: boolean;
    isRecurringBillsFeatureEnabled: boolean;
    isShaDisabled: boolean;
    isVendorRecommendationEnabled: boolean;
    sameDayAchDisablementConfig: SameDayAchDisablementConfig;
    showMarkAsPaidInfo: boolean;
    uncategorizedAccounts: UncategorizedAccounts;
    billId?: ID;
    initialOpenThreadRequest?: RequestToOpenThreadType;
    isAiCfoAccessEnabled?: boolean;
    isNewUser?: boolean;
    chooseNewVendor: (vendorToBeCreated?: string) => void;
    clearBillPayReviewLocalState: () => void;
    discardBillDetailsFromLocalStore: ({ billId }: {
        billId?: ID;
    }) => void;
    editVendor: (vendorId: ID) => void;
    onAttachmentClick: (billId: ID, billStageCode: BillStageCodeType) => void;
    onEstablishConnectionClick: (publicToken: ID, linkTokenType?: PlaidLinkTokenType) => void;
    onEstablishConnectionSuccess: () => void;
    onFetchLinkTokenClick: (plaidLinkTokenType: PlaidLinkTokenType, id?: ID) => void;
    onInternationalWireVerifyClick: () => void;
    onSaveChangesToLocalStore: (updatedBill: FormData, lineIndex: number, entityAutoCompleteData: EntityAutoCompleteView, sendPaymentToAccount?: PaymentToOption, paymentDate?: Date, billId?: ID) => void;
    onUpdatePaymentAccountStatus: (verificationStatusCode: string, paymentAccountId: ID, plaidLinkTokenType: PlaidLinkTokenType) => void;
    onVendorSelected: (id?: ID) => void;
    redirectToACHScreen: (vendorId: ID) => void;
    redirectToBillDetailPage: () => void;
    redirectToBillsScreen: () => void;
    redirectToInternationalScreen: (vendorId: ID) => void;
    redirectToWireScreen: (vendorId: ID) => void;
    reviewBillDetails: () => void;
    saveBillDetails: () => void;
    updateBillDetailSaveBillCode: () => void;
    updateShowAutofill: (autoFill: boolean) => void;
    addVendorContactEmail?: (email: string, vendorId: ID) => void;
    deleteBill?: () => void;
    onAskAiCfoClick?: () => void;
    onBackClick?: () => void;
    onMoveMoneyClick?: () => void;
    onSignUpAccountClick?: () => void;
    onSkipAutofill?: (autoFill: boolean) => void;
}
declare const EditableBillDetailPage: (props: EditableBillDetailPageProps) => import("react/jsx-runtime").JSX.Element;
export default EditableBillDetailPage;
export declare const uniqueName: (sectionId: ID) => `${string}_form`;
export declare const getRecipientTotalAmount: (billDetailsLines: Record<ID, Partial<TransactionWithAccountAndClassLine>>) => {
    amount: number;
    currencyCode: string;
    currencySymbol: string;
};
export interface FormData {
    [lineItems]: LineItemsSectionFormData[];
    [whatForSection]: WhatForSectionFormData;
    [whosItForSectionId]: VendorDetailsFormData;
    [paymentDetails]?: PaymentDetailsSectionFormData;
}
