interface Window { Object: ObjectConstructor Proxy: ProxyConstructor } interface ShadowWindow extends Window { Function: Function Node: Node String: String Element: Element HTMLElement: HTMLElement window: ShadowWindow shadowWindow: ShadowWindow Array: Array Math: Math eval: Function JSON: Object } interface Sandbox { sandbox: HTMLIFrameElement document: HTMLElement content: HTMLElement window: ShadowWindow shadowWindow: ShadowWindow } interface HTMLIFrameElement { csp: string } interface Application { get: Function, modules: object } interface Animate { duration: Function } interface Module { config: ModuleConfig resources: ModuleResources events: { transformstart: Function transformend: Function } elements: ModuleElements addElement: Function } interface ModuleStatus { loaded: boolean preload: boolean prefetch: boolean } interface ModuleElements { container: HTMLElement } interface ModuleResources { script: Array } interface ModuleManifest { config: ModuleConfig resources: ModuleResources } interface ModuleConfig { type: string level: number source: string | Array script: Array absolute: boolean animation?: string | boolean | Array | Array | Function } interface TransformAnimateEvent { x: number y: number in: Animate out: Animate view: Array width: number height: number viewport: Array modules: Array reverse: boolean direction: number backset: number origin: string | Array attach: string | Array touches: TouchEvent | undefined callback: Function }