---@meta

---@class Color
---@field r integer
---@field g integer
---@field b integer
---@field a integer

---@class Position
---@field x integer
---@field y integer
---@field z integer

---@class Size
---@field width integer
---@field height integer

---@class Point
---@field x integer
---@field y integer

---@class Rect
---@field x integer
---@field y integer
---@field width integer
---@field height integer

---@class Light
---@field color integer
---@field intensity integer

---@class Outfit
---@field type integer
---@field auxType integer
---@field addons? integer
---@field head integer
---@field body integer
---@field legs integer
---@field feet integer
---@field mount? integer

---@alias OTMLNode table<string | integer, any>

---@class UnjustifiedPoints
---@field killsDay integer
---@field killsDayRemaining integer
---@field killsWeek integer
---@field killsWeekRemaining integer
---@field killsMonth integer
---@field killsMonthRemaining integer
---@field skullTime integer

---@class MarketData
---@field category integer
---@field name string
---@field requiredLevel integer
---@field restrictVocation integer
---@field showAs integer
---@field tradeAs integer

---@alias WidgetType
--- |UIItem
--- |UISprite
--- |UICreature
--- |UIMap
--- |UIMinimap
--- |UIProgressRect
--- |UIGraph
--- |UITextEdit
--- |UIQrCode
--- |UIParticles

--------------------------------
------- Global Functions -------
--------------------------------

---@param color integer
---@return Color
function getOutfitColor(color) end

---@param fromPos Position | string
---@param toPos Position | string
---@return number
function getAngleFromPos(fromPos, toPos) end

---@param fromPos Position | string
---@param toPos Position | string
---@return integer
function getDirectionFromPos(fromPos, toPos) end

---@param v string
---@return Rect
function torect(v) end

---@param v string
---@return Point
function topoint(v) end

---@param v string
---@return Color
function tocolor(v) end

---@param v string
---@return Size
function tosize(v) end

---@param v Rect
---@return string
function recttostring(v) end

---@param v Point
---@return string
function pointtostring(v) end

---@param v Color
---@return string
function colortostring(v) end

---@param v Size
---@return string
function sizetostring(v) end

---@param v number
---@return string
function iptostring(v) end

---@param v string
---@return number
function stringtoip(v) end

---@param a number
---@param b integer
---@return number[]
function listSubnetAddresses(a, b) end

---@param v string
---@return string
function ucwords(v) end

---@param s string
---@param exp string
---@return string[][]
function regexMatch(s, exp) end

--------------------------------
----------- g_things -----------
--------------------------------

---@class g_things
g_things = {}

---@param file string
---@return boolean
function g_things.loadAppearances(file) end

---@param file string
---@return boolean
function g_things.loadStaticData(file) end

---@param file string
---@return boolean
function g_things.loadDat(file) end

---@param file string
---@return boolean
function g_things.loadOtml(file) end

---@return boolean
function g_things.isDatLoaded() end

---@return number
function g_things.getDatSignature() end

---@return integer
function g_things.getContentRevision() end

---@param id integer
---@param category integer
---@return ThingType | nil
function g_things.getThingType(id, category) end

---@param category integer
---@return ThingType[]
function g_things.getThingTypes(category) end

---@param attr integer
---@param category integer
---@return ThingType[]
function g_things.findThingTypeByAttr(attr, category) end

---@param raceId integer
---@return RaceType[]
function g_things.getRaceData(raceId) end

---@param searchString string
---@return Vector<RaceType>
function g_things.getRacesByName(searchString) end

---* FRAMEWORK_EDITOR
---@param id integer
---@return ThingType | nil
function g_things.getItemType(id) end

---* FRAMEWORK_EDITOR
---@param id integer
---@return ThingType | nil
function g_things.findItemTypeByClientId(id) end

---* FRAMEWORK_EDITOR
---@param name string
---@return ThingType | nil
function g_things.findItemTypeByName(name) end

---* FRAMEWORK_EDITOR
---@param name string
---@return ThingType[]
function g_things.findItemTypesByName(name) end

---* FRAMEWORK_EDITOR
---@param name string
---@return ThingType[]
function g_things.findItemTypesByString(name) end

---* FRAMEWORK_EDITOR
---@param category integer
---@return ThingType[]
function g_things.findItemTypeByCategory(category) end

---* FRAMEWORK_EDITOR
---@param fileName string
function g_things.saveDat(fileName) end

---* FRAMEWORK_EDITOR
---@param file string
function g_things.loadOtb(file) end

---* FRAMEWORK_EDITOR
---@param file string
function g_things.loadXml(file) end

---* FRAMEWORK_EDITOR
---@return boolean
function g_things.isOtbLoaded() end

--------------------------------
----------- g_houses -----------
--------------------------------

---* FRAMEWORK_EDITOR
---@class g_houses
g_houses = {}

function g_houses.clear() end

---@param fileName string
function g_houses.load(fileName) end

---@param fileName string
function g_houses.save(fileName) end

---@param houseId number
---@return House | nil
function g_houses.getHouse(houseId) end

---@param name string
---@return House | nil
function g_houses.getHouseByName(name) end

---@param house House
function g_houses.addHouse(house) end

---@param houseId number
function g_houses.removeHouse(houseId) end

---@return House[]
function g_houses.getHouseList() end

---@param townId number
---@return House[]
function g_houses.filterHouses(townId) end

function g_houses.sort() end

--------------------------------
----------- g_towns ------------
--------------------------------

---* FRAMEWORK_EDITOR
---@class g_towns
g_towns = {}

---@param townId number
---@return Town | nil
function g_towns.getTown(townId) end

---@param name string
---@return Town | nil
function g_towns.getTownByName(name) end

---@param town Town
function g_towns.addTown(town) end

---@param townId number
function g_towns.removeTown(townId) end

---@return Town[]
function g_towns.getTowns() end

function g_towns.sort() end

--------------------------------
---------- g_sprites -----------
--------------------------------

---@class g_sprites
g_sprites = {}

---@param file string
---@return boolean
function g_sprites.loadSpr(file) end

function g_sprites.unload() end

---@return boolean
function g_sprites.isLoaded() end

---@return number
function g_sprites.getSprSignature() end

---@return integer
function g_sprites.getSpritesCount() end

---* FRAMEWORK_EDITOR
---@param fileName string
function g_sprites.saveSpr(fileName) end

--------------------------------
------ g_spriteAppearances -----
--------------------------------

---@class g_spriteAppearances
g_spriteAppearances = {}

---@param id integer
---@param file string
function g_spriteAppearances.saveSpriteToFile(id, file) end

---@param id integer
---@param file string
function g_spriteAppearances.saveSheetToFileBySprite(id, file) end

--------------------------------
------------ g_map -------------
--------------------------------

---@class g_map
g_map = {}

---@param pos Position | string
---@return boolean
function g_map.isLookPossible(pos) end

---@param pos Position | string
---@param firstFloor? integer 0
---@return boolean
function g_map.isCovered(pos, firstFloor) end

---@param pos Position | string
---@param firstFloor? integer 0
---@return boolean
function g_map.isCompletelyCovered(pos, firstFloor) end

---@param thing Thing
---@param pos Position | string
---@param stackPos? integer -1
function g_map.addThing(thing, pos, stackPos) end

---@param txt StaticText
---@param pos Position | string
function g_map.addStaticText(txt, pos) end

---@param txt AnimatedText
---@param pos Position | string
function g_map.addAnimatedText(txt, pos) end

---@param pos Position | string
---@param stackPos integer
---@return Thing | nil
function g_map.getThing(pos, stackPos) end

---@param pos Position | string
---@param stackPos integer
---@return boolean
function g_map.removeThingByPos(pos, stackPos) end

---@param thing Thing
---@return boolean
function g_map.removeThing(thing) end

---@param thing Thing
function g_map.removeThingColor(thing) end

---@param thing Thing
---@param color Color | string
function g_map.colorizeThing(thing, color) end

function g_map.clean() end

---@param pos Position | string
function g_map.cleanTile(pos) end

function g_map.cleanTexts() end

---@param pos Position | string
---@return Tile | nil
function g_map.getTile(pos) end

---@param floor? integer -1
---@return Tile[]
function g_map.getTiles(floor) end

---@param centralPosition Position | string
function g_map.setCentralPosition(centralPosition) end

---@return Position
function g_map.getCentralPosition() end

---@param id number
---@return Creature | nil
function g_map.getCreatureById(id) end

---@param id number
function g_map.removeCreatureById(id) end

---@param centerPos Position | string
---@param multiFloor boolean
---@return Creature[]
function g_map.getSpectators(centerPos, multiFloor) end

---@param centerPos Position | string
---@param multiFloor boolean
---@param xRange integer
---@param yRange integer
---@return Creature[]
function g_map.getSpectatorsInRange(centerPos, multiFloor, xRange, yRange) end

---@param centerPos Position | string
---@param multiFloor boolean
---@param minXRange integer
---@param maxXRange integer
---@param minYRange integer
---@param maxYRange integer
---@return Creature[]
function g_map.getSpectatorsInRangeEx(centerPos, multiFloor, minXRange, maxXRange, minYRange, maxYRange) end

---@param start Position | string
---@param goal Position | string
---@param maxComplexity integer
---@param flags? integer 0
---@return integer[], integer
function g_map.findPath(start, goal, maxComplexity, flags) end

---@param pos Position | string
---@return Tile | nil
function g_map.createTile(pos) end

---@param w integer
function g_map.setWidth(w) end

---@param h integer
function g_map.setHeight(h) end

---@return Size
function g_map.getSize() end

---* FRAMEWORK_EDITOR
---@param fileName string
function g_map.loadOtbm(fileName) end

---* FRAMEWORK_EDITOR
---@param fileName string
function g_map.saveOtbm(fileName) end

---* FRAMEWORK_EDITOR
---@param fileName string
---@return boolean
function g_map.loadOtcm(fileName) end

---* FRAMEWORK_EDITOR
---@param fileName string
function g_map.saveOtcm(fileName) end

---* FRAMEWORK_EDITOR
---@return string
function g_map.getHouseFile() end

---* FRAMEWORK_EDITOR
---@param file string
function g_map.setHouseFile(file) end

---* FRAMEWORK_EDITOR
---@return string
function g_map.getSpawnFile() end

---* FRAMEWORK_EDITOR
---@param file string
function g_map.setSpawnFile(file) end

---* FRAMEWORK_EDITOR
---@param desc string
function g_map.setDescription(desc) end

---* FRAMEWORK_EDITOR
---@return string[]
function g_map.getDescriptions() end

---* FRAMEWORK_EDITOR
function g_map.clearDescriptions() end

---* FRAMEWORK_EDITOR
---@param zone number
---@param show boolean
function g_map.setShowZone(zone, show) end

---* FRAMEWORK_EDITOR
---@param show boolean
function g_map.setShowZones(show) end

---* FRAMEWORK_EDITOR
---@param zone number
---@param color Color | string
function g_map.setZoneColor(zone, color) end

---* FRAMEWORK_EDITOR
---@param opacity number
function g_map.setZoneOpacity(opacity) end

---* FRAMEWORK_EDITOR
---@return number
function g_map.getZoneOpacity() end

---* FRAMEWORK_EDITOR
---@param zone number
---@return Color
function g_map.getZoneColor(zone) end

---* FRAMEWORK_EDITOR
---@return boolean
function g_map.showZones() end

---* FRAMEWORK_EDITOR
---@param zone number
---@return boolean
function g_map.showZone(zone) end

---* FRAMEWORK_EDITOR
---@param force boolean
function g_map.setForceShowAnimations(force) end

---* FRAMEWORK_EDITOR
---@return boolean
function g_map.isForcingAnimations() end

---* FRAMEWORK_EDITOR
---@return boolean
function g_map.isShowingAnimations() end

---* FRAMEWORK_EDITOR
---@param show boolean
function g_map.setShowAnimations(show) end

---@param opacity number
function g_map.beginGhostMode(opacity) end

function g_map.endGhostMode() end

---@param clientId integer
---@param max number
---@return table<Position, Item>
function g_map.findItemsById(clientId, max) end

---@param enable boolean
function g_map.setFloatingEffect(enable) end

---@return boolean
function g_map.isDrawingFloatingEffects() end

---@param pos Position | string
---@return integer
function g_map.getMinimapColor(pos) end

---@param fromPos Position | string
---@param toPos Position | string
---@return boolean
function g_map.isSightClear(fromPos, toPos) end

---@param start Position | string
---@param maxDistance integer
---@param params table<string, string>
---@return table<string, [integer, integer, integer, string]>
function g_map.findEveryPath(start, maxDistance, params) end

---@param centerPos Position | string
---@param pattern string
---@param direction integer
---@return Creature[]
function g_map.getSpectatorsByPattern(centerPos, pattern, direction) end

--------------------------------
---------- g_minimap -----------
--------------------------------

---@class g_minimap
g_minimap = {}

function g_minimap.clean() end

---@param fileName string
---@param topLeft Position | string
---@param colorFactor number
---@return boolean
function g_minimap.loadImage(fileName, topLeft, colorFactor) end

---@param fileName string
---@param mapRect Rect
function g_minimap.saveImage(fileName, mapRect) end

---@param fileName string
---@return boolean
function g_minimap.loadOtmm(fileName) end

---@param fileName string
function g_minimap.saveOtmm(fileName) end

--------------------------------
--------- g_creatures ----------
--------------------------------

---* FRAMEWORK_EDITOR
---@class g_creatures
g_creatures = {}

---@return CreatureType[]
function g_creatures.getCreatures() end

---@param name string
---@return CreatureType | nil
function g_creatures.getCreatureByName(name) end

---@param look integer
---@return CreatureType | nil
function g_creatures.getCreatureByLook(look) end

---@param centerPos Position | string
---@return Spawn | nil
function g_creatures.getSpawn(centerPos) end

---@param pos Position | string
---@return Spawn | nil
function g_creatures.getSpawnForPlacePos(pos) end

---@param centerPos Position | string
---@param radius integer
---@return Spawn
function g_creatures.addSpawn(centerPos, radius) end

---@param file string
function g_creatures.loadMonsters(file) end

---@param folder string
function g_creatures.loadNpcs(folder) end

---@param file string
function g_creatures.loadSingleCreature(file) end

---@param fileName string
function g_creatures.loadSpawns(fileName) end

---@param fileName string
function g_creatures.saveSpawns(fileName) end

---@return boolean
function g_creatures.isLoaded() end

---@return boolean
function g_creatures.isSpawnLoaded() end

function g_creatures.clear() end

function g_creatures.clearSpawns() end

---@return Spawn[]
function g_creatures.getSpawns() end

---@param spawn Spawn
function g_creatures.deleteSpawn(spawn) end

--------------------------------
------------ g_game ------------
--------------------------------

---@class g_game
g_game = {}

---@param account string
---@param password string
---@param worldName string
---@param worldHost string
---@param worldPort integer
---@param characterName string
---@param authenticatorToken string
---@param sessionKey string
---@param recordTo string
function g_game.loginWorld(account, password, worldName, worldHost, worldPort, characterName, authenticatorToken,
                           sessionKey, recordTo)
end

function g_game.cancelLogin() end

function g_game.forceLogout() end

function g_game.safeLogout() end

---@param direction integer
---@param isKeyDown? boolean false
---@return boolean
function g_game.walk(direction, isKeyDown) end

---@param scheduleLastWalk boolean
function g_game.setScheduleLastWalk(scheduleLastWalk) end

---@param dirs integer[]
---@param startPos Position | string
function g_game.autoWalk(dirs, startPos) end

---@param direction integer
function g_game.forceWalk(direction) end

---@param direction integer
function g_game.turn(direction) end

function g_game.stop() end

---@param thing Thing
---@param inBattleList? boolean false
function g_game.look(thing, inBattleList) end

---@param thing Thing
---@param toPos Position | string
---@param count integer
function g_game.move(thing, toPos, count) end

---@param thing Thing
---@param count integer
function g_game.moveToParentContainer(thing, count) end

---@param thing Thing
function g_game.rotate(thing) end

---@param thing Thing
function g_game.wrap(thing) end

---@param thing Thing
function g_game.use(thing) end

---@param item Item
---@param toThing Thing
function g_game.useWith(item, toThing) end

---@param itemId integer
function g_game.useInventoryItem(itemId) end

---@param itemId integer
---@param toThing Thing
function g_game.useInventoryItemWith(itemId, toThing) end

---@param itemId number
---@param subType integer
---@return Item | nil
function g_game.findItemInContainers(itemId, subType) end

---@param item Item
---@param previousContainer? Container
---@return integer
function g_game.open(item, previousContainer) end

---@param container Container
function g_game.openParent(container) end

---@param container Container
function g_game.close(container) end

---@param container Container
function g_game.refreshContainer(container) end

---@param creature Creature
function g_game.attack(creature) end

function g_game.cancelAttack() end

---@param creature Creature
function g_game.follow(creature) end

function g_game.cancelFollow() end

function g_game.cancelAttackAndFollow() end

---@param message string
function g_game.talk(message) end

---@param mode integer
---@param channelId integer
---@param message string
function g_game.talkChannel(mode, channelId, message) end

---@param mode integer
---@param receiver string
---@param message string
function g_game.talkPrivate(mode, receiver, message) end

---@param receiver string
function g_game.openPrivateChannel(receiver) end

function g_game.requestChannels() end

---@param channelId integer
function g_game.joinChannel(channelId) end

---@param channelId integer
function g_game.leaveChannel(channelId) end

function g_game.closeNpcChannel() end

function g_game.openOwnChannel() end

---@param name string
function g_game.inviteToOwnChannel(name) end

---@param name string
function g_game.excludeFromOwnChannel(name) end

---@param creatureId integer
function g_game.partyInvite(creatureId) end

---@param creatureId integer
function g_game.partyJoin(creatureId) end

---@param creatureId integer
function g_game.partyRevokeInvitation(creatureId) end

---@param creatureId integer
function g_game.partyPassLeadership(creatureId) end

function g_game.partyLeave() end

---@param active boolean
function g_game.partyShareExperience(active) end

function g_game.requestOutfit() end

---@param outfit Outfit
function g_game.changeOutfit(outfit) end

---@param name string
function g_game.addVip(name) end

---@param playerId integer
function g_game.removeVip(playerId) end

---@param playerId integer
---@param description string
---@param iconId integer
---@param notifyLogin boolean
function g_game.editVip(playerId, description, iconId, notifyLogin) end

---@param chaseMode integer
function g_game.setChaseMode(chaseMode) end

---@param fightMode integer
function g_game.setFightMode(fightMode) end

---@param pvpMode integer
function g_game.setPVPMode(pvpMode) end

---@param on boolean
function g_game.setSafeFight(on) end

---@return integer
function g_game.getChaseMode() end

---@return integer
function g_game.getFightMode() end

---@return integer
function g_game.getPVPMode() end

---@return UnjustifiedPoints
function g_game.getUnjustifiedPoints() end

---@return integer
function g_game.getOpenPvpSituations() end

---@return boolean
function g_game.isSafeFight() end

---@param item Item
function g_game.inspectNpcTrade(item) end

---@param item Item
---@param amount integer
---@param ignoreCapacity boolean
---@param buyWithBackpack boolean
function g_game.buyItem(item, amount, ignoreCapacity, buyWithBackpack) end

---@param item Item
---@param amount integer
---@param ignoreEquipped boolean
function g_game.sellItem(item, amount, ignoreEquipped) end

function g_game.closeNpcTrade() end

---@param item Item
---@param creature Creature
function g_game.requestTrade(item, creature) end

---@param counterOffer boolean
---@param index integer
function g_game.inspectTrade(counterOffer, index) end

function g_game.acceptTrade() end

function g_game.rejectTrade() end

---@param reporter string
function g_game.openRuleViolation(reporter) end

---@param reporter string
function g_game.closeRuleViolation(reporter) end

function g_game.cancelRuleViolation() end

---@param comment string
function g_game.reportBug(comment) end

---@param target string
---@param reason integer
---@param action integer
---@param comment string
---@param statement string
---@param statementId integer
---@param ipBanishment boolean
function g_game.reportRuleViolation(target, reason, action, comment, statement, statementId, ipBanishment) end

---@param a string
---@param b string
---@param c string
---@param d string
function g_game.debugReport(a, b, c, d) end

---@param id number
---@param text string
function g_game.editText(id, text) end

---@param id number
---@param doorId integer
---@param text string
function g_game.editList(id, doorId, text) end

function g_game.requestQuestLog() end

---@param questId integer
function g_game.requestQuestLine(questId) end

---@param item Item
function g_game.equipItem(item) end

---@param mount boolean
function g_game.mount(mount) end

---@param item Item
---@param index integer
function g_game.requestItemInfo(item, index) end

function g_game.ping() end

---@param delay integer
function g_game.setPingDelay(delay) end

---@param xrange integer
---@param yrange integer
function g_game.changeMapAwareRange(xrange, yrange) end

---@return boolean
function g_game.canReportBugs() end

---@return boolean
function g_game.isOnline() end

---@return boolean
function g_game.isLogging() end

---@return boolean
function g_game.isDead() end

---@return boolean
function g_game.isAttacking() end

---@return boolean
function g_game.isFollowing() end

---@return boolean
function g_game.isConnectionOk() end

---@return integer
function g_game.getPing() end

---@param index integer
---@return Container | nil
function g_game.getContainer(index) end

---@return table<integer, Container>
function g_game.getContainers() end

---@return table<integer, [string, number, string, integer, boolean]>
function g_game.getVips() end

---@return Creature | nil
function g_game.getAttackingCreature() end

---@return Creature | nil
function g_game.getFollowingCreature() end

---@return integer
function g_game.getServerBeat() end

---@return LocalPlayer | nil
function g_game.getLocalPlayer() end

---@return ProtocolGame | nil
function g_game.getProtocolGame() end

---@return integer
function g_game.getProtocolVersion() end

---@param version integer
function g_game.setProtocolVersion(version) end

---@return integer
function g_game.getClientVersion() end

---@param version integer
function g_game.setClientVersion(version) end

---@param os integer
function g_game.setCustomOs(os) end

---@return integer
function g_game.getOs() end

---@return string
function g_game.getCharacterName() end

---@return string
function g_game.getWorldName() end

---@return integer[]
function g_game.getGMActions() end

---@param feature integer
---@return boolean
function g_game.getFeature(feature) end

---@param feature integer
---@param enabled boolean
function g_game.setFeature(feature, enabled) end

---@param feature integer
function g_game.enableFeature(feature) end

---@param feature integer
function g_game.disableFeature(feature) end

---@return boolean
function g_game.isGM() end

---@param dialog number
---@param button integer
---@param choice integer
function g_game.answerModalDialog(dialog, button, choice) end

---@param position Position | string
function g_game.browseField(position) end

---@param cid integer
---@param index integer
function g_game.seekInContainer(cid, index) end

---@return integer
function g_game.getLastWalkDir() end

---@param offerId integer
---@param productType integer
---@param name? string
function g_game.buyStoreOffer(offerId, productType, name) end

---@param page integer
---@param entriesPerPage integer
function g_game.requestTransactionHistory(page, entriesPerPage) end

---@param categoryName string
---@param serviceType? integer 0
function g_game.requestStoreOffers(categoryName, serviceType) end

---@param serviceType? integer 0
---@param category? string
function g_game.openStore(serviceType, category) end

---@param recipient string
---@param amount integer
function g_game.transferCoins(recipient, amount) end

---@param entriesPerPage integer
function g_game.openTransactionHistory(entriesPerPage) end

function g_game.leaveMarket() end

---@param browseId integer
---@param browseType integer
function g_game.browseMarket(browseId, browseType) end

---@param type integer
---@param itemId integer
---@param itemTier integer
---@param amount integer
---@param price number
---@param anonymous integer
function g_game.createMarketOffer(type, itemId, itemTier, amount, price, anonymous) end

---@param timestamp number
---@param counter integer
function g_game.cancelMarketOffer(timestamp, counter) end

---@param timestamp number
---@param counter integer
---@param amount integer
function g_game.acceptMarketOffer(timestamp, counter, amount) end

---@param slot integer
---@param actionType integer
---@param index integer
function g_game.preyAction(slot, actionType, index) end

function g_game.preyRequest() end

---@param slot integer
---@param imbuementId integer
---@param protectionCharm boolean
function g_game.applyImbuement(slot, imbuementId, protectionCharm) end

---@param slot integer
function g_game.clearImbuement(slot) end

function g_game.closeImbuingWindow() end

---@return boolean
function g_game.isUsingProtobuf() end

---@param value boolean
function g_game.enableTileThingLuaCallback(value) end

---@return boolean
function g_game.isTileThingLuaCallbackEnabled() end

---@param itemId integer
---@param count number
---@param stackpos boolean
function g_game.stashWithdraw(itemId, count, stackpos) end

---@param position Position | string
---@param itemId integer
---@param count number
---@param stackpos boolean
---@param action number
function g_game.stashStowItem(position, itemId, count, stackpos, action) end

---@param action integer
---@param category integer
---@param vocation number
---@param world string
---@param worldType number
---@param battlEye number
---@param page number
---@param totalPages number
function g_game.requestHighscore(action, category, vocation, world, worldType, battlEye, page, totalPages) end

---@param isOpen? boolean false
function g_game.imbuementDurations(isOpen) end

---@param isOpen? boolean false
function g_game.imbuementDurations(isOpen) end

---@param playerId integer
function g_game.openWheel(playerId) end

---@param wheelPoints table<integer, integer>
---@param greenGem integer
---@param redGem integer
---@param acquaGem integer
---@param purpleGem integer
function g_game.sendApplyWheelPoints(wheelPoints, greenGem, redGem, acquaGem, purpleGem) end

---@param variant integer
---@param item ItemPtr
function g_game.sendQuickLoot(variant, item) end

---@param filter integer
---@param size integer
---@param listedItems integer[]
function g_game.requestQuickLootBlackWhiteList(filter, size, listedItems) end

---@param action integer
---@param category integer
---@param pos Position
---@param itemId integer
---@param stackpos integer
---@param useMainAsFallback boolean
function g_game.openContainerQuickLoot(action, category, pos, itemId, stackpos, useMainAsFallback) end

--------------------------------
--------- g_gameConfig ---------
--------------------------------

---@class g_gameConfig
g_gameConfig = {}

function g_gameConfig.loadFonts() end

---@return integer
function g_gameConfig.getSpriteSize() end

---@return boolean
function g_gameConfig.isDrawingInformationByWidget() end

---@return boolean
function g_gameConfig.isAdjustCreatureInformationBasedCropSize() end

---@return integer
function g_gameConfig.getShieldBlinkTicks() end

---@return string
function g_gameConfig.getCreatureNameFontName() end

---@return string
function g_gameConfig.getAnimatedTextFontName() end

---@return string
function g_gameConfig.getStaticTextFontName() end

---@return string
function g_gameConfig.getWidgetTextFontName() end

--------------------------------
----------- g_client -----------
--------------------------------

---@class g_client
g_client = {}

---@param v number
function g_client.setEffectAlpha(v) end

---@param v number
function g_client.setMissileAlpha(v) end

--------------------------------
------ g_attachedEffects -------
--------------------------------

---@class g_attachedEffects
g_attachedEffects = {}

---@param id integer
---@return AttachedEffect | nil
function g_attachedEffects.getById(id) end

---@param id integer
---@param name string
---@param thingId integer
---@param category integer
---@return AttachedEffect | nil
function g_attachedEffects.registerByThing(id, name, thingId, category) end

---@param id integer
---@param name string
---@param path string
---@param smooth? boolean false
---@return AttachedEffect | nil
function g_attachedEffects.registerByImage(id, name, path, smooth) end

---@param id integer
function g_attachedEffects.remove(id) end

function g_attachedEffects.clear() end

--------------------------------
--------- ProtocolGame ---------
--------------------------------

---@class ProtocolGame : Protocol
ProtocolGame = {}

---@return ProtocolGame
function ProtocolGame.create() end

---@param opcode integer
---@param buffer string
function ProtocolGame:sendExtendedOpcode(opcode, buffer) end

--------------------------------
---------- Container -----------
--------------------------------

---@class Container
Container = {}

---@param slot integer
---@return Item | nil
function Container:getItem(slot) end

---@return Item[]
function Container:getItems() end

---@return integer
function Container:getItemsCount() end

---@param slot integer
---@return Position
function Container:getSlotPosition(slot) end

---@return string
function Container:getName() end

---@return integer
function Container:getId() end

---@return integer
function Container:getCapacity() end

---@return Item | nil
function Container:getContainerItem() end

---@return boolean
function Container:hasParent() end

---@return boolean
function Container:isClosed() end

---@return boolean
function Container:isUnlocked() end

---@return boolean
function Container:hasPages() end

---@return integer
function Container:getSize() end

---@return integer
function Container:getFirstIndex() end

--------------------------------
------- AttachableObject -------
--------------------------------

---@class AttachableObject
AttachableObject = {}

---@return AttachedEffect[]
function AttachableObject:getAttachedEffects() end

---@param obj AttachedEffect
function AttachableObject:attachEffect(obj) end

---@param obj AttachedEffect
---@return boolean
function AttachableObject:detachEffect(obj) end

---@param id integer
---@return boolean
function AttachableObject:detachEffectById(id) end

---@param id integer
---@return AttachedEffect | nil
function AttachableObject:getAttachedEffectById(id) end

---@param ignoreLuaEvent? false
function AttachableObject:clearAttachedEffects(ignoreLuaEvent) end

---@param name string
function AttachableObject:attachParticleEffect(name) end

---@param name string
---@return boolean
function AttachableObject:detachParticleEffectByName(name) end

function AttachableObject:clearAttachedParticlesEffect() end

---@return WidgetType[]
function AttachableObject:getAttachedWidgets() end

---@param widget UIWidget
function AttachableObject:attachWidget(widget) end

---@param widget UIWidget
---@return boolean
function AttachableObject:detachWidget(widget) end

---@param id string
---@return boolean
function AttachableObject:detachWidgetById(id) end

---@param id string
---@return WidgetType | nil
function AttachableObject:getAttachedWidgetById(id) end

--------------------------------
------------ Thing -------------
--------------------------------

---@class Thing : AttachableObject
Thing = {}

---@param id number
function Thing:setId(id) end

---@param name string
function Thing:setShader(name) end

---@param position Position | string
---@param stackPos? integer 0
---@param hasElevation? boolean false
function Thing:setPosition(position, stackPos, hasElevation) end

---@param color string
function Thing:setMarked(color) end

---@return boolean
function Thing:isMarked() end

---@return number
function Thing:getId() end

---@return Tile | nil
function Thing:getTile() end

---@return Position
function Thing:getPosition() end

---@return integer
function Thing:getStackPos() end

---@return MarketData
function Thing:getMarketData() end

---@return integer
function Thing:getStackPriority() end

---@return Container | nil
function Thing:getParentContainer() end

---@return boolean
function Thing:isItem() end

---@return boolean
function Thing:isMonster() end

---@return boolean
function Thing:isNpc() end

---@return boolean
function Thing:isCreature() end

---@return boolean
function Thing:isEffect() end

---@return boolean
function Thing:isMissile() end

---@return boolean
function Thing:isPlayer() end

---@return boolean
function Thing:isLocalPlayer() end

---@return boolean
function Thing:isGround() end

---@return boolean
function Thing:isGroundBorder() end

---@return boolean
function Thing:isOnBottom() end

---@return boolean
function Thing:isOnTop() end

---@return boolean
function Thing:isContainer() end

---@return boolean
function Thing:isForceUse() end

---@return boolean
function Thing:isMultiUse() end

---@return boolean
function Thing:isRotateable() end

---@return boolean
function Thing:isNotMoveable() end

---@return boolean
function Thing:isPickupable() end

---@return boolean
function Thing:isIgnoreLook() end

---@return boolean
function Thing:isStackable() end

---@return boolean
function Thing:isHookSouth() end

---@return boolean
function Thing:isTranslucent() end

---@return boolean
function Thing:isFullGround() end

---@return boolean
function Thing:isMarketable() end

---@return boolean
function Thing:isUsable() end

---@return boolean
function Thing:isWrapable() end

---@return boolean
function Thing:isUnwrapable() end

---@return boolean
function Thing:isTopEffect() end

---@return boolean
function Thing:isLyingCorpse() end

---@return integer
function Thing:getDefaultAction() end

---@return integer
function Thing:getClassification() end

---@param color string
function Thing:setHighlight(color) end

---@return integer
function Thing:isHighlighted() end

---@param layer? integer 0
---@param xPattern? integer 0
---@param yPattern? integer 0
---@param zPattern? integer 0
---@param animationPhase? integer 0
---@return integer
function Thing:getExactSize(layer, xPattern, yPattern, zPattern, animationPhase) end

--------------------------------
------------ House -------------
--------------------------------

---* FRAMEWORK_EDITOR
---@class House
House = {}

---@return House
function House.create() end

---@param id number
function House:setId(id) end

---@return number
function House:getId() end

---@param name string
function House:setName(name) end

---@return string
function House:getName() end

---@param tid number
function House:setTownId(tid) end

---@return number
function House:getTownId() end

---@param tile Tile
function House:setTile(tile) end

---@param pos Position | string
---@return Tile | nil
function House:getTile(pos) end

---@param pos Position | string
function House:setEntry(pos) end

---@return Position
function House:getEntry() end

---@param door Item
function House:addDoor(door) end

---@param door Item
function House:removeDoor(door) end

---@param doorId integer
function House:removeDoorById(doorId) end

---@param size number
function House:setSize(size) end

---@return number
function House:getSize() end

---@param rent number
function House:setRent(rent) end

---@return number
function House:getRent() end

--------------------------------
------------ Spawn -------------
--------------------------------

---* FRAMEWORK_EDITOR
---@class Spawn
Spawn = {}

---@return Spawn
function Spawn.create() end

---@param rent integer
function Spawn:setRadius(rent) end

---@return integer
function Spawn:getRadius() end

---@param pos Position | string
function Spawn:setCenterPos(pos) end

---@return Position
function Spawn:getCenterPos() end

---@param placePos Position | string
---@param creatureType CreatureType
function Spawn:addCreature(placePos, creatureType) end

---@param pos Position | string
function Spawn:removeCreature(pos) end

---@return CreatureType[]
function Spawn:getCreatures() end

--------------------------------
------------- Town -------------
--------------------------------

---* FRAMEWORK_EDITOR
---@class Town
Town = {}

---@return Town
function Town.create() end

---@param tid number
function Town:setId(tid) end

---@param name string
function Town:setName(name) end

---@param pos Position | string
function Town:setPos(pos) end

---@param pos Position | string
function Town:setTemplePos(pos) end

---@return number
function Town:getId() end

---@return string
function Town:getName() end

---@return Position
function Town:getPos() end

---@return Position
function Town:getTemplePos() end

--------------------------------
--------- CreatureType ---------
--------------------------------

---* FRAMEWORK_EDITOR
---@class CreatureType
CreatureType = {}

---@return CreatureType
function CreatureType.create() end

---@param name string
function CreatureType:setName(name) end

---@param outfit Outfit
function CreatureType:setOutfit(outfit) end

---@param spawnTime integer
function CreatureType:setSpawnTime(spawnTime) end

---@return string
function CreatureType:getName() end

---@return Outfit
function CreatureType:getOutfit() end

---@return integer
function CreatureType:getSpawnTime() end

---@return Creature
function CreatureType:cast() end

--------------------------------
----------- Creature -----------
--------------------------------

---@class Creature : Thing
Creature = {}

---@return Creature
function Creature.create() end

---@return number
function Creature:getId() end

---@return number
function Creature:getMasterId() end

---@return string
function Creature:getName() end

---@return integer
function Creature:getHealthPercent() end

---@return integer
function Creature:getSpeed() end

---@return integer
function Creature:getBaseSpeed() end

---@return integer
function Creature:getSkull() end

---@return integer
function Creature:getShield() end

---@return integer
function Creature:getEmblem() end

---@return integer
function Creature:getType() end

---@return integer
function Creature:getIcon() end

---@param outfit Outfit
function Creature:setOutfit(outfit) end

---@return Outfit
function Creature:getOutfit() end

---@return integer
function Creature:getDirection() end

---@param ignoreDiagonal? boolean false
---@param direction? integer
---@return integer
function Creature:getStepDuration(ignoreDiagonal, direction) end

---@return number
function Creature:getStepProgress() end

---@return number
function Creature:getWalkTicksElapsed() end

---@return number
function Creature:getStepTicksLeft() end

---@param direction integer
function Creature:setDirection(direction) end

---@param filename string
function Creature:setSkullTexture(filename) end

---@param filename string
---@param blink boolean
function Creature:setShieldTexture(filename, blink) end

---@param filename string
function Creature:setEmblemTexture(filename) end

---@param filename string
function Creature:setTypeTexture(filename) end

---@param filename string
function Creature:setIconTexture(filename) end

---@param v integer
function Creature:setStaticWalking(v) end

---@param color Color | string
function Creature:showStaticSquare(color) end

function Creature:hideStaticSquare() end

---@return boolean
function Creature:isWalking() end

---@return boolean
function Creature:isInvisible() end

---@return boolean
function Creature:isDead() end

---@return boolean
function Creature:isRemoved() end

---@return boolean
function Creature:canBeSeen() end

---@param height integer
---@param duration integer
function Creature:jump(height, duration) end

---@param name string
function Creature:setMountShader(name) end

---@param draw boolean
function Creature:setDrawOutfitColor(draw) end

---@param v boolean
function Creature:setDisableWalkAnimation(v) end

---@return boolean
function Creature:isDisabledWalkAnimation() end

---@return boolean
function Creature:isTimedSquareVisible() end

---@return Color
function Creature:getTimedSquareColor() end

---@return boolean
function Creature:isStaticSquareVisible() end

---@return Color
function Creature:getStaticSquareColor() end

---@param minHeight integer
---@param height integer
---@param speed integer
function Creature:setBounce(minHeight, height, speed) end

---@param typing boolean
function Creature:setTyping(typing) end

---@return boolean
function Creature:getTyping() end

function Creature:sendTyping() end

---@param filename string
function Creature:setTypingIconTexture(filename) end

---@return WidgetType | nil
function Creature:getWidgetInformation() end

---@param info UIWidget
function Creature:setWidgetInformation(info) end

---@return boolean
function Creature:isFullHealth() end

---@return boolean
function Creature:isCovered() end

---@param text string
---@param color Color | string
function Creature:setText(text, color) end

---@return string
function Creature:getText() end

function Creature:clearText() end

---@param distance integer
---@return boolean
function Creature:canShoot(distance) end

--------------------------------
----------- ItemType -----------
--------------------------------

---* FRAMEWORK_EDITOR
---@class ItemType
ItemType = {}

---@return integer
function ItemType:getServerId() end

---@return integer
function ItemType:getClientId() end

---@return boolean
function ItemType:isWritable() end

--------------------------------
---------- ThingType -----------
--------------------------------

---@class ThingType
ThingType = {}

---@return ThingType
function ThingType.create() end

---@return integer
function ItemType:getId() end

---@return integer
function ItemType:getClothSlot() end

---@return integer
function ItemType:getCategory() end

---@return Size
function ItemType:getSize() end

---@return integer
function ItemType:getWidth() end

---@return integer
function ItemType:getHeight() end

---@return Point
function ItemType:getDisplacement() end

---@return integer
function ItemType:getDisplacementX() end

---@return integer
function ItemType:getDisplacementY() end

---@return integer
function ItemType:getRealSize() end

---@return integer
function ItemType:getLayers() end

---@return integer
function ItemType:getNumPatternX() end

---@return integer
function ItemType:getNumPatternY() end

---@return integer
function ItemType:getNumPatternZ() end

---@return integer
function ItemType:getAnimationPhases() end

---@return integer
function ItemType:getGroundSpeed() end

---@return integer
function ItemType:getMaxTextLength() end

---@return Light
function ItemType:getLight() end

---@return integer
function ItemType:getMinimapColor() end

---@return integer
function ItemType:getLensHelp() end

---@return integer
function ItemType:getElevation() end

---@return boolean
function ItemType:isGround() end

---@return boolean
function ItemType:isGroundBorder() end

---@return boolean
function ItemType:isOnBottom() end

---@return boolean
function ItemType:isOnTop() end

---@return boolean
function ItemType:isContainer() end

---@return boolean
function ItemType:isStackable() end

---@return boolean
function ItemType:isForceUse() end

---@return boolean
function ItemType:isMultiUse() end

---@return boolean
function ItemType:isWritable() end

---@return boolean
function ItemType:isChargeable() end

---@return boolean
function ItemType:isWritableOnce() end

---@return boolean
function ItemType:isFluidContainer() end

---@return boolean
function ItemType:isSplash() end

---@return boolean
function ItemType:isNotWalkable() end

---@return boolean
function ItemType:isNotMoveable() end

---@return boolean
function ItemType:blockProjectile() end

---@return boolean
function ItemType:isNotPathable() end

---@param pathable boolean
function ItemType:setPathable(pathable) end

---@return boolean
function ItemType:isPickupable() end

---@return boolean
function ItemType:isHangable() end

---@return boolean
function ItemType:isHookSouth() end

---@return boolean
function ItemType:isHookEast() end

---@return boolean
function ItemType:isRotateable() end

---@return boolean
function ItemType:hasLight() end

---@return boolean
function ItemType:isDontHide() end

---@return boolean
function ItemType:isTranslucent() end

---@return boolean
function ItemType:hasDisplacement() end

---@return boolean
function ItemType:hasElevation() end

---@return boolean
function ItemType:isLyingCorpse() end

---@return boolean
function ItemType:isAnimateAlways() end

---@return boolean
function ItemType:hasMiniMapColor() end

---@return boolean
function ItemType:hasLensHelp() end

---@return boolean
function ItemType:isFullGround() end

---@return boolean
function ItemType:isIgnoreLook() end

---@return boolean
function ItemType:isCloth() end

---@return boolean
function ItemType:isMarketable() end

---@return MarketData
function ItemType:getMarketData() end

---@return boolean
function ItemType:isUsable() end

---@return boolean
function ItemType:isWrapable() end

---@return boolean
function ItemType:isUnwrapable() end

---@return boolean
function ItemType:isTopEffect() end

---@return number[]
function ItemType:getSprites() end

---@param attr integer
---@return boolean
function ItemType:hasAttribute(attr) end

---@return integer
function ItemType:getClassification() end

---@return boolean
function ItemType:hasWearOut() end

---@return boolean
function ItemType:hasClockExpire() end

---@return boolean
function ItemType:hasExpire() end

---@return boolean
function ItemType:hasExpireStop() end

---@return boolean
function ItemType:isPodium() end

---@return integer
function ItemType:getDefaultAction() end

---@return string
function ItemType:getName() end

---@return string
function ItemType:getDescription() end

---@return number
function ItemType:getOpacity() end

---* FRAMEWORK_EDITOR
---@param fileName string
function ItemType:exportImage(fileName) end

--------------------------------
------------- Item -------------
--------------------------------

---@class Item : Thing
Item = {}

---@param id integer
---@return Item
function Item.create(id) end

---@return Item
function Item:clone() end

---@param count integer
function Item:setCount(count) end

---@param tooltip string
function Item:setTooltip(tooltip) end

---@return integer
function Item:getCount() end

---@return integer
function Item:getSubType() end

---@return integer
function Item:getCountOrSubType() end

---@return number
function Item:getId() end

---@return string
function Item:getTooltip() end

---@return boolean
function Item:isStackable() end

---@return boolean
function Item:isMarketable() end

---@return boolean
function Item:isFluidContainer() end

---@return MarketData
function Item:getMarketData() end

---@return integer
function Item:getClothSlot() end

---@return boolean
function Item:hasWearOut() end

---@return boolean
function Item:hasClockExpire() end

---@return boolean
function Item:hasExpire() end

---@return boolean
function Item:hasExpireStop() end

---* FRAMEWORK_EDITOR
---@return string
function Item:getName() end

---* FRAMEWORK_EDITOR
---@return integer
function Item:getServerId() end

---* FRAMEWORK_EDITOR
---@param id integer
---@return Item
function Item:createOtb(id) end

---* FRAMEWORK_EDITOR
---@return Item[]
function Item:getContainerItems() end

---* FRAMEWORK_EDITOR
---@param slot integer
---@return Item | nil
function Item:getContainerItem(slot) end

---* FRAMEWORK_EDITOR
---@param item Item
function Item:addContainerItem(item) end

---* FRAMEWORK_EDITOR
---@param item Item
---@param slot integer
function Item:addContainerItemIndexed(item, slot) end

---* FRAMEWORK_EDITOR
---@param slot integer
function Item:removeContainerItem(slot) end

---* FRAMEWORK_EDITOR
function Item:clearContainerItems() end

---* FRAMEWORK_EDITOR
---@return string
function Item:getDescription() end

---* FRAMEWORK_EDITOR
---@return string
function Item:getText() end

---* FRAMEWORK_EDITOR
---@param text string
function Item:setDescription(text) end

---* FRAMEWORK_EDITOR
---@param text string
function Item:setText(text) end

---* FRAMEWORK_EDITOR
---@return integer
function Item:getUniqueId() end

---* FRAMEWORK_EDITOR
---@return integer
function Item:getActionId() end

---* FRAMEWORK_EDITOR
---@param uniqueId integer
function Item:setUniqueId(uniqueId) end

---* FRAMEWORK_EDITOR
---@param uniqueId integer
function Item:setActionId(uniqueId) end

---* FRAMEWORK_EDITOR
---@return Position
function Item:getTeleportDestination() end

---* FRAMEWORK_EDITOR
---@param pos Position | string
function Item:setTeleportDestination(pos) end

--------------------------------
------------ Effect ------------
--------------------------------

---@class Effect : Thing
Effect = {}

---@return Effect
function Effect.create() end

---@param id number
function Effect:setId(id) end

--------------------------------
----------- Missile ------------
--------------------------------

---@class Missile : Thing
Missile = {}

---@return Missile
function Missile.create() end

---@param id number
function Missile:setId(id) end

---@param fromPosition Position | string
---@param toPosition Position | string
function Missile:setPath(fromPosition, toPosition) end

--------------------------------
-------- AttachedEffect --------
--------------------------------

---@class AttachedEffect
AttachedEffect = {}

---@param thingId integer
---@param category integer
---@return AttachedEffect
function AttachedEffect.create(thingId, category) end

---@return AttachedEffect
function AttachedEffect:clone() end

---@return integer
function AttachedEffect:getId() end

---@return number
function AttachedEffect:getSpeed() end

---@param onTop boolean
function AttachedEffect:setOnTop(onTop) end

---@param speed number
function AttachedEffect:setSpeed(speed) end

---@param v boolean
function AttachedEffect:setDisableWalkAnimation(v) end

---@param opacity number
function AttachedEffect:setOpacity(opacity) end

---@param duration integer
function AttachedEffect:setDuration(duration) end

---@return integer
function AttachedEffect:getDuration() end

---@param v boolean
function AttachedEffect:setHideOwner(v) end

---@param v integer
function AttachedEffect:setLoop(v) end

---@param permanent boolean
function AttachedEffect:setPermanent(permanent) end

---@return boolean
function AttachedEffect:isPermanent() end

---@param v boolean
function AttachedEffect:setTransform(v) end

---@param x integer
---@param y integer
function AttachedEffect:setOffset(x, y) end

---@param direction integer
---@param x integer
---@param y integer
---@param onTop? boolean false
function AttachedEffect:setDirOffset(direction, x, y, onTop) end

---@param direction integer
---@param onTop boolean
function AttachedEffect:setOnTopByDir(direction, onTop) end

---@param name string
function AttachedEffect:setShader(name) end

---@param size Size | string
function AttachedEffect:setSize(size) end

---@return boolean
function AttachedEffect:canDrawOnUI() end

---@param canDraw boolean
function AttachedEffect:setCanDrawOnUI(canDraw) end

---@param effect AttachedEffect
function AttachedEffect:attachEffect(effect) end

---@param drawOrder integer
function AttachedEffect:setDrawOrder(drawOrder) end

---@param light Light
function AttachedEffect:setLight(light) end

---@param minHeight integer
---@param height integer
---@param speed integer
function AttachedEffect:setBounce(minHeight, height, speed) end

---@param direction integer
function AttachedEffect:setDirection(direction) end

---@return integer
function AttachedEffect:getDirection() end

---@param fromPosition Position | string
---@param toPosition Position | string
function AttachedEffect:move(fromPosition, toPosition) end

--------------------------------
---------- StaticText ----------
--------------------------------

---@class StaticText
StaticText = {}

---@return StaticText
function StaticText.create() end

---@param name string
---@param mode integer
---@param text string
function StaticText:addMessage(name, mode, text) end

---@param text string
function StaticText:setText(text) end

---@param fontName string
function StaticText:setFont(fontName) end

---@param color Color | string
function StaticText:setColor(color) end

---@return Color
function StaticText:getColor() end

--------------------------------
--------- AnimatedText ---------
--------------------------------

---@class AnimatedText
AnimatedText = {}

---@return string
function AnimatedText:getText() end

---@return Point
function AnimatedText:getOffset() end

---@return Color
function AnimatedText:getColor() end

--------------------------------
------------ Player ------------
--------------------------------

---@class Player : Creature
Player = {}

--------------------------------
------------- Npc --------------
--------------------------------

---@class Npc : Creature
Npc = {}

--------------------------------
----------- Monster ------------
--------------------------------

---@class Monster : Creature
Monster = {}

--------------------------------
--------- LocalPlayer ----------
--------------------------------

---@class LocalPlayer : Player
LocalPlayer = {}

function LocalPlayer:unlockWalk() end

---@param millis? integer 250
function LocalPlayer:lockWalk(millis) end

---@param ignoreLock? boolean false
---@return boolean
function LocalPlayer:canWalk(ignoreLock) end

---@param states number
function LocalPlayer:setStates(states) end

---@param skillId integer
---@param level integer
---@param levelPercent integer
function LocalPlayer:setSkill(skillId, level, levelPercent) end

---@param health number
---@param maxHealth number
function LocalPlayer:setHealth(health, maxHealth) end

---@param totalCapacity number
function LocalPlayer:setTotalCapacity(totalCapacity) end

---@param freeCapacity number
function LocalPlayer:setFreeCapacity(freeCapacity) end

---@param experience number
function LocalPlayer:setExperience(experience) end

---@param level integer
---@param levelPercent integer
function LocalPlayer:setLevel(level, levelPercent) end

---@param mana number
---@param maxMana number
function LocalPlayer:setMana(mana, maxMana) end

---@param magicLevel integer
---@param magicLevelPercent integer
function LocalPlayer:setMagicLevel(magicLevel, magicLevelPercent) end

---@param soul integer
function LocalPlayer:setSoul(soul) end

---@param stamina integer
function LocalPlayer:setStamina(stamina) end

---@param known boolean
function LocalPlayer:setKnown(known) end

---@param slot integer
---@param item Item
function LocalPlayer:setInventoryItem(slot, item) end

---@return number
function LocalPlayer:getStates() end

---@param skill integer
---@return integer
function LocalPlayer:getSkillLevel(skill) end

---@param skill integer
---@return integer
function LocalPlayer:getSkillBaseLevel(skill) end

---@param skill integer
---@return integer
function LocalPlayer:getSkillLevelPercent(skill) end

---@return number
function LocalPlayer:getHealth() end

---@return number
function LocalPlayer:getMaxHealth() end

---@return number
function LocalPlayer:getFreeCapacity() end

---@return number
function LocalPlayer:getExperience() end

---@return integer
function LocalPlayer:getLevel() end

---@return integer
function LocalPlayer:getLevelPercent() end

---@return number
function LocalPlayer:getMana() end

---@return number
function LocalPlayer:getMaxMana() end

---@return integer
function LocalPlayer:getMagicLevel() end

---@return integer
function LocalPlayer:getMagicLevelPercent() end

---@return integer
function LocalPlayer:getSoul() end

---@return integer
function LocalPlayer:getStamina() end

---@return integer
function LocalPlayer:getOfflineTrainingTime() end

---@return integer
function LocalPlayer:getRegenerationTime() end

---@return integer
function LocalPlayer:getBaseMagicLevel() end

---@return number
function LocalPlayer:getTotalCapacity() end

---@param slot integer
---@return Item | nil
function LocalPlayer:getInventoryItem(slot) end

---@return integer
function LocalPlayer:getVocation() end

---@return integer
function LocalPlayer:getBlessings() end

---@return boolean
function LocalPlayer:isPremium() end

---@return boolean
function LocalPlayer:isKnown() end

---@return boolean
function LocalPlayer:isPreWalking() end

---@return boolean
function LocalPlayer:isSupplyStashAvailable() end

---@param pos Position | string
---@return boolean
function LocalPlayer:hasSight(pos) end

---@return boolean
function LocalPlayer:isAutoWalking() end

function LocalPlayer:stopAutoWalk() end

---@param destination Position | string
---@param retry? boolean false
---@return boolean
function LocalPlayer:autoWalk(destination, retry) end

---@param resource integer
---@return number
function LocalPlayer:getResourceBalance(resource) end

---@param resource integer
---@param value number
function LocalPlayer:setResourceBalance(resource, value) end

---@return number
function LocalPlayer:getTotalMoney() end

--------------------------------
------------ Tile --------------
--------------------------------

---@class Tile : AttachableObject
Tile = {}

function Tile:clean() end

---@param thing Thing
---@param stackPos integer
function Tile:addThing(thing, stackPos) end

---@param stackPos integer
---@return Thing | nil
function Tile:getThing(stackPos) end

---@return Thing[]
function Tile:getThings() end

---@return Item[]
function Tile:getItems() end

---@param thing Thing
---@return integer
function Tile:getThingStackPos(thing) end

---@return integer
function Tile:getThingCount() end

---@return Thing | nil
function Tile:getTopThing() end

---@param thing Thing
---@return boolean
function Tile:removeThing(thing) end

---@return Thing | nil
function Tile:getTopLookThing() end

---@return Thing | nil
function Tile:getTopUseThing() end

---@param checkAround? boolean false
---@return Creature | nil
function Tile:getTopCreature(checkAround) end

---@return Thing | nil
function Tile:getTopMoveThing() end

---@return Thing | nil
function Tile:getTopMultiUseThing() end

---@return Position
function Tile:getPosition() end

---@return Creature[]
function Tile:getCreatures() end

---@return Item | nil
function Tile:getGround() end

---@param ignoreCreatures? boolean false
---@return boolean
function Tile:isWalkable(ignoreCreatures) end

---@return boolean
function Tile:isFullGround() end

---@return boolean
function Tile:isFullyOpaque() end

---@return boolean
function Tile:isLookPossible() end

---@return boolean
function Tile:hasCreatures() end

---@return boolean
function Tile:isEmpty() end

---@return boolean
function Tile:isClickable() end

---@return boolean
function Tile:isPathable() end

---@param selectType? integer 2
function Tile:select(selectType) end

function Tile:unselect() end

---@return boolean
function Tile:isSelected() end

---@param firstFloor integer
---@return boolean
function Tile:isCovered(firstFloor) end

---@param firstFloor integer
---@param resetCache boolean
---@return boolean
function Tile:isCompletelyCovered(firstFloor, resetCache) end

---@param text string
---@param color Color | string
function Tile:setText(text, color) end

---@return string
function Tile:getText() end

---@param time integer
---@param color Color | string
function Tile:setTimer(time, color) end

---@return integer
function Tile:getTimer() end

---@param color Color | string
function Tile:setFill(color) end

---@param distance integer
---@return boolean
function Tile:canShoot(distance) end

---* FRAMEWORK_EDITOR
---@return boolean
function Tile:isHouseTile() end

---@param color integer
function Tile:overwriteMinimapColor(color) end

---@param flag number
function Tile:remFlag(flag) end

---@param flag number
function Tile:setFlag(flag) end

---@param flags number
function Tile:setFlags(flags) end

---@return number
function Tile:getFlags() end

---@param flag number
---@return boolean
function Tile:hasFlag(flag) end

--------------------------------
----------- UIItem -------------
--------------------------------

---@class UIItem : UIWidget
UIItem = {}

---@return UIItem
function UIItem.create() end

---@param id integer
function UIItem:setItemId(id) end

---@param count integer
function UIItem:setItemCount(count) end

---@param subType integer
function UIItem:setItemSubType(subType) end

---@param visible boolean
function UIItem:setItemVisible(visible) end

---@param item Item
function UIItem:setItem(item) end

---@param virtual boolean
function UIItem:setVirtual(virtual) end

---@param show boolean
function UIItem:setShowCount(show) end

---@param count integer
function UIItem:setDisplayCount(count) end

function UIItem:clearItem() end

---@return integer
function UIItem:getItemId() end

---@return integer
function UIItem:getItemCount() end

---@return integer
function UIItem:getItemSubType() end

---@return Item | nil
function UIItem:getItem() end

---@return boolean
function UIItem:isVirtual() end

---@return boolean
function UIItem:isItemVisible() end

--------------------------------
---------- UISprite ------------
--------------------------------

---@class UISprite : UIWidget
UISprite = {}

---@return UISprite
function UISprite.create() end

---@param spriteId integer
function UISprite:setSpriteId(spriteId) end

function UISprite:clearSprite() end

---@return integer
function UISprite:getSpriteId() end

---@param color Color | string
function UISprite:setSpriteColor(color) end

---@return boolean
function UISprite:hasSprite() end

--------------------------------
--------- UICreature -----------
--------------------------------

---@class UICreature : UIWidget
UICreature = {}

---@return UICreature
function UICreature.create() end

---@param creature Creature
function UICreature:setCreature(creature) end

---@param outfit Outfit
function UICreature:setOutfit(outfit) end

---@param size integer
function UICreature:setCreatureSize(size) end

---@return Creature | nil
function UICreature:getCreature() end

---@return integer
function UICreature:getCreatureSize() end

---@return integer
function UICreature:getDirection() end

---@param center boolean
function UICreature:setCenter(center) end

---@return boolean
function UICreature:isCentered() end

--------------------------------
------------ UIMap -------------
--------------------------------

---@class UIMap : UIWidget
UIMap = {}

---@return UIMap
function UIMap.create() end

---@param drawPane integer
function UIMap:drawSelf(drawPane) end

---@param x integer
---@param y integer
function UIMap:movePixels(x, y) end

---@param zoom integer
---@return boolean
function UIMap:setZoom(zoom) end

---@return boolean
function UIMap:zoomIn() end

---@return boolean
function UIMap:zoomOut() end

---@param y integer
function UIMap:movePixels(x, y) end

---@param creature Creature
function UIMap:followCreature(creature) end

---@param pos Position | string
function UIMap:setCameraPosition(pos) end

---@param maxZoomIn integer
function UIMap:setMaxZoomIn(maxZoomIn) end

---@param maxZoomOut integer
function UIMap:setMaxZoomOut(maxZoomOut) end

---@param floor integer
function UIMap:lockVisibleFloor(floor) end

function UIMap:unlockVisibleFloor() end

---@param visibleDimension Size | string
function UIMap:setVisibleDimension(visibleDimension) end

---@param viewMode number
function UIMap:setFloorViewMode(viewMode) end

---@param enable boolean
function UIMap:setDrawNames(enable) end

---@param enable boolean
function UIMap:setDrawHealthBars(enable) end

---@param enable boolean
function UIMap:setDrawLights(enable) end

---@param enable boolean
function UIMap:setLimitVisibleDimension(enable) end

---@param enable boolean
function UIMap:setDrawManaBar(enable) end

---@param enable boolean
function UIMap:setKeepAspectRatio(enable) end

---@param name string
---@param fadeIn integer
---@param fadeOut integer
function UIMap:setShader(name, fadeIn, fadeOut) end

---@return PainterShaderProgram | nil
function UIMap:getShader() end

---@return PainterShaderProgram | nil
function UIMap:getNextShader() end

---@return boolean
function UIMap:isSwitchingShader() end

---@param intensity number
function UIMap:setMinimumAmbientLight(intensity) end

---@param intensity number
function UIMap:setShadowFloorIntensity(intensity) end

---@param limitVisibleRange boolean
function UIMap:setLimitVisibleRange(limitVisibleRange) end

---@param force boolean
function UIMap:setDrawViewportEdge(force) end

---@return boolean
function UIMap:isDrawingNames() end

---@return boolean
function UIMap:isDrawingHealthBars() end

---@return boolean
function UIMap:isDrawingLights() end

---@return boolean
function UIMap:isLimitedVisibleDimension() end

---@return boolean
function UIMap:isDrawingManaBar() end

---@return boolean
function UIMap:isLimitVisibleRangeEnabled() end

---@return boolean
function UIMap:isKeepAspectRatioEnabled() end

---@param pos Position | string
---@return boolean
function UIMap:isInRange(pos) end

---@return Size
function UIMap:getVisibleDimension() end

---@return number
function UIMap:getFloorViewMode() end

---@return Creature | nil
function UIMap:getFollowingCreature() end

---@return Position
function UIMap:getCameraPosition() end

---@param mousePos Point | string
---@return Position
function UIMap:getPosition(mousePos) end

---@param mousePos Point | string
---@return Tile | nil
function UIMap:getTile(mousePos) end

---@return integer
function UIMap:getMaxZoomIn() end

---@return integer
function UIMap:getMaxZoomOut() end

---@return integer
function UIMap:getZoom() end

---@return number
function UIMap:getMinimumAmbientLight() end

---@param multiFloor? boolean false
---@return Creature[]
function UIMap:getSpectators(multiFloor) end

---@param multiFloor? boolean false
---@return Creature[]
function UIMap:getSightSpectators(multiFloor) end

---@param texturePath string
function UIMap:setCrosshairTexture(texturePath) end

---@param enable boolean
function UIMap:setDrawHighlightTarget(enable) end

---@param mode integer
function UIMap:setAntiAliasingMode(mode) end

---@param value integer
function UIMap:setFloorFading(value) end

function UIMap:clearTiles() end

--------------------------------
---------- UIMinimap -----------
--------------------------------

---@class UIMinimap : UIWidget
UIMinimap = {}

---@return UIMinimap
function UIMinimap.create() end

---@return boolean
function UIMinimap:zoomIn() end

---@return boolean
function UIMinimap:zoomOut() end

---@param zoom integer
---@return boolean
function UIMinimap:setZoom(zoom) end

---@param minZoom integer
function UIMinimap:setMixZoom(minZoom) end

---@param maxZoom integer
function UIMinimap:setMaxZoom(maxZoom) end

---@return boolean
function UIMinimap:floorUp() end

---@return boolean
function UIMinimap:floorDown() end

---@param pos Position | string
---@return Point
function UIMinimap:getTilePoint(pos) end

---@param mousePos Point | string
---@return Position
function UIMinimap:getTilePosition(mousePos) end

---@param pos Position | string
---@return Rect
function UIMinimap:getTileRect(pos) end

---@return Position
function UIMinimap:getCameraPosition() end

---@return integer
function UIMinimap:getMinZoom() end

---@return integer
function UIMinimap:getMaxZoom() end

---@return integer
function UIMinimap:getZoom() end

---@return number
function UIMinimap:getScale() end

---@param anchoredWidget UIWidget
---@param anchoredEdge integer
---@param hookedPosition Position | string
---@param hookedEdge integer
function UIMinimap:anchorPosition(anchoredWidget, anchoredEdge, hookedPosition, hookedEdge) end

---@param anchoredWidget UIWidget
---@param hookedPosition Position | string
function UIMinimap:fillPosition(anchoredWidget, hookedPosition) end

---@param anchoredWidget UIWidget
---@param hookedPosition Position | string
function UIMinimap:centerInPosition(anchoredWidget, hookedPosition) end

--------------------------------
-------- UIProgressRect --------
--------------------------------

---@class UIProgressRect : UIWidget
UIProgressRect = {}

---@return UIProgressRect
function UIProgressRect.create() end

---@param percent number
function UIProgressRect:setPercent(percent) end

---@return number
function UIProgressRect:getPercent() end

--------------------------------
----------- UIGraph ------------
--------------------------------

---@class UIGraph : UIWidget
UIGraph = {}

---@return UIGraph
function UIGraph.create() end

---@param value integer
---@param ignoreSmallValues? boolean false
function UIGraph:addValue(value, ignoreSmallValues) end

function UIGraph:clear() end

---@param width integer
function UIGraph:setLineWidth(width) end

---@param capacity integer
function UIGraph:setCapacity(capacity) end

---@param title string
function UIGraph:setTitle(title) end

---@param show boolean
function UIGraph:setShowLabels(show) end

--------------------------------
------ UIMapAnchorLayout -------
--------------------------------

---@class UIMapAnchorLayout : UIAnchorLayout
UIMapAnchorLayout = {}

--------------------------------
---------- g_platform ----------
--------------------------------

---@class g_platform
g_platform = {}

---@param process string
---@param args string[]
---@return boolean
function g_platform.spawnProcess(process, args) end

---@return integer
function g_platform.getProcessId() end

---@param name string
---@return integer
function g_platform.isProcessRunning(name) end

---@param from string
---@param to string
---@return boolean
function g_platform.copyFile(from, to) end

---@param file string
---@return boolean
function g_platform.fileExists(file) end

---@param file string
---@return boolean
function g_platform.removeFile(file) end

---@param name string
---@return boolean
function g_platform.killProcess(name) end

---@return string
function g_platform.getTempPath(name) end

---@param url string
---@param now? boolean false
---@return boolean
function g_platform.openUrl(url, now) end

---@return string
function g_platform.getCPUName() end

---@return number
function g_platform.getTotalSystemMemory() end

---@return string
function g_platform.getOSName() end

---@param file string
---@return number
function g_platform.getFileModificationTime(file) end

---@return number
function g_platform.getDevice() end

---@param deviceType? number 0
---@return string
function g_platform.getDeviceShortName(deviceType) end

---@param os? number 0
---@return string
function g_platform.getOsShortName(os) end

---@return boolean
function g_platform.isDesktop() end

---@return boolean
function g_platform.isMobile() end

---@return boolean
function g_platform.isConsole() end

---@param path string
---@param now? boolean false
---@return boolean
function g_platform.openDir(path, now) end

--------------------------------
------------- g_app ------------
--------------------------------

---@class g_app
g_app = {}

---@param name string
function g_app.setName(name) end

---@param name string
function g_app.setCompactName(name) end

---@param name string
function g_app.setOrganizationName(name) end

---@return boolean
function g_app.isRunning() end

---@return boolean
function g_app.isStopping() end

---@return string
function g_app.getName() end

---@return string
function g_app.getCompactName() end

---@return string
function g_app.getVersion() end

---@return string
function g_app.getBuildCompiler() end

---@return string
function g_app.getBuildDate() end

---@return string
function g_app.getBuildRevision() end

---@return string
function g_app.getBuildCommit() end

---@return string
function g_app.getBuildType() end

---@return string
function g_app.getBuildArch() end

---@return string
function g_app.getOs() end

---@return string
function g_app.getStartupOptions() end

function g_app.exit() end

function g_app.restart() end

---@return boolean
function g_app.isOnInputEvent() end

---@param optimize boolean
function g_app.optimize(optimize) end

---@param optimize boolean
function g_app.forceEffectOptimization(optimize) end

---@param draw boolean
function g_app.setDrawEffectOnTop(draw) end

---@return integer
function g_app.getFps(draw) end

---@return integer
function g_app.getMaxFps(draw) end

---@param maxFps integer
function g_app.setMaxFps(maxFps) end

---@return integer
function g_app.getTargetFps() end

---@param targetFps integer
function g_app.setTargetFps(targetFps) end

function g_app.resetTargetFps() end

---@return boolean
function g_app.isDrawingTexts() end

---@param draw boolean
function g_app.setDrawTexts(draw) end

---@param value boolean
function g_app.setLoadingAsyncTexture(value) end

---@return boolean
function g_app.isEncrypted() end

---@return boolean
function g_app.isScaled() end

---@param value number
function g_app.setCreatureInformationScale(value) end

---@param value number
function g_app.setAnimatedTextScale(value) end

---@param value number
function g_app.setStaticTextScale(value) end

---@param file string
function g_app.doScreenshot(file) end

---@param file string
function g_app.doMapScreenshot(file) end

--------------------------------
----------- g_crypt ------------
--------------------------------

---@class g_crypt
g_crypt = {}

---@return string
function g_crypt.genUUID() end

---@param uuid string
---@return boolean
function g_crypt.setMachineUUID(uuid) end

---@param str string
---@return string
function g_crypt.encrypt(str) end

---@param str string
---@return string
function g_crypt.decrypt(str) end

---@param n string
---@param e string
function g_crypt.rsaSetPublicKey(n, e) end

---@param p string
---@param q string
---@param d string
function g_crypt.rsaSetPrivateKey(p, q, d) end

---@return integer
function g_crypt.rsaGetSize() end

--------------------------------
----------- g_clock ------------
--------------------------------

---@class g_clock
g_clock = {}

---@return number
function g_clock.micros() end

---@return number
function g_clock.millis() end

---@return number
function g_clock.seconds() end

---@return number
function g_clock.realMillis() end

---@return number
function g_clock.realMicros() end

--------------------------------
---------- g_configs -----------
--------------------------------

---@class g_configs
g_configs = {}

---@return Config
function g_configs.getSettings() end

---@param file string
---@return Config | nil
function g_configs.get(file) end

---@param file string
---@return Config | nil
function g_configs.loadSettings(file) end

---@param file string
---@return Config | nil
function g_configs.load(file) end

---@param file string
---@return boolean
function g_configs.unload(file) end

---@param file string
---@return Config
function g_configs.create(file) end

--------------------------------
----------- g_logger -----------
--------------------------------

---@class g_logger
g_logger = {}

---@param level integer
---@param message string
function g_logger.log(level, message) end

function g_logger.fireOldMessages() end

---@param file string
function g_logger.setLogFile(file) end

---@param callback function
function g_logger.setOnLog(callback) end

---@param message string
function g_logger.debug(message) end

---@param message string
function g_logger.info(message) end

---@param message string
function g_logger.warning(message) end

---@param message string
function g_logger.error(message) end

---@param message string
function g_logger.fatal(message) end

---@param level integer
function g_logger.setLevel(level) end

---@return integer
function g_logger.getLevel() end

--------------------------------
---------- LoginHttp -----------
--------------------------------

---@class LoginHttp
LoginHttp = {}

---@return LoginHttp
function LoginHttp.create() end

---@param host string
---@param path string
---@param port integer
---@param email string
---@param password string
---@param token string
---@param requestId integer
---@param httpLogin boolean
function LoginHttp:httpLogin(host, path, port, email, password, token, requestId, httpLogin) end

--------------------------------
------------ g_http ------------
--------------------------------

---@class g_http
g_http = {}

---@param userAgent string
function g_http.setUserAgent(userAgent) end

---@param enable boolean
function g_http.setEnableTimeOutOnReadWrite(enable) end

---@param name string
---@param value string
function g_http.addCustomHeader(name, value) end

---@param url string
---@param timeOut? integer 5
---@return integer
function g_http.get(url, timeOut) end

---@param url string
---@param data string
---@param timeOut? integer 5
---@param isJson? boolean false
---@param checkContentLength? boolean true
---@return integer
function g_http.post(url, data, timeOut, isJson, checkContentLength) end

---@param url string
---@param path string
---@param timeOut? integer 5
---@return integer
function g_http.download(url, path, timeOut) end

---@param url string
---@param timeOut? integer 5
---@return integer
function g_http.ws(url, timeOut) end

---@param operationId integer
---@param message string
---@return boolean
function g_http.wsSend(operationId, message) end

---@param operationId integer
---@return boolean
function g_http.wsClose(operationId) end

---@param id integer
---@return boolean
function g_http.cancel(id) end

--------------------------------
---------- g_modules -----------
--------------------------------

---@class g_modules
g_modules = {}

function g_modules.discoverModules() end

---@param maxPriority integer
function g_modules.autoLoadModules(maxPriority) end

---@param moduleFile string
---@return Module | nil
function g_modules.discoverModule(moduleFile) end

---@param moduleName string
function g_modules.ensureModuleLoaded(moduleName) end

function g_modules.unloadModules() end

function g_modules.reloadModules() end

---@param moduleName string
---@return Module | nil
function g_modules.getModule(moduleName) end

---@return Module[]
function g_modules.getModules() end

---@return Module | nil
function g_modules.getCurrentModule() end

function g_modules.enableAutoReload() end

--------------------------------
--------- g_dispatcher ---------
--------------------------------

---@class g_dispatcher
g_dispatcher = {}

---@param callback function
---@return Event | nil
function g_dispatcher.addEvent(callback) end

---@param callback function
---@param delay integer
---@return ScheduledEvent | nil
function g_dispatcher.scheduleEvent(callback, delay) end

---@param callback function
---@param delay integer
---@return ScheduledEvent | nil
function g_dispatcher.cycleEvent(callback, delay) end

--------------------------------
--------- g_resources ----------
--------------------------------

---@class g_resources
g_resources = {}

---@param path string
---@param pushFront? boolean false
---@return boolean
function g_resources.addSearchPath(path, pushFront) end

---@param appWriteDirName string
---@return boolean
function g_resources.setupUserWriteDir(appWriteDirName) end

---@param writeDir string
---@param create? boolean false
---@return boolean
function g_resources.setWriteDir(writeDir, create) end

---@param packagesDir string
---@param packagesExt string
function g_resources.searchAndAddPackages(packagesDir, packagesExt) end

---@param path string
---@return boolean
function g_resources.removeSearchPath(path) end

---@param fileName string
---@return boolean
function g_resources.fileExists(fileName) end

---@param dirName string
---@return boolean
function g_resources.directoryExists(dirName) end

---@param path string
---@return string
function g_resources.getRealDir(path) end

---@return string
function g_resources.getWorkDir() end

---@return string
function g_resources.getUserDir() end

---@return string
function g_resources.getWriteDir() end

---@return string[]
function g_resources.getSearchPaths() end

---@param path string
---@return string
function g_resources.getRealPath(path) end

---@param path string
---@param fullPath? boolean false
---@param raw? boolean false
---@param recursive? boolean false
---@return string[]
function g_resources.listDirectoryFiles(path, fullPath, raw, recursive) end

---@param path string
---@param fileNameOnly boolean
---@param recursive boolean
---@return string[]
function g_resources.getDirectoryFiles(path, fileNameOnly, recursive) end

---@param fileName string
---@return string
function g_resources.readFileContents(fileName) end

---@param fileName string
---@param data string
---@return boolean
function g_resources.writeFileContents(fileName, data) end

---@param fileName string
---@param fileType string
---@return string
function g_resources.guessFilePath(fileName, fileType) end

---@param fileName string
---@param fileType string
---@return boolean
function g_resources.isFileType(fileName, fileType) end

---@param filePath string
---@return string
function g_resources.getFileName(filePath) end

---@param filePath string
---@return number
function g_resources.getFileTime(filePath) end

---@param dir string
---@return boolean
function g_resources.makeDir(dir) end

---@param fileName string
---@return boolean
function g_resources.deleteFile(fileName) end

---@param path string
---@return string
function g_resources.resolvePath(path) end

---@param path string
---@return string
function g_resources.fileChecksum(path) end

---@return table<string, string>
function g_resources.filesChecksums() end

---@return string
function g_resources.selfChecksum() end

---@param files string[]
function g_resources.updateFiles(files) end

---@param fileName string
function g_resources.updateExecutable(fileName) end

---@param files table<string, string>
---@return string
function g_resources.createArchive(files) end

---@param dataOrPath string
---@return table<string, string>
function g_resources.decompressArchive(dataOrPath) end

--------------------------------
------------ Config ------------
--------------------------------

---@class Config
Config = {}

---@return boolean
function Config:save() end

---@param key string
---@param value string
function Config:setValue(key, value) end

---@param key string
---@param list string[]
function Config:setList(key, list) end

---@param key string
---@return string
function Config:getValue(key) end

---@param key string
---@return string[]
function Config:getList(key) end

---@param key string
---@return boolean
function Config:exists(key) end

---@param key string
function Config:remove(key) end

---@param key string
---@param node OTMLNode
function Config:setNode(key, node) end

---@param key string
---@return OTMLNode | nil
function Config:getNode(key) end

---@param key string
---@return integer
function Config:getNodeSize(key) end

---@param key string
---@param node OTMLNode
---@return OTMLNode
function Config:getOrCreateNode(key, node) end

---@param key string
---@param node OTMLNode
function Config:mergeNode(key, node) end

---@return string
function Config:getFileName() end

--------------------------------
------------ Module ------------
--------------------------------

---@class Module
Module = {}

---@return boolean
function Module:load() end

function Module:unload() end

---@return boolean
function Module:reload() end

---@return boolean
function Module:canReload() end

---@return boolean
function Module:canUnload() end

---@return boolean
function Module:isLoaded() end

---@return boolean
function Module:isReloadble() end

---@return boolean
function Module:isSandboxed() end

---@return string
function Module:getDescription() end

---@return string
function Module:getName() end

---@return string
function Module:getAuthor() end

---@return string
function Module:getWebsite() end

---@return string
function Module:getVersion() end

---@return table
function Module:getSandbox() end

---@return boolean
function Module:isAutoLoad() end

---@return integer
function Module:getAutoLoadPriority() end

--------------------------------
------------ Event -------------
--------------------------------

---@class Event
Event = {}

function Event:cancel() end

function Event:execute() end

---@return boolean
function Event:isCanceled() end

---@return boolean
function Event:isExecuted() end

--------------------------------
-------- ScheduledEvent --------
--------------------------------

---@class ScheduledEvent : Event
ScheduledEvent = {}

---@return boolean
function ScheduledEvent:nextCycle() end

---@return integer
function ScheduledEvent:ticks() end

---@return integer
function ScheduledEvent:remainingTicks() end

---@return integer
function ScheduledEvent:delay() end

---@return integer
function ScheduledEvent:cyclesExecuted() end

---@return integer
function ScheduledEvent:maxCycles() end

--------------------------------
---------- g_window ------------
--------------------------------

---@class g_window
g_window = {}

---@param pos Point | string
function g_window.move(pos) end

---@param size Size | string
function g_window.resize(size) end

function g_window.show() end

function g_window.hide() end

function g_window.poll() end

function g_window.maximize() end

function g_window.restoreMouseCursor() end

function g_window.showMouse() end

function g_window.hideMouse() end

---@param title string
function g_window.setTitle(title) end

---@param cursorId integer
function g_window.setMouseCursor(cursorId) end

---@param minSize Size | string
function g_window.setMinimumSize(minSize) end

---@param fullscreen boolean
function g_window.setFullscreen(fullscreen) end

---@param enable boolean
function g_window.setVerticalSync(enable) end

---@param iconFile string
function g_window.setIcon(iconFile) end

---@param text string
function g_window.setClipboardText(text) end

---@return Size
function g_window.getDisplaySize() end

---@return string
function g_window.getClipboardText() end

---@return string
function g_window.getPlatformType() end

---@return integer
function g_window.getDisplayWidth() end

---@return integer
function g_window.getDisplayHeight() end

---@return Size
function g_window.getUnmaximizedSize() end

---@return Size
function g_window.getSize() end

---@return integer
function g_window.getWidth() end

---@return integer
function g_window.getHeight() end

---@return Point
function g_window.getUnmaximizedPos() end

---@return Point
function g_window.getPosition() end

---@return integer
function g_window.getX() end

---@return integer
function g_window.getY() end

---@return Point
function g_window.getMousePosition() end

---@return integer
function g_window.getKeyboardModifiers() end

---@param key integer
---@return boolean
function g_window.isKeyPressed(key) end

---@param mouseButton integer
---@return boolean
function g_window.isMouseButtonPressed(mouseButton) end

---@return boolean
function g_window.isVisible() end

---@return boolean
function g_window.isFullscreen() end

---@return boolean
function g_window.isMaximized() end

---@return boolean
function g_window.hasFocus() end

---@return number
function g_window.getDisplayDensity() end

--------------------------------
----------- g_mouse ------------
--------------------------------

---@class g_mouse
g_mouse = {}

---@param fileName string
function g_mouse.loadCursors(fileName) end

---@param name string
---@param file string
---@param hotSpot Point | string
function g_mouse.addCursor(name, file, hotSpot) end

---@param name string
---@return boolean
function g_mouse.pushCursor(name) end

---@param name string
function g_mouse.popCursor(name) end

---@return boolean
function g_mouse.isCursorChanged() end

---@param mouseButton? integer 0
---@return boolean
function g_mouse.isPressed(mouseButton) end

--------------------------------
---------- g_graphics ----------
--------------------------------

---@class g_graphics
g_graphics = {}

---@return Size
function g_graphics.getViewportSize() end

---@return string
function g_graphics.getVendor() end

---@return string
function g_graphics.getRenderer() end

---@return string
function g_graphics.getVersion() end

--------------------------------
---------- g_textures ----------
--------------------------------

---@class g_textures
g_textures = {}

---@param fileName string
---@param smooth? boolean true
function g_textures.preload(fileName, smooth) end

function g_textures.clearCache() end

function g_textures.liveReload() end

--------------------------------
------------- g_ui -------------
--------------------------------

---@class g_ui
g_ui = {}

function g_ui.clearStyles() end

---@param fileName string
---@param checkDeviceStyles? boolean true
---@return boolean
function g_ui.importStyle(fileName, checkDeviceStyles) end

---@param styleName string
---@return OTMLNode | nil
function g_ui.getStyle(styleName) end

---@param styleName string
---@return string
function g_ui.getStyleName(styleName) end

---@param styleName string
---@return string
function g_ui.getStyleClass(styleName) end

---@param file string
---@param parent? UIWidget
---@return WidgetType | nil
function g_ui.loadUI(file, parent) end

---@param data string
---@param parent UIWidget
---@return WidgetType | nil
function g_ui.loadUIFromString(data, parent) end

---@param file string
---@return WidgetType | nil
function g_ui.displayUI(file) end

---@param styleName string
---@param parent? UIWidget
---@return WidgetType | nil
function g_ui.createWidget(styleName, parent) end

---@param node OTMLNode
---@param parent UIWidget
---@return WidgetType | nil
function g_ui.createWidgetFromOTML(node, parent) end

---@return WidgetType
function g_ui.getRootWidget() end

---@return WidgetType | nil
function g_ui.getDraggingWidget() end

---@return WidgetType | nil
function g_ui.getPressedWidget() end

---@param enable boolean
function g_ui.setDebugBoxesDrawing(enable) end

---@return boolean
function g_ui.isDrawingDebugBoxes() end

---@return boolean
function g_ui.isMouseGrabbed() end

---@return boolean
function g_ui.isKeyboardGrabbed() end

--------------------------------
----------- g_fonts ------------
--------------------------------

---@class g_fonts
g_fonts = {}

function g_fonts.clearFonts() end

---@param file string
---@return boolean
function g_fonts.importFont(file) end

---@param fontName string
---@return boolean
function g_fonts.fontExists(fontName) end

--------------------------------
--------- g_particles ----------
--------------------------------

---@class g_particles
g_particles = {}

---@param file string
---@return boolean
function g_particles.importParticle(file) end

---@return ParticleEffectType[]
function g_particles.getEffectsTypes() end

function g_particles.terminate() end

--------------------------------
---------- g_shaders -----------
--------------------------------

---@class g_shaders
g_shaders = {}

---@param name string
---@param useFramebuffer? boolean false
function g_shaders.createShader(name, useFramebuffer) end

---@param name string
---@param file string
---@param useFramebuffer? boolean false
function g_shaders.createFragmentShader(name, file, useFramebuffer) end

---@param name string
---@param code string
---@param useFramebuffer? boolean false
function g_shaders.createFragmentShaderFromCode(name, code, useFramebuffer) end

---@param name string
function g_shaders.setupMapShader(name) end

---@param name string
function g_shaders.setupItemShader(name) end

---@param name string
function g_shaders.setupOutfitShader(name) end

---@param name string
function g_shaders.setupMountShader(name) end

---@param name string
---@param file string
function g_shaders.addMultiTexture(name, file) end

---@param name string
---@return PainterShaderProgram | nil
function g_shaders.getShader(name) end

function g_shaders.clear() end

--------------------------------
----------- UIWidget -----------
--------------------------------

---@class UIWidget
UIWidget = {}

---@return UIWidget
function UIWidget.create() end

---@param child UIWidget
function UIWidget:addChild(child) end

---@param index integer
---@param child UIWidget
function UIWidget:insertChild(index, child) end

---@param child UIWidget
function UIWidget:removeChild(child) end

---@param child UIWidget
---@param reason? integer 0
function UIWidget:focusChild(child, reason) end

---@param reason integer
---@param rotate? boolean false
function UIWidget:focusNextChild(reason, rotate) end

---@param reason integer
---@param rotate? boolean false
function UIWidget:focusPreviousChild(reason, rotate) end

---@param child UIWidget
function UIWidget:lowerChild(child) end

---@param child UIWidget
function UIWidget:raiseChild(child) end

---@param child UIWidget
---@param index integer
function UIWidget:moveChildToIndex(child, index) end

---@param children UIWidget[]
function UIWidget:reorderChildren(children) end

---@param child UIWidget
function UIWidget:lockChild(child) end

---@param child UIWidget
function UIWidget:unlockChild(child) end

---@param styleNode OTMLNode
function UIWidget:mergeStyle(styleNode) end

---@param styleNode OTMLNode
function UIWidget:applyStyle(styleNode) end

---@param anchoredEdge integer
---@param hookedWidgetId string
---@param hookedEdge integer
function UIWidget:addAnchor(anchoredEdge, hookedWidgetId, hookedEdge) end

---@param anchoredEdge integer
function UIWidget:removeAnchor(anchoredEdge) end

---@param hookedWidgetId string
function UIWidget:fill(hookedWidgetId) end

---@param hookedWidgetId string
function UIWidget:centerIn(hookedWidgetId) end

function UIWidget:breakAnchors() end

function UIWidget:updateParentLayout() end

function UIWidget:updateLayout() end

function UIWidget:lock() end

function UIWidget:unlock() end

function UIWidget:focus() end

function UIWidget:lower() end

function UIWidget:raise() end

function UIWidget:grabMouse() end

function UIWidget:ungrabMouse() end

function UIWidget:grabKeyboard() end

function UIWidget:ungrabKeyboard() end

function UIWidget:bindRectToParent() end

function UIWidget:destroy() end

function UIWidget:destroyChildren() end

function UIWidget:removeChildren() end

function UIWidget:hideChildren() end

function UIWidget:showChildren() end

---@param id string
function UIWidget:setId(id) end

---@param parent UIWidget
function UIWidget:setParent(parent) end

---@param layout UILayout
function UIWidget:setLayout(layout) end

---@param rect Rect | string
---@return boolean
function UIWidget:setRect(rect) end

---@param styleName string
function UIWidget:setStyle(styleName) end

---@param styleNode OTMLNode
function UIWidget:setStyleFromNode(styleNode) end

---@param enabled boolean
function UIWidget:setEnabled(enabled) end

---@param visible boolean
function UIWidget:setVisible(visible) end

---@param on boolean
function UIWidget:setOn(on) end

---@param checked boolean
function UIWidget:setChecked(checked) end

---@param focusable boolean
function UIWidget:setFocusable(focusable) end

---@param phantom boolean
function UIWidget:setPhantom(phantom) end

---@param draggable boolean
function UIWidget:setPhantom(draggable) end

---@param fixed boolean
function UIWidget:setFixedSize(fixed) end

---@param clipping boolean
function UIWidget:setClipping(clipping) end

---@param reason integer
function UIWidget:setLastFocusReason(reason) end

---@param policy integer
function UIWidget:setAutoFocusPolicy(policy) end

---@param delay integer
function UIWidget:setAutoRepeatDelay(delay) end

---@param offset Point | string
function UIWidget:setVirtualOffset(offset) end

---@return boolean
function UIWidget:isVisible() end

---@param child UIWidget
---@return boolean
function UIWidget:isChildLocked(child) end

---@param child UIWidget
---@return boolean
function UIWidget:hasChild(child) end

---@param child? UIWidget
---@return integer
function UIWidget:getChildIndex(child) end

---@return Rect
function UIWidget:getMarginRect() end

---@return Rect
function UIWidget:getPaddingRect() end

---@return Rect
function UIWidget:getChildrenRect() end

---@return UIAnchorLayout
function UIWidget:getAnchoredLayout() end

---@return WidgetType
function UIWidget:getRootParent() end

---@param relativeChild UIWidget
---@return WidgetType | nil
function UIWidget:getChildAfter(relativeChild) end

---@param relativeChild UIWidget
---@return WidgetType | nil
function UIWidget:getChildBefore(relativeChild) end

---@param id string
---@return WidgetType | nil
function UIWidget:getChildById(id) end

---@param pos Point | string
---@return WidgetType | nil
function UIWidget:getChildByPos(pos) end

---@param index integer
---@return WidgetType | nil
function UIWidget:getChildByIndex(index) end

---@param state number
---@return WidgetType | nil
function UIWidget:getChildByState(state) end

---@param styleName string
---@return WidgetType | nil
function UIWidget:getChildByStyleName(styleName) end

---@param id string
---@return WidgetType | nil
function UIWidget:recursiveGetChildById(id) end

---@param pos Point | string
---@param wantsPhantom? boolean false
---@return WidgetType | nil
function UIWidget:recursiveGetChildByPos(pos, wantsPhantom) end

---@param state number
---@param wantsPhantom? boolean false
---@return WidgetType | nil
function UIWidget:recursiveGetChildByState(state, wantsPhantom) end

---@return WidgetType[]
function UIWidget:recursiveGetChildren() end

---@param pos Point | string
---@return WidgetType[]
function UIWidget:recursiveGetChildrenByPos(pos) end

---@param pos Point | string
---@return WidgetType[]
function UIWidget:recursiveGetChildrenByMarginPos(pos) end

---@param state number
---@return WidgetType[]
function UIWidget:recursiveGetChildrenByState(state) end

---@param styleName string
---@return WidgetType[]
function UIWidget:recursiveGetChildrenByStyleName(styleName) end

---@param id string
---@return WidgetType | nil
function UIWidget:backwardsGetWidgetById(id) end

---@param width integer
---@param height integer
function UIWidget:resize(width, height) end

---@param x integer
---@param y integer
function UIWidget:move(x, y) end

---@param degress number
function UIWidget:rotate(degress) end

function UIWidget:hide() end

function UIWidget:show() end

function UIWidget:disable() end

function UIWidget:enable() end

---@return boolean
function UIWidget:isActive() end

---@return boolean
function UIWidget:isEnabled() end

---@return boolean
function UIWidget:isDisabled() end

---@return boolean
function UIWidget:isFocused() end

---@return boolean
function UIWidget:isHovered() end

---@return boolean
function UIWidget:isChildHovered() end

---@return boolean
function UIWidget:isPressed() end

---@return boolean
function UIWidget:isFirst() end

---@return boolean
function UIWidget:isMiddle() end

---@return boolean
function UIWidget:isLast() end

---@return boolean
function UIWidget:isAlternate() end

---@return boolean
function UIWidget:isChecked() end

---@return boolean
function UIWidget:isOn() end

---@return boolean
function UIWidget:isDragging() end

---@return boolean
function UIWidget:isHidden() end

---@return boolean
function UIWidget:isExplicitlyEnabled() end

---@return boolean
function UIWidget:isExplicitlyVisible() end

---@return boolean
function UIWidget:isFocusable() end

---@return boolean
function UIWidget:isPhantom() end

---@return boolean
function UIWidget:isDraggable() end

---@return boolean
function UIWidget:isFixedSize() end

---@return boolean
function UIWidget:isClipping() end

---@return boolean
function UIWidget:isDestroyed() end

---@return boolean
function UIWidget:isFirstOnStyle() end

---@return boolean
function UIWidget:isTextWrap() end

---@return boolean
function UIWidget:hasChildren() end

---@param point Point | string
---@return boolean
function UIWidget:containsMarginPoint(point) end

---@param point Point | string
---@return boolean
function UIWidget:containsPaddingPoint(point) end

---@param point Point | string
---@return boolean
function UIWidget:containsPoint(point) end

---@param rect Rect | string
---@return boolean
function UIWidget:intersects(rect) end

---@param rect Rect | string
---@return boolean
function UIWidget:intersectsMargin(rect) end

---@param rect Rect | string
---@return boolean
function UIWidget:intersectsPadding(rect) end

---@return string
function UIWidget:getId() end

---@return string
function UIWidget:getSource() end

---@return WidgetType | nil
function UIWidget:getParent() end

---@return WidgetType | nil
function UIWidget:getFocusedChild() end

---@return WidgetType | nil
function UIWidget:getHoveredChild() end

---@return WidgetType[]
function UIWidget:getChildren() end

---@return WidgetType | nil
function UIWidget:getFirstChild() end

---@return WidgetType | nil
function UIWidget:getLastChild() end

---@return UILayout | nil
function UIWidget:getLayout() end

---@return OTMLNode | nil
function UIWidget:getStyle() end

---@return integer
function UIWidget:getChildCount() end

---@return integer
function UIWidget:getLastFocusReason() end

---@return integer
function UIWidget:getAutoFocusPolicy() end

---@return integer
function UIWidget:getAutoRepeatDelay() end

---@return Point
function UIWidget:getVirtualOffset() end

---@return string
function UIWidget:getStyleName() end

---@return Point
function UIWidget:getLastClickPosition() end

---@param x integer
function UIWidget:setX(x) end

---@param y integer
function UIWidget:setY(y) end

---@param width integer
function UIWidget:setWidth(width) end

---@param height integer
function UIWidget:setHeight(height) end

---@param size Size | string
function UIWidget:setSize(size) end

---@param minWidth integer
function UIWidget:setMinWidth(minWidth) end

---@param maxWidth integer
function UIWidget:setMaxWidth(maxWidth) end

---@param minHeight integer
function UIWidget:setMinHeight(minHeight) end

---@param maxHeight integer
function UIWidget:setMaxHeight(maxHeight) end

---@param minSize Size | string
function UIWidget:setMinSize(minSize) end

---@param maxSize Size | string
function UIWidget:setMaxSize(maxSize) end

---@param pos Point | string
function UIWidget:setPosition(pos) end

---@param color Color | string
function UIWidget:setColor(color) end

---@param color Color | string
function UIWidget:setBackgroundColor(color) end

---@param x integer
function UIWidget:setBackgroundOffsetX(x) end

---@param y integer
function UIWidget:setBackgroundOffsetY(y) end

---@param pos Point | string
function UIWidget:setBackgroundOffset(pos) end

---@param width integer
function UIWidget:setBackgroundWidth(width) end

---@param height integer
function UIWidget:setBackgroundHeight(height) end

---@param size Size | string
function UIWidget:setBackgroundSize(size) end

---@param rect Rect | string
function UIWidget:setBackgroundRect(rect) end

---@param iconFile string
function UIWidget:setIcon(iconFile) end

---@param color Color | string
function UIWidget:setIconColor(color) end

---@param x integer
function UIWidget:setIconOffsetX(x) end

---@param y integer
function UIWidget:setIconOffsetY(y) end

---@param pos Point | string
function UIWidget:setIconOffset(pos) end

---@param width integer
function UIWidget:setIconWidth(width) end

---@param height integer
function UIWidget:setIconHeight(height) end

---@param size Size | string
function UIWidget:setIconSize(size) end

---@param rect Size | string
function UIWidget:setIconRect(rect) end

---@param rect Rect | string
function UIWidget:setIconClip(rect) end

---@param align integer
function UIWidget:setIconAlign(align) end

---@param width integer
function UIWidget:setBorderWidth(width) end

---@param width integer
function UIWidget:setBorderWidthTop(width) end

---@param width integer
function UIWidget:setBorderWidthRight(width) end

---@param width integer
function UIWidget:setBorderWidthBottom(width) end

---@param width integer
function UIWidget:setBorderWidthLeft(width) end

---@param color Color | string
function UIWidget:setBorderColor(color) end

---@param color Color | string
function UIWidget:setBorderColorTop(color) end

---@param color Color | string
function UIWidget:setBorderColorRight(color) end

---@param color Color | string
function UIWidget:setBorderColorBottom(color) end

---@param color Color | string
function UIWidget:setBorderColorLeft(color) end

---@param margin integer
function UIWidget:setMargin(margin) end

---@param margin integer
function UIWidget:setMarginHorizontal(margin) end

---@param margin integer
function UIWidget:setMarginVertical(margin) end

---@param margin integer
function UIWidget:setMarginTop(margin) end

---@param margin integer
function UIWidget:setMarginRight(margin) end

---@param margin integer
function UIWidget:setMarginBottom(margin) end

---@param margin integer
function UIWidget:setMarginLeft(margin) end

---@param padding integer
function UIWidget:setPadding(padding) end

---@param padding integer
function UIWidget:setPaddingHorizontal(padding) end

---@param padding integer
function UIWidget:setPaddingVertical(padding) end

---@param padding integer
function UIWidget:setPaddingTop(padding) end

---@param padding integer
function UIWidget:setPaddingRight(padding) end

---@param padding integer
function UIWidget:setPaddingBottom(padding) end

---@param padding integer
function UIWidget:setPaddingLeft(padding) end

---@param opacity number
function UIWidget:setOpacity(opacity) end

---@param degress number
function UIWidget:setRotation(degress) end

---@return integer
function UIWidget:getX() end

---@return integer
function UIWidget:getY() end

---@return Point
function UIWidget:getPosition() end

---@return Point
function UIWidget:getCenter() end

---@return integer
function UIWidget:getWidth() end

---@return integer
function UIWidget:getHeight() end

---@return Size
function UIWidget:getSize() end

---@return Rect
function UIWidget:getRect() end

---@return integer
function UIWidget:getMinWidth() end

---@return integer
function UIWidget:getMaxWidth() end

---@return integer
function UIWidget:getMinHeight() end

---@return integer
function UIWidget:getMaxHeight() end

---@return Size
function UIWidget:getMinSize() end

---@return Size
function UIWidget:getMaxSize() end

---@return Color
function UIWidget:getColor() end

---@return Color
function UIWidget:getBackgroundColor() end

---@return integer
function UIWidget:getBackgroundOffsetX() end

---@return integer
function UIWidget:getBackgroundOffsetY() end

---@return Point
function UIWidget:getBackgroundOffset() end

---@return integer
function UIWidget:getBackgroundWidth() end

---@return integer
function UIWidget:getBackgroundHeight() end

---@return Size
function UIWidget:getBackgroundSize() end

---@return Rect
function UIWidget:getBackgroundRect() end

---@return Color
function UIWidget:getIconColor() end

---@return integer
function UIWidget:getIconOffsetX() end

---@return integer
function UIWidget:getIconOffsetY() end

---@return Point
function UIWidget:getIconOffset() end

---@return integer
function UIWidget:getIconHeight() end

---@return Size
function UIWidget:getIconSize() end

---@return Rect
function UIWidget:getIconRect() end

---@return Rect
function UIWidget:getIconClip() end

---@return integer
function UIWidget:getIconAlign() end

---@return Color
function UIWidget:getBorderTopColor() end

---@return Color
function UIWidget:getBorderRightColor() end

---@return Color
function UIWidget:getBorderBottomColor() end

---@return Color
function UIWidget:getBorderLeftColor() end

---@return integer
function UIWidget:getBorderTopWidth() end

---@return integer
function UIWidget:getBorderRightWidth() end

---@return integer
function UIWidget:getBorderBottomWidth() end

---@return integer
function UIWidget:getBorderLeftWidth() end

---@return string
function UIWidget:getImageSource() end

---@return integer
function UIWidget:getMarginTop() end

---@return integer
function UIWidget:getMarginRight() end

---@return integer
function UIWidget:getMarginBottom() end

---@return integer
function UIWidget:getMarginLeft() end

---@return integer
function UIWidget:getPaddingTop() end

---@return integer
function UIWidget:getPaddingRight() end

---@return integer
function UIWidget:getPaddingBottom() end

---@return integer
function UIWidget:getPaddingLeft() end

---@return number
function UIWidget:getOpacity() end

---@return number
function UIWidget:getRotation() end

---@param source string
---@param base64? boolean false
function UIWidget:setImageSource(source, base64) end

---@param rect Rect | string
function UIWidget:setImageClip(rect) end

---@param x integer
function UIWidget:setImageOffsetX(x) end

---@param y integer
function UIWidget:setImageOffsetY(y) end

---@param pos Point | string
function UIWidget:setImageOffset(pos) end

---@param width integer
function UIWidget:setImageWidth(width) end

---@param height integer
function UIWidget:setImageHeight(height) end

---@param size Size | string
function UIWidget:setImageSize(size) end

---@param rect Rect | string
function UIWidget:setImageRect(rect) end

---@param color Color | string
function UIWidget:setImageColor(color) end

---@param fixedRatio boolean
function UIWidget:setImageFixedRatio(fixedRatio) end

---@param repeated boolean
function UIWidget:setImageRepeated(repeated) end

---@param smooth boolean
function UIWidget:setImageSmooth(smooth) end

---@param autoResize boolean
function UIWidget:setImageAutoResize(autoResize) end

---@param border integer
function UIWidget:setImageBorderTop(border) end

---@param border integer
function UIWidget:setImageBorderRight(border) end

---@param border integer
function UIWidget:setImageBorderBottom(border) end

---@param border integer
function UIWidget:setImageBorderLeft(border) end

---@param border integer
function UIWidget:setImageBorder(border) end

---@return Rect
function UIWidget:getImageClip() end

---@return integer
function UIWidget:getImageOffsetX() end

---@return integer
function UIWidget:getImageOffsetY() end

---@return Point
function UIWidget:getImageOffset() end

---@return integer
function UIWidget:getImageWidth() end

---@return integer
function UIWidget:getImageHeight() end

---@return Size
function UIWidget:getImageSize() end

---@return Rect
function UIWidget:getImageRect() end

---@return Color
function UIWidget:getImageColor() end

---@return boolean
function UIWidget:isImageFixedRatio() end

---@return boolean
function UIWidget:isImageSmooth() end

---@return boolean
function UIWidget:isImageAutoResize() end

---@return integer
function UIWidget:getImageBorderTop() end

---@return integer
function UIWidget:getImageBorderRight() end

---@return integer
function UIWidget:getImageBorderBottom() end

---@return integer
function UIWidget:getImageBorderLeft() end

---@return integer
function UIWidget:getImageTextureWidth() end

---@return integer
function UIWidget:getImageTextureHeight() end

function UIWidget:resizeToText() end

function UIWidget:clearText() end

---@param text string
---@param dontFireLuaCall? boolean false
function UIWidget:setText(text, dontFireLuaCall) end

---@param coloredText string
---@param dontFireLuaCall? boolean false
function UIWidget:setColoredText(coloredText, dontFireLuaCall) end

---@param align integer
function UIWidget:setTextAlign(align) end

---@param offset Point | string
function UIWidget:setTextOffset(offset) end

---@param textWrap boolean
function UIWidget:setTextWrap(textWrap) end

---@param autoResize boolean
function UIWidget:setTextAutoResize(autoResize) end

---@param autoResize boolean
function UIWidget:setTextVerticalAutoResize(autoResize) end

---@param autoResize boolean
function UIWidget:setTextHorizontalAutoResize(autoResize) end

---@param fontName string
function UIWidget:setFont(fontName) end

---@param scale number
function UIWidget:setFontScale(scale) end

---@param name string
function UIWidget:setShader(name) end

---@return string
function UIWidget:getText() end

---@return string
function UIWidget:getDrawText() end

---@return integer
function UIWidget:getTextAlign() end

---@return Point
function UIWidget:getTextOffset() end

---@return string
function UIWidget:getFont() end

---@return Size
function UIWidget:getTextSize() end

---@return boolean
function UIWidget:hasShader() end

function UIWidget:disableUpdateTemporarily() end

---@return WidgetType | nil
function UIWidget:getNextWidget() end

---@return WidgetType | nil
function UIWidget:getPrevWidget() end

---@return boolean
function UIWidget:hasAnchoredLayout() end

---@param v boolean
function UIWidget:setOnHtml(v) end

---@return boolean
function UIWidget:isOnHtml() end

---@param order integer
function UIWidget:setBackgroundDrawOrder(order) end

---@param order integer
function UIWidget:setImageDrawOrder(order) end

---@param order integer
function UIWidget:setIconDrawOrder(order) end

---@param order integer
function UIWidget:setTextDrawOrder(order) end

---@param order integer
function UIWidget:setBorderDrawOrder(order) end

--------------------------------
----------- UILayout -----------
--------------------------------

---@class UILayout
UILayout = {}

function UILayout:update() end

function UILayout:updateLater() end

---@param styleNode OTMLNode
function UILayout:applyStyle(styleNode) end

---@param widget UIWidget
function UILayout:addWidget(widget) end

---@param widget UIWidget
function UILayout:removeWidget(widget) end

function UILayout:disableUpdates() end

function UILayout:enableUpdates() end

---@param parent UIWidget
function UILayout:setParent(parent) end

---@return WidgetType
function UILayout:getParentWidget() end

---@return boolean
function UILayout:isUpdateDisabled() end

---@return boolean
function UILayout:isUpdating() end

---@return boolean
function UILayout:isUIAnchorLayout() end

---@return boolean
function UILayout:isUIBoxLayout() end

---@return boolean
function UILayout:isUIHorizontalLayout() end

---@return boolean
function UILayout:isUIVerticalLayout() end

---@return boolean
function UILayout:isUIGridLayout() end

--------------------------------
--------- UIBoxLayout ----------
--------------------------------

---@class UIBoxLayout : UILayout
UIBoxLayout = {}

---@param spacing integer
function UIBoxLayout:setSpacing(spacing) end

---@param fitChildren boolean
function UIBoxLayout:setFitChildren(fitChildren) end

--------------------------------
------- UIVerticalLayout -------
--------------------------------

---@class UIVerticalLayout : UIBoxLayout
UIVerticalLayout = {}

---@param parent UIWidget
---@return UIVerticalLayout
function UIVerticalLayout.create(parent) end

---@param alignBottom boolean
function UIVerticalLayout:setAlignBottom(alignBottom) end

---@return boolean
function UIVerticalLayout:isAlignBottom() end

--------------------------------
------ UIHorizontalLayout ------
--------------------------------

---@class UIHorizontalLayout : UIBoxLayout
UIHorizontalLayout = {}

---@param parent UIWidget
---@return UIHorizontalLayout
function UIHorizontalLayout.create(parent) end

---@param alignRight boolean
function UIHorizontalLayout:setAlignRight(alignRight) end

--------------------------------
--------- UIGridLayout ---------
--------------------------------

---@class UIGridLayout : UILayout
UIGridLayout = {}

---@param parent UIWidget
---@return UIGridLayout
function UIGridLayout.create(parent) end

---@param cellSize Size | string
function UIGridLayout:setCellSize(cellSize) end

---@param width integer
function UIGridLayout:setCellWidth(width) end

---@param heigth integer
function UIGridLayout:setCellHeight(heigth) end

---@param spacing integer
function UIGridLayout:setCellSpacing(spacing) end

---@param enable boolean
function UIGridLayout:setFlow(enable) end

---@param columns integer
function UIGridLayout:setNumColumns(columns) end

---@param lines integer
function UIGridLayout:setNumLines(lines) end

---@return integer
function UIGridLayout:getNumColumns() end

---@return integer
function UIGridLayout:getNumLines() end

---@return Size
function UIGridLayout:getCellSize() end

---@return integer
function UIGridLayout:getCellSpacing() end

---@return boolean
function UIGridLayout:isUIGridLayout() end

--------------------------------
--------- UIGridLayout ---------
--------------------------------

---@class UIAnchorLayout : UILayout
UIAnchorLayout = {}

---@param parent UIWidget
---@return UIAnchorLayout
function UIAnchorLayout.create(parent) end

---@param anchoredWidget UIWidget
function UIAnchorLayout:removeAnchors(anchoredWidget) end

---@param anchoredWidget UIWidget
---@param hookedWidgetId string
function UIAnchorLayout:centerIn(anchoredWidget, hookedWidgetId) end

---@param anchoredWidget UIWidget
---@param hookedWidgetId string
function UIAnchorLayout:fill(anchoredWidget, hookedWidgetId) end

--------------------------------
---------- UITextEdit ----------
--------------------------------

---@class UITextEdit : UIWidget
UITextEdit = {}

---@return UITextEdit
function UITextEdit.create() end

---@param pos integer
function UITextEdit:setCursorPos(pos) end

---@param start integer
---@param ending integer
function UITextEdit:setSelection(start, ending) end

---@param visible boolean
function UITextEdit:setCursorVisible(visible) end

---@param enable boolean
function UITextEdit:setChangeCursorImage(enable) end

---@param hidden boolean
function UITextEdit:setTextHidden(hidden) end

---@param validCharacters string
function UITextEdit:setValidCharacters(validCharacters) end

---@param enable boolean
function UITextEdit:setShiftNavigation(enable) end

---@param enable boolean
function UITextEdit:setMultiline(enable) end

---@param editable boolean
function UITextEdit:setEditable(editable) end

---@param selectable boolean
function UITextEdit:setSelectable(selectable) end

---@param color Color | string
function UITextEdit:setSelectionColor(color) end

---@param color Color | string
function UITextEdit:setSelectionBackgroundColor(color) end

---@param maxLength number
function UITextEdit:setMaxLength(maxLength) end

---@param offset Point | string
function UITextEdit:setTextVirtualOffset(offset) end

---@return Point
function UITextEdit:getTextVirtualOffset() end

---@return Size
function UITextEdit:getTextVirtualSize() end

---@return Size
function UITextEdit:getTextTotalSize() end

---@param right boolean
function UITextEdit:moveCursorHorizontally(right) end

---@param up boolean
function UITextEdit:moveCursorVertically(up) end

---@param text string
function UITextEdit:appendText(text) end

function UITextEdit:wrapText() end

---@param right boolean
function UITextEdit:removeCharacter(right) end

function UITextEdit:blinkCursor() end

---@param right? boolean false
function UITextEdit:del(right) end

---@return string
function UITextEdit:copy() end

---@return string
function UITextEdit:cut() end

function UITextEdit:selectAll() end

function UITextEdit:clearSelection() end

---@return string
function UITextEdit:getDisplayedText() end

---@return string
function UITextEdit:getSelection() end

---@param pos Point | string
---@return integer
function UITextEdit:getTextPos(pos) end

---@return integer
function UITextEdit:getCursorPos() end

---@return number
function UITextEdit:getMaxLength() end

---@return integer
function UITextEdit:getSelectionStart() end

---@return integer
function UITextEdit:getSelectionEnd() end

---@return Color
function UITextEdit:getSelectionColor() end

---@return Color
function UITextEdit:getSelectionBackgroundColor() end

---@return boolean
function UITextEdit:hasSelection() end

---@return boolean
function UITextEdit:isEditable() end

---@return boolean
function UITextEdit:isSelectable() end

---@return boolean
function UITextEdit:isCursorVisible() end

---@return boolean
function UITextEdit:isChangingCursorImage() end

---@return boolean
function UITextEdit:isTextHidden() end

---@return boolean
function UITextEdit:isShiftNavigation() end

---@return boolean
function UITextEdit:isMultiline() end

--------------------------------
----------- UIQrCode -----------
--------------------------------

---@class UIQrCode : UIWidget
UIQrCode = {}

---@return UIQrCode
function UIQrCode.create() end

---@return string
function UIQrCode:getCode() end

---@return integer
function UIQrCode:getCodeBorder() end

---@param code string
---@param border integer
function UIQrCode:setCode(code, border) end

---@param border integer
function UIQrCode:setCodeBorder(border) end

--------------------------------
--------- ShaderProgram --------
--------------------------------

---@class ShaderProgram
ShaderProgram = {}

--------------------------------
----- PainterShaderProgram -----
--------------------------------

---@class PainterShaderProgram
PainterShaderProgram = {}

---@param file string
function PainterShaderProgram:addMultiTexture(file) end

--------------------------------
------ ParticleEffectType ------
--------------------------------

---@class ParticleEffectType
ParticleEffectType = {}

---@return ParticleEffectType
function ParticleEffectType.create() end

---@return string
function ParticleEffectType:getName() end

---@return string
function ParticleEffectType:getDescription() end

--------------------------------
---------- UIParticles ---------
--------------------------------

---@class UIParticles : UIWidget
UIParticles = {}

---@return UIParticles
function UIParticles.create() end

---@param name string
function UIParticles:addEffect(name) end

--------------------------------
------------ Server ------------
--------------------------------

---@class Server
Server = {}

---@param port integer
---@return Server
function Server.create(port) end

function Server:close() end

---@return boolean
function Server:isOpen() end

function Server:acceptNext() end

--------------------------------
---------- Connection ----------
--------------------------------

---@class Connection
Connection = {}

---@return integer
function Connection:getIp() end

--------------------------------
----------- Protocol -----------
--------------------------------

---@class Protocol
Protocol = {}

---@return Protocol
function Protocol.create() end

---@param host string
---@param port integer
function Protocol:connect(host, port) end

function Protocol:disconnect() end

---@return boolean
function Protocol:isConnected() end

---@return boolean
function Protocol:isConnecting() end

---@return Connection | nil
function Protocol:getConnection() end

---@param connection Connection
function Protocol:setConnection(connection) end

---@param outputMessage OutputMessage
function Protocol:send(outputMessage) end

function Protocol:recv() end

---@param a number
---@param b number
---@param c number
---@param d number
function Protocol:setXteaKey(a, b, c, d) end

---@return number[]
function Protocol:getXteaKey() end

function Protocol:generateXteaKey() end

function Protocol:enableXteaEncryption() end

function Protocol:enabledSequencedPackets() end

function Protocol:enableChecksum() end

--------------------------------
--------- InputMessage ---------
--------------------------------

---@class InputMessage
InputMessage = {}

---@return InputMessage
function InputMessage.create() end

---@param buffer string
function InputMessage:setBuffer(buffer) end

---@return string
function InputMessage:getBuffer() end

---@param bytes integer
function InputMessage:skipBytes(bytes) end

---@return integer
function InputMessage:getU8() end

---@return integer
function InputMessage:getU16() end

---@return number
function InputMessage:getU32() end

---@return number
function InputMessage:getU64() end

---@return string
function InputMessage:getString() end

---@return integer
function InputMessage:peekU8() end

---@return integer
function InputMessage:peekU16() end

---@return number
function InputMessage:peekU32() end

---@return number
function InputMessage:peekU64() end

---@param size integer
---@return boolean
function InputMessage:decryptRsa(size) end

---@return integer
function InputMessage:getReadSize() end

---@return integer
function InputMessage:getUnreadSize() end

---@return integer
function InputMessage:getMessageSize() end

---@return boolean
function InputMessage:eof() end

--------------------------------
-------- OutputMessage ---------
--------------------------------

---@class OutputMessage
OutputMessage = {}

---@return OutputMessage
function OutputMessage.create() end

---@param buffer string
function OutputMessage:setBuffer(buffer) end

---@return string
function OutputMessage:getBuffer() end

function OutputMessage:reset() end

---@param value integer
function OutputMessage:addU8(value) end

---@param value integer
function OutputMessage:addU16(value) end

---@param value number
function OutputMessage:addU32(value) end

---@param value number
function OutputMessage:addU64(value) end

---@param value string
function OutputMessage:addString(value) end

---@param value string
function OutputMessage:addBytes(value) end

---@param bytes integer
---@param byte integer
function OutputMessage:addPaddingBytes(bytes, byte) end

function OutputMessage:encryptRsa() end

---@return integer
function OutputMessage:getMessageSize() end

---@param size integer
function OutputMessage:setMessageSize(size) end

---@return integer
function OutputMessage:getWritePos() end

---@param writePos integer
function OutputMessage:setWritePos(writePos) end

--------------------------------
----------- g_sounds -----------
--------------------------------

---* FRAMEWORK_SOUND
---@class g_sounds
g_sounds = {}

---@param fileName string
function g_sounds.preload(fileName) end

---@param fileName string
---@param fadeTime? number 0.0
---@param gain? number 0.0
---@param pitch? number 0.0
---@return SoundSource
function g_sounds.play(fileName, fadeTime, gain, pitch) end

---@param channelId integer
---@return SoundChannel
function g_sounds.getChannel(channelId) end

function g_sounds.stopAll() end

function g_sounds.enableAudio() end

function g_sounds.disableAudio() end

---@return boolean
function g_sounds.isAudioEnabled() end

---@param pos Point | string
function g_sounds.setPosition(pos) end

---@return SoundSource
function g_sounds.createSoundEffect() end

---@return boolean
function g_sounds.isEaxEnabled() end

---@param file string
---@return boolean
function g_sounds.loadClientFiles(directory) end

---@param audioFileId string
---@return string
function g_sounds.getAudioFileNameById(audioFileId) end

--------------------------------
--------- SoundSource ----------
--------------------------------

---* FRAMEWORK_SOUND
---@class SoundSource
SoundSource = {}

---@return SoundSource
function SoundSource.create(fileName) end

---@param name string
function SoundSource:setName(name) end

function SoundSource:play() end

function SoundSource:stop() end

---@return boolean
function SoundSource:isPlaying() end

---@param gain number
function SoundSource:setGain(gain) end

---@param pos Point | string
function SoundSource:setPosition(pos) end

---@param velocity Point | string
function SoundSource:setVelocity(velocity) end

---@param state number
---@param fadeTime number
function SoundSource:setFading(state, fadeTime) end

---@param looping boolean
function SoundSource:setLooping(looping) end

---@param relative boolean
function SoundSource:setRelative(relative) end

---@param distance number
function SoundSource:setReferenceDistance(distance) end

---@param soundEffect SoundEffect
function SoundSource:setEffect(soundEffect) end

function SoundSource:removeEffect() end

--------------------------------
------ CombinedSoundSource -----
--------------------------------

---* FRAMEWORK_SOUND
---@class CombinedSoundSource : SoundSource
CombinedSoundSource = {}

--------------------------------
------ StreamSoundSource -------
--------------------------------

---* FRAMEWORK_SOUND
---@class StreamSoundSource : SoundSource
StreamSoundSource = {}

--------------------------------
--------- SoundEffect ----------
--------------------------------

---* FRAMEWORK_SOUND
---@class SoundEffect
SoundEffect = {}

---@param presetName string
function SoundEffect:setPreset(presetName) end

--------------------------------
--------- SoundChannel ---------
--------------------------------

---* FRAMEWORK_SOUND
---@class SoundChannel
SoundChannel = {}

---@param fileName string
---@param fadeTime? number 0.0
---@param gain? number 1.0
---@param pitch? number 1.0
---@return SoundSource
function SoundChannel:play(fileName, fadeTime, gain, pitch) end

---@param fadeTime? number 0.0
function SoundChannel:stop(fadeTime) end

---@param fileName string
---@param fadeTime? number 0.0
---@param gain? number 1.0
---@param pitch? number 1.0
function SoundChannel:enqueue(fileName, fadeTime, gain, pitch) end

function SoundChannel:enable() end

function SoundChannel:disable() end

---@param gain number
function SoundChannel:setGain(gain) end

---@return number
function SoundChannel:getGain() end

---@param enabled boolean
function SoundChannel:setEnabled(enabled) end

---@return boolean
function SoundChannel:isEnabled() end

---@return integer
function SoundChannel:getId() end
