import { h } from 'preact';
import UIElement from '../UIElement';
import { PaymentAction } from '../../types';
import { PayPalElementProps } from './types';
import './Paypal.scss';
import { SendAnalyticsObject } from '../../core/Analytics/types';
declare class PaypalElement extends UIElement<PayPalElementProps> {
    static type: string;
    static subtype: string;
    paymentData: string;
    private resolve;
    private reject;
    protected static defaultProps: PayPalElementProps;
    constructor(props: any);
    protected submitAnalytics(analyticsObj: SendAnalyticsObject): void;
    formatProps(props: PayPalElementProps): PayPalElementProps;
    submit: () => void;
    /**
     * Updates the paymentData value. It must be used in the PayPal Express flow, when patching the amount
     * @param paymentData - Payment data value
     */
    updatePaymentData(paymentData: string): void;
    /**
     * Formats the component data output
     */
    protected formatData(): {
        paymentMethod: {
            type: string;
            userAction: "continue" | "pay";
            subtype: string;
        };
    };
    handleAction: (action: PaymentAction) => any;
    updateWithAction: (action: PaymentAction) => any;
    /**
     * Dropin Validation
     *
     * @remarks
     * Paypal does not require any specific Dropin validation
     */
    get isValid(): boolean;
    private handleCancel;
    private handleOnApprove;
    handleResolve(token: string): void;
    handleReject(errorMessage: string): void;
    private handleSubmit;
    /**
     * If the merchant provides the 'onShippingAddressChange' callback, then this method is used as a wrapper to it, in order
     * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the
     * paymentData
     *
     * @param data - PayPal data
     * @param actions - PayPal actions.
     */
    private handleOnShippingAddressChange;
    /**
     * If the merchant provides the 'onShippingOptionsChange' callback, then this method is used as a wrapper to it, in order
     * to expose to the merchant the 'component' instance. The merchant needs the 'component' in order to manipulate the
     * paymentData
     *
     * @param data - PayPal data
     * @param actions - PayPal actions.
     */
    private handleOnShippingOptionsChange;
    render(): h.JSX.Element;
}
export default PaypalElement;
