// Type definitions for react-stripe-elements 6.0 // Project: https://github.com/stripe/react-stripe-elements#readme // Definitions by: dan-j // Santiago Doldan // sonnysangha // Andrew Goh Yisheng // Thomas Chia // Piotr Dabrowski // Victor Irzak // Alex Price // Maciej Dabek // Hiroshi Ioka // Austin Turner // Benedikt Bauer // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 3.5 /// 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 }; type TokenResponse = stripe.TokenResponse; type SourceResponse = stripe.SourceResponse; type SourceOptions = stripe.SourceOptions; type HTMLStripeElement = stripe.elements.Element; interface StripeProviderOptions { stripeAccount?: string; } type StripeProviderProps = | { apiKey: string; stripe?: never } & StripeProviderOptions | { apiKey?: never; 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; } interface InjectedStripeProps { stripe: StripeProps | null; elements: stripe.elements.Elements | null; } interface ElementProps extends ElementsOptions { id?: string; className?: string; 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 {}