import { ElementRef, InjectionToken } from '@angular/core';
import { ModifierKeys } from '@angular/cdk/testing';
import { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';
import { ComponentFixture } from '@angular/core/testing';

declare class MockElementRef extends ElementRef {
    /** @hidden */
    constructor();
}

/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

/**
 * Dispatches a keydown event from an element.
 * @docs-private
 */
declare function createKeyboardEvent(type: string, keyCode?: number, key?: string, target?: Element, modifiers?: ModifierKeys): KeyboardEvent;
/**
 * Creates a browser MouseEvent with the specified options.
 * @docs-private
 */
declare function createMouseEvent(type: string, x?: number, y?: number, button?: number): MouseEvent;

declare const MOBILE_CONFIG_TEST_TOKEN: InjectionToken<MobileModeConfig>;

interface MobileElements {
    dialogTitle: HTMLElement;
    dialogFooter: HTMLElement;
    footerButtons: HTMLElement[];
    dialogCloseBtn: HTMLElement;
}
/**
 * @returns Set of HTML references to configurable elements of MobileMode dialog view
 * */
declare function getMobileModeViewElements(fixture: ComponentFixture<any>): MobileElements;

/** Waits for the fixture to be stable, i.e. for async tasks to complete. */
declare function whenStable(fixture: ComponentFixture<any>): Promise<void>;

export { MOBILE_CONFIG_TEST_TOKEN, MockElementRef, createKeyboardEvent, createMouseEvent, getMobileModeViewElements, whenStable };
