import { FingerName } from './modules/AR';
import { JewelryTypeName } from '../../trillion-common/src/typings/jewelry-type';
import { TWidgetMode, CustomLoaderType } from '@/modules/TrillionWidget';
import { TCarouselMode } from './modules/TrillionWidget/types/carousel-mode';
import { ConfiguratorType } from '@/modules/AR/types/configuratorType';
import { OnWidgetConfigSaved } from 'trillion-viewer/src/viewer/types/on-widget-config-saved';
export declare class TrillionWidgetApp {
    private _root;
    private _widgetMode;
    private _carouselMode;
    private _jewelryId;
    private _carousel;
    private _jewelryType;
    private _excludedFingers;
    private _isUsePerformanceCheck;
    private _isGUIEnabled;
    private _annotationEnabled;
    private _sandboxEnabled;
    private _controls3DEnabled;
    private _videoUrl;
    private _disableLogo;
    private _favoritesList;
    private _onFavoritesChange;
    private _sharingBackgroundUrl;
    private _dataAcquisitionFormUrl;
    private _language;
    private _customCDNUrl;
    private _staticConfigsUrl;
    private _dynamicBrightnessEnabled;
    private _fingerBorderEstimationEnabled;
    private _customLoader;
    private _isDataCollectFormBeforeTryOnEnabled;
    private _customBackendUrl;
    private _posteffectsConfigJson;
    private _serviceActivationKey;
    private _disableShadowRoot;
    private _cancelMirroring;
    private _onWidgetConfigSaved;
    private _configurator;
    private _useExternalUi;
    /**
     * Create widget on the provided HTML element
     * @param entryElem - HTMLElement that the widget will be loaded into
     */
    init(entryElem: HTMLElement): void;
    /**
     * Set widget mode
     * 1. Basic - any jewelry type, no selectors or any additional UI (only screenshot button). JewelryId field is optional.
     * 2. Ring Carousel - only rings, one hand, one ring, selector for many SKUs. Possibility to switch jewelry in runtime. Carousel field is required.
     * 3. Two hands - only rings, two hands, up to 10 rings, selector for many SKUs. Possibility to switch jewelry for each hand and finger. Carousel field is required.
     * @param mode - widget mode
     */
    setWidgetMode(mode: TWidgetMode): void;
    /**
     * Get current widget mode
     */
    getWidgetMode(): TWidgetMode;
    /**
     * Set carousel mode (used when widget mode Ring Carousel or Two hands)
     */
    setCarouselMode(mode: TCarouselMode): void;
    /**
     * Get current carousel mode
     */
    getCarouselMode(): TWidgetMode;
    /**
     * Set the id(SKU) of the jewelry to load
     * @param sku - Stock keeping unit
     */
    setJewelryID(sku: string | null): void;
    /**
     * Get the id(SKU) of the uploaded jewelry
     */
    getJewelryID(): string | null;
    /**
     * Set array of sku ids for jewelry carousel
     * @param ids - array of sku
     */
    setCarousel(ids: Array<string> | null): void;
    getCarousel(): Array<string> | null;
    /**
     * Set the jewelry type (earrings, ring, necklace) to load
     * @param type
     * @deprecated type is now detected automatically
     */
    setJewelryType(type: JewelryTypeName): void;
    /**
     * Get the uploaded jewelry type
     * @deprecated type is now detected automatically
     */
    getJewelryType(): JewelryTypeName | null;
    /**
     * Set array of excluded fingers from tracking
     * @param fingers - array of enums corresponding fingers
     */
    setExcludedFingers(fingers: Array<FingerName> | null): void;
    /**
     * Get array of excluded fingers from tracking
     * @returns excluded fingers
     */
    getExcludedFingers(): Array<FingerName> | null;
    /**
     * use performance check
     * @param use
     */
    setUsePerformanceCheck(use: boolean): void;
    /**
     * is performance checking used
     */
    getUsePerformanceCheck(): boolean;
    /**
     * use annotation
     * @param enabled
     */
    setAnnotationEnabled(enabled: boolean): void;
    /**
     * @returns is annotation enabled
     */
    getAnnotationEnabled(): boolean;
    setSandboxEnabled(enabled: boolean): void;
    /**
     * use controls 3d
     * @param enabled
     */
    setControls3DEnabled(enabled: boolean): void;
    /**
     * @returns id controls 3d enabled
     */
    getControls3DEnabled(): boolean;
    /**
     * @param url - url of recorded video for test/tune tracking
     */
    setVideoUrl(url: string | undefined): void;
    /**
     * @returns url of recorded video for test/tune tracking
     */
    getVideoUrl(): string | undefined;
    /**
     * @param url - url of the background image for the sharing screenshot
     */
    setSharingBackgroundUrl(url: string | undefined): void;
    /**
     * @returns url of the background image for the sharing screenshot
     */
    getSharingBackgroundUrl(): string | undefined;
    /**
     * @param url - url of the target window after sharing the screenshot
     */
    setDataAcquisitionFormUrl(url: string | undefined): void;
    /**
     * @returns url of the target window after sharing the screenshot
     */
    getDataAcquisitionFormUrl(): string | undefined;
    setIsGUIEnabled(isGUIEnabled: boolean | undefined): void;
    getIsGUIEnabled(): boolean | undefined;
    setDisableLogo(disable: boolean): void;
    getDisableLogo(): boolean;
    setFavoritesList(favorites: Array<string> | null): void;
    getFavoritesList(): Array<string> | null;
    setOnFavoritesChange(onChange: (newList: Array<string>) => void): void;
    /**
     * Set language for the widget
     * @param language - language code (en, kr, etc.)
     */
    setLanguage(language: string): void;
    /**
     * Get current language
     * @returns language code (en, kr, etc.)
     * @default en
     */
    getLanguage(): string;
    setCustomCDNUrl(url: string | undefined): void;
    getCustomCDNUrl(): string | undefined;
    setStaticConfigsUrl(url: string | undefined): void;
    getStaticConfigsUrl(): string | undefined;
    setDynamicBrightnessEnabled(value: boolean | undefined): void;
    getDynamicBrightness(): boolean | undefined;
    getFingerBorderEstimationEnabled(): boolean | undefined;
    setFingerBorderEstimationEnabled(enabled: boolean | undefined): void;
    setCustomLoader(loader: CustomLoaderType | undefined): void;
    getCustomLoader(): CustomLoaderType | undefined;
    getIsDataCollectFormBeforeTryOnEnabled(): boolean | undefined;
    setIsDataCollectFormBeforeTryOnEnabled(enabled: boolean | undefined): void;
    setCustomBackendUrl(url: string | null): void;
    getCustomBackendUrl(): string | null;
    setPosteffectsConfigJson(posteffectsConfigJson: string | undefined): void;
    getPosteffectsConfig(): string | undefined;
    setServiceActivationKey(key: string | null): void;
    getServiceActivationKey(): string | null;
    setDisableShadowRoot(value: boolean): void;
    getDisableShadowRoot(): boolean;
    setCancelMirroring(value: boolean): void;
    setConfigurator(configurator: ConfiguratorType): void;
    setOnWidgetConfigSaved(callback: OnWidgetConfigSaved | undefined): void;
    getOnWidgetConfigSaved(): OnWidgetConfigSaved | undefined;
    useExternalUi(value: boolean): void;
    updateCarouselItem(id: string): void;
    getScreenshot(): void;
    /**
     * Restart the widget after changing the parameters
     */
    refresh(): void;
    /**
     * Remove an existing widget from the DOM
     */
    destroy(): void;
}
