import { ComponentOptions , PluginObject , VueConstructor } from 'vue' ; import { XBus } from '../../plugins/x-bus.types' ; import { XPluginOptions } from '../../plugins/x-plugin.types' ; import { SnippetConfig , XAPI } from '../api/api.types' ; /**
 * Interface for the parameter of the constructor of  XInstaller function. It is an extended
 * version of  XPluginOptions .
 *
 *  public export interface InstallXOptions < API extends XAPI = XAPI > extends XPluginOptions { /** The Vue component used as root of the application. If is not passed no Vue Application is
     * initialized, only plugin installed. */ app ? : VueConstructor | ComponentOptions < Vue > ; /** The API to expose globally. If is not passed the default  BaseXAPI will be used. If
     * a `false` value is passed then the API is not created. api ? : API | false ; /** The  XBus used in the  XPlugin . If not passed an instance of  BaseXBus * will be used. bus ? : XBus ; /** An Element | string to indicate the HTML element that will contain the Vue
     * application. If string selector is passed and the element doesn't exits, the
     *  XInstaller will create it.  domElement ? : Element | string ; /** The XPlugin which will be installed. If not passed, an instance of  XPlugin will be
     * installed. plugin ? : PluginObject < XPluginOptions > ; /** The Vue instance used to install the plugin and to create the Application. If not
     * passed the default Vue instance is used. This can be useful to use the `localVue`
     * in the unit tests.*/ vue ? : VueConstructor ; example vueOptions ? : VueConstructorPartialArgument ; /**
     * Adds the option to install more Vue plugins, giving access to the  SnippetConfig and
     * the  XBus .
     *
     *  param options returns installExtraPlugins ? ( options ) : VueConstructorPartialArgument | Promise < VueConstructorPartialArgument > ; } public export interface ExtraPluginsOptions { /** The Vue instance that is being used. */ vue : VueConstructor ; /** The events bus instance used to communicate different part of the x-components. */ bus : XBus ; /** Configuration coming from the client website with options like the lang, or the active
     * currency. */ snippet : SnippetConfig ; } public export type VueConstructorPartialArgument = Partial < ConstructorParameters < VueConstructor > [ 0 ] > ;