module Events { export interface ListenerCallback { (value:any):void; } export class EventEmitter { public addListener(type:string, listener:ListenerCallback) { } } } module Consumer { class EventEmitterConsummer { constructor (private emitter: Events.EventEmitter) { } private register() { this.emitter.addListener('change', (e) => { this.changed(); }); } private changed() { } } }