import { ClientAnalytics } from '@zeniai/client-analytics';
import { AllowedValueWithCode, Amount, BillPayConfig, BillStageCodeType, FetchStateAndError, FundingAccount, ID, InternationalSubConfigCodeType, PaymentAccount, PaymentDetailsSectionView, PaymentToOption, PlaidConnectionDetails, PlaidLinkTokenType, RecurringBillConfig, RecurringBillConfigLocalData, RecurringBillInstance, SameDayAchDisablementConfig, Vendor, ZeniAccountsPromoConfig, ZeniDate } from '@zeniai/client-epic-state';
import { WindowSize } from '../../../../../context/windowSizeProvider';
import { FormSectionProps } from '../../../../formElements/common/formSection';
import { PaymentDetailsSectionFormDataKeys } from '../EditableBillDetailPageHelpers';
export declare const uniqueName: (sectionId: string, key: PaymentDetailsSectionFormDataKeys) => `${string}.internationalTransferFeeBearerPaymentMethod` | `${string}.paymentDate` | `${string}.paymentTo` | `${string}.paymentType` | `${string}.recurringPaymentDetails` | `${string}.recurringPaymentType` | `${string}.withdrawFrom` | `${string}.withdrawFromAccountingName`;
export declare const formUniqueName: (formId: ID) => `${string}_form`;
export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
export type RecurringType = "One-time" | "Recurring";
export interface PaymentDetailsSectionProps extends FormSectionProps {
    accountsPromoConfig: ZeniAccountsPromoConfig;
    allPaymentMethods: BillPayConfig[];
    companyName: string;
    doesBillExistOnQBO: boolean;
    isAccountsEnabled: boolean;
    isAdmin: boolean;
    isBillPayCommentingEnabled: boolean;
    isDetectInsufficientFundsEnabled: boolean;
    isDraftBill: boolean;
    isInternationalPaymentShaVsOurEnabled: boolean;
    isInvoiceAttached: boolean;
    isInvoiceDateBeforeBookCloseDateFromSavedDetails: boolean;
    isMagicLinkFeatureEnabled: boolean;
    isNewUser: boolean;
    isOurDisabled: boolean;
    isPayNowEnabled: boolean;
    isRecurringBill: boolean;
    isRecurringBillsFeatureEnabled: boolean;
    isShaDisabled: boolean;
    isVendorNameError: boolean;
    paymentToOptions: PaymentToOption[];
    plaidConnectionDetails: PlaidConnectionDetails;
    recurringBillInstances: RecurringBillInstance[];
    sameDayAchDisablementConfig: SameDayAchDisablementConfig;
    showMarkAsPaidInfo: boolean;
    totalAmount: Amount;
    totalAmountWithFees: Amount;
    withdrawFromList: FundingAccount[];
    analytics?: ClientAnalytics;
    autoFields?: string[];
    billDueDate?: ZeniDate;
    billId?: ID;
    collectFromVendorEmail?: string;
    internationalVerificationStatus?: AllowedValueWithCode;
    isBillMarkedForRetry?: boolean;
    isCollectFromVendor?: boolean;
    isEligibleForRetryOBP?: boolean;
    isSameDayACHEnabled?: boolean;
    lowBalanceAdditionalInfo?: string;
    paymentAccount?: PaymentAccount;
    paymentDetails?: PaymentDetailsSectionView;
    paymentType?: BillPayConfig;
    recurringBillConfig?: RecurringBillConfigLocalData;
    style?: React.CSSProperties;
    vendor?: Vendor;
    vendorContactSaveStatus?: FetchStateAndError;
    vendorId?: ID;
    vendorName?: string;
    onAttachmentClick: (billId: ID, billStageCode: BillStageCodeType) => void;
    onClickAddAccount: () => void;
    onEstablishConnectionClick: (publicToken: ID, linkTokenType?: PlaidLinkTokenType) => void;
    onEstablishConnectionSuccess: () => void;
    onFetchLinkTokenClick: (plaidLinkTokenType: PlaidLinkTokenType, id?: ID) => void;
    onInternationalWireVerifyClick: () => void;
    onUpdatePaymentAccountStatus: (verificationStatusCode: string, paymentAccountId: ID, plaidLinkTokenType: PlaidLinkTokenType) => void;
    addVendorContactEmail?: (email: string, vendorId: ID) => void;
    onMoveMoneyClick?: () => void;
    onSignUpAccountClick?: () => void;
}
export declare const BillPaymentDetailsSection: (props: PaymentDetailsSectionProps) => import("react/jsx-runtime").JSX.Element;
export declare const getWithdrawFromReadOnlyLabel: (withdrawFrom: FundingAccount, windowSize?: WindowSize) => JSX.Element;
export declare const getPlaceholderForPaymentTo: (hasAccounts: boolean, paymentType?: BillPayConfig) => string;
export declare const getPaymentToLabelInfo: (selectedBank?: Partial<PaymentToOption>) => string;
export declare const getActualPaymentMethod: (isInternationalPaymentShaVsOurEnabled: boolean, isLocalCurrencyEnabled: boolean, internationalMethods: BillPayConfig[], internationalTransferFeeBearerPaymentMethodValue?: InternationalSubConfigCodeType, fallBackpaymentMethod?: BillPayConfig, vendorCurrencyCode?: string) => BillPayConfig | undefined;
export declare const getRecurringCycleInfo: (isRecurring: boolean, isPaymentOutsideZeni: boolean, recurringBillInstance: number, totalPaymentCycles: number) => string | import("react/jsx-runtime").JSX.Element;
export declare const getAdditionalRecurringInfo: (windowSize: WindowSize, isRecurring: boolean, isPaymentOutsideZeni: boolean, recurringConfig?: RecurringBillConfigLocalData | RecurringBillConfig) => string | import("react/jsx-runtime").JSX.Element;
