import { Observable } from "rxjs";
import { BufferType, DataStoreOptions, ItemStatus, SaveAsType } from "./DataStoreOptions";
import { ResultCode } from "../util/enum/ResultCode";
import { HttpService } from "../services/http.service";
import { DSRowGroup } from "./DataStore";
export interface IDataStore<T extends Object> {
    get data(): T[];
    get dataStream(): Observable<T[]>;
    get loading(): boolean;
    get updatesPending(): boolean;
    get httpService(): Readonly<HttpService> | undefined;
    acceptText(): ResultCode;
    applyFilter(): Promise<ResultCode>;
    applySort(): Promise<ResultCode>;
    deletedCount(): number;
    deleteRow(row?: number): ResultCode;
    describe(...propertylist: string[]): any[] | any;
    evaluate(expr: string | null, row: number | {}): any;
    exportString(exportType: SaveAsType, headings: boolean): Promise<string>;
    filteredCount(): number;
    finalize(): void;
    find(expr: string, startRow?: number, endRow?: number): number;
    getDisplayValue(column: string | number, data: string | number): string;
    getGroups(): readonly DSRowGroup<T>[];
    getItemStatus(row: number, column?: number, bufferType?: BufferType): ItemStatus | undefined;
    getOptions(): DataStoreOptions;
    groupCount(): number;
    importString(importType: SaveAsType, source: string, options?: {
        startRow?: number;
        endRow?: number;
        startCol?: number;
        endCol?: number;
        dwStartCol?: number;
    }): Promise<number>;
    indexOf(oRow: any): number;
    insertRow(row?: number): number;
    isRowNew(row: T | number, bufferType?: BufferType): boolean;
    isRowModified(row: T | number, bufferType?: BufferType): boolean;
    isSelected(row: number | T): boolean;
    getItem(row: number, column: string | number, bufferType?: BufferType, original?: boolean): any | null;
    getRow(): number;
    modifiedCount(): number;
    reset(): ResultCode;
    resetUpdate(): ResultCode;
    retrieve(...args: any[]): Promise<number>;
    rowCount(): number;
    rowsCopy(startrow: number, endrow: number, srcbuffer: BufferType, target: IDataStore<T>, beforerow: number, destbuffer: BufferType): ResultCode;
    rowsCursor(bufferType: BufferType): IterableIterator<T>;
    rowsDiscard(startrow: number, endrow: number, dwbuffer?: BufferType): ResultCode;
    rowsMove(startrow: number, endrow: number, srcbuffer: BufferType, target: IDataStore<T>, beforerow: number, destbuffer: BufferType): ResultCode;
    setItem(row: number, column: string | number, value: any): ResultCode;
    setItemStatus(row: number, column: number, bufferType: BufferType, status: ItemStatus): ResultCode;
    setRow(row: number): ResultCode;
    shareData(child: IDataStore<T>): ResultCode;
    shareDataOff(): ResultCode;
    update(accept: boolean, resetflag: boolean): Promise<ResultCode>;
    [Symbol.iterator](): IterableIterator<T>;
}
