/**
 * Do not modify this file, it is auto-generated.
 */
import {
    Observable
} from 'rxjs';
{{#each otherImports}}
import { {{#each this}}{{{this}}}{{#unless @last}}, {{/unless}}{{/each}} } from '{{{@key}}}';
{{/each}}

/*
{{#if name}}
 * @name {{{name}}}
{{/if}}
{{#if id}}
 * @id {{{id}}}
{{/if}}
{{#if description}}
 * @description {{{description}}}
{{/if}}
{{#if creator}}
 * @author {{{creator}}}
{{/if}}
 */
abstract class {{{className}}} extends AbstractRenderingComponent {

    /**
    * Strongly typed stream of the rendering contexts
    */
    readonly onRenderingContext: Observable<RenderingContext>;

    /**
    * Strongly typed rendering context
    */
    renderingContext: RenderingContext;

    {{#each bindings}}
    /*
{{{this.comment}}}
     */
    @RenderingContextBinding('{{{this.expression}}}'{{#if default}}, {{{this.default}}}{{/if}})
    readonly {{{this.observableKey}}}: Observable<{{{this.type}}}>;

    /*
     * @see #{{{this.observableKey}}}
     */
    @RenderingContextBinding()
    readonly {{{this.key}}}: {{{this.type}}};

    {{/each}}
    protected constructor() {
        super();
    }
}

/**
* 18acd1c9-888e-4c44-bd2c-a38c5a62bf45
*/
export {
    {{{ interfacesName }}},
    is{{{ interfacesName }}},
    assert{{{ interfacesName }}},
    {{{className}}}
};
