import { EventEmitter } from '../../../../stencil-public-runtime';
import { Customer, FormState, Order, PaymentIntents, PriceChoice, Prices, Processor, Products, ResponseError, TaxProtocol } from '../../../../types';
export declare class ScCheckout {
  /** Element */
  el: HTMLElement;
  /** Holds the session provider reference. */
  private sessionProvider;
  /** An array of prices to pre-fill in the form. */
  prices: Array<PriceChoice>;
  /** Are we in test or live mode. */
  mode: 'test' | 'live';
  /** The checkout form id */
  formId: number;
  /** When the form was modified. */
  modified: string;
  /** Currency to use for this checkout. */
  currencyCode: string;
  /** Whether to persist the session in the browser between visits. */
  persistSession: boolean;
  /** Where to go on success */
  successUrl: string;
  /** Stores the current customer */
  customer: Customer;
  /** Alignment */
  alignment: 'center' | 'wide' | 'full';
  /** The account tax protocol */
  taxProtocol: TaxProtocol;
  /** Is this user logged in? */
  loggedIn: boolean;
  /** Should we disable components validation */
  disableComponentsValidation: boolean;
  /** Processors enabled for this form. */
  processors: Processor[];
  /** Can we edit line items? */
  editLineItems: boolean;
  /** Can we remove line items? */
  removeLineItems: boolean;
  /** Use the Stripe payment element. */
  stripePaymentElement: boolean;
  /** Stores fetched prices for use throughout component.  */
  pricesEntities: Prices;
  /** Stores fetched products for use throughout component.  */
  productsEntities: Products;
  /** Loading states for different parts of the form. */
  checkoutState: FormState;
  /** Error to display. */
  error: ResponseError | null;
  /** The currenly selected processor */
  processor: 'stripe' | 'paypal';
  /** Holds the payment intents for the checkout. */
  paymentIntents: PaymentIntents;
  /** Is this form a duplicate form? (There's another on the page) */
  isDuplicate: boolean;
  /** Order has been updated. */
  scOrderUpdated: EventEmitter<Order>;
  /** Order has been finalized. */
  scOrderFinalized: EventEmitter<Order>;
  /** Order has an error. */
  scOrderError: EventEmitter<ResponseError>;
  handleSetPaymentIntent(e: any): void;
  handleProcessorChange(e: any): void;
  handleAddEntities(e: any): void;
  /**
   * Submit the form
   */
  submit({ skip_validation }?: {
    skip_validation: boolean;
  }): Promise<any>;
  /**
   * Validate the form.
   */
  validate(): Promise<boolean>;
  componentWillLoad(): void;
  order(): any;
  state(): {
    processor: "paypal" | "stripe";
    processors: Processor[];
    processor_data: any;
    state: FormState;
    paymentIntents: PaymentIntents;
    successUrl: string;
    order: any;
    shippingEnabled: any;
    lineItems: any;
    editLineItems: boolean;
    removeLineItems: boolean;
    loading: boolean;
    busy: boolean;
    paying: boolean;
    empty: boolean;
    stripePaymentElement: boolean;
    error: ResponseError;
    customer: Customer;
    tax_status: any;
    customerShippingAddress: any;
    shippingAddress: any;
    taxStatus: any;
    taxIdentifier: any;
    taxProtocol: TaxProtocol;
    lockedChoices: PriceChoice[];
    products: Products;
    prices: Prices;
    country: string;
    loggedIn: boolean;
    formId: number;
    mode: "live" | "test";
    currencyCode: string;
  };
  render(): any;
}
