import { ReactElement } from 'react';
import { default as Color } from 'color';
import { ClientAnalytics, ProductType, ReferrerType } from '@zeniai/client-analytics';
import { AccountBase, CardPaymentSelectorView, ID, PaymentAccount, PlaidConnectionDetails, PlaidLinkTokenType } from '@zeniai/client-epic-state';
import { FormSectionProps } from '../../../formElements/common/formSection';
import { SingleSelectPickerFieldValue } from '../../../formElements/singleSelectPickerField/SingleSelectPickerField';
export interface CardPaymentSectionValuesType {
    header: string;
    icon: {
        color: Color;
        element: JSX.Element;
    };
    isCompleted: boolean;
    isError: boolean;
    isLoading: boolean;
    showAddPaymentMethodDropDown: boolean;
    showCompletedIcon: boolean;
    showRightArrow: boolean;
    status: {
        code: string;
        name: string;
    };
    subHeader: string;
    subtitle: string;
    title: string;
}
/**
 * Component & its Props
 */
export interface Props extends FormSectionProps {
    allBankAccounts: AccountBase[];
    analytics: ClientAnalytics;
    connectedAccountProvider: string;
    icon: {
        color: Color;
        element: ReactElement;
    };
    plaidConnectionDetails: PlaidConnectionDetails;
    productType: ProductType;
    cardPaymentSectionValues?: CardPaymentSectionValuesType;
    cardPaymentView?: CardPaymentSelectorView;
    cardSetupInProgress?: boolean;
    /** When set, replaces the trailing `>` arrow on the not-connected default row with a primary Button labelled with this string. */
    connectButtonLabel?: string;
    defaultSectionSubTitle?: string;
    defaultSectionTitle?: string;
    hasError?: boolean;
    header?: string;
    isCompleted?: boolean;
    isError?: boolean;
    paymentAccount?: PaymentAccount;
    referrer?: ReferrerType;
    sectionTitle?: string;
    showCompletedIcon?: boolean;
    showZeniAccountSection?: boolean;
    style?: React.CSSProperties;
    subHeader?: string;
    onEstablishConnectionClick: (publicToken: ID, linkTokenType?: PlaidLinkTokenType) => void;
    onEstablishConnectionSuccess: () => void;
    onFetchLinkTokenClick: (plaidLinkTokenType: PlaidLinkTokenType, paymentAccountId?: ID) => void;
    onUpdatePaymentAccountLoginStatus: (paymentAccountId: ID, plaidLinkTokenType: PlaidLinkTokenType) => void;
    onUpdatePaymentAccountStatus: (verificationStatusCode: string, paymentAccountId: ID, plaidLinkTokenType: PlaidLinkTokenType) => void;
    resetCardPaymentViewState?: () => void;
    updateCardPaymentModalState?: (isCardPaymentPopupOpen: boolean) => void;
}
export declare function SetUpAccountSection({ paymentAccount, allBankAccounts, cardPaymentView, plaidConnectionDetails, sectionId, isDisabled, icon, isError, hasError, header, subHeader, defaultSectionTitle, defaultSectionSubTitle, sectionTitle, style, analytics, productType, referrer, connectedAccountProvider, isCompleted, showCompletedIcon, showZeniAccountSection, cardPaymentSectionValues, connectButtonLabel, onFetchLinkTokenClick, onEstablishConnectionClick, onUpdatePaymentAccountStatus, onEstablishConnectionSuccess, resetCardPaymentViewState, updateCardPaymentModalState, cardSetupInProgress, }: Readonly<Props>): import("react/jsx-runtime").JSX.Element;
export type GetPaymentAccountIconOptions = {
    flatIconNoBackground?: boolean;
};
export declare const getPaymentAccountIcon: (icon: {
    color: Color;
    element: ReactElement;
}, paymentAccount?: PaymentAccount, withoutContainer?: boolean, options?: GetPaymentAccountIconOptions) => import("react/jsx-runtime").JSX.Element;
/**
 * Form Data Type
 */
export interface SetUpAccountSectionFormData {
    account: SingleSelectPickerFieldValue;
}
type FormDataKeys = keyof SetUpAccountSectionFormData;
declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.account`;
export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
export {};
