import type { StripeElementLocale, StripeError } from '@stripe/stripe-js';
import type { FieldErrors } from 'react-hook-form';
import type { FormInputsType, NextAction, PaymentMethodWithSubmitProps } from './@types';
import type { PaymentMethodsTypes } from './constants';
type BillingDetailsDefaultPropTypes = {
    billingAddress1?: string;
    billingAddress2?: string;
    billingState?: string;
    billingCity?: string;
    billingZip?: string;
    billingCountry?: string;
    billingEmail?: string;
    billingFirstName?: string;
    billingLastName?: string;
    billingName?: string;
    billingBirthday?: string;
    billingDocumentNumber?: string;
    billingDocumentType?: string;
    billingTaxId?: string;
    billingCompany?: string;
    billingPhone?: string;
    billingFax?: string;
};
type CommonPaymentElementOnErrorArg = Error | string | FieldErrors<FormInputsType>;
export type CommonPaymentElementPropTypes = {
    lang: StripeElementLocale | string;
    onChange?: (event: Partial<Event> & {
        name?: string;
        value?: PaymentMethodsTypes;
    }) => void;
    onLoadStart?: () => void;
    onLoadEnd?: () => void;
    onError?: (error: CommonPaymentElementOnErrorArg | StripeError) => void;
    onSubmit: (event: Event) => Promise<NextAction>;
    onCancel?: () => void;
    isHostFormValid?: boolean;
    currentErrorOnly?: boolean;
    guest: {
        [key: string]: any;
        firstName: string;
        lastName: string;
        email: string;
        isSameAddressAsMain?: string;
        phone?: string;
        gender?: 'M' | 'F' | 'N/A';
        country?: string;
        state?: string;
        zipCode?: string;
        city?: string;
        address1?: string;
        address2?: string;
        estimatedArrivalTime?: number;
        taxIdNumber?: string;
        companyName?: string;
        companyTaxIdNumber?: string;
        isOptIn?: boolean;
        billingDetails?: BillingDetailsDefaultPropTypes;
    };
    slot?: object;
};
export type PaymentFormWithStripeProps = Omit<PaymentMethodWithSubmitProps<CommonPaymentElementPropTypes>, 'onError'> & {
    onError?: (args: CommonPaymentElementOnErrorArg | StripeError) => void;
};
export type CommonPaymentElementProps = PaymentMethodWithSubmitProps<CommonPaymentElementPropTypes>;
export {};
