import { Component } from "./component"; import { GlobalAPI } from "./global-api"; // global flag to be compiled away declare const __WEEX__: boolean; // global object in Weex declare var WXEnvironment: WeexEnvironment; declare type Weex = { config: WeexConfigAPI; document: WeexDocument; requireModule: (name: string) => Object | void; supports: (condition: string) => boolean | void; isRegisteredModule: (name: string, method?: string) => boolean; isRegisteredComponent: (name: string) => boolean; }; declare type WeexConfigAPI = { bundleUrl: string; // === weex.document.URL bundleType: string; env: WeexEnvironment; // === WXEnvironment }; declare type WeexEnvironment = { platform: string; // could be "Web", "iOS", "Android" weexVersion: string; // the version of WeexSDK osName: string; // could be "iOS", "Android" or others osVersion: string; appName: string; // mobile app name or browser name appVersion: string; // information about current running device deviceModel: string; // phone device model deviceWidth: number; deviceHeight: number; scale: number; // only available on the web userAgent?: string; dpr?: number; rem?: number; }; declare interface WeexDocument { id: string; URL: string; taskCenter: WeexTaskCenter; open: () => void; close: () => void; createElement: (tagName: string, props?: Object) => WeexElement; createComment: (text: string) => Object; fireEvent: (type: string) => void; destroy: () => void; } declare interface WeexTaskCenter { instanceId: string; callbackManager: Object; send: (type: string, params: Object, args: Array, options?: Object) => void; registerHook: (componentId: string, type: string, hook: string, fn: Function) => void; updateData: (componentId: string, data: Object | void, callback?: Function) => void; } declare interface WeexElement { nodeType: number; nodeId: string; type: string; ref: string; text?: string; parentNode: WeexElement | void; children: Array; previousSibling: WeexElement | void; nextSibling: WeexElement | void; appendChild: (node: WeexElement) => void; removeChild: (node: WeexElement, preserved?: boolean) => void; insertBefore: (node: WeexElement, before: WeexElement) => void; insertAfter: (node: WeexElement, after: WeexElement) => void; setAttr: (key: string, value: any, silent?: boolean) => void; setAttrs: (attrs: Object, silent?: boolean) => void; setStyle: (key: string, value: any, silent?: boolean) => void; setStyles: (attrs: Object, silent?: boolean) => void; addEvent: (type: string, handler: Function, args?: Array) => void; removeEvent: (type: string) => void; fireEvent: (type: string) => void; destroy: () => void; } declare type WeexInstanceOption = { instanceId: string; config: WeexConfigAPI; document: WeexDocument; Vue?: GlobalAPI; app?: Component; data?: Object; }; declare type WeexRuntimeContext = { weex: Weex; service: Object; BroadcastChannel?: Function; }; declare type WeexInstanceContext = { Vue: GlobalAPI; // DEPRECATED setTimeout?: Function; clearTimeout?: Function; setInterval?: Function; clearInterval?: Function; }; declare type WeexCompilerOptions = CompilerOptions & { // whether to compile special template for recyclable?: boolean; }; declare type WeexCompiledResult = CompiledResult & { '@render'?: string; };