import { Locator, Page } from '@playwright/test';
/**
 * Check if the Sandbox tab is visible in the edit-mentor modal.
 * Returns true if the tab exists and is visible (i.e. mentor has is_claw_enabled === true).
 */
export declare function isSandboxTabVisible(page: Page): Promise<boolean>;
/**
 * Switch to the Sandbox tab inside the edit-mentor modal.
 * Assumes the modal is already open and the user has permission to see the tab.
 */
export declare function switchToSandboxTab(page: Page): Promise<void>;
/**
 * Switch to the Skills tab inside the edit-mentor modal.
 */
export declare function switchToSkillsTab(page: Page): Promise<void>;
/**
 * Verify the instance table is visible with all expected column headers.
 * Should be called when the mentor has no connected sandbox instance.
 */
export declare function verifyInstanceTableVisible(page: Page): Promise<void>;
/**
 * Get the number of rows currently displayed in the instance table (excluding empty-state rows).
 */
export declare function getInstanceRowCount(page: Page): Promise<number>;
/**
 * Verify the empty state is shown when there are no instances.
 */
export declare function verifyInstanceTableEmpty(page: Page): Promise<void>;
/**
 * Filter the instance table by search query (name or URL).
 */
export declare function searchInstances(page: Page, query: string): Promise<void>;
/**
 * Clear the instance table search query.
 */
export declare function clearInstanceSearch(page: Page): Promise<void>;
/**
 * Open the Actions dropdown menu for a specific instance row.
 * Returns the dropdown menu locator.
 */
export declare function openInstanceActionsMenu(page: Page, instanceName: string): Promise<Locator>;
/**
 * Open the "New Instance" dialog by clicking the Add Instance button.
 * Returns the dialog locator.
 */
export declare function openNewInstanceDialog(page: Page): Promise<Locator>;
/**
 * Fill the New Instance form and submit it.
 * @param name - Display name for the instance
 * @param serverUrl - Fully qualified https URL
 * @param clawType - 'openclaw' (default) or 'ironclaw'
 * @param gatewayToken - Optional auth token
 */
export declare function createInstance(page: Page, { name, serverUrl, clawType, gatewayToken, }: {
    name: string;
    serverUrl: string;
    clawType?: 'openclaw' | 'ironclaw';
    gatewayToken?: string;
}): Promise<void>;
/**
 * Cancel the New Instance dialog without submitting.
 */
export declare function cancelNewInstanceDialog(page: Page): Promise<void>;
/**
 * Open the Edit dialog for an instance from its Actions menu.
 * Returns the edit dialog locator.
 */
export declare function openEditInstanceDialog(page: Page, instanceName: string): Promise<Locator>;
/**
 * Edit an existing instance with new values.
 * @param instanceName - The current name of the instance to edit
 * @param updates - Fields to update
 */
export declare function editInstance(page: Page, instanceName: string, updates: {
    name?: string;
    serverUrl?: string;
    clawType?: 'openclaw' | 'ironclaw';
}): Promise<void>;
/**
 * Delete an instance via the Actions menu, confirming the deletion dialog.
 */
export declare function deleteInstance(page: Page, instanceName: string): Promise<void>;
/**
 * Open the delete confirmation dialog and cancel it without deleting.
 */
export declare function cancelDeleteInstance(page: Page, instanceName: string): Promise<void>;
/**
 * Connect the current mentor to an instance via the Actions menu.
 */
export declare function connectToInstance(page: Page, instanceName: string): Promise<void>;
/**
 * Disconnect the current mentor from its connected instance,
 * confirming the disconnect dialog.
 */
export declare function disconnectInstance(page: Page): Promise<void>;
/**
 * Open the disconnect confirmation dialog and cancel it.
 */
export declare function cancelDisconnectInstance(page: Page): Promise<void>;
/**
 * Open an instance's actions menu and click "Run checks". Resolves once the
 * health-check + connectivity-test toasts have surfaced (success or error).
 */
export declare function runInstanceChecks(page: Page, instanceName: string): Promise<void>;
/**
 * Trigger the "Run checks" button on the connected-instance card. Used for the
 * connected-state flow rather than the table dropdown.
 */
export declare function runConnectedInstanceChecks(page: Page): Promise<void>;
/**
 * Read the canonical health label rendered by `StatusDot` for the given row.
 * Returns "Healthy" / "Unhealthy" / null (em-dash for unknown).
 */
export declare function getInstanceHealthLabel(page: Page, instanceName: string): Promise<'Healthy' | 'Unhealthy' | null>;
/**
 * Read the canonical status label rendered by `StatusDot` for the given row.
 * Returns "Active" / "Error" / null (em-dash for unknown).
 */
export declare function getInstanceStatusLabel(page: Page, instanceName: string): Promise<'Active' | 'Error' | null>;
/**
 * Verify that the Connect dropdown item is blocked (dimmed + cursor-not-allowed)
 * because the instance status is unhealthy. Hovering should reveal the unhealthy
 * tooltip explaining why.
 */
export declare function verifyConnectDisabledForUnhealthy(page: Page, instanceName: string): Promise<void>;
/**
 * Verify the Connected Instance card shows the expected fields.
 * The URL field shows the full server_url; other fields are status/health/last-check.
 */
export declare function verifyConnectedInstanceCard(page: Page): Promise<void>;
/**
 * Toggle the Auto Push on Save switch.
 * Returns the new checked state.
 */
export declare function toggleAutoPush(page: Page): Promise<boolean>;
/**
 * Click the Push button to push the current configuration to the worker.
 */
export declare function pushConfiguration(page: Page): Promise<void>;
/**
 * Open the LLM provider picker by clicking Change (or Select Model) in the Model row.
 * Returns the picker dialog locator.
 */
export declare function openLLMProviderPicker(page: Page): Promise<Locator>;
/**
 * Pick an LLM provider + model combination via the provider picker flow.
 * @param providerName - The provider key (e.g. 'anthropic', 'openai')
 * @param modelName - The model name (e.g. 'claude-sonnet-4-5-20250929')
 */
export declare function selectLLMModel(page: Page, providerName: string, modelName: string): Promise<void>;
/**
 * Get the currently-selected model identifier shown next to the Model row.
 * Returns null if no model is set (button reads "Select Model").
 */
export declare function getCurrentModel(page: Page): Promise<string | null>;
declare const AGENT_PROMPT_LABELS: readonly ["Identity", "Soul", "User Context", "Tools", "Agents", "Bootstrap", "Heartbeat", "Memory"];
export type AgentPromptField = (typeof AGENT_PROMPT_LABELS)[number];
/**
 * Verify that all 8 agent config prompt fields are visible in the Prompts tab.
 * Only renders when the mentor has enable_claw === true on its settings.
 *
 * Note: PATCH on the agent-config endpoint is upsert — there's no separate
 * "Create Agent Config" button anymore. The first edit on any field bootstraps
 * the row.
 */
export declare function verifyAgentConfigPromptsVisible(page: Page): Promise<void>;
/**
 * Open the edit modal for a specific agent prompt field (e.g. Identity, Soul).
 */
export declare function openAgentPromptEditModal(page: Page, field: AgentPromptField): Promise<Locator>;
/**
 * Edit an agent prompt field (opens the modal, types content, saves).
 */
export declare function editAgentPrompt(page: Page, field: AgentPromptField, content: string): Promise<void>;
/**
 * Verify the Skills tab content is loaded (either showing skill rows or the empty state).
 */
export declare function verifySkillsTabVisible(page: Page): Promise<void>;
/**
 * Verify that the "No skills available" empty state is shown.
 */
export declare function verifySkillsEmptyState(page: Page): Promise<void>;
/**
 * Count the number of skill rows rendered in the Skills tab.
 * Each row represents an available (enabled) platform skill.
 */
export declare function getSkillRowCount(page: Page): Promise<number>;
/**
 * Verify that a specific skill row is visible in the Skills tab.
 */
export declare function verifySkillVisible(page: Page, skillName: string): Promise<void>;
/**
 * Check if a specific skill is currently enabled for the mentor.
 */
export declare function isSkillEnabled(page: Page, skillName: string): Promise<boolean>;
/**
 * Enable a skill for the current mentor by toggling it on.
 * No-op if already enabled. Waits for the success toast.
 */
export declare function enableSkill(page: Page, skillName: string): Promise<void>;
/**
 * Disable a skill for the current mentor by toggling it off.
 * No-op if already disabled. Waits for the success toast.
 */
export declare function disableSkill(page: Page, skillName: string): Promise<void>;
/**
 * Toggle a skill's enabled state (flips whatever the current state is).
 * Returns the new checked state.
 */
export declare function toggleSkill(page: Page, skillName: string): Promise<boolean>;
export interface SkillFormValues {
    name: string;
    slug: string;
    description?: string;
    version?: string;
    instruction?: string;
}
/**
 * Open the "New Skill" dialog by clicking the New Skill button in the Skills tab.
 * Returns the dialog locator.
 */
export declare function openNewSkillDialog(page: Page): Promise<Locator>;
/**
 * Create a new platform-level skill via the Skills tab.
 */
export declare function createSkill(page: Page, values: SkillFormValues): Promise<void>;
/**
 * Open the Actions dropdown for a specific skill row.
 * Returns the dropdown menu locator.
 */
export declare function openSkillActionsMenu(page: Page, skillName: string): Promise<Locator>;
/**
 * Open the Edit Skill dialog from the actions menu.
 * Returns the dialog locator.
 */
export declare function openEditSkillDialog(page: Page, skillName: string): Promise<Locator>;
/**
 * Edit an existing platform-level skill.
 * @param skillName - The current name of the skill to edit
 * @param updates - Fields to update on the skill
 */
export declare function editSkill(page: Page, skillName: string, updates: Partial<SkillFormValues>): Promise<void>;
/**
 * Delete a platform-level skill, confirming the deletion dialog.
 */
export declare function deleteSkill(page: Page, skillName: string): Promise<void>;
/**
 * Open the delete confirmation for a skill and cancel it (no deletion).
 */
export declare function cancelDeleteSkill(page: Page, skillName: string): Promise<void>;
/**
 * Full workflow: open Sandbox tab, create a new instance, connect the mentor to it.
 * Returns when the mentor is successfully connected.
 */
export declare function setupSandboxInstance(page: Page, instance: {
    name: string;
    serverUrl: string;
    clawType?: 'openclaw' | 'ironclaw';
    gatewayToken?: string;
}): Promise<void>;
/**
 * Full workflow: open Sandbox tab, disconnect the current instance (if any),
 * then delete it from the table.
 */
export declare function teardownSandboxInstance(page: Page, instanceName: string): Promise<void>;
export {};
