import { Base, Type } from "igniteui-webcomponents-core";
import { IDataSourceVirtualDataProvider } from "igniteui-webcomponents-core";
import { IDataSourcePage } from "igniteui-webcomponents-core";
import { IDataSourceSchema } from "igniteui-webcomponents-core";
import { IDataSourceExecutionContext } from "igniteui-webcomponents-core";
import { IDataSourceDataProviderUpdateNotifier } from "igniteui-webcomponents-core";
import { SortDescriptionCollection } from "igniteui-webcomponents-core";
import { FilterExpressionCollection } from "igniteui-webcomponents-core";
import { DataSourcePageRequestPriority } from "igniteui-webcomponents-core";
import { DataSourceDataProviderSchemaChangedEventArgs } from "igniteui-webcomponents-core";
import { DataSourceSchemaPropertyType } from "igniteui-webcomponents-core";
import { SummaryDescriptionCollection } from "igniteui-webcomponents-core";
import { DataSourceSummaryScope } from "igniteui-webcomponents-core";
import { TransactionState } from "igniteui-webcomponents-core";
export declare class RestVirtualDataSourceDataProvider extends Base implements IDataSourceVirtualDataProvider {
    static $t: Type;
    private _worker;
    private _requests;
    private _callback;
    constructor();
    private filterExpressions_CollectionChanged;
    private sortDescriptions_CollectionChanged;
    private groupDescriptions_CollectionChanged;
    private summaryDescriptions_CollectionChanged;
    addPageRequest(pageIndex: number, priority: DataSourcePageRequestPriority): void;
    private createWorker;
    private valid;
    private getWorkerSettings;
    removePageRequest(pageIndex: number): void;
    removeAllPageRequests(): void;
    close(): void;
    private _pageLoaded;
    get pageLoaded(): (page: IDataSourcePage, currentFullCount: number, actualPageSize: number) => void;
    set pageLoaded(value: (page: IDataSourcePage, currentFullCount: number, actualPageSize: number) => void);
    private raisePageLoaded;
    private killWorker;
    private _pageSizeRequested;
    get pageSizeRequested(): number;
    set pageSizeRequested(value: number);
    private _baseUri;
    get baseUri(): string;
    set baseUri(value: string);
    private _entitySet;
    get entitySet(): string;
    set entitySet(value: string);
    private _timeoutMilliseconds;
    get timeoutMilliseconds(): number;
    set timeoutMilliseconds(value: number);
    getItemValue(item: any, valueName: string): any;
    schemaChanged: (sender: any, args: DataSourceDataProviderSchemaChangedEventArgs) => void;
    private _currentFullCount;
    private _currentSchema;
    get actualCount(): number;
    get actualSchema(): IDataSourceSchema;
    private _executionContext;
    get executionContext(): IDataSourceExecutionContext;
    set executionContext(value: IDataSourceExecutionContext);
    private _updateNotifier;
    get updateNotifier(): IDataSourceDataProviderUpdateNotifier;
    set updateNotifier(value: IDataSourceDataProviderUpdateNotifier);
    private _deferAutoRefresh;
    get deferAutoRefresh(): boolean;
    set deferAutoRefresh(value: boolean);
    get isSortingSupported(): boolean;
    get isGroupingSupported(): boolean;
    get isFilteringSupported(): boolean;
    private _isAggregationSupported;
    get isAggregationSupported(): boolean;
    set isAggregationSupported(isSupported: boolean);
    private _sortDescriptions;
    get sortDescriptions(): SortDescriptionCollection;
    private _groupDescriptions;
    get groupDescriptions(): SortDescriptionCollection;
    private _propertiesRequested;
    get propertiesRequested(): string[];
    set propertiesRequested(value: string[]);
    private _schemaIncludedProperties;
    get schemaIncludedProperties(): string[];
    set schemaIncludedProperties(value: string[]);
    private _filterExpressions;
    get filterExpressions(): FilterExpressionCollection;
    private _summaryDescriptions;
    get summaryDescriptions(): SummaryDescriptionCollection;
    private _summaryScope;
    get summaryScope(): DataSourceSummaryScope;
    set summaryScope(value: DataSourceSummaryScope);
    private _enableJsonp;
    get enableJsonp(): boolean;
    set enableJsonp(isEnabled: boolean);
    private _fixedFullCount;
    get fixedFullCount(): number;
    set fixedFullCount(value: number);
    private _provideFullCount;
    get provideFullCount(): (page: any) => number;
    set provideFullCount(value: (page: any) => number);
    private _provideOrderByParameter;
    get provideOrderByParameter(): (args: any[], orderByString: string, orderBy: SortDescriptionCollection) => void;
    set provideOrderByParameter(value: (args: any[], orderByString: string, orderBy: SortDescriptionCollection) => void);
    private _provideFilterParameter;
    get provideFilterParameter(): (args: any[], filterString: string, filterExpressions: FilterExpressionCollection) => void;
    set provideFilterParameter(value: (args: any[], filterString: string, filterExpressions: FilterExpressionCollection) => void);
    private _provideAggregationParameter;
    get provideAggregationParameter(): (args: any[], fetchCountOnly: boolean, groupByString: string, groupBy: SortDescriptionCollection, summaryString: string, summary: SummaryDescriptionCollection) => void;
    set provideAggregationParameter(value: (args: any[], fetchCountOnly: boolean, groupByString: string, groupBy: SortDescriptionCollection, summaryString: string, summary: SummaryDescriptionCollection) => void);
    private _provideAggregatedCount;
    get provideAggregatedCount(): (item: any) => number;
    set provideAggregatedCount(value: (item: any) => number);
    private _provideUri;
    get provideUri(): (baseUri: string, entitySet: string, args: {
        name: string;
        value: any;
    }[]) => string;
    set provideUri(value: (baseUri: string, entitySet: string, args: {
        name: string;
        value: any;
    }[]) => string);
    private _performFetch;
    get performFetch(): (request: {
        requestUri: string;
        enableJsonpCallback: boolean;
        method: 'GET';
        headers: any;
        data: null;
    }, success: (data: any, response: any) => void, failure: (err: any) => void) => void;
    set performFetch(value: (request: {
        requestUri: string;
        enableJsonpCallback: boolean;
        method: 'GET';
        headers: any;
        data: null;
    }, success: (data: any, response: any) => void, failure: (err: any) => void) => void);
    private _providePagingParameter;
    get providePagingParameter(): (args: any[], skip: number, take: number) => void;
    set providePagingParameter(value: (args: any[], skip: number, take: number) => void);
    private _provideDesiredPropertiesParameter;
    get provideDesiredPropertiesParameter(): (args: any[], selectString: string, desiredProperties: string[]) => void;
    set provideDesiredPropertiesParameter(value: (args: any[], selectString: string, desiredProperties: string[]) => void);
    private _provideItems;
    get provideItems(): (result: any) => any[];
    set provideItems(value: (result: any) => any[]);
    get notifyUsingSourceIndexes(): boolean;
    get isItemIndexLookupSupported(): boolean;
    get isKeyIndexLookupSupported(): boolean;
    notifySetItem(index: number, oldItem: any, newItem: any): void;
    notifyClearItems(): void;
    notifyInsertItem(index: number, newItem: any): void;
    notifyRemoveItem(index: number, oldItem: any): void;
    _schemaFetchQueued: boolean;
    queueSchemaFetch(): void;
    doSchemaFetchInternal(): void;
    schemaFetchInternal(): void;
    protected schemaFetchInternalOverride(): void;
    private addSchemaRequest;
    _autoRefreshQueued: boolean;
    queueAutoRefresh(): void;
    doRefreshInternal(): void;
    refreshInternal(): void;
    protected refreshInternalOverride(): void;
    flushAutoRefresh(): void;
    refresh(): void;
    indexOfItem(item: any): number;
    indexOfKey(key: any[]): number;
    resolveSchemaPropertyType(propertyPath: string): DataSourceSchemaPropertyType;
    setItemValue(item: any, valueName: string, value: any): void;
    removeItem(item: any): void;
    addItem(item: any): void;
    createBatchRequest(changes: TransactionState[]): void;
    private _batchCompleted;
    get batchCompleted(): (success: boolean, requiresRefresh: boolean, messages: string[]) => void;
    set batchCompleted(v: (success: boolean, requiresRefresh: boolean, messages: string[]) => void);
}
