# Interface BaseComputer

public interface BaseComputer
Defines an interface for computer environments.

This interface defines the standard methods for controlling computer environments, including web browsers and other interactive systems.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `clickAt(int x, int y)`
  Clicks at a specific x, y coordinate on the webpage.
  `io.reactivex.rxjava3.core.Completable`
  `close()`
  Cleanup resources.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `currentState()`
  Returns current state.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `dragAndDrop(int x, int y, int destinationX, int destinationY)`
  Drag and drop.
  `io.reactivex.rxjava3.core.Single<ComputerEnvironment>`
  `environment()`
  Returns the environment.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `goBack()`
  Navigates back.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `goForward()`
  Navigates forward.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `hoverAt(int x, int y)`
  Hovers at a specific x, y coordinate on the webpage.
  `io.reactivex.rxjava3.core.Completable`
  `initialize()`
  Initialize the computer.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `keyCombination(List<String> keys)`
  Presses key combination.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `navigate(String url)`
  Navigates to URL.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `openWebBrowser()`
  Opens the web browser.
  `io.reactivex.rxjava3.core.Single<int[]>`
  `screenSize()`
  Returns the screen size of the environment.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `scrollAt(int x, int y, String direction, int magnitude)`
  Scrolls at a specific x, y coordinate by magnitude.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `scrollDocument(String direction)`
  Scrolls the entire webpage in a direction.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `search()`
  Jumps to search.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `typeTextAt(int x, int y, String text, Boolean pressEnter, Boolean clearBeforeTyping)`
  Types text at a specific x, y coordinate.
  `io.reactivex.rxjava3.core.Single<ComputerState>`
  `wait(Duration duration)`
  Waits for specified duration.

- ## Method Details

  - ### screenSize

    io.reactivex.rxjava3.core.Single<int[]> screenSize()
    Returns the screen size of the environment.

  - ### openWebBrowser

    io.reactivex.rxjava3.core.Single<ComputerState> openWebBrowser()
    Opens the web browser.

  - ### clickAt

    io.reactivex.rxjava3.core.Single<ComputerState> clickAt(int x, int y)
    Clicks at a specific x, y coordinate on the webpage.

  - ### hoverAt

    io.reactivex.rxjava3.core.Single<ComputerState> hoverAt(int x, int y)
    Hovers at a specific x, y coordinate on the webpage.

  - ### typeTextAt

    io.reactivex.rxjava3.core.Single<ComputerState> typeTextAt(int x, int y, String text, Boolean pressEnter, Boolean clearBeforeTyping)
    Types text at a specific x, y coordinate.

  - ### scrollDocument

    io.reactivex.rxjava3.core.Single<ComputerState> scrollDocument(String direction)
    Scrolls the entire webpage in a direction.

  - ### scrollAt

    io.reactivex.rxjava3.core.Single<ComputerState> scrollAt(int x, int y, String direction, int magnitude)
    Scrolls at a specific x, y coordinate by magnitude.

  - ### wait

    io.reactivex.rxjava3.core.Single<ComputerState> wait(Duration duration)
    Waits for specified duration.

  - ### goBack

    io.reactivex.rxjava3.core.Single<ComputerState> goBack()
    Navigates back.

  - ### goForward

    io.reactivex.rxjava3.core.Single<ComputerState> goForward()
    Navigates forward.

  - ### search

    io.reactivex.rxjava3.core.Single<ComputerState> search()
    Jumps to search.

  - ### navigate

    io.reactivex.rxjava3.core.Single<ComputerState> navigate(String url)
    Navigates to URL.

  - ### keyCombination

    io.reactivex.rxjava3.core.Single<ComputerState> keyCombination(List<String> keys)
    Presses key combination.

  - ### dragAndDrop

    io.reactivex.rxjava3.core.Single<ComputerState> dragAndDrop(int x, int y, int destinationX, int destinationY)
    Drag and drop.

  - ### currentState

    io.reactivex.rxjava3.core.Single<ComputerState> currentState()
    Returns current state.

  - ### initialize

    io.reactivex.rxjava3.core.Completable initialize()
    Initialize the computer.

  - ### close

    io.reactivex.rxjava3.core.Completable close()
    Cleanup resources.

  - ### environment

    io.reactivex.rxjava3.core.Single<ComputerEnvironment> environment()
    Returns the environment.