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; }