import {ViewEncapsulation} from 'angular2/src/core/metadata/view'; import {Injector, Injectable} from 'angular2/src/core/di'; export class RenderComponentType { constructor(public id: string, public encapsulation: ViewEncapsulation, public styles: Array) {} } export class RenderDebugInfo { constructor(public injector: Injector, public component: any, public providerTokens: any[], public locals: Map) {} } export interface ParentRenderer { renderComponent(componentType: RenderComponentType): Renderer; } export abstract class Renderer implements ParentRenderer { abstract renderComponent(componentType: RenderComponentType): Renderer; abstract selectRootElement(selector: string): any; abstract createElement(parentElement: any, name: string): any; abstract createViewRoot(hostElement: any): any; abstract createTemplateAnchor(parentElement: any): any; abstract createText(parentElement: any, value: string): any; abstract projectNodes(parentElement: any, nodes: any[]); abstract attachViewAfter(node: any, viewRootNodes: any[]); abstract detachView(viewRootNodes: any[]); abstract destroyView(hostElement: any, viewAllNodes: any[]); abstract listen(renderElement: any, name: string, callback: Function): Function; abstract listenGlobal(target: string, name: string, callback: Function): Function; abstract setElementProperty(renderElement: any, propertyName: string, propertyValue: any); abstract setElementAttribute(renderElement: any, attributeName: string, attributeValue: string); /** * Used only in debug mode to serialize property changes to comment nodes, * such as