import { FrameLocator, Page, Locator, Response, PageAssertionsToHaveScreenshotOptions } from '@playwright/test';

declare class BasePageObjectModel implements LocatorContext {
    page: Page;
    sbFrame: FrameLocator;
    componentName: string;
    componentType: 'components' | 'forms' | 'patterns';
    _locatorContext: LocatorContext;
    constructor(page: Page, componentName: string, componentType: 'components' | 'forms' | 'patterns');
    get frame(): FrameLocator;
    getByAltText(text: string | RegExp, options?: {
        exact?: boolean;
    }): Locator;
    getByLabel(text: string | RegExp, options?: {
        exact?: boolean;
    }): Locator;
    getByPlaceholder(text: string | RegExp, options?: {
        exact?: boolean;
    }): Locator;
    getByRole(role: 'alert' | 'alertdialog' | 'application' | 'article' | 'banner' | 'blockquote' | 'button' | 'caption' | 'cell' | 'checkbox' | 'code' | 'columnheader' | 'combobox' | 'complementary' | 'contentinfo' | 'definition' | 'deletion' | 'dialog' | 'directory' | 'document' | 'emphasis' | 'feed' | 'figure' | 'form' | 'generic' | 'grid' | 'gridcell' | 'group' | 'heading' | 'img' | 'insertion' | 'link' | 'list' | 'listbox' | 'listitem' | 'log' | 'main' | 'marquee' | 'math' | 'meter' | 'menu' | 'menubar' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'navigation' | 'none' | 'note' | 'option' | 'paragraph' | 'presentation' | 'progressbar' | 'radio' | 'radiogroup' | 'region' | 'row' | 'rowgroup' | 'rowheader' | 'scrollbar' | 'search' | 'searchbox' | 'separator' | 'slider' | 'spinbutton' | 'status' | 'strong' | 'subscript' | 'superscript' | 'switch' | 'tab' | 'table' | 'tablist' | 'tabpanel' | 'term' | 'textbox' | 'time' | 'timer' | 'toolbar' | 'tooltip' | 'tree' | 'treegrid' | 'treeitem', options?: {
        checked?: boolean;
        disabled?: boolean;
        exact?: boolean;
        expanded?: boolean;
        includeHidden?: boolean;
        level?: number;
        name?: string | RegExp;
        pressed?: boolean;
        selected?: boolean;
    }): Locator;
    getByTestId(testId: string | RegExp): Locator;
    getByText(text: string | RegExp, options?: {
        exact?: boolean;
    }): Locator;
    getByTitle(text: string | RegExp, options?: {
        exact?: boolean;
    }): Locator;
    locator(selector: string, options?: {
        has?: Locator;
        hasNot?: Locator;
        hasNotText?: string | RegExp;
        hasText?: string | RegExp;
    }): Locator;
    goToPage(variant?: string, waitUntil?: 'load' | 'domcontentloaded' | 'networkidle' | 'commit' | undefined): Promise<Response | null>;
    /**
     * Permet de naviguer vers l'url de la story en mode standalone (hors storybook).
     */
    goToFullScreenPage(variant?: string, svgName?: string): Promise<void>;
    /**
     * Test par comparaison de screenshot. Permet de prévenir les régressions visuelles sur un composant.
     *
     * @param componentLocator Locator correspondant au composant sujet du screenshot
     * @param screenshotName Nom du screenshot (souvent le nom du composant)
     * @param options Options possibles de la méthode toHaveScreenshot
     */
    testSnapshot(componentLocator: Locator | Page, screenshotName: string, options?: PageAssertionsToHaveScreenshotOptions): Promise<void>;
    /**
     * Permet de vérifier le bon chargement d'un svg via la reponse de sa requête http.
     *
     * @param name Nom du svg (sans l'extension '.svg'). Vérifie le chargement de n'importe quel svg si non renseigné
     * @returns La Requête reçue correspondant au chargement du svg
     */
    waitForSvg(name?: string): Promise<Response>;
    /**
     * Test le bon chargement du svg correspondant après avoir effectué une action spécifique afin d'assurer
     * la cohérence graphique d'une page en cas de tests screenshot
     *
     * @param action Promise correspondant à l'action censé déclencher le chargement du nouveau svg
     * @param svgName Nom du svg sensé être chargé (sans l'extension '.svg'). Vérifie le chargement de n'importe quel svg si non renseigné
     * @returns Une Promise contenant un tableau avec en index 0 le retour de l'action effectuée et en index 1 la reponse
     * de la requête d'appel du svg
     */
    doActionAndCheckSvg<T>(action: Promise<T>, svgName?: string): Promise<Awaited<T | Response>[]>;
    /**
     * Permet de récupérer des éléments appartenant à l'onglet 'Controls' de Storybook.
     */
    sbControlLocator(selector: string, options?: {
        has?: Locator;
        hasNot?: Locator;
        hasNotText?: string | RegExp;
        hasText?: string | RegExp;
    }): Locator;
    /**
     * Actionne la combinaison clavier spécifiée et assure que le focus est positionné sur le bon élément en séquence.
     *
     * @param tabNavigationSequence Décrit la séquence de navigation attendue.
     * @param keyPressContext Fournit le locator pointant vers l'élément qui doit être actionné.
     * @param withShift
     */
    expectTabSequence(tabNavigationSequence: Locator[], keyPressContext: Locator, withShift?: boolean): Promise<void>;
}
/**
 * Abstraction du contxte de localisation Playwright.
 */
interface LocatorContext extends Omit<FrameLocator, 'first' | 'last' | 'nth' | 'frameLocator' | 'owner'> {
}

export { BasePageObjectModel };
