/// import * as React from "react"; export namespace ReactStripeElements { import BankAccountTokenOptions = stripe.BankAccountTokenOptions; type ElementChangeResponse = stripe.elements.ElementChangeResponse; type ElementsOptions = stripe.elements.ElementsOptions; // From https://stripe.com/docs/stripe-js/reference#element-types type TokenType = "card" | "cardNumber" | "cardExpiry" | "cardCvc" | "paymentRequestButton" | "iban" | "idealBank"; type TokenOptions = stripe.TokenOptions & { type?: TokenType | undefined }; type TokenResponse = stripe.TokenResponse; type SourceResponse = stripe.SourceResponse; type SourceOptions = stripe.SourceOptions; type HTMLStripeElement = stripe.elements.Element; interface StripeProviderOptions { stripeAccount?: string | undefined; } type StripeProviderProps = | { children?: React.ReactNode; apiKey: string; stripe?: never | undefined } & StripeProviderOptions | { children?: React.ReactNode; apiKey?: never | undefined; stripe: stripe.Stripe | null } & StripeProviderOptions; interface StripeOverrideProps { /* * react-stripe-elements let's you use the same createToken function * with either credit card or bank account options * which one to choose depends solely on the inferred elements and can't be expressed in TypeScript */ createToken(options?: TokenOptions | BankAccountTokenOptions): Promise; createSource(sourceData?: SourceOptions): Promise; createPaymentMethod( paymentMethodType: stripe.paymentMethod.paymentMethodType, data?: stripe.CreatePaymentMethodOptions, ): Promise; createPaymentMethod( paymentMethodType: stripe.paymentMethod.paymentMethodType, element: HTMLStripeElement, data?: stripe.CreatePaymentMethodOptions, ): Promise; createPaymentMethod(data: stripe.PaymentMethodData): Promise; handleCardPayment( clientSecret: string, options?: stripe.HandleCardPaymentWithoutElementsOptions, ): Promise; handleCardSetup( clientSecret: string, data?: stripe.HandleCardSetupOptions, ): Promise; } interface StripeProps extends Omit, StripeOverrideProps { } interface InjectOptions { withRef?: boolean | undefined; } interface InjectedStripeProps { stripe: StripeProps | null; elements: stripe.elements.Elements | null; } interface ElementProps extends ElementsOptions { id?: string | undefined; className?: string | undefined; elementRef?(ref: any): void; onChange?(event: ElementChangeResponse): void; onBlur?(event: ElementChangeResponse): void; onFocus?(event: ElementChangeResponse): void; onReady?(el: HTMLStripeElement): void; } interface PaymentRequestButtonElementProps extends ElementProps { onClick?(event: any): void; } } export class StripeProvider extends React.Component {} export class Elements extends React.Component {} export function injectStripe

( WrappedComponent: React.ComponentType

, componentOptions?: ReactStripeElements.InjectOptions, ): React.ComponentType

; export class CardElement extends React.Component {} export class CardNumberElement extends React.Component {} export class CardExpiryElement extends React.Component {} export class CardCvcElement extends React.Component {} // Deprecated but aliased until react-stripe-elements v5 export class CardCVCElement extends CardCvcElement {} export class PostalCodeElement extends React.Component {} export class PaymentRequestButtonElement extends React.Component {} export class IbanElement extends React.Component {} export class IdealBankElement extends React.Component {}