import * as i0 from '@angular/core';
import { TemplateRef, NgZone, OnInit, OnChanges, EventEmitter, SimpleChanges, OnDestroy, ElementRef, ChangeDetectorRef, ModuleWithProviders, EnvironmentProviders, InjectionToken } from '@angular/core';
import * as _stripe_stripe_js from '@stripe/stripe-js';
import { Stripe, StripeElementsOptionsClientSecret, StripeElements, StripeElementsOptionsMode, StripeElementsOptions, ConfirmPaymentData, PaymentIntentResult, StripeError, ConfirmAcssDebitPaymentData, ConfirmAcssDebitPaymentOptions, ConfirmUsBankAccountPaymentData, ConfirmAlipayPaymentData, ConfirmAlipayPaymentOptions, ConfirmAuBecsDebitPaymentData, ConfirmBancontactPaymentData, ConfirmBancontactPaymentOptions, ConfirmBilliePaymentData, ConfirmBilliePaymentOptions, ConfirmBlikPaymentData, ConfirmBlikPaymentOptions, ConfirmBoletoPaymentData, ConfirmBoletoPaymentOptions, ConfirmCardPaymentData, ConfirmCardPaymentOptions, ConfirmCashappPaymentData, ConfirmCashappPaymentOptions, ConfirmCustomerBalancePaymentData, ConfirmCustomerBalancePaymentOptions, ConfirmEpsPaymentData, ConfirmEpsPaymentOptions, ConfirmFpxPaymentData, ConfirmFpxPaymentOptions, ConfirmGiropayPaymentData, ConfirmGiropayPaymentOptions, ConfirmGrabPayPaymentData, ConfirmGrabPayPaymentOptions, ConfirmIdealPaymentData, ConfirmIdealPaymentOptions, ConfirmKlarnaPaymentData, ConfirmKlarnaPaymentOptions, ConfirmKonbiniPaymentData, ConfirmKonbiniPaymentOptions, ConfirmMobilepayPaymentData, ConfirmMobilepayPaymentOptions, ConfirmMultibancoPaymentData, ConfirmMultibancoPaymentOptions, ConfirmOxxoPaymentData, ConfirmOxxoPaymentOptions, ConfirmP24PaymentData, ConfirmP24PaymentOptions, ConfirmPayNowPaymentData, ConfirmPayNowPaymentOptions, ConfirmPayPalPaymentData, ConfirmPixPaymentData, ConfirmPixPaymentOptions, ConfirmPromptPayPaymentData, ConfirmPromptPayPaymentOptions, ConfirmSepaDebitPaymentData, ConfirmSofortPaymentData, ConfirmSofortPaymentOptions, ConfirmTwintPaymentData, ConfirmTwintPaymentOptions, ConfirmWechatPayPaymentData, ConfirmWechatPayPaymentOptions, PaymentIntentOrSetupIntentResult, VerifyMicrodepositsForPaymentData, RadarSessionPayload, CollectBankAccountForPaymentOptions, CreatePaymentMethodData, PaymentMethodResult, CreatePaymentMethodFromElements, CreatePaymentMethodFromElement, CreateConfirmationToken, ConfirmationTokenResult, ConfirmSetupData, SetupIntentResult, ConfirmAcssDebitSetupData, ConfirmAcssDebitSetupOptions, ConfirmUsBankAccountSetupData, ConfirmAuBecsDebitSetupData, ConfirmBacsDebitSetupData, ConfirmBancontactSetupData, ConfirmCardSetupData, ConfirmCardSetupOptions, ConfirmCashappSetupData, ConfirmCashappSetupOptions, ConfirmIdealSetupData, ConfirmPayPalSetupData, ConfirmSepaDebitSetupData, ConfirmSofortSetupData, ConfirmSofortSetupOptions, ConfirmAffirmPaymentData, ConfirmAffirmPaymentOptions, ConfirmAfterpayClearpayPaymentData, ConfirmAfterpayClearpayPaymentOptions, VerifyMicrodepositsForSetupData, CollectBankAccountForSetupOptions, ProcessOrderParams, ProcessOrderResult, RetrieveOrderResult, PaymentRequestOptions, PaymentRequest, StripeIbanElement, CreateTokenIbanData, TokenResult, StripeCardElement, StripeCardNumberElement, CreateTokenCardData, CreateTokenPiiData, CreateTokenBankAccountData, StripeCardCvcElement, TokenCreateParams, StripeElement, CreateSourceData, SourceResult, RetrieveSourceParam, VerificationSessionResult, CollectFinancialConnectionsAccountsOptions, FinancialConnectionsSessionResult, CollectBankAccountTokenOptions, CollectBankAccountTokenResult, EphemeralKeyNonceOptions, EphemeralKeyNonceResult, StripeCheckoutOptions, StripeCheckout, StripeEmbeddedCheckoutOptions, StripeEmbeddedCheckout, PaymentIntent, SetupIntent, StripeConstructorOptions, StripeCardElementOptions, StripeCardNumberElementOptions, StripeCardExpiryElementOptions, StripeIbanElementOptions, StripeAuBankAccountElementOptions, StripeAddressElementOptions, StripeLinkAuthenticationElementOptions, StripeIssuingCardNumberDisplayElementOptions, StripeIssuingCardCvcDisplayElementOptions, StripeIssuingCardExpiryDisplayElementOptions, StripeIssuingCardPinDisplayElementOptions, StripePaymentMethodMessagingElementOptions, StripePaymentRequestButtonElementOptions, StripePaymentElementOptions, StripeExpressCheckoutElementOptions, StripeElementsUpdateOptions, StripeAddressElement, StripePaymentMethodMessagingElement, StripeAuBankAccountElement, StripeCardExpiryElement, StripeLinkAuthenticationElement, StripeExpressCheckoutElement, StripePaymentElement, StripePaymentRequestButtonElement, StripeShippingAddressElement, StripeAddressElementChangeEvent, StripeCardElementChangeEvent, StripeCardElementUpdateOptions, StripeCardNumberElementChangeEvent, StripeCardExpiryElementChangeEvent, StripeCardCvcElementChangeEvent, StripeCardCvcElementOptions, StripeExpressCheckoutElementClickEvent, StripeExpressCheckoutElementConfirmEvent, StripeExpressCheckoutElementReadyEvent, StripeExpressCheckoutElementShippingAddressChangeEvent, StripeExpressCheckoutElementShippingRateChangeEvent, StripeExpressCheckoutElementUpdateOptions, StripeIbanElementChangeEvent, StripeIssuingCardCvcDisplayElement, StripeIssuingCardExpiryDisplayElement, StripeIssuingCardNumberDisplayElement, StripeIssuingCardPinDisplayElement, StripeLinkAuthenticationElementChangeEvent, StripeAuBankAccountElementChangeEvent, Appearance, StripePaymentElementChangeEvent, StripePaymentRequestButtonElementClickEvent, PaymentRequestTokenEvent, PaymentRequestPaymentMethodEvent, PaymentRequestSourceEvent, PaymentRequestShippingAddressEvent, PaymentRequestShippingOptionEvent, CanMakePaymentResult, PaymentRequestUpdateOptions } from '@stripe/stripe-js';
import * as i1 from '@angular/common';
import * as rxjs from 'rxjs';
import { Observable, BehaviorSubject, Subscription } from 'rxjs';

declare class NgxStripeElementLoadingTemplateDirective {
    templateRef: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    constructor(templateRef: TemplateRef<NgxStripeElementLoadingTemplateDirective>);
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxStripeElementLoadingTemplateDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NgxStripeElementLoadingTemplateDirective, "[ngxStripeLoadingTemplate]", never, {}, {}, never, never, true, never>;
}

interface StripeServiceInterface {
    getInstance(): Stripe | undefined;
    elements(options?: StripeElementsOptionsClientSecret): Observable<StripeElements>;
    elements(options?: StripeElementsOptionsMode): Observable<StripeElements>;
    elements(options?: StripeElementsOptions): Observable<StripeElements>;
    confirmPayment(options: {
        elements: StripeElements;
        confirmParams?: Partial<ConfirmPaymentData>;
        redirect: 'if_required';
    }): Observable<PaymentIntentResult>;
    confirmPayment(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams?: Partial<ConfirmPaymentData>;
        redirect: 'if_required';
    }): Observable<PaymentIntentResult>;
    confirmPayment(options: {
        elements: StripeElements;
        confirmParams: ConfirmPaymentData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmPayment(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams: ConfirmPaymentData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmAcssDebitPayment(clientSecret: string, data?: ConfirmAcssDebitPaymentData, options?: ConfirmAcssDebitPaymentOptions): Observable<PaymentIntentResult>;
    confirmUsBankAccountPayment(clientSecret: string, data?: ConfirmUsBankAccountPaymentData): Observable<PaymentIntentResult>;
    confirmAlipayPayment(clientSecret: string, data?: ConfirmAlipayPaymentData, options?: ConfirmAlipayPaymentOptions): Observable<PaymentIntentResult>;
    confirmAuBecsDebitPayment(clientSecret: string, data?: ConfirmAuBecsDebitPaymentData): Observable<PaymentIntentResult>;
    confirmBancontactPayment(clientSecret: string, data?: ConfirmBancontactPaymentData, options?: ConfirmBancontactPaymentOptions): Observable<PaymentIntentResult>;
    confirmBilliePayment(clientSecret: string, data?: ConfirmBilliePaymentData, options?: ConfirmBilliePaymentOptions): Observable<PaymentIntentResult>;
    confirmBlikPayment(clientSecret: string, data: ConfirmBlikPaymentData, options?: ConfirmBlikPaymentOptions): Observable<PaymentIntentResult>;
    confirmBoletoPayment(clientSecret: string, data?: ConfirmBoletoPaymentData, options?: ConfirmBoletoPaymentOptions): Observable<PaymentIntentResult>;
    confirmCardPayment(clientSecret: string, data?: ConfirmCardPaymentData, options?: ConfirmCardPaymentOptions): Observable<PaymentIntentResult>;
    confirmCashappPayment(clientSecret: string, data?: ConfirmCashappPaymentData, options?: ConfirmCashappPaymentOptions): Observable<PaymentIntentResult>;
    confirmCustomerBalancePayment(clientSecret: string, data?: ConfirmCustomerBalancePaymentData, options?: ConfirmCustomerBalancePaymentOptions): Observable<PaymentIntentResult>;
    confirmEpsPayment(clientSecret: string, data?: ConfirmEpsPaymentData, options?: ConfirmEpsPaymentOptions): Observable<PaymentIntentResult>;
    confirmFpxPayment(clientSecret: string, data?: ConfirmFpxPaymentData, options?: ConfirmFpxPaymentOptions): Observable<PaymentIntentResult>;
    confirmGiropayPayment(clientSecret: string, data?: ConfirmGiropayPaymentData, options?: ConfirmGiropayPaymentOptions): Observable<PaymentIntentResult>;
    confirmGrabPayPayment(clientSecret: string, data?: ConfirmGrabPayPaymentData, options?: ConfirmGrabPayPaymentOptions): Observable<PaymentIntentResult>;
    confirmIdealPayment(clientSecret: string, data?: ConfirmIdealPaymentData, options?: ConfirmIdealPaymentOptions): Observable<PaymentIntentResult>;
    confirmKlarnaPayment(clientSecret: string, data?: ConfirmKlarnaPaymentData, options?: ConfirmKlarnaPaymentOptions): Observable<PaymentIntentResult>;
    confirmKonbiniPayment(clientSecret: string, data?: ConfirmKonbiniPaymentData, options?: ConfirmKonbiniPaymentOptions): Observable<PaymentIntentResult>;
    confirmMobilepayPayment(clientSecret: string, data?: ConfirmMobilepayPaymentData, options?: ConfirmMobilepayPaymentOptions): Observable<PaymentIntentResult>;
    confirmMultibancoPayment(clientSecret: string, data?: ConfirmMultibancoPaymentData, options?: ConfirmMultibancoPaymentOptions): Observable<PaymentIntentResult>;
    confirmOxxoPayment(clientSecret: string, data?: ConfirmOxxoPaymentData, options?: ConfirmOxxoPaymentOptions): Observable<PaymentIntentResult>;
    confirmP24Payment(clientSecret: string, data?: ConfirmP24PaymentData, options?: ConfirmP24PaymentOptions): Observable<PaymentIntentResult>;
    confirmPayNowPayment(clientSecret: string, data?: ConfirmPayNowPaymentData, options?: ConfirmPayNowPaymentOptions): Observable<PaymentIntentResult>;
    confirmPayPalPayment(clientSecret: string, data?: ConfirmPayPalPaymentData): Observable<PaymentIntentResult>;
    confirmPixPayment(clientSecret: string, data?: ConfirmPixPaymentData, options?: ConfirmPixPaymentOptions): Observable<PaymentIntentResult>;
    confirmPromptPayPayment(clientSecret: string, data?: ConfirmPromptPayPaymentData, options?: ConfirmPromptPayPaymentOptions): Observable<PaymentIntentResult>;
    confirmSepaDebitPayment(clientSecret: string, data?: ConfirmSepaDebitPaymentData): Observable<PaymentIntentResult>;
    confirmSofortPayment(clientSecret: string, data?: ConfirmSofortPaymentData, options?: ConfirmSofortPaymentOptions): Observable<PaymentIntentResult>;
    confirmTwintPayment(clientSecret: string, data?: ConfirmTwintPaymentData, options?: ConfirmTwintPaymentOptions): Observable<PaymentIntentResult>;
    confirmWechatPayPayment(clientSecret: string, data?: ConfirmWechatPayPaymentData, options?: ConfirmWechatPayPaymentOptions): Observable<PaymentIntentResult>;
    handleCardAction(clientSecret: string): Observable<PaymentIntentResult>;
    handleNextAction(options: {
        clientSecret: string;
    }): Observable<PaymentIntentOrSetupIntentResult>;
    verifyMicrodepositsForPayment(clientSecret: string, data?: VerifyMicrodepositsForPaymentData): Observable<PaymentIntentResult>;
    createRadarSession(): Observable<RadarSessionPayload>;
    collectBankAccountForPayment(options: CollectBankAccountForPaymentOptions): Observable<PaymentIntentResult>;
    createPaymentMethod(paymentMethodData: CreatePaymentMethodData): Observable<PaymentMethodResult>;
    createPaymentMethod(options: CreatePaymentMethodFromElements): Observable<PaymentMethodResult>;
    createPaymentMethod(options: CreatePaymentMethodFromElement): Observable<PaymentMethodResult>;
    createConfirmationToken(options: CreateConfirmationToken): Observable<ConfirmationTokenResult>;
    retrievePaymentIntent(clientSecret: string): Observable<PaymentIntentResult>;
    confirmSetup(options: {
        elements: StripeElements;
        confirmParams?: Partial<ConfirmSetupData>;
        redirect: 'if_required';
    }): Observable<SetupIntentResult>;
    confirmSetup(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams?: Partial<ConfirmSetupData>;
        redirect: 'if_required';
    }): Observable<SetupIntentResult>;
    confirmSetup(options: {
        elements: StripeElements;
        confirmParams: ConfirmSetupData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmSetup(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams: ConfirmSetupData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmAcssDebitSetup(clientSecret: string, data?: ConfirmAcssDebitSetupData, options?: ConfirmAcssDebitSetupOptions): Observable<SetupIntentResult>;
    confirmUsBankAccountSetup(clientSecret: string, data?: ConfirmUsBankAccountSetupData): Observable<SetupIntentResult>;
    confirmAuBecsDebitSetup(clientSecret: string, data?: ConfirmAuBecsDebitSetupData): Observable<SetupIntentResult>;
    confirmBacsDebitSetup(clientSecret: string, data?: ConfirmBacsDebitSetupData): Observable<SetupIntentResult>;
    confirmBancontactSetup(clientSecret: string, data?: ConfirmBancontactSetupData): Observable<SetupIntentResult>;
    confirmCardSetup(clientSecret: string, data?: ConfirmCardSetupData, options?: ConfirmCardSetupOptions): Observable<SetupIntentResult>;
    confirmCashappSetup(clientSecret: string, data?: ConfirmCashappSetupData, options?: ConfirmCashappSetupOptions): Observable<SetupIntentResult>;
    confirmIdealSetup(clientSecret: string, data?: ConfirmIdealSetupData): Observable<SetupIntentResult>;
    confirmPayPalSetup(clientSecret: string, data?: ConfirmPayPalSetupData): Observable<SetupIntentResult>;
    confirmSepaDebitSetup(clientSecret: string, data?: ConfirmSepaDebitSetupData): Observable<SetupIntentResult>;
    confirmSofortSetup(clientSecret: string, data?: ConfirmSofortSetupData, options?: ConfirmSofortSetupOptions): Observable<SetupIntentResult>;
    confirmAffirmPayment(clientSecret: string, data?: ConfirmAffirmPaymentData, options?: ConfirmAffirmPaymentOptions): Observable<PaymentIntentResult>;
    confirmAfterpayClearpayPayment(clientSecret: string, data?: ConfirmAfterpayClearpayPaymentData, options?: ConfirmAfterpayClearpayPaymentOptions): Observable<PaymentIntentResult>;
    verifyMicrodepositsForSetup(clientSecret: string, data?: VerifyMicrodepositsForSetupData): Observable<SetupIntentResult>;
    collectBankAccountForSetup(options: CollectBankAccountForSetupOptions): Observable<SetupIntentResult>;
    retrieveSetupIntent(clientSecret: string): Observable<SetupIntentResult>;
    processOrder(options: {
        elements: StripeElements;
        confirmParams?: Partial<ProcessOrderParams>;
        redirect: 'if_required';
    }): Observable<ProcessOrderResult>;
    processOrder(options: {
        elements: StripeElements;
        confirmParams: ProcessOrderParams;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    retrieveOrder(clientSecret: string): Observable<RetrieveOrderResult>;
    paymentRequest(options: PaymentRequestOptions): PaymentRequest;
    createToken(tokenType: StripeIbanElement, data: CreateTokenIbanData): Observable<TokenResult>;
    createToken(tokenType: StripeCardElement | StripeCardNumberElement, data?: CreateTokenCardData): Observable<TokenResult>;
    createToken(tokenType: 'pii', data: CreateTokenPiiData): Observable<TokenResult>;
    createToken(tokenType: 'bank_account', data: CreateTokenBankAccountData): Observable<TokenResult>;
    createToken(tokenType: 'cvc_update', element?: StripeCardCvcElement): Observable<TokenResult>;
    createToken(tokenType: 'account', data: TokenCreateParams.Account): Observable<TokenResult>;
    createToken(tokenType: 'person', data: TokenCreateParams.Person): Observable<TokenResult>;
    createSource(element: StripeElement, sourceData: CreateSourceData): Observable<SourceResult>;
    createSource(sourceData: CreateSourceData): Observable<SourceResult>;
    retrieveSource(source: RetrieveSourceParam): Observable<SourceResult>;
    verifyIdentity(clientSecret: string): Observable<VerificationSessionResult>;
    collectFinancialConnectionsAccounts(options: CollectFinancialConnectionsAccountsOptions): Observable<FinancialConnectionsSessionResult>;
    collectBankAccountToken(options: CollectBankAccountTokenOptions): Observable<CollectBankAccountTokenResult>;
    createEphemeralKeyNonce(options: EphemeralKeyNonceOptions): Observable<EphemeralKeyNonceResult>;
    initCheckout(options: StripeCheckoutOptions): Observable<StripeCheckout>;
    initEmbeddedCheckout(options: StripeEmbeddedCheckoutOptions): Observable<StripeEmbeddedCheckout>;
    /**
     * @deprecated
     */
    handleCardPayment(clientSecret: string, element?: any, data?: any): Observable<{
        paymentIntent?: PaymentIntent;
        error?: StripeError;
    }>;
    /**
     * @deprecated
     */
    confirmPaymentIntent(clientSecret: string, element?: any, data?: any): Observable<{
        paymentIntent?: PaymentIntent;
        error?: StripeError;
    }>;
    /**
     * @deprecated
     */
    handleCardSetup(clientSecret: string, element?: any, data?: any): Observable<{
        setupIntent?: SetupIntent;
        error?: StripeError;
    }>;
    /**
     * @deprecated
     */
    confirmSetupIntent(clientSecret: string, element?: any, data?: any): Observable<{
        setupIntent?: SetupIntent;
        error?: StripeError;
    }>;
    /**
     * @deprecated
     */
    handleFpxPayment(clientSecret: string, element?: any, data?: any): Observable<{
        setupIntent?: SetupIntent;
        error?: StripeError;
    }>;
}

declare class WindowRef {
    platformId: any;
    constructor(platformId: any);
    getNativeWindow(): Window;
    static ɵfac: i0.ɵɵFactoryDeclaration<WindowRef, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<WindowRef>;
}

declare class DocumentRef {
    platformId: any;
    constructor(platformId: any);
    getNativeDocument(): Document;
    static ɵfac: i0.ɵɵFactoryDeclaration<DocumentRef, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DocumentRef>;
}

interface LazyStripeAPILoaderStatus {
    loaded: boolean;
    loading: boolean;
    error: boolean;
}
declare class LazyStripeAPILoader {
    platformId: any;
    window: WindowRef;
    document: DocumentRef;
    private zone;
    status: BehaviorSubject<LazyStripeAPILoaderStatus>;
    constructor(platformId: any, window: WindowRef, document: DocumentRef, zone: NgZone);
    asStream(): Observable<LazyStripeAPILoaderStatus>;
    isReady(): boolean;
    load(): void;
    private injectScript;
    static ɵfac: i0.ɵɵFactoryDeclaration<LazyStripeAPILoader, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<LazyStripeAPILoader>;
}

declare class StripeInstance implements StripeServiceInterface {
    private version;
    private loader;
    private window;
    private key;
    private options?;
    private stripe$;
    stripe: Observable<Stripe>;
    constructor(version: string, loader: LazyStripeAPILoader, window: WindowRef, key: string, options?: StripeConstructorOptions);
    getInstance(): Stripe;
    elements(options?: StripeElementsOptionsClientSecret): Observable<StripeElements>;
    elements(options?: StripeElementsOptionsMode): Observable<StripeElements>;
    elements(options?: StripeElementsOptions): Observable<StripeElements>;
    confirmPayment(options: {
        elements: StripeElements;
        confirmParams?: Partial<ConfirmPaymentData>;
        redirect: 'if_required';
    }): Observable<PaymentIntentResult>;
    confirmPayment(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams?: Partial<ConfirmPaymentData>;
        redirect: 'if_required';
    }): Observable<PaymentIntentResult>;
    confirmPayment(options: {
        elements: StripeElements;
        confirmParams: ConfirmPaymentData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmPayment(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams: ConfirmPaymentData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmAcssDebitPayment(clientSecret: string, data?: ConfirmAcssDebitPaymentData, options?: ConfirmAcssDebitPaymentOptions): Observable<PaymentIntentResult>;
    confirmUsBankAccountPayment(clientSecret: string, data?: ConfirmUsBankAccountPaymentData): Observable<PaymentIntentResult>;
    confirmAlipayPayment(clientSecret: string, data?: ConfirmAlipayPaymentData, options?: ConfirmAlipayPaymentOptions): Observable<PaymentIntentResult>;
    confirmAuBecsDebitPayment(clientSecret: string, data?: ConfirmAuBecsDebitPaymentData): Observable<PaymentIntentResult>;
    confirmBancontactPayment(clientSecret: string, data?: ConfirmBancontactPaymentData, options?: ConfirmBancontactPaymentOptions): Observable<PaymentIntentResult>;
    confirmBilliePayment(clientSecret: string, data?: ConfirmBilliePaymentData, options?: ConfirmBilliePaymentOptions): Observable<PaymentIntentResult>;
    confirmBlikPayment(clientSecret: string, data?: ConfirmBlikPaymentData, options?: ConfirmBlikPaymentOptions): Observable<PaymentIntentResult>;
    confirmBoletoPayment(clientSecret: string, data?: ConfirmBoletoPaymentData, options?: ConfirmBoletoPaymentOptions): Observable<PaymentIntentResult>;
    confirmCardPayment(clientSecret: string, data?: ConfirmCardPaymentData, options?: ConfirmCardPaymentOptions): Observable<PaymentIntentResult>;
    confirmCashappPayment(clientSecret: string, data?: ConfirmCashappPaymentData, options?: ConfirmCashappPaymentOptions): Observable<PaymentIntentResult>;
    confirmCustomerBalancePayment(clientSecret: string, data: ConfirmCustomerBalancePaymentData, options: ConfirmCustomerBalancePaymentOptions): Observable<PaymentIntentResult>;
    confirmEpsPayment(clientSecret: string, data?: ConfirmEpsPaymentData, options?: ConfirmEpsPaymentOptions): Observable<PaymentIntentResult>;
    confirmFpxPayment(clientSecret: string, data?: ConfirmFpxPaymentData, options?: ConfirmFpxPaymentOptions): Observable<PaymentIntentResult>;
    confirmGiropayPayment(clientSecret: string, data?: ConfirmGiropayPaymentData, options?: ConfirmGiropayPaymentOptions): Observable<PaymentIntentResult>;
    confirmGrabPayPayment(clientSecret: string, data?: ConfirmGrabPayPaymentData, options?: ConfirmGrabPayPaymentOptions): Observable<PaymentIntentResult>;
    confirmIdealPayment(clientSecret: string, data?: ConfirmIdealPaymentData, options?: ConfirmIdealPaymentOptions): Observable<PaymentIntentResult>;
    confirmKlarnaPayment(clientSecret: string, data?: ConfirmKlarnaPaymentData, options?: ConfirmKlarnaPaymentOptions): Observable<PaymentIntentResult>;
    confirmKonbiniPayment(clientSecret: string, data?: ConfirmKonbiniPaymentData, options?: ConfirmKonbiniPaymentOptions): Observable<PaymentIntentResult>;
    confirmMobilepayPayment(clientSecret: string, data?: ConfirmMobilepayPaymentData, options?: ConfirmMobilepayPaymentOptions): Observable<PaymentIntentResult>;
    confirmMultibancoPayment(clientSecret: string, data?: ConfirmMultibancoPaymentData, options?: ConfirmMultibancoPaymentOptions): Observable<PaymentIntentResult>;
    confirmOxxoPayment(clientSecret: string, data?: ConfirmOxxoPaymentData, options?: ConfirmOxxoPaymentOptions): Observable<PaymentIntentResult>;
    confirmP24Payment(clientSecret: string, data?: ConfirmP24PaymentData, options?: ConfirmP24PaymentOptions): Observable<PaymentIntentResult>;
    confirmPayNowPayment(clientSecret: string, data?: ConfirmPayNowPaymentData, options?: ConfirmPayNowPaymentOptions): Observable<PaymentIntentResult>;
    confirmPayPalPayment(clientSecret: string, data?: ConfirmPayPalPaymentData): Observable<PaymentIntentResult>;
    confirmPixPayment(clientSecret: string, data?: ConfirmPixPaymentData, options?: ConfirmPixPaymentOptions): Observable<PaymentIntentResult>;
    confirmPromptPayPayment(clientSecret: string, data?: ConfirmPromptPayPaymentData, options?: ConfirmPromptPayPaymentOptions): Observable<PaymentIntentResult>;
    confirmSepaDebitPayment(clientSecret: string, data?: ConfirmSepaDebitPaymentData): Observable<PaymentIntentResult>;
    confirmSofortPayment(clientSecret: string, data?: ConfirmSofortPaymentData, options?: ConfirmSofortPaymentOptions): Observable<PaymentIntentResult>;
    confirmTwintPayment(clientSecret: string, data?: ConfirmTwintPaymentData, options?: ConfirmTwintPaymentOptions): Observable<PaymentIntentResult>;
    confirmWechatPayPayment(clientSecret: string, data?: ConfirmWechatPayPaymentData, options?: ConfirmWechatPayPaymentOptions): Observable<PaymentIntentResult>;
    handleCardAction(clientSecret: string): Observable<PaymentIntentResult>;
    handleNextAction(options: {
        clientSecret: string;
    }): Observable<PaymentIntentOrSetupIntentResult>;
    verifyMicrodepositsForPayment(clientSecret: string, data?: VerifyMicrodepositsForPaymentData): Observable<PaymentIntentResult>;
    createRadarSession(): Observable<RadarSessionPayload>;
    collectBankAccountForPayment(options: CollectBankAccountForPaymentOptions): Observable<PaymentIntentResult>;
    createPaymentMethod(paymentMethodData: CreatePaymentMethodData): Observable<PaymentMethodResult>;
    createPaymentMethod(options: CreatePaymentMethodFromElements): Observable<PaymentMethodResult>;
    createPaymentMethod(options: CreatePaymentMethodFromElement): Observable<PaymentMethodResult>;
    createConfirmationToken(options: CreateConfirmationToken): Observable<ConfirmationTokenResult>;
    retrievePaymentIntent(clientSecret: string): Observable<PaymentIntentResult>;
    confirmSetup(options: {
        elements: StripeElements;
        confirmParams?: Partial<ConfirmSetupData>;
        redirect: 'if_required';
    }): Observable<SetupIntentResult>;
    confirmSetup(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams?: Partial<ConfirmSetupData>;
        redirect: 'if_required';
    }): Observable<SetupIntentResult>;
    confirmSetup(options: {
        elements: StripeElements;
        confirmParams: ConfirmSetupData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmSetup(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams: ConfirmSetupData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmAcssDebitSetup(clientSecret: string, data?: ConfirmAcssDebitSetupData, options?: ConfirmAcssDebitSetupOptions): Observable<SetupIntentResult>;
    confirmUsBankAccountSetup(clientSecret: string, data?: ConfirmUsBankAccountSetupData): Observable<SetupIntentResult>;
    confirmAuBecsDebitSetup(clientSecret: string, data?: ConfirmAuBecsDebitSetupData): Observable<SetupIntentResult>;
    confirmBacsDebitSetup(clientSecret: string, data?: ConfirmBacsDebitSetupData): Observable<SetupIntentResult>;
    confirmBancontactSetup(clientSecret: string, data?: ConfirmBancontactSetupData): Observable<SetupIntentResult>;
    confirmCardSetup(clientSecret: string, data?: ConfirmCardSetupData, options?: ConfirmCardSetupOptions): Observable<SetupIntentResult>;
    confirmCashappSetup(clientSecret: string, data?: ConfirmCashappSetupData, options?: ConfirmCashappSetupOptions): Observable<SetupIntentResult>;
    confirmIdealSetup(clientSecret: string, data?: ConfirmIdealSetupData): Observable<SetupIntentResult>;
    confirmPayPalSetup(clientSecret: string, data?: ConfirmPayPalSetupData): Observable<SetupIntentResult>;
    confirmSepaDebitSetup(clientSecret: string, data?: ConfirmSepaDebitSetupData): Observable<SetupIntentResult>;
    confirmSofortSetup(clientSecret: string, data?: ConfirmSofortSetupData, options?: ConfirmSofortSetupOptions): Observable<SetupIntentResult>;
    confirmAffirmPayment(clientSecret: string, data?: ConfirmAffirmPaymentData, options?: ConfirmAffirmPaymentOptions): Observable<PaymentIntentResult>;
    confirmAfterpayClearpayPayment(clientSecret: string, data?: ConfirmAfterpayClearpayPaymentData, options?: ConfirmAfterpayClearpayPaymentOptions): Observable<PaymentIntentResult>;
    verifyMicrodepositsForSetup(clientSecret: string, data?: VerifyMicrodepositsForSetupData): Observable<SetupIntentResult>;
    collectBankAccountForSetup(options: CollectBankAccountForSetupOptions): Observable<SetupIntentResult>;
    retrieveSetupIntent(clientSecret: string): Observable<SetupIntentResult>;
    processOrder(options: {
        elements: StripeElements;
        confirmParams?: Partial<ProcessOrderParams>;
        redirect: 'if_required';
    }): Observable<ProcessOrderResult>;
    processOrder(options: {
        elements: StripeElements;
        confirmParams: ProcessOrderParams;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    retrieveOrder(clientSecret: string): Observable<RetrieveOrderResult>;
    paymentRequest(options: PaymentRequestOptions): PaymentRequest;
    createToken(tokenType: StripeIbanElement, data: CreateTokenIbanData): Observable<TokenResult>;
    createToken(tokenType: StripeCardElement | StripeCardNumberElement, data?: CreateTokenCardData): Observable<TokenResult>;
    createToken(tokenType: 'pii', data: CreateTokenPiiData): Observable<TokenResult>;
    createToken(tokenType: 'bank_account', data: CreateTokenBankAccountData): Observable<TokenResult>;
    createToken(tokenType: 'cvc_update', element?: StripeCardCvcElement): Observable<TokenResult>;
    createToken(tokenType: 'account', data: TokenCreateParams.Account): Observable<TokenResult>;
    createToken(tokenType: 'person', data: TokenCreateParams.Person): Observable<TokenResult>;
    createSource(element: StripeElement, sourceData: CreateSourceData): Observable<SourceResult>;
    createSource(sourceData: CreateSourceData): Observable<SourceResult>;
    retrieveSource(source: RetrieveSourceParam): Observable<SourceResult>;
    verifyIdentity(clientSecret: string): Observable<VerificationSessionResult>;
    collectFinancialConnectionsAccounts(options: CollectFinancialConnectionsAccountsOptions): Observable<FinancialConnectionsSessionResult>;
    collectBankAccountToken(options: CollectBankAccountTokenOptions): Observable<CollectBankAccountTokenResult>;
    createEphemeralKeyNonce(options: EphemeralKeyNonceOptions): Observable<EphemeralKeyNonceResult>;
    initCheckout(options: StripeCheckoutOptions): Observable<StripeCheckout>;
    initEmbeddedCheckout(options: StripeEmbeddedCheckoutOptions): Observable<StripeEmbeddedCheckout>;
    /**
     * @deprecated
     */
    handleCardPayment(clientSecret: string, element?: any, data?: any): Observable<PaymentIntentResult>;
    /**
     * @deprecated
     */
    confirmPaymentIntent(clientSecret: string, element?: any, data?: any): Observable<PaymentIntentResult>;
    /**
     * @deprecated
     */
    handleCardSetup(clientSecret: string, element?: any, data?: any): Observable<SetupIntentResult>;
    /**
     * @deprecated
     */
    confirmSetupIntent(clientSecret: string, element?: any, data?: any): Observable<SetupIntentResult>;
    /**
     * @deprecated
     */
    handleFpxPayment(clientSecret: string, element?: any, data?: any): Observable<SetupIntentResult>;
    private getNgxStripeAppInfo;
}

declare class StripeService implements StripeServiceInterface {
    version: string;
    key: string;
    options: StripeConstructorOptions;
    loader: LazyStripeAPILoader;
    window: WindowRef;
    stripe: StripeInstance;
    constructor(version: string, key: string, options: StripeConstructorOptions, loader: LazyStripeAPILoader, window: WindowRef);
    getStripeReference(): Observable<any>;
    getInstance(): Stripe | undefined;
    setKey(key: string, options?: StripeConstructorOptions): StripeInstance;
    changeKey(key: string, options?: StripeConstructorOptions): StripeInstance;
    elements(options?: StripeElementsOptionsClientSecret): Observable<StripeElements>;
    elements(options?: StripeElementsOptionsMode): Observable<StripeElements>;
    elements(options?: StripeElementsOptions): Observable<StripeElements>;
    confirmPayment(options: {
        elements: StripeElements;
        confirmParams?: Partial<ConfirmPaymentData>;
        redirect: 'if_required';
    }): Observable<PaymentIntentResult>;
    confirmPayment(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams?: Partial<ConfirmPaymentData>;
        redirect: 'if_required';
    }): Observable<PaymentIntentResult>;
    confirmPayment(options: {
        elements: StripeElements;
        confirmParams: ConfirmPaymentData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmPayment(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams: ConfirmPaymentData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmAcssDebitPayment(clientSecret: string, data?: ConfirmAcssDebitPaymentData, options?: ConfirmAcssDebitPaymentOptions): Observable<PaymentIntentResult>;
    confirmUsBankAccountPayment(clientSecret: string, data?: ConfirmUsBankAccountPaymentData): Observable<PaymentIntentResult>;
    confirmAlipayPayment(clientSecret: string, data?: ConfirmAlipayPaymentData, options?: ConfirmAlipayPaymentOptions): Observable<PaymentIntentResult>;
    confirmAuBecsDebitPayment(clientSecret: string, data?: ConfirmAuBecsDebitPaymentData): Observable<PaymentIntentResult>;
    confirmBancontactPayment(clientSecret: string, data?: ConfirmBancontactPaymentData, options?: ConfirmBancontactPaymentOptions): Observable<PaymentIntentResult>;
    confirmBilliePayment(clientSecret: string, data?: ConfirmBilliePaymentData, options?: ConfirmBilliePaymentOptions): Observable<PaymentIntentResult>;
    confirmBlikPayment(clientSecret: string, data?: ConfirmBlikPaymentData, options?: ConfirmBlikPaymentOptions): Observable<PaymentIntentResult>;
    confirmBoletoPayment(clientSecret: string, data?: ConfirmBoletoPaymentData, options?: ConfirmBoletoPaymentOptions): Observable<PaymentIntentResult>;
    confirmCardPayment(clientSecret: string, data?: ConfirmCardPaymentData, options?: ConfirmCardPaymentOptions): Observable<PaymentIntentResult>;
    confirmCashappPayment(clientSecret: string, data?: ConfirmCashappPaymentData, options?: ConfirmCashappPaymentOptions): Observable<PaymentIntentResult>;
    confirmCustomerBalancePayment(clientSecret: string, data: ConfirmCustomerBalancePaymentData, options: ConfirmCustomerBalancePaymentOptions): Observable<PaymentIntentResult>;
    confirmEpsPayment(clientSecret: string, data?: ConfirmEpsPaymentData, options?: ConfirmEpsPaymentOptions): Observable<PaymentIntentResult>;
    confirmFpxPayment(clientSecret: string, data?: ConfirmFpxPaymentData, options?: ConfirmFpxPaymentOptions): Observable<PaymentIntentResult>;
    confirmGiropayPayment(clientSecret: string, data?: ConfirmGiropayPaymentData, options?: ConfirmGiropayPaymentOptions): Observable<PaymentIntentResult>;
    confirmGrabPayPayment(clientSecret: string, data?: ConfirmGrabPayPaymentData, options?: ConfirmGrabPayPaymentOptions): Observable<PaymentIntentResult>;
    confirmIdealPayment(clientSecret: string, data?: ConfirmIdealPaymentData, options?: ConfirmIdealPaymentOptions): Observable<PaymentIntentResult>;
    confirmKlarnaPayment(clientSecret: string, data?: ConfirmKlarnaPaymentData, options?: ConfirmKlarnaPaymentOptions): Observable<PaymentIntentResult>;
    confirmKonbiniPayment(clientSecret: string, data?: ConfirmKonbiniPaymentData, options?: ConfirmKonbiniPaymentOptions): Observable<PaymentIntentResult>;
    confirmMobilepayPayment(clientSecret: string, data?: ConfirmMobilepayPaymentData, options?: ConfirmMobilepayPaymentOptions): Observable<PaymentIntentResult>;
    confirmMultibancoPayment(clientSecret: string, data?: ConfirmMultibancoPaymentData, options?: ConfirmMultibancoPaymentOptions): Observable<PaymentIntentResult>;
    confirmOxxoPayment(clientSecret: string, data?: ConfirmOxxoPaymentData, options?: ConfirmOxxoPaymentOptions): Observable<PaymentIntentResult>;
    confirmP24Payment(clientSecret: string, data?: ConfirmP24PaymentData, options?: ConfirmP24PaymentOptions): Observable<PaymentIntentResult>;
    confirmPayNowPayment(clientSecret: string, data?: ConfirmPayNowPaymentData, options?: ConfirmPayNowPaymentOptions): Observable<PaymentIntentResult>;
    confirmPayPalPayment(clientSecret: string, data?: ConfirmPayPalPaymentData): Observable<PaymentIntentResult>;
    confirmPixPayment(clientSecret: string, data?: ConfirmPixPaymentData, options?: ConfirmPixPaymentOptions): Observable<PaymentIntentResult>;
    confirmPromptPayPayment(clientSecret: string, data?: ConfirmPromptPayPaymentData, options?: ConfirmPromptPayPaymentOptions): Observable<PaymentIntentResult>;
    confirmSepaDebitPayment(clientSecret: string, data?: ConfirmSepaDebitPaymentData): Observable<PaymentIntentResult>;
    confirmSofortPayment(clientSecret: string, data?: ConfirmSofortPaymentData, options?: ConfirmSofortPaymentOptions): Observable<PaymentIntentResult>;
    confirmTwintPayment(clientSecret: string, data?: ConfirmTwintPaymentData, options?: ConfirmTwintPaymentOptions): Observable<PaymentIntentResult>;
    confirmWechatPayPayment(clientSecret: string, data?: ConfirmWechatPayPaymentData, options?: ConfirmWechatPayPaymentOptions): Observable<PaymentIntentResult>;
    handleCardAction(clientSecret: string): Observable<PaymentIntentResult>;
    handleNextAction(options: {
        clientSecret: string;
    }): Observable<PaymentIntentOrSetupIntentResult>;
    verifyMicrodepositsForPayment(clientSecret: string, data?: VerifyMicrodepositsForPaymentData): Observable<PaymentIntentResult>;
    createRadarSession(): Observable<RadarSessionPayload>;
    collectBankAccountForPayment(options: CollectBankAccountForPaymentOptions): Observable<PaymentIntentResult>;
    createPaymentMethod(paymentMethodData: CreatePaymentMethodData): Observable<PaymentMethodResult>;
    createPaymentMethod(options: CreatePaymentMethodFromElements): Observable<PaymentMethodResult>;
    createPaymentMethod(options: CreatePaymentMethodFromElement): Observable<PaymentMethodResult>;
    createConfirmationToken(options: CreateConfirmationToken): Observable<ConfirmationTokenResult>;
    retrievePaymentIntent(clientSecret: string): Observable<PaymentIntentResult>;
    confirmSetup(options: {
        elements: StripeElements;
        confirmParams?: Partial<ConfirmSetupData>;
        redirect: 'if_required';
    }): Observable<SetupIntentResult>;
    confirmSetup(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams?: Partial<ConfirmSetupData>;
        redirect: 'if_required';
    }): Observable<SetupIntentResult>;
    confirmSetup(options: {
        elements: StripeElements;
        confirmParams: ConfirmSetupData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmSetup(options: {
        elements?: StripeElements;
        clientSecret: string;
        confirmParams: ConfirmSetupData;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    confirmAcssDebitSetup(clientSecret: string, data?: ConfirmAcssDebitSetupData, options?: ConfirmAcssDebitSetupOptions): Observable<SetupIntentResult>;
    confirmUsBankAccountSetup(clientSecret: string, data?: ConfirmUsBankAccountSetupData): Observable<SetupIntentResult>;
    confirmAuBecsDebitSetup(clientSecret: string, data?: ConfirmAuBecsDebitSetupData): Observable<SetupIntentResult>;
    confirmBacsDebitSetup(clientSecret: string, data?: ConfirmBacsDebitSetupData): Observable<SetupIntentResult>;
    confirmBancontactSetup(clientSecret: string, data?: ConfirmBancontactSetupData): Observable<SetupIntentResult>;
    confirmCardSetup(clientSecret: string, data?: ConfirmCardSetupData, options?: ConfirmCardSetupOptions): Observable<SetupIntentResult>;
    confirmCashappSetup(clientSecret: string, data?: ConfirmCashappSetupData, options?: ConfirmCashappSetupOptions): Observable<SetupIntentResult>;
    confirmIdealSetup(clientSecret: string, data?: ConfirmIdealSetupData): Observable<SetupIntentResult>;
    confirmPayPalSetup(clientSecret: string, data?: ConfirmPayPalSetupData): Observable<SetupIntentResult>;
    confirmSepaDebitSetup(clientSecret: string, data?: ConfirmSepaDebitSetupData): Observable<SetupIntentResult>;
    confirmSofortSetup(clientSecret: string, data?: ConfirmSofortSetupData, options?: ConfirmSofortSetupOptions): Observable<SetupIntentResult>;
    confirmAffirmPayment(clientSecret: string, data?: ConfirmAffirmPaymentData, options?: ConfirmAffirmPaymentOptions): Observable<PaymentIntentResult>;
    confirmAfterpayClearpayPayment(clientSecret: string, data?: ConfirmAfterpayClearpayPaymentData, options?: ConfirmAfterpayClearpayPaymentOptions): Observable<PaymentIntentResult>;
    verifyMicrodepositsForSetup(clientSecret: string, data?: VerifyMicrodepositsForSetupData): Observable<SetupIntentResult>;
    collectBankAccountForSetup(options: CollectBankAccountForSetupOptions): Observable<SetupIntentResult>;
    retrieveSetupIntent(clientSecret: string): Observable<SetupIntentResult>;
    processOrder(options: {
        elements: StripeElements;
        confirmParams?: Partial<ProcessOrderParams>;
        redirect: 'if_required';
    }): Observable<ProcessOrderResult>;
    processOrder(options: {
        elements: StripeElements;
        confirmParams: ProcessOrderParams;
        redirect?: 'always';
    }): Observable<never | {
        error: StripeError;
    }>;
    retrieveOrder(clientSecret: string): Observable<RetrieveOrderResult>;
    paymentRequest(options: PaymentRequestOptions): PaymentRequest;
    createToken(tokenType: StripeIbanElement, data: CreateTokenIbanData): Observable<TokenResult>;
    createToken(tokenType: StripeCardElement | StripeCardNumberElement, data?: CreateTokenCardData): Observable<TokenResult>;
    createToken(tokenType: 'pii', data: CreateTokenPiiData): Observable<TokenResult>;
    createToken(tokenType: 'bank_account', data: CreateTokenBankAccountData): Observable<TokenResult>;
    createToken(tokenType: 'cvc_update', element?: StripeCardCvcElement): Observable<TokenResult>;
    createToken(tokenType: 'account', data: TokenCreateParams.Account): Observable<TokenResult>;
    createToken(tokenType: 'person', data: TokenCreateParams.Person): Observable<TokenResult>;
    createSource(element: StripeElement, sourceData: CreateSourceData): Observable<SourceResult>;
    createSource(sourceData: CreateSourceData): Observable<SourceResult>;
    retrieveSource(source: RetrieveSourceParam): Observable<SourceResult>;
    verifyIdentity(clientSecret: string): Observable<VerificationSessionResult>;
    collectFinancialConnectionsAccounts(options: CollectFinancialConnectionsAccountsOptions): Observable<FinancialConnectionsSessionResult>;
    collectBankAccountToken(options: CollectBankAccountTokenOptions): Observable<CollectBankAccountTokenResult>;
    createEphemeralKeyNonce(options: EphemeralKeyNonceOptions): Observable<EphemeralKeyNonceResult>;
    initCheckout(options: StripeCheckoutOptions): Observable<StripeCheckout>;
    initEmbeddedCheckout(options: StripeEmbeddedCheckoutOptions): Observable<StripeEmbeddedCheckout>;
    /**
     * @deprecated
     */
    handleCardPayment(clientSecret: string, element?: any, data?: any): Observable<PaymentIntentResult>;
    /**
     * @deprecated
     */
    confirmPaymentIntent(clientSecret: string, element?: any, data?: any): Observable<PaymentIntentResult>;
    /**
     * @deprecated
     */
    handleCardSetup(clientSecret: string, element?: any, data?: any): Observable<SetupIntentResult>;
    /**
     * @deprecated
     */
    confirmSetupIntent(clientSecret: string, element?: any, data?: any): Observable<SetupIntentResult>;
    /**
     * @deprecated
     */
    handleFpxPayment(clientSecret: string, element?: any, data?: any): Observable<SetupIntentResult>;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StripeService>;
}

declare class StripeElementsService {
    private stripeService;
    constructor(stripeService: StripeService);
    elements(stripe: any, options?: StripeElementsOptionsClientSecret): Observable<StripeElements>;
    elements(stripe: any, options?: StripeElementsOptionsMode): Observable<StripeElements>;
    elements(stripe: any, options?: StripeElementsOptions): Observable<StripeElements>;
    paymentRequest(stripe: any, options: PaymentRequestOptions): PaymentRequest;
    mergeOptions(options: StripeCardElementOptions, containerClass: string): StripeCardElementOptions;
    mergeOptions(options: StripeCardNumberElementOptions, containerClass: string): StripeCardNumberElementOptions;
    mergeOptions(options: StripeCardExpiryElementOptions, containerClass: string): StripeCardExpiryElementOptions;
    mergeOptions(options: StripeIbanElementOptions, containerClass: string): StripeIbanElementOptions;
    mergeOptions(options: StripeAuBankAccountElementOptions, containerClass: string): StripeAuBankAccountElementOptions;
    mergeOptions(options: StripeAddressElementOptions, containerClass: string): StripeAddressElementOptions;
    mergeOptions(options: StripeLinkAuthenticationElementOptions, containerClass: string): StripeLinkAuthenticationElementOptions;
    mergeOptions(options: StripeIssuingCardNumberDisplayElementOptions, containerClass: string): StripeIssuingCardNumberDisplayElementOptions;
    mergeOptions(options: StripeIssuingCardCvcDisplayElementOptions, containerClass: string): StripeIssuingCardCvcDisplayElementOptions;
    mergeOptions(options: StripeIssuingCardExpiryDisplayElementOptions, containerClass: string): StripeIssuingCardExpiryDisplayElementOptions;
    mergeOptions(options: StripeIssuingCardPinDisplayElementOptions, containerClass: string): StripeIssuingCardPinDisplayElementOptions;
    mergeOptions(options: StripePaymentMethodMessagingElementOptions, containerClass: string): StripePaymentMethodMessagingElementOptions;
    mergeOptions(options: StripePaymentRequestButtonElementOptions, containerClass: string): StripePaymentRequestButtonElementOptions;
    mergeOptions(options: StripePaymentElementOptions, containerClass: string): StripePaymentElementOptions;
    mergeOptions(options: StripeExpressCheckoutElementOptions, containerClass: string): StripeExpressCheckoutElementOptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeElementsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StripeElementsService>;
}

declare class StripeElementsDirective implements OnInit, OnChanges {
    stripeElementsService: StripeElementsService;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    elements: EventEmitter<StripeElements>;
    _elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    constructor(stripeElementsService: StripeElementsService);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    fetchUpdates(): rxjs.Observable<{
        error?: {
            message: string;
            status?: string;
        };
    }>;
    update(options: StripeElementsUpdateOptions): void;
    submit(): rxjs.Observable<{
        error?: _stripe_stripe_js.StripeError;
        selectedPaymentMethod?: undefined;
    } | {
        selectedPaymentMethod: string;
        error?: undefined;
    }>;
    getElement(elementType: 'address'): StripeAddressElement | null;
    getElement(elementType: 'paymentMethodMessaging'): StripePaymentMethodMessagingElement | null;
    getElement(elementType: 'auBankAccount'): StripeAuBankAccountElement | null;
    getElement(elementType: 'card'): StripeCardElement | null;
    getElement(elementType: 'cardNumber'): StripeCardNumberElement | null;
    getElement(elementType: 'cardExpiry'): StripeCardExpiryElement | null;
    getElement(elementType: 'cardCvc'): StripeCardCvcElement | null;
    getElement(elementType: 'iban'): StripeIbanElement | null;
    getElement(elementType: 'linkAuthentication'): StripeLinkAuthenticationElement | null;
    getElement(elementType: 'expressCheckout'): StripeExpressCheckoutElement | null;
    getElement(elementType: 'payment'): StripePaymentElement | null;
    getElement(elementType: 'paymentRequestButton'): StripePaymentRequestButtonElement | null;
    getElement(elementType: 'shippingAddress'): StripeShippingAddressElement | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeElementsDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<StripeElementsDirective, "ngx-stripe-elements,[ngxStripeElements]", never, { "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "elements": "elements"; }, never, never, true, never>;
}

declare class StripeAddressComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeAddressElement;
    containerClass: string;
    options: StripeAddressElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeAddressElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeAddressElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    loaderror: EventEmitter<void>;
    loaderstart: EventEmitter<void>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeAddressElementOptions>): StripeAddressElement;
    getValue(): Promise<Pick<StripeAddressElementChangeEvent, 'complete' | 'isNewAddress' | 'value'>>;
    /**
     * @deprecated
     */
    getAddressElement(): StripeAddressElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeAddressComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeAddressComponent, "ngx-stripe-address", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; "loaderror": "loaderror"; "loaderstart": "loaderstart"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeCardComponent implements OnInit, OnChanges, OnDestroy {
    private cdr;
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeCardElement;
    containerClass: string;
    options: Partial<StripeCardElementOptions>;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeCardElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeCardElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(cdr: ChangeDetectorRef, stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: StripeCardElementUpdateOptions): void;
    /**
     * @deprecated
     */
    getCard(): StripeCardElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeCardComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeCardComponent, "ngx-stripe-card", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, ["loadingTemplate"], never, true, never>;
}

type NgxStripeCardGroupChangeEvent = StripeCardNumberElementChangeEvent | StripeCardExpiryElementChangeEvent | StripeCardCvcElementChangeEvent;
type NgxStripeCardGroupElements = StripeCardNumberElement | StripeCardExpiryElement | StripeCardCvcElement;
declare class StripeCardGroupDirective implements OnInit, OnChanges {
    stripeElementsService: StripeElementsService;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    elements: EventEmitter<StripeElements>;
    load: EventEmitter<NgxStripeCardGroupElements>;
    blur: EventEmitter<void>;
    change: EventEmitter<NgxStripeCardGroupChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    _elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    constructor(stripeElementsService: StripeElementsService);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeCardGroupDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<StripeCardGroupDirective, "ngx-stripe-card-group,[ngxStripeCardGroup]", never, { "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "elements": "elements"; "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, never, never, true, never>;
}

declare class StripeCardNumberComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    cardGroup: StripeCardGroupDirective;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeCardNumberElement;
    containerClass: string;
    options: Partial<StripeCardNumberElementOptions>;
    load: EventEmitter<StripeCardNumberElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeCardNumberElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    elements: StripeElements;
    elementsSubscription: Subscription;
    constructor(stripeElementsService: StripeElementsService, cardGroup: StripeCardGroupDirective, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): void;
    ngOnDestroy(): void;
    update(options: Partial<StripeCardNumberElementOptions>): void;
    /**
     * @deprecated
     */
    getCardNumber(): StripeCardNumberElement;
    private setupElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeCardNumberComponent, [null, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeCardNumberComponent, "ngx-stripe-card-number", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeCardExpiryComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    cardGroup: StripeCardGroupDirective;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeCardExpiryElement;
    containerClass: string;
    options: Partial<StripeCardExpiryElementOptions>;
    load: EventEmitter<StripeCardExpiryElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeCardExpiryElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    elements: StripeElements;
    elementsSubscription: Subscription;
    constructor(stripeElementsService: StripeElementsService, cardGroup: StripeCardGroupDirective, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): void;
    ngOnDestroy(): void;
    update(options: Partial<StripeCardExpiryElementOptions>): void;
    /**
     * @deprecated
     */
    getCardExpiry(): StripeCardExpiryElement;
    private setupElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeCardExpiryComponent, [null, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeCardExpiryComponent, "ngx-stripe-card-expiry", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeCardCvcComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    cardGroup: StripeCardGroupDirective;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeCardCvcElement;
    containerClass: string;
    options: Partial<StripeCardCvcElementOptions>;
    load: EventEmitter<StripeCardCvcElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeCardCvcElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    elements: StripeElements;
    elementsSubscription: Subscription;
    constructor(stripeElementsService: StripeElementsService, cardGroup: StripeCardGroupDirective, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): void;
    ngOnDestroy(): void;
    update(options: Partial<StripeCardCvcElementOptions>): void;
    /**
     * @deprecated
     */
    getCardCvc(): StripeCardCvcElement;
    private setupElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeCardCvcComponent, [null, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeCardCvcComponent, "ngx-stripe-card-cvc", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, ["loadingTemplate"], never, true, never>;
}

type NgxStripeExpressCheckoutElementLoadErrorEvent = {
    elementType: 'expressCheckout';
    error: StripeError;
};
declare class StripeExpressCheckoutComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeExpressCheckoutElement;
    containerClass: string;
    options: StripeExpressCheckoutElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeExpressCheckoutElement>;
    blur: EventEmitter<void>;
    cancel: EventEmitter<void>;
    clicked: EventEmitter<StripeExpressCheckoutElementClickEvent>;
    confirm: EventEmitter<StripeExpressCheckoutElementConfirmEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<StripeExpressCheckoutElementReadyEvent>;
    escape: EventEmitter<void>;
    loaderror: EventEmitter<NgxStripeExpressCheckoutElementLoadErrorEvent>;
    shippingaddresschange: EventEmitter<StripeExpressCheckoutElementShippingAddressChangeEvent>;
    shippingratechange: EventEmitter<StripeExpressCheckoutElementShippingRateChangeEvent>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: StripeExpressCheckoutElementUpdateOptions): StripeExpressCheckoutElement;
    /**
     * @deprecated
     */
    getLinkAuthenticationElement(): StripeExpressCheckoutElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeExpressCheckoutComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeExpressCheckoutComponent, "ngx-stripe-express-checkout", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "blur": "blur"; "cancel": "cancel"; "clicked": "clicked"; "confirm": "confirm"; "focus": "focus"; "ready": "ready"; "escape": "escape"; "loaderror": "loaderror"; "shippingaddresschange": "shippingaddresschange"; "shippingratechange": "shippingratechange"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeIbanComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeIbanElement;
    containerClass: string;
    options: Partial<StripeIbanElementOptions>;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeIbanElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeIbanElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeIbanElementOptions>): void;
    /**
     * @deprecated
     */
    getIban(): StripeIbanElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeIbanComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeIbanComponent, "ngx-stripe-iban", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeIssuingCardCvcDisplayComponent implements OnInit, OnChanges, OnDestroy {
    private cdr;
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeIssuingCardCvcDisplayElement;
    containerClass: string;
    options: StripeIssuingCardCvcDisplayElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeIssuingCardCvcDisplayElement>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(cdr: ChangeDetectorRef, stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeIssuingCardCvcDisplayElementOptions>): void;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeIssuingCardCvcDisplayComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeIssuingCardCvcDisplayComponent, "ngx-stripe-issuing-card-cvc-display", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeIssuingCardExpiryDisplayComponent implements OnInit, OnChanges, OnDestroy {
    private cdr;
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeIssuingCardExpiryDisplayElement;
    containerClass: string;
    options: StripeIssuingCardExpiryDisplayElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeIssuingCardExpiryDisplayElement>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(cdr: ChangeDetectorRef, stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeIssuingCardExpiryDisplayElementOptions>): void;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeIssuingCardExpiryDisplayComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeIssuingCardExpiryDisplayComponent, "ngx-stripe-issuing-card-expiry-display", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeIssuingCardNumberDisplayComponent implements OnInit, OnChanges, OnDestroy {
    private cdr;
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeIssuingCardNumberDisplayElement;
    containerClass: string;
    options: StripeIssuingCardNumberDisplayElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeIssuingCardNumberDisplayElement>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(cdr: ChangeDetectorRef, stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeIssuingCardNumberDisplayElementOptions>): void;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeIssuingCardNumberDisplayComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeIssuingCardNumberDisplayComponent, "ngx-stripe-issuing-card-number-display", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeIssuingCardPinDisplayComponent implements OnInit, OnChanges, OnDestroy {
    private cdr;
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeIssuingCardPinDisplayElement;
    containerClass: string;
    options: StripeIssuingCardPinDisplayElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeIssuingCardPinDisplayElement>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(cdr: ChangeDetectorRef, stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeIssuingCardPinDisplayElementOptions>): void;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeIssuingCardPinDisplayComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeIssuingCardPinDisplayComponent, "ngx-stripe-issuing-card-pin-display", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeLinkAuthenticationComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeLinkAuthenticationElement;
    containerClass: string;
    options: StripeLinkAuthenticationElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeLinkAuthenticationElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeLinkAuthenticationElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    loaderror: EventEmitter<void>;
    loaderstart: EventEmitter<void>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    /**
     * @deprecated
     */
    getLinkAuthenticationElement(): StripeLinkAuthenticationElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeLinkAuthenticationComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeLinkAuthenticationComponent, "ngx-stripe-link-authentication", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; "loaderror": "loaderror"; "loaderstart": "loaderstart"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripeAuBankAccountComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripeAuBankAccountElement;
    containerClass: string;
    options: Partial<StripeAuBankAccountElementOptions>;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripeAuBankAccountElement>;
    blur: EventEmitter<void>;
    change: EventEmitter<StripeAuBankAccountElementChangeEvent>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    escape: EventEmitter<void>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripeAuBankAccountElementOptions>): void;
    /**
     * @deprecated
     */
    getAuBankAccount(): StripeAuBankAccountElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeAuBankAccountComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripeAuBankAccountComponent, "ngx-stripe-au-bank-account", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripePaymentElementComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    stripeElementRef: ElementRef;
    element: StripePaymentElement;
    elements: StripeElements;
    containerClass: string;
    options: Partial<StripePaymentElementOptions>;
    elementsOptions: Partial<StripeElementsOptions>;
    stripe: StripeServiceInterface;
    appearance: Appearance;
    clientSecret: string;
    doNotCreateUntilClientSecretIsSet: boolean;
    load: EventEmitter<StripePaymentElement>;
    blur: EventEmitter<{
        elementType: "payment";
    }>;
    change: EventEmitter<StripePaymentElementChangeEvent>;
    focus: EventEmitter<{
        elementType: "payment";
    }>;
    ready: EventEmitter<{
        elementType: "payment";
    }>;
    escape: EventEmitter<{
        elementType: "payment";
    }>;
    loaderror: EventEmitter<{
        elementType: "payment";
        error: StripeError;
    }>;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripePaymentElementOptions>): StripePaymentElement;
    collapse(): StripePaymentElement;
    fetchUpdates(): rxjs.Observable<{
        error?: {
            message: string;
            status?: string;
        };
    }>;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripePaymentElementComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripePaymentElementComponent, "ngx-stripe-payment", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "clientSecret": { "alias": "clientSecret"; "required": false; }; "doNotCreateUntilClientSecretIsSet": { "alias": "doNotCreateUntilClientSecretIsSet"; "required": false; }; }, { "load": "load"; "blur": "blur"; "change": "change"; "focus": "focus"; "ready": "ready"; "escape": "escape"; "loaderror": "loaderror"; }, never, never, true, never>;
}

declare class StripePaymentMethodMessagingComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    loadingTemplate?: TemplateRef<NgxStripeElementLoadingTemplateDirective>;
    stripeElementRef: ElementRef;
    element: StripePaymentMethodMessagingElement;
    containerClass: string;
    options: StripePaymentMethodMessagingElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<StripePaymentMethodMessagingElement>;
    ready: EventEmitter<void>;
    elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    update(options: Partial<StripePaymentMethodMessagingElementOptions>): void;
    /**
     * @deprecated
     */
    getPaymentMethodMessaging(): StripePaymentMethodMessagingElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripePaymentMethodMessagingComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripePaymentMethodMessagingComponent, "ngx-stripe-payment-method-messaging", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "ready": "ready"; }, ["loadingTemplate"], never, true, never>;
}

declare class StripePaymentRequestButtonComponent implements OnInit, OnChanges, OnDestroy {
    stripeElementsService: StripeElementsService;
    private elementsProvider;
    stripeElementRef: ElementRef;
    element: StripePaymentRequestButtonElement;
    paymentRequest: PaymentRequest;
    containerClass: string;
    paymentOptions: PaymentRequestOptions;
    options: StripePaymentRequestButtonElementOptions;
    elementsOptions: StripeElementsOptions;
    stripe: StripeServiceInterface;
    load: EventEmitter<{
        paymentRequestButton: StripePaymentRequestButtonElement;
        paymentRequest: PaymentRequest;
    }>;
    change: EventEmitter<StripePaymentRequestButtonElementClickEvent>;
    blur: EventEmitter<void>;
    focus: EventEmitter<void>;
    ready: EventEmitter<void>;
    token: EventEmitter<PaymentRequestTokenEvent>;
    paymentMethod: EventEmitter<PaymentRequestPaymentMethodEvent>;
    source: EventEmitter<PaymentRequestSourceEvent>;
    cancel: EventEmitter<void>;
    shippingaddresschange: EventEmitter<PaymentRequestShippingAddressEvent>;
    shippingoptionchange: EventEmitter<PaymentRequestShippingOptionEvent>;
    notavailable: EventEmitter<void>;
    elements: StripeElements;
    private state;
    private elementsSubscription;
    constructor(stripeElementsService: StripeElementsService, elementsProvider: StripeElementsDirective);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    ngOnDestroy(): void;
    canMakePayment(): Observable<CanMakePaymentResult | null>;
    update(options: Partial<StripePaymentRequestButtonElementOptions>): void;
    updateRequest(options: PaymentRequestUpdateOptions): void;
    show(): void;
    abort(): void;
    isShowing(): boolean;
    /**
     * @deprecated
     */
    getButton(): StripePaymentRequestButtonElement;
    private createElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripePaymentRequestButtonComponent, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StripePaymentRequestButtonComponent, "ngx-stripe-payment-request-button", never, { "containerClass": { "alias": "containerClass"; "required": false; }; "paymentOptions": { "alias": "paymentOptions"; "required": false; }; "options": { "alias": "options"; "required": false; }; "elementsOptions": { "alias": "elementsOptions"; "required": false; }; "stripe": { "alias": "stripe"; "required": false; }; }, { "load": "load"; "change": "change"; "blur": "blur"; "focus": "focus"; "ready": "ready"; "token": "token"; "paymentMethod": "paymentMethod"; "source": "source"; "cancel": "cancel"; "shippingaddresschange": "shippingaddresschange"; "shippingoptionchange": "shippingoptionchange"; "notavailable": "notavailable"; }, never, never, true, never>;
}

/**
 * Provides the global NgxStripe providers and initializes.
 *
 * @usageNotes
 *
 * ### Providing the Global NgxStripe
 *
 * ```ts
 * bootstrapApplication(AppComponent, {
 *   providers: [provideNgxStripe(STRIPE_KEY)],
 * });
 * ```
 */
declare function provideNgxStripe(publishableKey?: string, options?: StripeConstructorOptions): EnvironmentProviders;
declare class NgxStripeModule {
    static forRoot(publishableKey?: string, options?: StripeConstructorOptions): ModuleWithProviders<NgxStripeModule>;
    /**
     * @deprecated
     */
    static forChild(publishableKey?: string, options?: StripeConstructorOptions): ModuleWithProviders<NgxStripeModule>;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxStripeModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NgxStripeModule, never, [typeof i1.CommonModule, typeof StripeAddressComponent, typeof StripeCardComponent, typeof StripeCardNumberComponent, typeof StripeCardExpiryComponent, typeof StripeCardCvcComponent, typeof StripeExpressCheckoutComponent, typeof StripeIbanComponent, typeof StripeIssuingCardCvcDisplayComponent, typeof StripeIssuingCardExpiryDisplayComponent, typeof StripeIssuingCardNumberDisplayComponent, typeof StripeIssuingCardPinDisplayComponent, typeof StripeLinkAuthenticationComponent, typeof StripeAuBankAccountComponent, typeof StripePaymentElementComponent, typeof StripePaymentMethodMessagingComponent, typeof StripePaymentRequestButtonComponent, typeof StripeCardGroupDirective, typeof StripeElementsDirective, typeof NgxStripeElementLoadingTemplateDirective], [typeof StripeAddressComponent, typeof StripeCardComponent, typeof StripeCardNumberComponent, typeof StripeCardExpiryComponent, typeof StripeCardCvcComponent, typeof StripeExpressCheckoutComponent, typeof StripeIbanComponent, typeof StripeIssuingCardCvcDisplayComponent, typeof StripeIssuingCardExpiryDisplayComponent, typeof StripeIssuingCardNumberDisplayComponent, typeof StripeIssuingCardPinDisplayComponent, typeof StripeLinkAuthenticationComponent, typeof StripeAuBankAccountComponent, typeof StripePaymentElementComponent, typeof StripePaymentMethodMessagingComponent, typeof StripePaymentRequestButtonComponent, typeof StripeCardGroupDirective, typeof StripeElementsDirective, typeof NgxStripeElementLoadingTemplateDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NgxStripeModule>;
}

declare class StripeFactoryService {
    version: string;
    baseKey: string;
    baseOptions: StripeConstructorOptions;
    loader: LazyStripeAPILoader;
    window: WindowRef;
    constructor(version: string, baseKey: string, baseOptions: StripeConstructorOptions, loader: LazyStripeAPILoader, window: WindowRef);
    create(key?: string, options?: StripeConstructorOptions): StripeInstance;
    static ɵfac: i0.ɵɵFactoryDeclaration<StripeFactoryService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StripeFactoryService>;
}

declare const STRIPE_PUBLISHABLE_KEY: InjectionToken<string>;
declare const STRIPE_OPTIONS: InjectionToken<StripeConstructorOptions>;
declare const NGX_STRIPE_VERSION: InjectionToken<string>;

declare function injectStripe(publishableKey?: string, options?: StripeConstructorOptions): StripeServiceInterface;

export { DocumentRef, LazyStripeAPILoader, NGX_STRIPE_VERSION, NgxStripeElementLoadingTemplateDirective, NgxStripeModule, STRIPE_OPTIONS, STRIPE_PUBLISHABLE_KEY, StripeAddressComponent, StripeAuBankAccountComponent, StripeCardComponent, StripeCardCvcComponent, StripeCardExpiryComponent, StripeCardGroupDirective, StripeCardNumberComponent, StripeElementsDirective, StripeElementsService, StripeExpressCheckoutComponent, StripeFactoryService, StripeIbanComponent, StripeInstance, StripeIssuingCardCvcDisplayComponent, StripeIssuingCardExpiryDisplayComponent, StripeIssuingCardNumberDisplayComponent, StripeIssuingCardPinDisplayComponent, StripeLinkAuthenticationComponent, StripePaymentElementComponent, StripePaymentMethodMessagingComponent, StripePaymentRequestButtonComponent, StripeService, WindowRef, injectStripe, provideNgxStripe };
export type { LazyStripeAPILoaderStatus, StripeServiceInterface };
