// Generated by typings
// Source: node_modules/angular2-slickgrid/out/js/interfaces.d.ts
declare module '~angular2-slickgrid/out/js/interfaces' {
import { Observable } from 'rxjs/Rx';
export enum NotificationType {
    Error = 0,
    UpdateAvailable = 1,
    UpdateDownloaded = 2,
}
export interface ISelectionRange {
    startRow: number;
    endRow: number;
    startColumn: number;
    endColumn: number;
}
export enum CollectionChange {
    ItemsReplaced = 0,
}
export interface IObservableCollection<T> {
    getLength(): number;
    at(index: number): T;
    getRange(start: number, end: number): T[];
    setCollectionChangedCallback(callback: (change: CollectionChange, startIndex: number, count: number) => void): void;
}
export class CancellationToken {
    private _isCanceled;
    private _canceled;
    cancel(): void;
    readonly isCanceled: boolean;
    readonly canceled: Observable<any>;
}
export interface IGridColumnDefinition {
    id: string;
    type: number;
}
export interface IGridDataRow {
    row?: number;
    values: any[];
}
export interface ISlickColumn<T> extends Slick.Column<T> {
    isEditable?: boolean;
}
}
declare module 'angular2-slickgrid/out/js/interfaces' {
export * from '~angular2-slickgrid/out/js/interfaces';
}

// Generated by typings
// Source: node_modules/angular2-slickgrid/out/js/selectionModel.d.ts
declare module '~angular2-slickgrid/out/js/selectionModel' {
import { ISelectionRange } from '~angular2-slickgrid/out/js/interfaces';
export class SelectionModel implements ISlickSelectionModel {
    private _rowSelectionModel;
    private _handler;
    private _onSelectedRangesChanged;
    private _slickRangeFactory;
    constructor(_rowSelectionModel: ISlickSelectionModel, _handler: ISlickEventHandler, _onSelectedRangesChanged: ISlickEvent, _slickRangeFactory: (fromRow: number, fromCell: number, toRow: number, toCell: number) => Slick.Range);
    readonly range: Slick.Range[];
    readonly onSelectedRangesChanged: ISlickEvent;
    init(grid: ISlickGrid): void;
    destroy(): void;
    setSelectedRanges(ranges: Slick.Range[]): void;
    getSelectedRanges(): Slick.Range[];
    changeSelectedRanges(selections: ISelectionRange[]): void;
    toggleSingleColumnSelection(columnId: string): void;
    setSingleColumnSelection(columnId: string): void;
    toggleMultiColumnSelection(columnId: string): void;
    extendMultiColumnSelection(columnId: string): void;
    clearSelection(): void;
    private _grid;
    private _ranges;
    private _lastSelectedColumnIndexSequence;
    private static areRangesIdentical(lhs, rhs);
    private getColumnRange(columnId);
    private getColumnRangeByIndex(columnIndex);
    private readonly isColumnSelectionCurrently;
    private updateSelectedRanges(ranges);
}
export interface ISlickSelectionModel {
    range: Slick.Range[];
    onSelectedRangesChanged: any;
    init(grid: any): void;
    destroy(): void;
    setSelectedRanges(ranges: Slick.Range[]): void;
    getSelectedRanges(): Slick.Range[];
}
export interface ISlickEventHandler {
    subscribe(event: any, handler: any): void;
    unsubscribeAll(): void;
}
export interface ISlickEvent {
    notify(eventData: Slick.Range[]): void;
    subscribe(handler: (e: any, args: any) => void): void;
}
export interface ISlickGrid {
    getActiveCellNode(): any;
    getCanvasNode(): any;
    resetActiveCell(): void;
    focus(): void;
    getColumnIndex(columnId: string): number;
    getDataLength(): number;
}
}
declare module 'angular2-slickgrid/out/js/selectionModel' {
export * from '~angular2-slickgrid/out/js/selectionModel';
}

// Generated by typings
// Source: node_modules/angular2-slickgrid/out/js/slickGrid.d.ts
declare module '~angular2-slickgrid/out/js/slickGrid' {
import { OnChanges, OnInit, OnDestroy, SimpleChange, EventEmitter, AfterViewInit } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import { IObservableCollection, IGridDataRow, ISlickColumn } from '~angular2-slickgrid/out/js/interfaces';
export class OnRangeRenderCompletedEventArgs {
    startRow: number;
    endRow: number;
}
export function getOverridableTextEditorClass(grid: SlickGrid): any;
export class SlickGrid implements OnChanges, OnInit, OnDestroy, AfterViewInit {
    private _el;
    columnDefinitions: ISlickColumn<any>[];
    dataRows: IObservableCollection<IGridDataRow>;
    resized: Observable<any>;
    highlightedCells: {
        row: number;
        column: number;
    }[];
    blurredColumns: string[];
    contextColumns: string[];
    columnsLoading: string[];
    showHeader: boolean;
    enableColumnReorder: boolean;
    enableAsyncPostRender: boolean;
    selectionModel: string | Slick.SelectionModel<any, any>;
    plugins: Array<string | Slick.Plugin<any>>;
    enableEditing: boolean;
    topRowNumber: number;
    overrideCellFn: (rowNumber, columnId, value?, data?) => string;
    isCellEditValid: (row: number, column: number, newValue: any) => boolean;
    loadFinished: EventEmitter<void>;
    onContextMenu: EventEmitter<Slick.OnContextMenuEventArgs<any>>;
    onScroll: EventEmitter<Slick.OnScrollEventArgs<any>>;
    onActiveCellChanged: EventEmitter<Slick.OnActiveCellChangedEventArgs<any>>;
    onBeforeEditCell: EventEmitter<Slick.OnBeforeEditCellEventArgs<any>>;
    onCellChange: EventEmitter<Slick.OnCellChangeEventArgs<any>>;
    onFocus(): void;
    rowHeight: number;
    private _rowHeight;
    private _grid;
    private _gridColumns;
    private _columnNameToIndex;
    private _gridData;
    private _resizeSubscription;
    private _gridSyncSubscription;
    constructor(_el: any);
    ngOnChanges(changes: {
        [propName: string]: SimpleChange;
    }): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    enterEditSession(): void;
    endEditSession(): void;
    readonly onSelectedRowsChanged: Slick.Event<Slick.OnSelectedRowsChangedEventArgs<any>>;
    getSelectedRows(): number[];
    getColumnIndex(name: string): number;
    getSelectedRanges(): Slick.Range[];
    registerPlugin(plugin: Slick.Plugin<any> | string): void;
    setActive(): void;
    selection: Slick.Range[] | boolean;
    private initGrid();
    private changeEditSession(enabled);
    private onResize();
    private invalidateRange(start, end);
    private getColumnEditor(column);
    private getFormatter;
    private setupEvents();
    private updateSchema();
    private setCallbackOnDataRowsChanged();
    readonly activeCell: Slick.Cell;
    private renderGridDataRowsRange(startIndex, count);
}
}
declare module 'angular2-slickgrid/out/js/slickGrid' {
export * from '~angular2-slickgrid/out/js/slickGrid';
}

// Generated by typings
// Source: node_modules/angular2-slickgrid/out/js/virtualizedCollection.d.ts
declare module '~angular2-slickgrid/out/js/virtualizedCollection' {
import { IObservableCollection, CollectionChange } from '~angular2-slickgrid/out/js/interfaces';
export class VirtualizedCollection<TData> implements IObservableCollection<TData> {
    private _placeHolderGenerator;
    private _length;
    private _windowSize;
    private _bufferWindowBefore;
    private _window;
    private _bufferWindowAfter;
    private collectionChangedCallback;
    constructor(windowSize: number, length: number, loadFn: (offset: number, count: number) => Promise<TData[]>, _placeHolderGenerator: (index: number) => TData);
    setCollectionChangedCallback(callback: (change: CollectionChange, startIndex: number, count: number) => void): void;
    getLength(): number;
    at(index: number): TData;
    getRange(start: number, end: number): TData[];
    private getRangeFromCurrent(start, end);
    private getDataFromCurrent(index);
    resetWindowsAroundIndex(index);
}
}
declare module 'angular2-slickgrid/out/js/virtualizedCollection' {
export * from '~angular2-slickgrid/out/js/virtualizedCollection';
}

// Generated by typings
// Source: node_modules/angular2-slickgrid/out/index.d.ts
declare module '~angular2-slickgrid/out/index' {
export * from '~angular2-slickgrid/out/js/interfaces';
export * from '~angular2-slickgrid/out/js/selectionModel';
export * from '~angular2-slickgrid/out/js/slickGrid';
export * from '~angular2-slickgrid/out/js/virtualizedCollection';
}
declare module 'angular2-slickgrid/out/index' {
export * from '~angular2-slickgrid/out/index';
}
declare module 'angular2-slickgrid' {
export * from '~angular2-slickgrid/out/index';
}
