import { EventEmitter } from '../../stencil-public-runtime';
import JustifiAnalytics from '../../api/Analytics';
import { PaymentMethodPayload } from '../checkout/payment-method-payload';
import { ComponentSubmitEvent, ComponentErrorEvent } from '../../api';
import { PAYMENT_METHODS } from '../modular-checkout/ModularCheckout';
import { BillingFormFields } from '../checkout/billing-form/billing-form-schema';
interface ValidationResult {
    isValid: boolean;
    errors?: Record<string, any>;
}
export declare class JustifiTokenizePaymentMethod {
    analytics: JustifiAnalytics;
    private billingFormRef?;
    private paymentMethodFormRef?;
    private unsubscribeFromStore?;
    host: HTMLElement;
    computedHideSubmitButton: boolean;
    isLoading: boolean;
    selectedPaymentMethod?: PAYMENT_METHODS;
    accountId?: string;
    authToken?: string;
    disableBankAccount?: boolean;
    disableCreditCard?: boolean;
    hideBankAccountBillingForm?: boolean;
    hideCardBillingForm?: boolean;
    hideSubmitButton?: boolean;
    paymentMethodGroupId?: string;
    submitButtonText?: string;
    savePaymentMethodLabel?: string;
    paymentMethodsChanged(): void;
    errorEvent: EventEmitter<ComponentErrorEvent>;
    submitEvent: EventEmitter<ComponentSubmitEvent>;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentWillLoad(): void;
    handleRadioClick(event: CustomEvent<string>): void;
    tokenizePaymentMethod(event?: MouseEvent): Promise<PaymentMethodPayload>;
    fillBillingForm(fields: BillingFormFields): Promise<void>;
    validate(): Promise<ValidationResult>;
    getValues(): Promise<BillingFormFields>;
    tokenize(): Promise<any>;
    private validateRequiredProps;
    private setDefaultSelectedPaymentMethod;
    private setComputedHideSubmitButton;
    private isSlottedWithinModularCheckout;
    private get availablePaymentMethods();
    private areFormsReady;
    private emitError;
    private createErrorResponse;
    resolvePaymentMethod(insuranceValidation: any): Promise<PaymentMethodPayload>;
    private performTokenization;
    private buildPaymentMethodMetadata;
    private get paymentMethodGroupID();
    private get shouldSavePaymentMethod();
    private get shouldHideRadioInput();
    private renderPaymentMethodOption;
    private renderSelectedPaymentMethodForm;
    private renderPaymentMethodForm;
    render(): any;
}
export {};
