import { Page, Locator } from '@playwright/test';
import { LoginPage } from './LoginPage';
declare class ModelerHomePage {
    private defaultFolderName;
    private page;
    readonly modelerPageBanner: Locator;
    readonly createNewProjectButton: Locator;
    readonly projectNameInput: Locator;
    readonly formNameInput: Locator;
    readonly chooseBpmnTemplateButton: Locator;
    readonly diagramTypeDropdown: Locator;
    readonly bpmnTemplateOption: Locator;
    readonly formTemplateOption: Locator;
    readonly idpTemplateOption: Locator;
    readonly idpApplicationNameInput: Locator;
    readonly createIdpApplicationButton: Locator;
    readonly projectBreadcrumb: Locator;
    readonly openOrganizationsButton: Locator;
    readonly optionsButton: Locator;
    readonly manageButton: Locator;
    readonly crossComponentProjectFolder: Locator;
    readonly homeBreadcrumb: Locator;
    readonly rows: Locator;
    readonly uploadFilesButton: Locator;
    readonly dialog: Locator;
    readonly messageBanner: Locator;
    readonly closeButton: Locator;
    readonly formNameBreadcrumb: (formName: string) => Locator;
    constructor(page: Page);
    dismissOverlays(): Promise<void>;
    clickCreateNewProjectButton(): Promise<void>;
    enterNewProjectName(name: string): Promise<void>;
    enterIdpApplicationName(name: string): Promise<void>;
    selectCluster(clusterName: string): Promise<void>;
    createForm(formName: string): Promise<void>;
    clickCreateIdpApplicationButton(): Promise<void>;
    clickChooseBpmnTemplateButton(): Promise<void>;
    reload(): Promise<void>;
    getProjectNames(name: string): Promise<string[]>;
    clickProcessDiagram(name: string): Promise<void>;
    clickDiagramTypeDropdown(): Promise<void>;
    clickBpmnTemplateOption(): Promise<void>;
    clickIdpApplicationTemplateOption(): Promise<void>;
    clickFormOption(): Promise<void>;
    enterFormName(name: string): Promise<void>;
    clickProjectBreadcrumb(): Promise<void>;
    clickHomeBreadcrumb(): Promise<void>;
    clickOpenOrganizationsButton(): Promise<void>;
    clickCrossComponentProjectFolder(): Promise<void>;
    createCrossComponentProjectFolder(): Promise<void>;
    clickManageButton(retries?: number): Promise<void>;
    clickUploadFilesButton(): Promise<void>;
    clickMessageBanner(): Promise<void>;
    assertFormBreadcrumbVisible(formName: string): Promise<void>;
    /**
     * Handles navigation after clicking an invitation link in email.
     *
     * The invited user follows the link while logged out, so the invitation flow
     * presents the Auth0 login. Completing the login ON the invitation flow lets
     * SaaS accept the invite and land the user directly in the SHARED org's
     * Modeler, where the shared project is listed.
     *
     * We deliberately do NOT clear cookies and re-login via the app switcher:
     * that path authenticates into the user's PERSONAL org, where the shared
     * project does not exist and the folder can never appear — the previous
     * fallback raced a 15s window and, whenever the (normal) login + invite-accept
     * redirect chain took longer, dropped into that personal-org path and hung.
     *
     * If the link auto-authenticated (the banner is already up), no login is
     * needed. The redirect chain routinely takes longer than a few seconds, so
     * wait generously for the banner instead of racing a short window.
     */
    navigateAfterInvitationLink(loginPage: LoginPage, credentials: {
        username: string;
        password: string;
    }): Promise<void>;
}
export { ModelerHomePage };
