import Vue from 'vue' ; import { VueConstructor } from 'vue/types/vue' ; export type EuvComponentOptions = { template ? : string ; templateUrl ? : string ; styles ? : string [ ] ; components ? : string [ ] ; } ; export type EuvInstance = new ( ... args ) => any ; export type ServiceTables = { [ key ] : new ( ... args ) => any ; } ; export type ServicePool = { [ key ] : CollectionFactory ; } ; export type OptionalPool = { [ key ] : { value : new ( ... args ) => any ; } ; } ; export interface CollectionFactory { instance : any ; vueComponent : VueConstructor < Vue > ; vueComponentOptions : any ; factory : new ( ... args ) => any ; isInstantiated : ( ) => boolean ; bindingName : string ; } export interface ContainerFactory { optionalPool : OptionalFactory ; findOne : ( serviceName : string ) => CollectionFactory ; append : ( name : string , factory : new ( ... args ) => any ) => void ; has : ( serviceName : string ) => boolean ; entries : ( ) => Array < { [ key ] : CollectionFactory ; } > ; nativeTables : ( ) => ServiceTables ; } export interface OptionalFactory { has : ( name : string ) => boolean ; create : ( name : string ) => void ; patch : ( name : string , factory : new ( ... args ) => any ) => void ; link : ( name : string ) => any ; } export type ModuleProviders = { [ key ] : new ( ... args ) => any ; } ; export type ModuleOptions = { providers ? : ModuleProviders ; } ; export type EuvModules = new ( ) => void ; export type InjectTagIdentifier = { name : string ; index : number ; } ; export type PropTagIdentifier = { name : string ; type : any ; value ? : any ; } ; declare global { interface Window { $Container ? : any ; } }