import { Placement } from "@floating-ui/dom";
import { KlevuConfig, MoiRequest, ProductInfo } from "@klevu/core";
import { KlevuTextfieldVariant } from "../klevu-textfield/klevu-textfield";
export type WidgetLayout = "embedded" | "popup";
/**
 * Button that is placed on the site to start a product query session
 *
 * @csspart product-query-open-button Button that opens the popup
 *
 * @slot before-button-text - Before origin button text
 * @slot after-button-text - After origin button text
 * @slot after-fineprint - After fineprint in the popup
 */
export declare class KlevuProductQuery {
  #private;
  el: HTMLKlevuProductQueryElement;
  origin?: HTMLKlevuButtonElement;
  isEnabled: boolean;
  removeAskloBranding: boolean;
  config?: KlevuConfig;
  /**
   * Url of the page where the product is
   */
  url: string;
  additionaldata: 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
   */
  textFieldPlaceholder: string;
  /**
   * Set to false if you want to show the popup in place instead of dialog box
   */
  pqaWidgetLayout: WidgetLayout;
  /**
   * Title of the popup
   */
  popupTitle: string;
  /**
   * Text of the button to open the popup
   */
  buttonText: string;
  /**
   * Fine print of the popup under the title
   */
  finePrint: 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;
  /**
   * Disable closing the popup when clicking outside of it
   */
  disableCloseOutsideClick?: boolean;
  /**
   * Settings for requests to Klevu. Deeper modification on how the product query works.
   */
  settings?: MoiRequest["klevuSettings"];
  /**
   * Use native scrollbars instead of custom ones
   */
  useNativeScrollbars?: boolean;
  /**
   * Pass function to call that will return the product info
   * eg: pass function call as string - "getProductInfo()" or function itself
   * @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 true if you want to hide the embedded title
   */
  hideEmbeddedTitle?: boolean;
  connectedCallback(): Promise<void>;
  render(): any;
}
