--[[
  Generated with github.com/astrochili/defold-annotations
  Defold 1.10.2

  GUI API documentation

  GUI core hooks, functions, messages, properties and constants for
  creation and manipulation of GUI nodes. The "gui" namespace is
  accessible only from gui scripts.
--]]

---@meta
---@diagnostic disable: lowercase-global
---@diagnostic disable: missing-return
---@diagnostic disable: duplicate-doc-param
---@diagnostic disable: duplicate-set-field
---@diagnostic disable: args-after-dots

---@class defold_api.gui
gui = {}

---Adjust mode is used when the screen resolution differs from the project settings.
---The fit mode ensures that the entire node is visible in the adjusted gui scene.
gui.ADJUST_FIT = nil

---Adjust mode is used when the screen resolution differs from the project settings.
---The stretch mode ensures that the node is displayed as is in the adjusted gui scene, which might scale it non-uniformally.
gui.ADJUST_STRETCH = nil

---Adjust mode is used when the screen resolution differs from the project settings.
---The zoom mode ensures that the node fills its entire area and might make the node exceed it.
gui.ADJUST_ZOOM = nil

---bottom y-anchor
gui.ANCHOR_BOTTOM = nil

---left x-anchor
gui.ANCHOR_LEFT = nil

---no anchor
gui.ANCHOR_NONE = nil

---right x-anchor
gui.ANCHOR_RIGHT = nil

---top y-anchor
gui.ANCHOR_TOP = nil

---additive blending
gui.BLEND_ADD = nil

---additive alpha blending
gui.BLEND_ADD_ALPHA = nil

---alpha blending
gui.BLEND_ALPHA = nil

---multiply blending
gui.BLEND_MULT = nil

---screen blending
gui.BLEND_SCREEN = nil

---clipping mode none
gui.CLIPPING_MODE_NONE = nil

---clipping mode stencil
gui.CLIPPING_MODE_STENCIL = nil

---in-back
gui.EASING_INBACK = nil

---in-bounce
gui.EASING_INBOUNCE = nil

---in-circlic
gui.EASING_INCIRC = nil

---in-cubic
gui.EASING_INCUBIC = nil

---in-elastic
gui.EASING_INELASTIC = nil

---in-exponential
gui.EASING_INEXPO = nil

---in-out-back
gui.EASING_INOUTBACK = nil

---in-out-bounce
gui.EASING_INOUTBOUNCE = nil

---in-out-circlic
gui.EASING_INOUTCIRC = nil

---in-out-cubic
gui.EASING_INOUTCUBIC = nil

---in-out-elastic
gui.EASING_INOUTELASTIC = nil

---in-out-exponential
gui.EASING_INOUTEXPO = nil

---in-out-quadratic
gui.EASING_INOUTQUAD = nil

---in-out-quartic
gui.EASING_INOUTQUART = nil

---in-out-quintic
gui.EASING_INOUTQUINT = nil

---in-out-sine
gui.EASING_INOUTSINE = nil

---in-quadratic
gui.EASING_INQUAD = nil

---in-quartic
gui.EASING_INQUART = nil

---in-quintic
gui.EASING_INQUINT = nil

---in-sine
gui.EASING_INSINE = nil

---linear interpolation
gui.EASING_LINEAR = nil

---out-back
gui.EASING_OUTBACK = nil

---out-bounce
gui.EASING_OUTBOUNCE = nil

---out-circlic
gui.EASING_OUTCIRC = nil

---out-cubic
gui.EASING_OUTCUBIC = nil

---out-elastic
gui.EASING_OUTELASTIC = nil

---out-exponential
gui.EASING_OUTEXPO = nil

---out-in-back
gui.EASING_OUTINBACK = nil

---out-in-bounce
gui.EASING_OUTINBOUNCE = nil

---out-in-circlic
gui.EASING_OUTINCIRC = nil

---out-in-cubic
gui.EASING_OUTINCUBIC = nil

---out-in-elastic
gui.EASING_OUTINELASTIC = nil

---out-in-exponential
gui.EASING_OUTINEXPO = nil

---out-in-quadratic
gui.EASING_OUTINQUAD = nil

---out-in-quartic
gui.EASING_OUTINQUART = nil

---out-in-quintic
gui.EASING_OUTINQUINT = nil

---out-in-sine
gui.EASING_OUTINSINE = nil

---out-quadratic
gui.EASING_OUTQUAD = nil

---out-quartic
gui.EASING_OUTQUART = nil

---out-quintic
gui.EASING_OUTQUINT = nil

---out-sine
gui.EASING_OUTSINE = nil

---default keyboard
gui.KEYBOARD_TYPE_DEFAULT = nil

---email keyboard
gui.KEYBOARD_TYPE_EMAIL = nil

---number input keyboard
gui.KEYBOARD_TYPE_NUMBER_PAD = nil

---password keyboard
gui.KEYBOARD_TYPE_PASSWORD = nil

---elliptical pie node bounds
gui.PIEBOUNDS_ELLIPSE = nil

---rectangular pie node bounds
gui.PIEBOUNDS_RECTANGLE = nil

---center pivot
gui.PIVOT_CENTER = nil

---east pivot
gui.PIVOT_E = nil

---north pivot
gui.PIVOT_N = nil

---north-east pivot
gui.PIVOT_NE = nil

---north-west pivot
gui.PIVOT_NW = nil

---south pivot
gui.PIVOT_S = nil

---south-east pivot
gui.PIVOT_SE = nil

---south-west pivot
gui.PIVOT_SW = nil

---west pivot
gui.PIVOT_W = nil

---loop backward
gui.PLAYBACK_LOOP_BACKWARD = nil

---loop forward
gui.PLAYBACK_LOOP_FORWARD = nil

---ping pong loop
gui.PLAYBACK_LOOP_PINGPONG = nil

---once backward
gui.PLAYBACK_ONCE_BACKWARD = nil

---once forward
gui.PLAYBACK_ONCE_FORWARD = nil

---once forward and then backward
gui.PLAYBACK_ONCE_PINGPONG = nil

---color property
gui.PROP_COLOR = nil

---euler property
gui.PROP_EULER = nil

---fill_angle property
gui.PROP_FILL_ANGLE = nil

---inner_radius property
gui.PROP_INNER_RADIUS = nil

---leading property
gui.PROP_LEADING = nil

---outline color property
gui.PROP_OUTLINE = nil

---position property
gui.PROP_POSITION = nil

---rotation property
gui.PROP_ROTATION = nil

---scale property
gui.PROP_SCALE = nil

---shadow color property
gui.PROP_SHADOW = nil

---size property
gui.PROP_SIZE = nil

---slice9 property
gui.PROP_SLICE9 = nil

---tracking property
gui.PROP_TRACKING = nil

---The provided data is not in the expected format or is in some other way
---incorrect, for instance the image data provided to gui.new_texture().
gui.RESULT_DATA_ERROR = nil

---The system is out of resources, for instance when trying to create a new
---texture using gui.new_texture().
gui.RESULT_OUT_OF_RESOURCES = nil

---The texture id already exists when trying to use gui.new_texture().
gui.RESULT_TEXTURE_ALREADY_EXISTS = nil

---The size of the node is determined by the currently assigned texture.
gui.SIZE_MODE_AUTO = nil

---The size of the node is determined by the size set in the editor, the constructor or by gui.set_size()
gui.SIZE_MODE_MANUAL = nil

---box type
gui.TYPE_BOX = nil

---custom type
gui.TYPE_CUSTOM = nil

---particlefx type
gui.TYPE_PARTICLEFX = nil

---pie type
gui.TYPE_PIE = nil

---text type
gui.TYPE_TEXT = nil

---This starts an animation of a node property according to the specified parameters.
---If the node property is already being animated, that animation will be canceled and
---replaced by the new one. Note however that several different node properties
---can be animated simultaneously. Use gui.cancel_animation to stop the animation
---before it has completed.
---Composite properties of type vector3, vector4 or quaternion
---also expose their sub-components (x, y, z and w).
---You can address the components individually by suffixing the name with a dot '.'
---and the name of the component.
---For instance, "position.x" (the position x coordinate) or "color.w"
---(the color alpha value).
---If a complete_function (Lua function) is specified, that function will be called
---when the animation has completed.
---By starting a new animation in that function, several animations can be sequenced
---together. See the examples below for more information.
---@param node node node to animate
---@param property string|constant property to animate
---  
---  "position"
---  "rotation"
---  "euler"
---  "scale"
---  "color"
---  "outline"
---  "shadow"
---  "size"
---  "fill_angle" (pie)
---  "inner_radius" (pie)
---  "leading" (text)
---  "tracking" (text)
---  "slice9" (slice9)
---  
---  The following property constants are defined equaling the corresponding property string names.
---  
---  gui.PROP_POSITION
---  gui.PROP_ROTATION
---  gui.PROP_EULER
---  gui.PROP_SCALE
---  gui.PROP_COLOR
---  gui.PROP_OUTLINE
---  gui.PROP_SHADOW
---  gui.PROP_SIZE
---  gui.PROP_FILL_ANGLE
---  gui.PROP_INNER_RADIUS
---  gui.PROP_LEADING
---  gui.PROP_TRACKING
---  gui.PROP_SLICE9
---  
---@param to number|vector3|vector4|quaternion target property value
---@param easing constant|vector easing to use during animation.
---       Either specify one of the gui.EASING_* constants or provide a
---       vector with a custom curve. See the animation guide for more information.
---@param duration number duration of the animation in seconds.
---@param delay? number delay before the animation starts in seconds.
---@param complete_function? fun(self, node) function to call when the
---       animation has completed
---@param playback? constant playback mode
---  
---  gui.PLAYBACK_ONCE_FORWARD
---  gui.PLAYBACK_ONCE_BACKWARD
---  gui.PLAYBACK_ONCE_PINGPONG
---  gui.PLAYBACK_LOOP_FORWARD
---  gui.PLAYBACK_LOOP_BACKWARD
---  gui.PLAYBACK_LOOP_PINGPONG
---  
function gui.animate(node, property, to, easing, duration, delay, complete_function, playback) end

---If an animation of the specified node is currently running (started by gui.animate), it will immediately be canceled.
---@param node node node that should have its animation canceled
---@param property string|constant property for which the animation should be canceled
---  
---  "position"
---  "rotation"
---  "euler"
---  "scale"
---  "color"
---  "outline"
---  "shadow"
---  "size"
---  "fill_angle" (pie)
---  "inner_radius" (pie)
---  "leading" (text)
---  "tracking" (text)
---  "slice9" (slice9)
---  
function gui.cancel_animation(node, property) end

---Cancels any running flipbook animation on the specified node.
---@param node node node cancel flipbook animation for
function gui.cancel_flipbook(node) end

---Make a clone instance of a node. The cloned node will be identical to the
---original node, except the id which is generated as the string "node" plus
---a sequential unsigned integer value.
---This function does not clone the supplied node's children nodes.
---Use gui.clone_tree for that purpose.
---@param node node node to clone
---@return node clone the cloned node
function gui.clone(node) end

---Make a clone instance of a node and all its children.
---Use gui.clone to clone a node excluding its children.
---@param node node root node to clone
---@return table<hash, node> clones a table mapping node ids to the corresponding cloned nodes
function gui.clone_tree(node) end

---Deletes the specified node. Any child nodes of the specified node will be
---recursively deleted.
---@param node node node to delete
function gui.delete_node(node) end

---Delete a dynamically created texture.
---@param texture string|hash texture id
function gui.delete_texture(texture) end

---Instead of using specific getters such as gui.get_position or gui.get_scale,
---you can use gui.get instead and supply the property as a string or a hash.
---While this function is similar to go.get, there are a few more restrictions
---when operating in the gui namespace. Most notably, only these explicitly named properties are supported:
---"position"
---"rotation"
---"euler"
---"scale"
---"color"
---"outline"
---"shadow"
---"size"
---"fill_angle" (pie)
---"inner_radius" (pie)
---"leading" (text)
---"tracking" (text)
---"slice9" (slice9)
---The value returned will either be a vmath.vector4 or a single number, i.e getting the "position"
---property will return a vec4 while getting the "position.x" property will return a single value.
---You can also use this function to get material constants.
---@param node node node to get the property for
---@param property string|hash|constant the property to retrieve
---@param options? table optional options table (only applicable for material constants)
---  - index integer index into array property (1 based)
function gui.get(node, property, options) end

---Returns the adjust mode of a node.
---The adjust mode defines how the node will adjust itself to screen
---resolutions that differs from the one in the project settings.
---@param node node node from which to get the adjust mode (node)
---@return constant adjust_mode the current adjust mode
---  
---  gui.ADJUST_FIT
---  gui.ADJUST_ZOOM
---  gui.ADJUST_STRETCH
---  
function gui.get_adjust_mode(node) end

---gets the node alpha
---@param node node node from which to get alpha
---@return number alpha alpha
function gui.get_alpha(node) end

---Returns the blend mode of a node.
---Blend mode defines how the node will be blended with the background.
---@param node node node from which to get the blend mode
---@return constant blend_mode blend mode
---  
---  gui.BLEND_ALPHA
---  gui.BLEND_ADD
---  gui.BLEND_ADD_ALPHA
---  gui.BLEND_MULT
---  gui.BLEND_SCREEN
---  
function gui.get_blend_mode(node) end

---If node is set as an inverted clipping node, it will clip anything inside as opposed to outside.
---@param node node node from which to get the clipping inverted state
---@return boolean inverted true or false
function gui.get_clipping_inverted(node) end

---Clipping mode defines how the node will clip it's children nodes
---@param node node node from which to get the clipping mode
---@return constant clipping_mode clipping mode
---  
---    gui.CLIPPING_MODE_NONE
---    gui.CLIPPING_MODE_STENCIL
---  
function gui.get_clipping_mode(node) end

---If node is set as visible clipping node, it will be shown as well as clipping. Otherwise, it will only clip but not show visually.
---@param node node node from which to get the clipping visibility state
---@return boolean visible true or false
function gui.get_clipping_visible(node) end

---Returns the color of the supplied node. The components
---of the returned vector4 contains the color channel values:
---Component
---Color value
---x
---Red value
---y
---Green value
---z
---Blue value
---w
---Alpha value
---@param node node node to get the color from
---@return vector4 color node color
function gui.get_color(node) end

---Returns the rotation of the supplied node.
---The rotation is expressed in degree Euler angles.
---@param node node node to get the rotation from
---@return vector3 rotation node rotation
function gui.get_euler(node) end

---Returns the sector angle of a pie node.
---@param node node node from which to get the fill angle
---@return number angle sector angle
function gui.get_fill_angle(node) end

---Get node flipbook animation.
---@param node node node to get flipbook animation from
---@return hash animation animation id
function gui.get_flipbook(node) end

---This is only useful nodes with flipbook animations. Gets the normalized cursor of the flipbook animation on a node.
---@param node node node to get the cursor for (node)
---@return number cursor cursor value
function gui.get_flipbook_cursor(node) end

---This is only useful nodes with flipbook animations. Gets the playback rate of the flipbook animation on a node.
---@param node node node to set the cursor for
---@return number rate playback rate
function gui.get_flipbook_playback_rate(node) end

---This is only useful for text nodes. The font must be mapped to the gui scene in the gui editor.
---@param node node node from which to get the font
---@return hash font font id
function gui.get_font(node) end

---This is only useful for text nodes. The font must be mapped to the gui scene in the gui editor.
---@param font_name hash|string font of which to get the path hash
---@return hash hash path hash to resource
function gui.get_font_resource(font_name) end

---Returns the scene height.
---@return number height scene height
function gui.get_height() end

---Retrieves the id of the specified node.
---@param node node the node to retrieve the id from
---@return hash id the id of the node
function gui.get_id(node) end

---Retrieve the index of the specified node among its siblings.
---The index defines the order in which a node appear in a GUI scene.
---Higher index means the node is drawn on top of lower indexed nodes.
---@param node node the node to retrieve the id from
---@return number index the index of the node
function gui.get_index(node) end

---gets the node inherit alpha state
---@param node node node from which to get the inherit alpha state
---@return boolean inherit_alpha true or false
function gui.get_inherit_alpha(node) end

---Returns the inner radius of a pie node.
---The radius is defined along the x-axis.
---@param node node node from where to get the inner radius
---@return number radius inner radius
function gui.get_inner_radius(node) end

---The layer must be mapped to the gui scene in the gui editor.
---@param node node node from which to get the layer
---@return hash layer layer id
function gui.get_layer(node) end

---gets the scene current layout
---@return hash layout layout id
function gui.get_layout() end

---Returns the leading value for a text node.
---@param node node node from where to get the leading
---@return number leading leading scaling value (default=1)
function gui.get_leading(node) end

---Returns whether a text node is in line-break mode or not.
---This is only useful for text nodes.
---@param node node node from which to get the line-break for
---@return boolean line_break true or false
function gui.get_line_break(node) end

---Returns the material of a node.
---The material must be mapped to the gui scene in the gui editor.
---@param node node node to get the material for
---@return hash materal material id
function gui.get_material(node) end

---Retrieves the node with the specified id.
---@param id string|hash id of the node to retrieve
---@return node instance a new node instance
function gui.get_node(id) end

---Returns the outer bounds mode for a pie node.
---@param node node node from where to get the outer bounds mode
---@return constant bounds_mode the outer bounds mode of the pie node:
---  
---  gui.PIEBOUNDS_RECTANGLE
---  gui.PIEBOUNDS_ELLIPSE
---  
function gui.get_outer_bounds(node) end

---Returns the outline color of the supplied node.
---See gui.get_color for info how vectors encode color values.
---@param node node node to get the outline color from
---@return vector4 color outline color
function gui.get_outline(node) end

---Returns the parent node of the specified node.
---If the supplied node does not have a parent, nil is returned.
---@param node node the node from which to retrieve its parent
---@return node|nil parent parent instance or nil
function gui.get_parent(node) end

---Get the paricle fx for a gui node
---@param node node node to get particle fx for
---@return hash particlefx particle fx id
function gui.get_particlefx(node) end

---Returns the number of generated vertices around the perimeter
---of a pie node.
---@param node node pie node
---@return number vertices vertex count
function gui.get_perimeter_vertices(node) end

---The pivot specifies how the node is drawn and rotated from its position.
---@param node node node to get pivot from
---@return constant pivot pivot constant
---  
---    gui.PIVOT_CENTER
---    gui.PIVOT_N
---    gui.PIVOT_NE
---    gui.PIVOT_E
---    gui.PIVOT_SE
---    gui.PIVOT_S
---    gui.PIVOT_SW
---    gui.PIVOT_W
---    gui.PIVOT_NW
---  
function gui.get_pivot(node) end

---Returns the position of the supplied node.
---@param node node node to get the position from
---@return vector3 position node position
function gui.get_position(node) end

---Returns the rotation of the supplied node.
---The rotation is expressed as a quaternion
---@param node node node to get the rotation from
---@return quaternion rotation node rotation
function gui.get_rotation(node) end

---Returns the scale of the supplied node.
---@param node node node to get the scale from
---@return vector3 scale node scale
function gui.get_scale(node) end

---Returns the screen position of the supplied node. This function returns the
---calculated transformed position of the node, taking into account any parent node
---transforms.
---@param node node node to get the screen position from
---@return vector3 position node screen position
function gui.get_screen_position(node) end

---Returns the shadow color of the supplied node.
---See gui.get_color for info how vectors encode color values.
---@param node node node to get the shadow color from
---@return vector4 color node shadow color
function gui.get_shadow(node) end

---Returns the size of the supplied node.
---@param node node node to get the size from
---@return vector3 size node size
function gui.get_size(node) end

---Returns the size of a node.
---The size mode defines how the node will adjust itself in size. Automatic
---size mode alters the node size based on the node's content. Automatic size
---mode works for Box nodes and Pie nodes which will both adjust their size
---to match the assigned image. Particle fx and Text nodes will ignore
---any size mode setting.
---@param node node node from which to get the size mode (node)
---@return constant size_mode the current size mode
---  
---  gui.SIZE_MODE_MANUAL
---  gui.SIZE_MODE_AUTO
---  
function gui.get_size_mode(node) end

---Returns the slice9 configuration values for the node.
---@param node node node to manipulate
---@return vector4 values configuration values
function gui.get_slice9(node) end

---Returns the text value of a text node. This is only useful for text nodes.
---@param node node node from which to get the text
---@return string text text value
function gui.get_text(node) end

---Returns the texture of a node.
---This is currently only useful for box or pie nodes.
---The texture must be mapped to the gui scene in the gui editor.
---@param node node node to get texture from
---@return hash texture texture id
function gui.get_texture(node) end

---Returns the tracking value of a text node.
---@param node node node from where to get the tracking
---@return number tracking tracking scaling number (default=0)
function gui.get_tracking(node) end

---Get a node and all its children as a Lua table.
---@param node node root node to get node tree from
---@return table<hash, node> clones a table mapping node ids to the corresponding nodes
function gui.get_tree(node) end

---gets the node type
---@param node node node from which to get the type
---@return constant type type
---  
---  gui.TYPE_BOX
---  gui.TYPE_TEXT
---  gui.TYPE_PIE
---  gui.TYPE_PARTICLEFX
---  gui.TYPE_CUSTOM
---  
---@return integer|nil subtype id of the custom type
function gui.get_type(node) end

---Returns true if a node is visible and false if it's not.
---Invisible nodes are not rendered.
---@param node node node to query
---@return boolean visible whether the node is visible or not
function gui.get_visible(node) end

---Returns the scene width.
---@return number width scene width
function gui.get_width() end

---The x-anchor specifies how the node is moved when the game is run in a different resolution.
---@param node node node to get x-anchor from
---@return constant anchor anchor constant
---  
---  gui.ANCHOR_NONE
---  gui.ANCHOR_LEFT
---  gui.ANCHOR_RIGHT
---  
function gui.get_xanchor(node) end

---The y-anchor specifies how the node is moved when the game is run in a different resolution.
---@param node node node to get y-anchor from
---@return constant anchor anchor constant
---  
---  gui.ANCHOR_NONE
---  gui.ANCHOR_TOP
---  gui.ANCHOR_BOTTOM
---  
function gui.get_yanchor(node) end

---Hides the on-display touch keyboard on the device.
function gui.hide_keyboard() end

---Returns true if a node is enabled and false if it's not.
---Disabled nodes are not rendered and animations acting on them are not evaluated.
---@param node node node to query
---@param recursive? boolean check hierarchy recursively
---@return boolean enabled whether the node is enabled or not
function gui.is_enabled(node, recursive) end

---Alters the ordering of the two supplied nodes by moving the first node
---above the second.
---If the second argument is nil the first node is moved to the top.
---@param node node to move
---@param reference node|nil reference node above which the first node should be moved
function gui.move_above(node, reference) end

---Alters the ordering of the two supplied nodes by moving the first node
---below the second.
---If the second argument is nil the first node is moved to the bottom.
---@param node node to move
---@param reference node|nil reference node below which the first node should be moved
function gui.move_below(node, reference) end

---Dynamically create a new box node.
---@param pos vector3|vector4 node position
---@param size vector3 node size
---@return node node new box node
function gui.new_box_node(pos, size) end

---Dynamically create a particle fx node.
---@param pos vector3|vector4 node position
---@param particlefx hash|string particle fx resource name
---@return node node new particle fx node
function gui.new_particlefx_node(pos, particlefx) end

---Dynamically create a new pie node.
---@param pos vector3|vector4 node position
---@param size vector3 node size
---@return node node new pie node
function gui.new_pie_node(pos, size) end

---Dynamically create a new text node.
---@param pos vector3|vector4 node position
---@param text string node text
---@return node node new text node
function gui.new_text_node(pos, text) end

---Dynamically create a new texture.
---@param texture_id string|hash texture id
---@param width number texture width
---@param height number texture height
---@param type string|constant texture type
---  
---  "rgb" - RGB
---  "rgba" - RGBA
---  "l" - LUMINANCE
---  
---@param buffer string texture data
---@param flip boolean flip texture vertically
---@return boolean success texture creation was successful
---@return number code one of the gui.RESULT_* codes if unsuccessful
function gui.new_texture(texture_id, width, height, type, buffer, flip) end

---Tests whether a coordinate is within the bounding box of a
---node.
---@param node node node to be tested for picking
---@param x number x-coordinate (see on_input )
---@param y number y-coordinate (see on_input )
---@return boolean pickable pick result
function gui.pick_node(node, x, y) end

---Play flipbook animation on a box or pie node.
---The current node texture must contain the animation.
---Use this function to set one-frame still images on the node.
---@param node node node to set animation for
---@param animation string|hash animation id
---@param complete_function? fun(self, node) optional function to call when the animation has completed
---  
---  self
---  
---  object The current object.
---  
---  node
---  
---  node The node that is animated.
---  
---  
---@param play_properties? table optional table with properties
---  
---  offset
---  number The normalized initial value of the animation cursor when the animation starts playing
---  playback_rate
---  number The rate with which the animation will be played. Must be positive
---  
function gui.play_flipbook(node, animation, complete_function, play_properties) end

---Plays the paricle fx for a gui node
---@param node node node to play particle fx for
---@param emitter_state_function? fun(self, node, emitter, state) optional callback function that will be called when an emitter attached to this particlefx changes state.
---  
---  self
---  object The current object
---  node
---  hash The particle fx node, or nil if the node was deleted
---  emitter
---  hash The id of the emitter
---  state
---  constant the new state of the emitter:
---  
---  
---  particlefx.EMITTER_STATE_SLEEPING
---  particlefx.EMITTER_STATE_PRESPAWN
---  particlefx.EMITTER_STATE_SPAWNING
---  particlefx.EMITTER_STATE_POSTSPAWN
---  
function gui.play_particlefx(node, emitter_state_function) end

---Resets the input context of keyboard. This will clear marked text.
function gui.reset_keyboard() end

---Resets the node material to the material assigned in the gui scene.
---@param node node node to reset the material for
function gui.reset_material(node) end

---Resets all nodes in the current GUI scene to their initial state.
---The reset only applies to static node loaded from the scene.
---Nodes that are created dynamically from script are not affected.
function gui.reset_nodes() end

---Convert the screen position to the local position of supplied node
---@param node node node used for getting local transformation matrix
---@param screen_position vector3 screen position
---@return vector3 local_position local position
function gui.screen_to_local(node, screen_position) end

---Instead of using specific setteres such as gui.set_position or gui.set_scale,
---you can use gui.set instead and supply the property as a string or a hash.
---While this function is similar to go.get and go.set, there are a few more restrictions
---when operating in the gui namespace. Most notably, only these named properties identifiers are supported:
---"position"
---"rotation"
---"euler"
---"scale"
---"color"
---"outline"
---"shadow"
---"size"
---"fill_angle" (pie)
---"inner_radius" (pie)
---"leading" (text)
---"tracking" (text)
---"slice9" (slice9)
---The value to set must either be a vmath.vector4, vmath.vector3, vmath.quat or a single number and depends on the property name you want to set.
---I.e when setting the "position" property, you need to use a vmath.vector4 and when setting a single component of the property,
---such as "position.x", you need to use a single value.
---Note: When setting the rotation using the "rotation" property, you need to pass in a vmath.quat. This behaviour is different than from the gui.set_rotation function,
---the intention is to move new functionality closer to go namespace so that migrating between gui and go is easier. To set the rotation using degrees instead,
---use the "euler" property instead. The rotation and euler properties are linked, changing one of them will change the backing data of the other.
---Similar to go.set, you can also use gui.set for setting material constant values on a node. E.g if a material has specified a constant called tint in
---the .material file, you can use gui.set to set the value of that constant by calling gui.set(node, "tint", vmath.vec4(1,0,0,1)), or gui.set(node, "matrix", vmath.matrix4())
---if the constant is a matrix. Arrays are also supported by gui.set - to set an array constant, you need to pass in an options table with the 'index' key set.
---If the material has a constant array called 'tint_array' specified in the material, you can use gui.set(node, "tint_array", vmath.vec4(1,0,0,1), { index = 4}) to set the fourth array element to a different value.
---@param node node|url node to set the property for, or msg.url() to the gui itself
---@param property string|hash|constant the property to set
---@param value number|vector4|vector3|quaternion the property to set
---@param options? table optional options table (only applicable for material constants)
---  - index integer index into array property (1 based)
---  - key hash name of internal property
function gui.set(node, property, value, options) end

---Sets the adjust mode on a node.
---The adjust mode defines how the node will adjust itself to screen
---resolutions that differs from the one in the project settings.
---@param node node node to set adjust mode for
---@param adjust_mode constant adjust mode to set
---  
---  gui.ADJUST_FIT
---  gui.ADJUST_ZOOM
---  gui.ADJUST_STRETCH
---  
function gui.set_adjust_mode(node, adjust_mode) end

---sets the node alpha
---@param node node node for which to set alpha
---@param alpha number 0..1 alpha color
function gui.set_alpha(node, alpha) end

---Set the blend mode of a node.
---Blend mode defines how the node will be blended with the background.
---@param node node node to set blend mode for
---@param blend_mode constant blend mode to set
---  
---  gui.BLEND_ALPHA
---  gui.BLEND_ADD
---  gui.BLEND_ADD_ALPHA
---  gui.BLEND_MULT
---  gui.BLEND_SCREEN
---  
function gui.set_blend_mode(node, blend_mode) end

---If node is set as an inverted clipping node, it will clip anything inside as opposed to outside.
---@param node node node to set clipping inverted state for
---@param inverted boolean true or false
function gui.set_clipping_inverted(node, inverted) end

---Clipping mode defines how the node will clip it's children nodes
---@param node node node to set clipping mode for
---@param clipping_mode constant clipping mode to set
---  
---    gui.CLIPPING_MODE_NONE
---    gui.CLIPPING_MODE_STENCIL
---  
function gui.set_clipping_mode(node, clipping_mode) end

---If node is set as an visible clipping node, it will be shown as well as clipping. Otherwise, it will only clip but not show visually.
---@param node node node to set clipping visibility for
---@param visible boolean true or false
function gui.set_clipping_visible(node, visible) end

---Sets the color of the supplied node. The components
---of the supplied vector3 or vector4 should contain the color channel values:
---Component
---Color value
---x
---Red value
---y
---Green value
---z
---Blue value
---w vector4
---Alpha value
---@param node node node to set the color for
---@param color vector3|vector4 new color
function gui.set_color(node, color) end

---Sets a node to the disabled or enabled state.
---Disabled nodes are not rendered and animations acting on them are not evaluated.
---@param node node node to be enabled/disabled
---@param enabled boolean whether the node should be enabled or not
function gui.set_enabled(node, enabled) end

---Sets the rotation of the supplied node.
---The rotation is expressed in degree Euler angles.
---@param node node node to set the rotation for
---@param rotation vector3|vector4 new rotation
function gui.set_euler(node, rotation) end

---Set the sector angle of a pie node.
---@param node node node to set the fill angle for
---@param angle number sector angle
function gui.set_fill_angle(node, angle) end

---This is only useful nodes with flipbook animations. The cursor is normalized.
---@param node node node to set the cursor for
---@param cursor number cursor value
function gui.set_flipbook_cursor(node, cursor) end

---This is only useful nodes with flipbook animations. Sets the playback rate of the flipbook animation on a node. Must be positive.
---@param node node node to set the cursor for
---@param playback_rate number playback rate
function gui.set_flipbook_playback_rate(node, playback_rate) end

---This is only useful for text nodes.
---The font must be mapped to the gui scene in the gui editor.
---@param node node node for which to set the font
---@param font string|hash font id
function gui.set_font(node, font) end

---Set the id of the specicied node to a new value.
---Nodes created with the gui.new_*_node() functions get
---an empty id. This function allows you to give dynamically
---created nodes an id.
--- No checking is done on the uniqueness of supplied ids.
---It is up to you to make sure you use unique ids.
---@param node node node to set the id for
---@param id string|hash id to set
function gui.set_id(node, id) end

---sets the node inherit alpha state
---@param node node node from which to set the inherit alpha state
---@param inherit_alpha boolean true or false
function gui.set_inherit_alpha(node, inherit_alpha) end

---Sets the inner radius of a pie node.
---The radius is defined along the x-axis.
---@param node node node to set the inner radius for
---@param radius number inner radius
function gui.set_inner_radius(node, radius) end

---The layer must be mapped to the gui scene in the gui editor.
---@param node node node for which to set the layer
---@param layer string|hash layer id
function gui.set_layer(node, layer) end

---Sets the leading value for a text node. This value is used to
---scale the line spacing of text.
---@param node node node for which to set the leading
---@param leading number a scaling value for the line spacing (default=1)
function gui.set_leading(node, leading) end

---Sets the line-break mode on a text node.
---This is only useful for text nodes.
---@param node node node to set line-break for
---@param line_break boolean true or false
function gui.set_line_break(node, line_break) end

---Set the material on a node. The material must be mapped to the gui scene in the gui editor,
---and assigning a material is supported for all node types. To set the default material that
---is assigned to the gui scene node, use gui.reset_material(node_id) instead.
---@param node node node to set material for
---@param material string|hash material id
function gui.set_material(node, material) end

---Sets the outer bounds mode for a pie node.
---@param node node node for which to set the outer bounds mode
---@param bounds_mode constant the outer bounds mode of the pie node:
---  
---  gui.PIEBOUNDS_RECTANGLE
---  gui.PIEBOUNDS_ELLIPSE
---  
function gui.set_outer_bounds(node, bounds_mode) end

---Sets the outline color of the supplied node.
---See gui.set_color for info how vectors encode color values.
---@param node node node to set the outline color for
---@param color vector3|vector4 new outline color
function gui.set_outline(node, color) end

---Sets the parent node of the specified node.
---@param node node node for which to set its parent
---@param parent? node parent node to set, pass nil to remove parent
---@param keep_scene_transform? boolean optional flag to make the scene position being perserved
function gui.set_parent(node, parent, keep_scene_transform) end

---Set the paricle fx for a gui node
---@param node node node to set particle fx for
---@param particlefx hash|string particle fx id
function gui.set_particlefx(node, particlefx) end

---Sets the number of generated vertices around the perimeter of a pie node.
---@param node node pie node
---@param vertices number vertex count
function gui.set_perimeter_vertices(node, vertices) end

---The pivot specifies how the node is drawn and rotated from its position.
---@param node node node to set pivot for
---@param pivot constant pivot constant
---  
---    gui.PIVOT_CENTER
---    gui.PIVOT_N
---    gui.PIVOT_NE
---    gui.PIVOT_E
---    gui.PIVOT_SE
---    gui.PIVOT_S
---    gui.PIVOT_SW
---    gui.PIVOT_W
---    gui.PIVOT_NW
---  
function gui.set_pivot(node, pivot) end

---Sets the position of the supplied node.
---@param node node node to set the position for
---@param position vector3|vector4 new position
function gui.set_position(node, position) end

---Set the order number for the current GUI scene.
---The number dictates the sorting of the "gui" render predicate,
---in other words in which order the scene will be rendered in relation
---to other currently rendered GUI scenes.
---The number must be in the range 0 to 15.
---@param order number rendering order (0-15)
function gui.set_render_order(order) end

---Sets the rotation of the supplied node.
---The rotation is expressed as a quaternion
---@param node node node to set the rotation for
---@param rotation quaternion|vector4 new rotation
function gui.set_rotation(node, rotation) end

---Sets the scaling of the supplied node.
---@param node node node to set the scale for
---@param scale vector3|vector4 new scale
function gui.set_scale(node, scale) end

---Set the screen position to the supplied node
---@param node node node to set the screen position to
---@param screen_position vector3 screen position
function gui.set_screen_position(node, screen_position) end

---Sets the shadow color of the supplied node.
---See gui.set_color for info how vectors encode color values.
---@param node node node to set the shadow color for
---@param color vector3|vector4 new shadow color
function gui.set_shadow(node, color) end

---Sets the size of the supplied node.
--- You can only set size on nodes with size mode set to SIZE_MODE_MANUAL
---@param node node node to set the size for
---@param size vector3|vector4 new size
function gui.set_size(node, size) end

---Sets the size mode of a node.
---The size mode defines how the node will adjust itself in size. Automatic
---size mode alters the node size based on the node's content. Automatic size
---mode works for Box nodes and Pie nodes which will both adjust their size
---to match the assigned image. Particle fx and Text nodes will ignore
---any size mode setting.
---@param node node node to set size mode for
---@param size_mode constant size mode to set
---  
---  gui.SIZE_MODE_MANUAL
---  gui.SIZE_MODE_AUTO
---  
function gui.set_size_mode(node, size_mode) end

---Set the slice9 configuration values for the node.
---@param node node node to manipulate
---@param values vector4 new values
function gui.set_slice9(node, values) end

---Set the text value of a text node. This is only useful for text nodes.
---@param node node node to set text for
---@param text string|number text to set
function gui.set_text(node, text) end

---Set the texture on a box or pie node. The texture must be mapped to
---the gui scene in the gui editor. The function points out which texture
---the node should render from. If the texture is an atlas, further
---information is needed to select which image/animation in the atlas
---to render. In such cases, use gui.play_flipbook() in
---addition to this function.
---@param node node node to set texture for
---@param texture string|hash texture id
function gui.set_texture(node, texture) end

---Set the texture buffer data for a dynamically created texture.
---@param texture string|hash texture id
---@param width number texture width
---@param height number texture height
---@param type string|constant texture type
---  
---    "rgb" - RGB
---    "rgba" - RGBA
---    "l" - LUMINANCE
---  
---@param buffer string texture data
---@param flip boolean flip texture vertically
---@return boolean success setting the data was successful
function gui.set_texture_data(texture, width, height, type, buffer, flip) end

---Sets the tracking value of a text node. This value is used to
---adjust the vertical spacing of characters in the text.
---@param node node node for which to set the tracking
---@param tracking number a scaling number for the letter spacing (default=0)
function gui.set_tracking(node, tracking) end

---Set if a node should be visible or not. Only visible nodes are rendered.
---@param node node node to be visible or not
---@param visible boolean whether the node should be visible or not
function gui.set_visible(node, visible) end

---The x-anchor specifies how the node is moved when the game is run in a different resolution.
---@param node node node to set x-anchor for
---@param anchor constant anchor constant
---  
---  gui.ANCHOR_NONE
---  gui.ANCHOR_LEFT
---  gui.ANCHOR_RIGHT
---  
function gui.set_xanchor(node, anchor) end

---The y-anchor specifies how the node is moved when the game is run in a different resolution.
---@param node node node to set y-anchor for
---@param anchor constant anchor constant
---  
---  gui.ANCHOR_NONE
---  gui.ANCHOR_TOP
---  gui.ANCHOR_BOTTOM
---  
function gui.set_yanchor(node, anchor) end

---Shows the on-display touch keyboard.
---The specified type of keyboard is displayed if it is available on
---the device.
---This function is only available on iOS and Android.  .
---@param type constant keyboard type
---  
---  gui.KEYBOARD_TYPE_DEFAULT
---  gui.KEYBOARD_TYPE_EMAIL
---  gui.KEYBOARD_TYPE_NUMBER_PAD
---  gui.KEYBOARD_TYPE_PASSWORD
---  
---@param autoclose boolean if the keyboard should automatically close when clicking outside
function gui.show_keyboard(type, autoclose) end

---Stops the particle fx for a gui node
---@param node node node to stop particle fx for
---@param options? table options when stopping the particle fx. Supported options:
---  
---  boolean clear: instantly clear spawned particles
---  
function gui.stop_particlefx(node, options) end



return gui