import { EventEmitter } from "../../stencil-public-runtime";
import { MoiMessages, MoiSession, MoiSavedFeedback, KlevuConfig, MoiRequest, MoiQuestion, ProductInfo, MoiProduct } from "@klevu/core";
import { KlevuTextfieldVariant } from "../klevu-textfield/klevu-textfield";
import { Placement } from "@floating-ui/dom";
import { KlevuMessageFeedbackReasonDetails } from "../klevu-chat-bubble/klevu-chat-bubble";
import { WidgetLayout } from "../klevu-product-query/klevu-product-query";
/**
 * Klevu Product Query popup application that shows a popup for asking questions about a product
 *
 * @csspart product-query-popup-header Header of the popup
 * @csspart product-query-popup-footer Footer of the popup where input is
 * @csspart product-query-popup-feedback Feedback section of the popup when it is being closed
 *
 */
export declare class KlevuProductQueryPopup {
  #private;
  session?: MoiSession;
  poweredByMessage: string;
  /**
   * Url of the page where the product is
   */
  url: string;
  /**
   * Alternative to url, productId can be used to start a session
   */
  productId?: string;
  /**
   * Instead of Klevu API-key use a widget id to start a session
   */
  pqaWidgetId?: string;
  /**
   * Variant of the textfield how does it look like
   */
  textFieldVariant: KlevuTextfieldVariant;
  /**
   * Placeholder of the textfield
   */
  tTextFieldPlaceholder: string;
  /**
   * Title of the popup
   */
  tPopupTitle: string;
  /**
   * Text of the button to open the popup
   */
  tButtonText: string;
  /**
   * Fine print of the popup under the title
   */
  tFinePrint: string;
  /**
   * When loading takes a bit longer, show this text
   */
  tLoadingSorry: string;
  /**
   * When sending a message fails, show this text
   */
  tAnswerError: string;
  /**
   * Title of the feedback section when closing the popup
   */
  tRateExperienceTitle: string;
  /**
   * Description of the feedback section when closing the popup
   */
  tRateExperienceText: string;
  /**
   * Data protection notice when user registering is enabled
   */
  tDataProtectionNotice: string;
  /**
   * Text of the button for asking a question
   */
  askButtonText?: string;
  /**
   * Use dark background with the popup
   */
  useBackground?: boolean;
  /**
   * Anchor popup to which side of the origin
   */
  popupAnchor: Placement;
  /**
   * How many pixels to offset the popup from origin
   */
  popupOffset?: number;
  /**
   * Settings for requests to Klevu. Deeper modification on how the product query works.
   */
  settings?: MoiRequest["klevuSettings"];
  /**
   * Element to anchor the product query popup to
   */
  originElement?: HTMLElement;
  /**
   * Disable closing the popup when clicking outside of it
   */
  disableCloseOutsideClick?: boolean;
  /**
   * Config for Klevu
   */
  config?: KlevuConfig;
  /**
   * Use native scrollbars instead of custom ones
   */
  useNativeScrollbars?: boolean;
  /**
   * Pass any additional data you would want the AI to use for context
   */
  additionaldata?: string;
  /**
   * Pass function to call that will return the product info
   * eg: pass function call as string - "getProductInfo()" or function
   * @returns ProductInfo object
   */
  productInfoGenerator?: string | (() => ProductInfo);
  /**
   * Product Id to be used in analytics
   */
  itemId?: string;
  /**
   * Product Group Id to be used in analytics, in case of multiple variants
   */
  itemGroupId?: string;
  /**
   * Optional Product Variant Id to be used in analytics
   */
  itemVariantId?: string;
  /**
   * Channel Id to be used in analytics
   * eg: Shopify, Bigcommerce
   */
  channelId?: string;
  /**
   * Locale to be used in analytics
   * eg: en_US
   */
  locale?: string;
  /**
   * Set to false if you want to show this in place instead of dialog box
   */
  pqaWidgetLayout: WidgetLayout;
  /**
   * Set to true if you want to remove the powered by ribbon
   */
  removeAskloBranding: boolean;
  /**
   * Set to true if you want to hide the embedded title
   */
  hideEmbeddedTitle?: boolean;
  text: string;
  name: string;
  email: string;
  registered: boolean;
  showFeedback: boolean;
  showLoading: boolean;
  showLoadingSorry: boolean;
  sendMessageError: boolean;
  feedbacks: MoiSavedFeedback[];
  showMessageFeedbackFor?: string;
  el: HTMLKlevuProductElement;
  messages: MoiMessages;
  questions: MoiQuestion[];
  hideQuestions: boolean;
  connectedCallback(): Promise<void>;
  onMessage(): void;
  onMessageFeedback(e: CustomEvent<KlevuMessageFeedbackReasonDetails>): Promise<void>;
  klevuMoiProductClick: EventEmitter<MoiProduct>;
  /** By default redirect the page if product click is not cancelled */
  onKlevuMoiProductClick(event: CustomEvent<MoiProduct>): void;
  render(): any;
}
