using Recordingtest.Player.Model;
namespace Recordingtest.Player;
/// Element bounds in screen pixels.
public readonly record struct ElementBounds(double X, double Y, double Width, double Height);
/// Resolved element handle (opaque to the engine).
public readonly record struct ResolvedElement(ElementBounds Bounds, object? Native);
public readonly record struct ScreenPoint(int X, int Y);
public interface IPlayerHost
{
/// Resolve a UIA path with retry/timeout. Returns null if not found.
ResolvedElement? ResolveElement(string uiaPath, TimeSpan timeout);
/// Wait for a wait_for hint to be satisfied. Returns false on timeout.
bool WaitFor(string waitForHint, TimeSpan timeout);
void Click(ScreenPoint point);
void Type(string text);
void Drag(ScreenPoint from, ScreenPoint to);
void Hotkey(string keys);
void CaptureCheckpoint(int afterStep, string saveAs);
void CaptureFailureArtifacts(int stepIndex, string reason);
}