import { Observable , Subject } from 'rxjs/Rx' ; export enum NotificationType { Error , UpdateAvailable , UpdateDownloaded } export interface ISelectionRange { startRow : number ; endRow : number ; startColumn : number ; endColumn : number ; } export enum CollectionChange { ItemsReplaced } export interface IObservableCollection < T > { getLength ( ) : number ; at ( index ) : T ; getRange ( start , end ) : T [ ] ; setCollectionChangedCallback ( callback ) : void ; resetWindowsAroundIndex ( index ) : void ; } export class CancellationToken { private _isCanceled : boolean = false ; private _canceled : Subject < any > = new Subject < any > ( ) ; cancel ( ) { this . _isCanceled = true ; this . _canceled . next ( undefined ) ; } get isCanceled ( ) : boolean { return this . _isCanceled ; } get canceled ( ) : Observable < any > { return this . _canceled ; } } export interface IGridColumnDefinition { id : string ; type : number ; } export interface ISlickColumn < T > extends Slick . Column < T > { isEditable ? : boolean ; }