import { EventEmitter } from '../../stencil-public-runtime';
import { StripeDidLoadedHandler, StripeLoadedEvent, ProgressStatus, IntentType, DefaultFormSubmitResult, InitStripeOptions } from '../../interfaces';
import type { ExpressCheckoutElementOptions } from '../../services/interfaces';
import { StripeExpressCheckoutElementConfirmEvent, StripeExpressCheckoutElementClickEvent } from '@stripe/stripe-js';
/**
* Express Checkout Element Component
* Provides one-click payment methods (Apple Pay, Google Pay, Link, PayPal, etc.)
*
* @example
* ```html
*
* ```
*/
export declare class StripeExpressCheckoutElement {
el: HTMLStripeExpressCheckoutElementElement;
private stripeService;
private expressCheckoutManager;
/**
* Default submit handle type.
* If you want to use `setupIntent`, should update this attribute.
*/
intentType: IntentType;
/**
* Your Stripe publishable API key.
*/
publishableKey: string;
updatePublishableKey(publishableKey: string): void;
/**
* Optional. Making API calls for connected accounts
* @info https://stripe.com/docs/connect/authentication
*/
stripeAccount: string;
updateStripeAccountId(stripeAccount: string): void;
/**
* Overwrite the application name that registered
* For wrapper library (like Capacitor)
*/
applicationName: string;
/**
* The client secret from paymentIntent.create or setupIntent.create response
*
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.setAttribute('client-secret', 'pi_xxx_secret_xxx')
* })
* ```
*/
clientSecret?: string;
/**
* Payment amount in cents (e.g., 1099 for $10.99)
*/
amount?: number;
/**
* Three-letter ISO currency code (e.g., 'usd', 'eur')
*/
currency?: string;
/**
* Button height in pixels (e.g., '48px')
*/
buttonHeight?: string;
/**
* The component will provide a function to call the confirmation API.
* If you want to customize the behavior, should set false.
* And listen the 'confirm' event on the element
*/
shouldUseDefaultConfirmAction: boolean;
/**
* The progress status of the checkout process
*/
progress: ProgressStatus;
/**
* Update the progress status
* @param progress
* @returns
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.updateProgress('success')
* })
* ```
*/
updateProgress(progress: ProgressStatus): Promise;
/**
* Set error message
* @param errorMessage string
* @returns
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.setErrorMessage('Payment failed')
* })
* ```
*/
setErrorMessage(errorMessage: string): Promise;
/**
* Get Stripe.js, and initialize elements
* @param publishableKey
* @param options
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.initStripe('pk_test_XXXXXXXXX')
* })
* ```
*/
initStripe(publishableKey: string, options?: InitStripeOptions): Promise;
/**
* Update element options dynamically
* @param options - Partial options to update
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(async () => {
* await element.initStripe('pk_test_xxx')
* element.updateElementOptions({ amount: 2000 })
* })
* ```
*/
updateElementOptions(options: Partial): Promise;
/**
* Stripe.js class loaded handler
*/
stripeDidLoaded?: StripeDidLoadedHandler;
/**
* Stripe Client loaded event
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.addEventListener('stripeLoaded', async ({ detail: {stripe} }) => {
* console.log('Stripe loaded', stripe)
* });
* })
* ```
*/
stripeLoaded: EventEmitter;
private stripeLoadedEventHandler;
/**
* Express Checkout confirm event
* Fired when user completes the express checkout flow
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.addEventListener('confirm', async ({ detail }) => {
* console.log('Payment confirmed', detail)
* })
* })
* ```
*/
confirm: EventEmitter;
/**
* Express Checkout click event
* Fired when user clicks on an express checkout button
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.addEventListener('expressCheckoutClick', async ({ detail }) => {
* console.log('Button clicked', detail)
* })
* })
* ```
*/
expressCheckoutClick: EventEmitter;
/**
* Express Checkout cancel event
* Fired when user cancels the express checkout flow
*/
cancel: EventEmitter;
/**
* Receive the result of default confirm action
* @example
* ```
* const element = document.createElement('stripe-express-checkout-element');
* customElements
* .whenDefined('stripe-express-checkout-element')
* .then(() => {
* element.addEventListener('defaultConfirmResult', async ({detail}) => {
* if (detail instanceof Error) {
* console.error(detail)
* } else {
* console.log(detail)
* }
* })
* })
* ```
*/
defaultConfirmResult: EventEmitter;
private defaultConfirmResultHandler;
constructor();
componentWillUpdate(): void;
/**
* Default confirm action
* Confirms the payment or setup intent based on intentType
* @param event
*/
private defaultConfirmAction;
/**
* Initialize Component using Express Checkout Element
*/
private initElement;
componentDidLoad(): void;
disconnectedCallback(): void;
render(): any;
}