import { OnInit, OnChanges, SimpleChanges, EventEmitter } from '@angular/core';
import { StripeAddressElement, StripeAffirmMessageElement, StripeAfterpayClearpayMessageElement, StripeAuBankAccountElement, StripeCardCvcElement, StripeCardElement, StripeCardExpiryElement, StripeCardNumberElement, StripeElements, StripeElementsOptions, StripeElementsUpdateOptions, StripeEpsBankElement, StripeExpressCheckoutElement, StripeFpxBankElement, StripeIbanElement, StripeIdealBankElement, StripeLinkAuthenticationElement, StripeP24BankElement, StripePaymentElement, StripePaymentMethodMessagingElement, StripePaymentRequestButtonElement, StripeShippingAddressElement } from '@stripe/stripe-js';
import { StripeServiceInterface } from '../interfaces/stripe-instance.interface';
import { StripeElementsService } from '../services/stripe-elements.service';
import * as i0 from "@angular/core";
export declare class StripeElementsDirective implements OnInit, OnChanges {
    stripeElementsService: StripeElementsService;
    elementsOptions: Partial<StripeElementsOptions>;
    stripe: StripeServiceInterface;
    elements: EventEmitter<StripeElements>;
    _elements: StripeElements;
    state: 'notready' | 'starting' | 'ready';
    constructor(stripeElementsService: StripeElementsService);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    ngOnInit(): Promise<void>;
    fetchUpdates(): import("rxjs").Observable<{
        error?: {
            message: string;
            status?: string;
        };
    }>;
    update(options: StripeElementsUpdateOptions): void;
    submit(): import("rxjs").Observable<{
        error?: import("@stripe/stripe-js").StripeError;
        selectedPaymentMethod?: undefined;
    } | {
        selectedPaymentMethod: string;
        error?: undefined;
    }>;
    getElement(elementType: 'address'): StripeAddressElement | null;
    getElement(elementType: 'paymentMethodMessaging'): StripePaymentMethodMessagingElement | null;
    getElement(elementType: 'affirmMessage'): StripeAffirmMessageElement | null;
    getElement(elementType: 'afterpayClearpayMessage'): StripeAfterpayClearpayMessageElement | 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: 'fpxBank'): StripeFpxBankElement | null;
    getElement(elementType: 'epsBank'): StripeEpsBankElement | null;
    getElement(elementType: 'p24Bank'): StripeP24BankElement | null;
    getElement(elementType: 'iban'): StripeIbanElement | null;
    getElement(elementType: 'idealBank'): StripeIdealBankElement | 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>;
}
