import { FC, ReactElement } from 'react';
export interface IPaymentMethodProps<PAYMENT_METHODS extends string, FORM_TYPE = unknown, MODAL_INFO = unknown> {
    data: IPaymentMethod<PAYMENT_METHODS, FORM_TYPE, MODAL_INFO>[];
    groupValidation?: string;
    footerContent?: ReactElement | boolean;
    layouts: Record<PAYMENT_METHODS, FC<IPaymentMethod<PAYMENT_METHODS, FORM_TYPE, MODAL_INFO>>>;
    icons?: Record<PAYMENT_METHODS, JSX.Element>;
    onClickFn?: () => void;
}
export interface IPaymentMethod<PAYMENT_METHODS, FORM_TYPE = unknown, MODAL_INFO = unknown> {
    paymentMethod: PAYMENT_METHODS;
    image: string;
    reviewLabel?: string;
    middleContent?: string;
    footerContent?: string;
    selected?: boolean;
    active?: boolean;
    imagePanel?: string;
    label: string;
    content: IPaymentContentPanel<PAYMENT_METHODS, FORM_TYPE>;
    modalInfo?: IModalInfo<MODAL_INFO>;
    options?: {
        name: string;
        periods: {
            active: boolean;
            label: string;
            value: string;
        }[];
    }[];
    handleValidPaymentMethod: (id: PAYMENT_METHODS, isValid?: boolean, data?: unknown) => void;
    onClickFn?: () => void;
}
export interface IPaymentContentPanel<PAYMENT_METHODS, FORM_TYPE = unknown> {
    paymentMethod?: PAYMENT_METHODS;
    title?: string;
    subtitle?: string;
    imagePanel?: string;
    olItems?: {
        title: string;
        items: string[];
    };
    cardItems?: ItemsList[];
    bannerImgs?: ItemsList[];
    form?: FORM_TYPE;
}
export interface IModalInfo<T> {
    title?: string;
    subtitle?: string;
    table?: T;
    finalPrice?: string;
    needHelp?: {
        label?: string;
        subLabel?: string;
    };
}
interface ItemsList {
    id: string | number;
    image: string;
    selected?: false;
}
export interface IPaymentMethodsPanel<PAYMENT_METHODS, FORM_TYPE = unknown, MODAL_INFO = unknown> {
    item?: IPaymentMethod<PAYMENT_METHODS, FORM_TYPE, MODAL_INFO>;
    mainContent?: ReactElement<FC<IPaymentMethod<PAYMENT_METHODS, FORM_TYPE, MODAL_INFO>>>[];
    footerContent?: JSX.Element[] | JSX.Element | boolean;
    icon?: Record<PAYMENT_METHODS & string, JSX.Element>;
}
export interface PaymentMethodsStoreProps<PAYMENT_METHODS> {
    id: PAYMENT_METHODS;
    data: Record<string, unknown>;
}
export {};
