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

  LiveUpdate API documentation

  Functions and constants to access resources.
--]]

---@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.liveupdate
liveupdate = {}

---Mismatch between between expected bundled resources and actual bundled resources. The manifest expects a resource to be in the bundle, but it was not found in the bundle. This is typically the case when a non-excluded resource was modified between publishing the bundle and publishing the manifest.
liveupdate.LIVEUPDATE_BUNDLED_RESOURCE_MISMATCH = nil

---Mismatch between running engine version and engine versions supported by manifest.
liveupdate.LIVEUPDATE_ENGINE_VERSION_MISMATCH = nil

---Failed to parse manifest data buffer. The manifest was probably produced by a different engine version.
liveupdate.LIVEUPDATE_FORMAT_ERROR = nil

---Argument was invalid
liveupdate.LIVEUPDATE_INVAL = nil

---The handled resource is invalid.
liveupdate.LIVEUPDATE_INVALID_HEADER = nil

---The header of the resource is invalid.
liveupdate.LIVEUPDATE_INVALID_RESOURCE = nil

---I/O operation failed
liveupdate.LIVEUPDATE_IO_ERROR = nil

---Memory wasn't allocated
liveupdate.LIVEUPDATE_MEM_ERROR = nil

---LIVEUPDATE_OK
liveupdate.LIVEUPDATE_OK = nil

---Mismatch between scheme used to load resources. Resources are loaded with a different scheme than from manifest, for example over HTTP or directly from file. This is typically the case when running the game directly from the editor instead of from a bundle.
liveupdate.LIVEUPDATE_SCHEME_MISMATCH = nil

---Mismatch between manifest expected signature and actual signature.
liveupdate.LIVEUPDATE_SIGNATURE_MISMATCH = nil

---Unspecified error
liveupdate.LIVEUPDATE_UNKNOWN = nil

---Mismatch between manifest expected version and actual version.
liveupdate.LIVEUPDATE_VERSION_MISMATCH = nil

---Adds a resource mount to the resource system.
---The mounts are persisted between sessions.
---After the mount succeeded, the resources are available to load. (i.e. no reboot required)
---@param name string Unique name of the mount
---@param uri string The uri of the mount, including the scheme. Currently supported schemes are 'zip' and 'archive'.
---@param priority integer Priority of mount. Larger priority takes prescedence
---@param callback function Callback after the asynchronous request completed
---@return number result The result of the request
function liveupdate.add_mount(name, uri, priority, callback) end

---Return a reference to the Manifest that is currently loaded.
---@return number manifest_reference reference to the Manifest that is currently loaded
function liveupdate.get_current_manifest() end

---Get an array of the current mounts
---This can be used to determine if a new mount is needed or not
---@return array mounts Array of mounts
function liveupdate.get_mounts() end

---Is any liveupdate data mounted and currently in use?
---This can be used to determine if a new manifest or zip file should be downloaded.
---@return bool bool true if a liveupdate archive (any format) has been loaded
function liveupdate.is_using_liveupdate_data() end

---Remove a mount the resource system.
---The remaining mounts are persisted between sessions.
---Removing a mount does not affect any loaded resources.
---@param name string Unique name of the mount
---@return number result The result of the call
function liveupdate.remove_mount(name) end

---Stores a zip file and uses it for live update content. The contents of the
---zip file will be verified against the manifest to ensure file integrity.
---It is possible to opt out of the resource verification using an option passed
---to this function.
---The path is stored in the (internal) live update location.
---@param path string the path to the original file on disc
---@param callback fun(self, status) the callback function
---  executed after the storage has completed
---  
---  self
---  object The current object.
---  status
---  constant the status of the store operation (See liveupdate.store_manifest)
---  
---@param options? table optional table with extra parameters. Supported entries:
---  
---  boolean verify: if archive should be verified as well as stored (defaults to true)
---  
function liveupdate.store_archive(path, callback, options) end

---Create a new manifest from a buffer. The created manifest is verified
---by ensuring that the manifest was signed using the bundled public/private
---key-pair during the bundle process and that the manifest supports the current
---running engine version. Once the manifest is verified it is stored on device.
---The next time the engine starts (or is rebooted) it will look for the stored
---manifest before loading resources. Storing a new manifest allows the
---developer to update the game, modify existing resources, or add new
---resources to the game through LiveUpdate.
---@param manifest_buffer string the binary data that represents the manifest
---@param callback fun(self, status) the callback function
---  executed once the engine has attempted to store the manifest.
---  
---  self
---  object The current object.
---  status
---  constant the status of the store operation:
---  
---  
---  liveupdate.LIVEUPDATE_OK
---  liveupdate.LIVEUPDATE_INVALID_RESOURCE
---  liveupdate.LIVEUPDATE_VERSION_MISMATCH
---  liveupdate.LIVEUPDATE_ENGINE_VERSION_MISMATCH
---  liveupdate.LIVEUPDATE_SIGNATURE_MISMATCH
---  liveupdate.LIVEUPDATE_BUNDLED_RESOURCE_MISMATCH
---  liveupdate.LIVEUPDATE_FORMAT_ERROR
---  
function liveupdate.store_manifest(manifest_buffer, callback) end

---add a resource to the data archive and runtime index. The resource will be verified
---internally before being added to the data archive.
---@param manifest_reference number The manifest to check against.
---@param data string The resource data that should be stored.
---@param hexdigest string The expected hash for the resource,
---  retrieved through collectionproxy.missing_resources.
---@param callback fun(self, hexdigest, status) The callback
---  function that is executed once the engine has been attempted to store
---  the resource.
---  
---  self
---  object The current object.
---  hexdigest
---  string The hexdigest of the resource.
---  status
---  boolean Whether or not the resource was successfully stored.
---  
function liveupdate.store_resource(manifest_reference, data, hexdigest, callback) end

return liveupdate