import { EventEmitter } from "../../stencil.core";
import { AdvancedItemConfig, ItemConfig, ItemSession, PieContent, PieModel } from "../../interface";
import { PieLoader, BundleEndpoints } from "../../pie-loader";
export declare class Player {
    /**
     * a reference to the active player when wrapping playert in stimulus layout
     */
    stimulusPlayer: HTMLElement;
    doc: Document;
    /**
     * Optionally specifies the back-end that builds and hosts javascript bundles for rendering assessment items.
     * This property lets you choose which environment to use, from 'dev' , 'stage' or 'prod' environments.
     * Until 1.0 will default to 'stage'.
     */
    bundleHost?: string;
    /**
     * Provide this property override the default endpoints used by the player to retrieve JS
     * bundles. Must be set before setting the config property.
     * Most users will not need to use this property.
     */
    bundleEndpoints?: BundleEndpoints;
    /**
     * Allows disabling of the default behaviour which is to look up and load the JS bundle that define the Custom Elements
     * used by the item config.
     * This if for advanced use cases when using the pie-player in a container that is managing loading of Custom Elements and Controllers.
     */
    disableBundler: boolean;
    el: HTMLElement;
    /**
     * Emmitted when any interaction in the set of interactions being rendered has
     * been mutated by user action.
     *
     * The `Event.detail` property contains a `complete` property.
     * If true, this indicates that enough data has been gathered by the interaciton to constitute a response.
     * For example, in a plot line questsion where a user had to plot three points to plot the line,
     * the `complete` propery would be false if 1 or 2 points had been added, but true if all three had.
     *
     */
    sessionChanged: EventEmitter;
    /**
     * Emmitted if there is an error encountered while rendering.
     * `event.detail` will be a string containing a message about the error.
     */
    playerError: EventEmitter;
    /**
     * TODO - Emmitted when any all interactions in a PIE Assessment Item have reported that a user
     * has provided a response to the interaction.
     */
    responseCompleted: EventEmitter;
    /**
     * Emitted when the content in the config has been loaded.
     */
    loadComplete: EventEmitter;
    elementsLoaded: boolean;
    /**
     * The Pie config model.
     */
    config: ItemConfig;
    /**
     * Simulates a correct response for the item.
     * This property will only have this effect if the `hosted` property is
     * false and player is running client-side-only.
     */
    addCorrectResponse: boolean;
    watchAddCorrectResponse(newValue: any, oldValue: any): void;
    /**
     * The Pie Session
     */
    session: ItemSession;
    /**
     * Describes runtime environment for the player.
     *
     */
    env: Object;
    /**
     * Indicates if player running in the context of a PIE hosting system.
     * Do not modify the default value for this property if you are not implementing a PIE host.
     * If true, the host is responsible for all model updates.
     */
    hosted?: boolean;
    /**
     * If the item contains a stimulus, the player will render it by default.
     * Set this property to false to not render stimulus.
     */
    renderStimulus: boolean;
    version: string;
    pieContentModel: PieContent;
    stimulusItemModel: AdvancedItemConfig;
    pieLoader: PieLoader;
    player(): HTMLElement | this;
    watchConfig(newConfig: any): Promise<void>;
    /**
     * For previewing changes to an item. Updates the model for one question in the item model.
     * @param update the updated model
     */
    updateElementModel(update: PieModel): Promise<void>;
    updateModels(newEnv?: Object): void;
    private stopEventFromPropagating;
    componentWillLoad(): Promise<void>;
    findOrAddSession(data: any[], id: string): any;
    private renderMath;
    afterRender(): Promise<void>;
    componentDidLoad(): Promise<void>;
    componentDidUpdate(): Promise<void>;
    render(): any;
}
