import * as jest_mock from 'jest-mock';
import { PagerSettings } from '@progress/kendo-angular-grid';
import { IKendoODataGridFacade } from 'imng-kendo-grid-odata';
import { ODataState, ODataResult } from 'imng-kendo-odata';
import { Observable } from 'rxjs';
import { Component } from '@angular/core';
import { MetadataOverride } from '@angular/core/testing';

declare class ODataGridMockFacade implements IKendoODataGridFacade<{
    id: string;
}> {
    loading$: Observable<boolean>;
    gridODataState$: Observable<ODataState>;
    gridData$: Observable<ODataResult<{
        id: string;
    }>>;
    gridPagerSettings$: Observable<false | PagerSettings>;
    loadEntities: jest_mock.Mock<jest_mock.UnknownFunction>;
    reloadEntities: jest_mock.Mock<jest_mock.UnknownFunction>;
}

declare function createODataGridMockFacade(mockFacade?: ODataGridMockFacade | any): ODataGridMockFacade;

declare function testGridODataState<TFacade extends IKendoODataGridFacade<unknown>>(done: never, facade: TFacade): Promise<void>;
declare function testGridPagerSettings<TFacade extends IKendoODataGridFacade<unknown>>(facade: TFacade): Promise<void>;

declare function getKendoGridODataHeaderOverride(): MetadataOverride<Component>;

export { ODataGridMockFacade, createODataGridMockFacade, getKendoGridODataHeaderOverride, testGridODataState, testGridPagerSettings };
