---@meta

---@class HexisActionHandle
---@class HexisEventSubscription
---@alias HexisActionCode 'aim_failed'|'arrival_unconfirmed'|'authority_lost'|'break_unconfirmed'|'busy'|'cancelled'|'component_too_large'|'denied'|'gui_precondition_failed'|'internal_error'|'invalid_argument'|'item_not_found'|'navigation_failed'|'ok'|'player_dead'|'player_low_health'|'screen_changed'|'screen_closed'|'search_node_limit'|'target_lost'|'terrain_incomplete'|'timeout'|'unreachable'|'world_changed'
---@class HexisActionResult
---@field status 'succeeded'|'failed'|'cancelled'
---@field ok boolean
---@field code HexisActionCode
---@field retryable boolean
---@field message string
---@field data table

---@param request table
---@return HexisActionHandle
function hexis.area.enter(request) end

---@param handle HexisActionHandle
---@param options? table
---@return HexisActionResult
function hexis.await(handle, options) end

---@param handle HexisActionHandle
---@return HexisActionResult
function hexis.cancel(handle) end

---@param request table
---@return HexisActionHandle
function hexis.combat.engage(request) end

---@param request table
---@return HexisActionHandle
function hexis.combat.fire(request) end

---@return table
function hexis.config.snapshot() end

---@param request {name: string}
---@return table
function hexis.content.pack(request) end

---@param subscription HexisEventSubscription
---@param options? table
---@return table
function hexis.events.next(subscription, options) end

---@param request table
---@return HexisEventSubscription
function hexis.events.subscribe(request) end

---@param subscription HexisEventSubscription
---@return table
function hexis.events.unsubscribe(subscription) end

---@param request table
---@return HexisActionHandle
function hexis.foraging.catch_tadpole(request) end

---@param request table
---@return table
function hexis.gui.snapshot(request) end

---@param request table
---@return HexisActionHandle
function hexis.gui.transact(request) end

---@param request table
---@return HexisActionHandle
function hexis.interact.use(request) end

---@param request table
---@return HexisActionHandle
function hexis.inventory.ensure_held(request) end

---@param request table
---@return HexisActionHandle
function hexis.mining.mine_area(request) end

---@param request table
---@return HexisActionHandle
function hexis.mining.mine_block(request) end

---@param request table
---@return HexisActionHandle
function hexis.mining.mine_connected(request) end

---@param request table
---@return HexisActionHandle
function hexis.navigate.to(request) end

---@param request table
---@return table
function hexis.routes.seeds(request) end

---@param candidates (HexisActionHandle|HexisEventSubscription)[]
---@param options? table
---@return table
function hexis.select(candidates, options) end

---@param seconds number
function hexis.sleep(seconds) end

---@return {seconds: number}
function hexis.time.monotonic() end

---@param request table
---@return table
function hexis.world.blocks.find(request) end

---@param request table
---@return table
function hexis.world.blocks.observe(request) end

---@param request table
---@return table
function hexis.world.crosshair.observe(request) end

---@param request table
---@return table
function hexis.world.entities.find(request) end
