diff --git a/GDevelop.js/Gruntfile.js b/GDevelop.js/Gruntfile.js index a5c6151a4381..3a6f6bc30e64 100644 --- a/GDevelop.js/Gruntfile.js +++ b/GDevelop.js/Gruntfile.js @@ -111,8 +111,8 @@ module.exports = function (grunt) { }, }, }, - // Copy the library to newIDE - generateTypes: { + // Generate typings from the Bindings.idl + generateFlowTypes: { command: 'node scripts/generate-types.js', options: { execOptions: { @@ -120,6 +120,14 @@ module.exports = function (grunt) { }, }, }, + generateTSTypes: { + command: 'node scripts/generate-dts.mjs', + options: { + execOptions: { + cwd: __dirname, + }, + }, + }, }, clean: { options: { force: true }, @@ -148,6 +156,7 @@ module.exports = function (grunt) { grunt.registerTask('build', [ 'build:raw', 'shell:copyToNewIDE', - 'shell:generateTypes', + 'shell:generateFlowTypes', + 'shell:generateTSTypes', ]); }; diff --git a/GDevelop.js/package-lock.json b/GDevelop.js/package-lock.json index 4f4569ed3849..cdff627c07c4 100644 --- a/GDevelop.js/package-lock.json +++ b/GDevelop.js/package-lock.json @@ -12,6 +12,7 @@ "prettier": "^2.1.2" }, "devDependencies": { + "@types/node": "^20.3.1", "extend": "^2.0.1", "grunt": "^1.0.1", "grunt-contrib-clean": "^1.0.0", @@ -1757,13 +1758,6 @@ "node": ">=0.10.0" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", - "dev": true, - "optional": true - }, "node_modules/archiver": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", @@ -1822,17 +1816,6 @@ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, - "node_modules/are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "node_modules/argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", @@ -2134,19 +2117,6 @@ "readable-stream": "^2.0.5" } }, - "node_modules/block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "optional": true, - "dependencies": { - "inherits": "~2.0.0" - }, - "engines": { - "node": "0.4 || >=0.5.8" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -2469,13 +2439,6 @@ "dev": true, "optional": true }, - "node_modules/chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true, - "optional": true - }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -2533,16 +2496,6 @@ "node": ">= 0.12.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/coffee-script": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", @@ -2640,13 +2593,6 @@ "typedarray": "^0.0.6" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true - }, "node_modules/convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -2953,17 +2899,6 @@ } } }, - "node_modules/deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true, - "optional": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.12.0" - } - }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -3002,26 +2937,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "node_modules/detect-libc": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-0.2.0.tgz", - "integrity": "sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U=", - "dev": true, - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -3354,13 +3269,6 @@ "node": ">=0.10.0" } }, - "node_modules/expand-template": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.0.tgz", - "integrity": "sha512-kkjwkMqj0h4w/sb32ERCDxCQkREMCAgS39DscDnSwDsbxnwwM1BTZySdC3Bn1lhY7vL08n9GoO/fVTynjDgRyQ==", - "dev": true, - "optional": true - }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", @@ -3605,22 +3513,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -3630,23 +3522,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3713,13 +3588,6 @@ "assert-plus": "^1.0.0" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", - "dev": true, - "optional": true - }, "node_modules/glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", @@ -4256,13 +4124,6 @@ "node": ">=4" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, "node_modules/hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", @@ -4477,21 +4338,6 @@ "node": ">=0.10.0" } }, - "node_modules/iltorb": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.10.tgz", - "integrity": "sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==", - "deprecated": "The zlib module provides APIs for brotli compression/decompression starting with Node.js v10.16.0, please use it over iltorb", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "detect-libc": "^0.2.0", - "nan": "^2.6.2", - "node-gyp": "^3.6.2", - "prebuild-install": "^2.3.0" - } - }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -4548,17 +4394,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "node_modules/ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", - "dev": true, - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -4655,19 +4490,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -7262,67 +7084,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", - "dev": true, - "optional": true - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-abi": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz", - "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==", - "dev": true, - "optional": true, - "dependencies": { - "semver": "^5.4.1" - } - }, - "node_modules/node-gyp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", - "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", - "dev": true, - "optional": true, - "dependencies": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "2", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -7335,13 +7102,6 @@ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, - "node_modules/noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", - "dev": true, - "optional": true - }, "node_modules/nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -7390,19 +7150,6 @@ "node": ">=4" } }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", - "dev": true, - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, "node_modules/nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -7541,37 +7288,6 @@ "readable-stream": "^2.0.1" } }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -7809,32 +7525,6 @@ "node": ">=8" } }, - "node_modules/prebuild-install": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.3.0.tgz", - "integrity": "sha512-gzjq2oHB8oMbzJSsSh9MQ64zrXZGt092/uT4TLZlz2qnrPxpWqp4vYB7LZrDxnlxf5RfbCjkgDI/z0EIVuYzAw==", - "dev": true, - "optional": true, - "dependencies": { - "expand-template": "^1.0.2", - "github-from-package": "0.0.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "node-abi": "^2.1.1", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "os-homedir": "^1.0.1", - "pump": "^1.0.1", - "rc": "^1.1.6", - "simple-get": "^1.4.2", - "tar-fs": "^1.13.0", - "tunnel-agent": "^0.6.0", - "xtend": "4.0.1" - }, - "bin": { - "prebuild-install": "bin.js" - } - }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -7919,17 +7609,6 @@ "node": ">= 6" } }, - "node_modules/pump": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", - "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", - "dev": true, - "optional": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -7993,22 +7672,6 @@ "node": ">=0.10.0" } }, - "node_modules/rc": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", - "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", - "dev": true, - "optional": true, - "dependencies": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "index.js" - } - }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -8267,13 +7930,6 @@ "semver": "bin/semver" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8324,18 +7980,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/simple-get": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", - "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=", - "dev": true, - "optional": true, - "dependencies": { - "once": "^1.3.1", - "unzip-response": "^1.0.0", - "xtend": "^4.0.0" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -8539,21 +8183,6 @@ "node": ">=8" } }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -8621,16 +8250,6 @@ "node": ">=0.10.0" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -8659,32 +8278,6 @@ "dev": true, "optional": true }, - "node_modules/tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", - "dev": true, - "optional": true, - "dependencies": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" - } - }, - "node_modules/tar-fs": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.0.tgz", - "integrity": "sha512-I9rb6v7mjWLtOfCau9eH5L7sLJyU2BnxtEZRQ5Mt+eRKmf1F0ohXmT/Jc3fr52kDvjJ/HV5MH3soQfPL5bQ0Yg==", - "dev": true, - "optional": true, - "dependencies": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" - } - }, "node_modules/tar-stream": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", @@ -8997,16 +8590,6 @@ "xtend": "~4.0.0" } }, - "node_modules/unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -9234,16 +8817,6 @@ "which": "bin/which" } }, - "node_modules/wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "optional": true, - "dependencies": { - "string-width": "^1.0.2" - } - }, "node_modules/window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", diff --git a/GDevelop.js/package.json b/GDevelop.js/package.json index 31875b12c913..799b96ab8889 100644 --- a/GDevelop.js/package.json +++ b/GDevelop.js/package.json @@ -20,6 +20,7 @@ }, "license": "MIT", "devDependencies": { + "@types/node": "^20.3.1", "extend": "^2.0.1", "grunt": "^1.0.1", "grunt-contrib-clean": "^1.0.0", diff --git a/GDevelop.js/scripts/generate-dts.mjs b/GDevelop.js/scripts/generate-dts.mjs new file mode 100644 index 000000000000..111a27a08b92 --- /dev/null +++ b/GDevelop.js/scripts/generate-dts.mjs @@ -0,0 +1,250 @@ +// @ts-check +import { readFileSync, writeFileSync } from 'fs'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +const bindingsFile = readFileSync( + __dirname + '/../Bindings/Bindings.idl', + 'utf-8' +); + +const PrimitiveTypes = new Map([ + ['DOMString', 'string'], + ['long', 'number'], + ['double', 'number'], + ['void', 'void'], + ['boolean', 'boolean'], +]); + +const none = Symbol('No default value'); +class Parser { + static parserPosition = 0; + /** @private */ + static sourceString = ''; + /** @private */ + static sourceLength = 0; + + /** @param {string} str */ + static setSource(str) { + this.parserPosition = 0; + this.sourceString = str; + this.sourceLength = str.length; + } + static get isDone() { + return this.parserPosition >= this.sourceLength; + } + static get currentCharacter() { + return this.sourceString.charAt(this.parserPosition); + } + static get currentCharacterCode() { + return this.sourceString.charCodeAt(this.parserPosition); + } + + static skipWhitespaces() { + while (this.currentCharacterCode <= 32) this.parserPosition++; + // Comments go everywhere whitespaces go and must be skipped as if it were whitespace + if (this.currentCharacter === '/') { + this.parserPosition++; + if (this.currentCharacter === '/') { + // //-style comments + this.skipUntil('\n'); + } else if (this.currentCharacter === '*') { + // /* */-style comments + do { + this.skipUntil('*'); + } while (this.currentCharacter !== '/'); + this.parserPosition++; + } else console.warn(`Unexpected slash.`); + this.skipWhitespaces(); + } + } + /** @param {string} thisCharacter */ + static skipUntil(thisCharacter, skipOverIt = true) { + while (this.currentCharacter !== thisCharacter && !this.isDone) + this.parserPosition++; + if (skipOverIt) this.parserPosition++; + } + /** @param {string} thisCharacter */ + static readUntil(thisCharacter, skipOverIt = true) { + let token = ''; + while (this.currentCharacter !== thisCharacter) { + token += this.currentCharacter; + this.parserPosition++; + } + if (skipOverIt) this.parserPosition++; + return token; + } + + static readType() { + // Ignore [Const] and such annotations + Parser.skipWhitespaces(); + if (Parser.currentCharacter === '[') Parser.skipUntil(']'); + Parser.skipWhitespaces(); + + // Read the type + let type = Parser.readUntil(' '); + let optional = false; + if (type === 'optional') optional = true; + while (type === 'unsigned' || type === 'optional') { + // Re-read the type since unsigned is an unnecessary prefix for typescript + Parser.skipWhitespaces(); + type = Parser.readUntil(' '); + } + Parser.skipWhitespaces(); + + return { type, optional }; + } + + static readIdentifier() { + let name = ''; + while ( + (Parser.currentCharacterCode >= 97 && + Parser.currentCharacterCode <= 122) || // [a-z] + (Parser.currentCharacterCode >= 65 && + Parser.currentCharacterCode <= 90) || // [A-Z] + (Parser.currentCharacterCode >= 48 && + Parser.currentCharacterCode <= 57) || // [1-9] + Parser.currentCharacter === '_' + ) { + name += Parser.currentCharacter; + Parser.parserPosition++; + } + return name; + } + + static readNumber() { + let number = ''; + while ( + Parser.currentCharacterCode >= 48 && + Parser.currentCharacterCode <= 57 // [1-9] + ) { + number += Parser.currentCharacter; + Parser.parserPosition++; + } + return parseInt(number, 10); + } +} + +const enums = []; +for (const [_, enumName, enumCode] of bindingsFile.matchAll( + /enum\s+([a-zA-Z_]+)\s+{\r?\n?([^}]*)\r?\n}/gm +)) { + const members = []; + let i = 0; + for (const enumMemberString of enumCode.split('\n')) { + const [_, memberName] = enumMemberString.match(/"[a-zA-Z]*::([a-zA-Z]*)"/); + members.push(` ${memberName} = ${i++},`); + } + enums.push( + `enum ${enumName} { +${members.join('\n')} +}` + ); +} + +const interfaces = []; +for (const [_, interfaceName, interfaceCode] of bindingsFile.matchAll( + /interface\s+([a-zA-Z]+)\s+{\r?\n?([^}]*)\r?\n}/gm +)) { + const methods = []; + + Parser.setSource(interfaceCode); + while (!Parser.isDone) { + const { type: returnType, optional: optionalReturn } = Parser.readType(); + + let methodName = Parser.readUntil('('); + const isStatic = methodName.includes('STATIC_'); + const isConstructor = returnType === 'void' && methodName === interfaceName; + // Remove prefixes which are not part of the actual function name + methodName = methodName + .replace('WRAPPED_', '') + .replace('MAP_', '') + .replace('STATIC_', ''); + // Convert PascalCase to camelCase + methodName = methodName[0].toLowerCase() + methodName.slice(1); + + /** @type {Array<{name:string, type:string, optional:boolean, defaultValue:(number | typeof none)}>} */ + const parameters = []; + Parser.skipWhitespaces(); + if (Parser.currentCharacter !== ')') + do { + if (Parser.currentCharacter === ',') Parser.parserPosition++; + const { type, optional } = Parser.readType(); + Parser.skipWhitespaces(); + const name = Parser.readIdentifier(); + Parser.skipWhitespaces(); + + let defaultValue = none; + if (Parser.currentCharacter === '=') { + Parser.parserPosition++; + Parser.skipWhitespaces(); + defaultValue = Parser.readNumber(); + Parser.skipWhitespaces(); + } + + parameters.push({ name, type, optional, defaultValue }); + } while (Parser.currentCharacter === ','); + + // Health checks + if (Parser.currentCharacter !== ')') + console.warn('Expected closing paranthesis.'); + Parser.parserPosition++; + Parser.skipWhitespaces(); + if (Parser.currentCharacter !== ';') console.warn('Expected semicolon.'); + Parser.parserPosition++; + Parser.skipWhitespaces(); + + methods.push( + `${isStatic ? 'static ' : ''}${ + isConstructor ? `constructor` : methodName + }(${parameters + .map( + ({ name, type, optional, defaultValue }) => + `${name}${optional ? '?' : ''}: ${ + PrimitiveTypes.has(type) ? PrimitiveTypes.get(type) : type + }${defaultValue !== none ? ` = ${defaultValue}` : ''}` + ) + .join(', ')}): ${ + PrimitiveTypes.has(returnType) + ? PrimitiveTypes.get(returnType) + : returnType + };` + ); + } + + interfaces.push( + `export class ${interfaceName} extends EmscriptenObject { + ${methods.join('\n ')} +}` + ); +} + +const dts = `// Automatically generated by GDevelop.js/scripts/generate-dts.js + +class EmscriptenObject { + /** The object's index in the WASM memory, and thus its unique identifier. */ + ptr: number; + + /** + * Call this to free the object's underlying memory. It may not be used afterwards. + * + * **Call with care** - if the object owns some other objects, those will also be destroyed, + * or if this object is owned by another object that does not expect it to be externally deleted + * (e.g. it is a child of a map), objects will be put in an invalid state that will most likely + * crash the app. + * + * If the object is owned by your code, you should still call this method when adequate, as + * otherwise the memory will never be freed, causing a memory leak, which is to be avoided. + */ + destroy(): void; +} + +${enums.join('\n\n')} + +${interfaces.join('\n\n')} + +export as namespace gd; +`; + +writeFileSync(__dirname + '/../types.d.ts', dts); diff --git a/GDevelop.js/types.d.ts b/GDevelop.js/types.d.ts new file mode 100644 index 000000000000..7f7604f8b300 --- /dev/null +++ b/GDevelop.js/types.d.ts @@ -0,0 +1,2687 @@ +// Automatically generated by GDevelop.js/scripts/generate-dts.js + +class EmscriptenObject { + /** The object's index in the WASM memory, and thus its unique identifier. */ + ptr: number; + + /** + * Call this to free the object's underlying memory. It may not be used afterwards. + * + * **Call with care** - if the object owns some other objects, those will also be destroyed, + * or if this object is owned by another object that does not expect it to be externally deleted + * (e.g. it is a child of a map), objects will be put in an invalid state that will most likely + * crash the app. + * + * If the object is owned by your code, you should still call this method when adequate, as + * otherwise the memory will never be freed, causing a memory leak, which is to be avoided. + */ + destroy(): void; +} + +enum Variable_Type { + String = 0, + Number = 1, + Boolean = 2, + Structure = 3, + Array = 4, +} + +enum ExpressionCompletionDescription_CompletionKind { + Object = 0, + BehaviorWithPrefix = 1, + ExpressionWithPrefix = 2, + Variable = 3, + TextWithPrefix = 4, + Property = 5, + Parameter = 6, +} + +enum EventsFunction_FunctionType { + Action = 0, + Condition = 1, + Expression = 2, + ExpressionAndCondition = 3, + ActionWithOperator = 4, +} + +enum EventsFunctionsContainer_FunctionOwner { + Extension = 0, + Behavior = 1, + Object = 2, +} + +enum ParticleEmitterObject_RendererType { + Point = 0, + Line = 1, + Quad = 2, +} + +export class VectorString extends EmscriptenObject { + constructor(): void; + push_back(str: string): void; + resize(size: number): void; + size(): number; + at(index: number): string; + set(index: number, str: string): void; + clear(): void; +} + +export class VectorPlatformExtension extends EmscriptenObject { + size(): number; + at(index: number): PlatformExtension; +} + +export class VectorDependencyMetadata extends EmscriptenObject { + size(): number; + at(index: number): DependencyMetadata; +} + +export class VectorInt extends EmscriptenObject { + size(): number; + at(index: number): number; +} + +export class VectorVariable extends EmscriptenObject { + size(): number; + at(index: number): Variable; +} + +export class VectorObjectFolderOrObject extends EmscriptenObject { + size(): number; + at(index: number): ObjectFolderOrObject; +} + +export class MapStringString extends EmscriptenObject { + constructor(): void; + get(name: string): string; + set(name: string, str: string): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapStringBoolean extends EmscriptenObject { + constructor(): void; + get(name: string): boolean; + set(name: string, value: boolean): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapStringDouble extends EmscriptenObject { + constructor(): void; + get(name: string): number; + set(name: string, value: number): void; + has(name: string): number; + keys(): VectorString; +} + +export class MapStringVariable extends EmscriptenObject { + get(name: string): Variable; + set(name: string, prop: Variable): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapStringExpressionMetadata extends EmscriptenObject { + get(name: string): ExpressionMetadata; + set(name: string, prop: ExpressionMetadata): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapStringInstructionMetadata extends EmscriptenObject { + get(name: string): InstructionMetadata; + set(name: string, prop: InstructionMetadata): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapStringEventMetadata extends EmscriptenObject { + get(name: string): EventMetadata; + set(name: string, prop: EventMetadata): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapExtensionProperties extends EmscriptenObject { + get(name: string): MapStringPropertyDescriptor; + set(name: string, prop: MapStringPropertyDescriptor): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class SetString extends EmscriptenObject { + constructor(): void; + fREE_toNewVectorString(): VectorString; +} + +export class ProjectHelper extends EmscriptenObject { + static createNewGDJSProject(): Project; + static initializePlatforms(): void; + static sanityCheckBehaviorProperty(behavior: Behavior, propertyName: string, newValue: string): string; + static sanityCheckBehaviorsSharedDataProperty(behavior: BehaviorsSharedData, propertyName: string, newValue: string): string; + static sanityCheckObjectProperty(configuration: ObjectConfiguration, propertyName: string, newValue: string): string; + static sanityCheckObjectInitialInstanceProperty(configuration: ObjectConfiguration, propertyName: string, newValue: string): string; +} + +export class EventsVariablesFinder extends EmscriptenObject { + constructor(): void; + static findAllGlobalVariables(platform: Platform, project: Project): SetString; + static findAllLayoutVariables(platform: Platform, project: Project, layout: Layout): SetString; + static findAllObjectVariables(platform: Platform, project: Project, layout: Layout, obj: gdObject): SetString; +} + +export class EventsIdentifiersFinder extends EmscriptenObject { + constructor(): void; + static findAllIdentifierExpressions(platform: Platform, project: Project, layout: Layout, identifierType: string, contextObjectName: string): SetString; +} + +export class EventsFunctionSelfCallChecker extends EmscriptenObject { + static isFreeFunctionOnlyCallingItself(project: Project, extension: EventsFunctionsExtension, eventsFunction: EventsFunction): boolean; + static isBehaviorFunctionOnlyCallingItself(project: Project, extension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, eventsFunction: EventsFunction): boolean; + static isObjectFunctionOnlyCallingItself(project: Project, extension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject, eventsFunction: EventsFunction): boolean; +} + +export class InstructionOrExpressionGroupMetadata extends EmscriptenObject { + constructor(): void; + setIcon(icon: string): InstructionOrExpressionGroupMetadata; + getIcon(): string; +} + +export class VersionWrapper extends EmscriptenObject { + static major(): number; + static minor(): number; + static build(): number; + static revision(): number; + static fullString(): string; + static status(): string; + static year(): string; + static month(): string; + static date(): string; +} + +export class Platform extends EmscriptenObject { + getName(): string; + getFullName(): string; + getSubtitle(): string; + getDescription(): string; + getInstructionOrExpressionGroupMetadata(name: string): InstructionOrExpressionGroupMetadata; + isExtensionLoaded(name: string): boolean; + removeExtension(name: string): void; + reloadBuiltinExtensions(): void; + getAllPlatformExtensions(): VectorPlatformExtension; +} + +export class JsPlatform extends EmscriptenObject { + static get(): JsPlatform; + addNewExtension(extension: PlatformExtension): void; + getName(): string; + getFullName(): string; + getSubtitle(): string; + getDescription(): string; + getInstructionOrExpressionGroupMetadata(name: string): InstructionOrExpressionGroupMetadata; + isExtensionLoaded(name: string): boolean; + removeExtension(name: string): void; + reloadBuiltinExtensions(): void; + getAllPlatformExtensions(): VectorPlatformExtension; +} + +export class PairStringVariable extends EmscriptenObject { + constructor(): void; + getName(): string; + getVariable(): Variable; +} + +export class Variable extends EmscriptenObject { + constructor(): void; + static isPrimitive(type: Variable_Type): boolean; + getType(): Variable_Type; + castTo(type: string): void; + setString(str: string): void; + getString(): string; + setValue(val: number): void; + getValue(): number; + setBool(val: boolean): void; + getBool(): boolean; + setFolded(val: boolean): void; + isFolded(): boolean; + getChildrenCount(): number; + contains(variableToSearch: Variable, recursive: boolean): boolean; + hasChild(str: string): boolean; + getChild(str: string): Variable; + removeChild(name: string): void; + renameChild(oldName: string, newName: string): boolean; + getAllChildrenNames(): VectorString; + removeRecursively(variableToRemove: Variable): void; + getAtIndex(index: number): Variable; + pushNew(): Variable; + removeAtIndex(index: number): void; + getAllChildrenArray(): VectorVariable; + moveChildInArray(oldIndex: number, newIndex: number): void; + insertAtIndex(variable: Variable, index: number): boolean; + insertChild(name: string, variable: Variable): boolean; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; + resetPersistentUuid(): Variable; + clearPersistentUuid(): Variable; +} + +export class VariablesContainer extends EmscriptenObject { + constructor(): void; + has(name: string): boolean; + get(name: string): Variable; + getAt(index: number): Variable; + getNameAt(index: number): string; + insert(name: string, variable: Variable, index: number): Variable; + insertNew(name: string, index: number): Variable; + remove(name: string): void; + rename(oldName: string, newName: string): boolean; + swap(firstIndex: number, secondIndex: number): void; + move(oldIndex: number, newIndex: number): void; + getPosition(name: string): number; + count(): number; + clear(): void; + removeRecursively(variableToRemove: Variable): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; + resetPersistentUuid(): VariablesContainer; + clearPersistentUuid(): VariablesContainer; +} + +export class VariablesContainersList extends EmscriptenObject { + static makeNewVariablesContainersListForProjectAndLayout(project: Project, layout: Layout): VariablesContainersList; + static makeNewEmptyVariablesContainersList(): VariablesContainersList; +} + +export class ObjectGroup extends EmscriptenObject { + constructor(): void; + getName(): string; + setName(name: string): void; + addObject(objectName: string): void; + removeObject(objectName: string): void; + find(objectName: string): boolean; + getAllObjectsNames(): VectorString; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class ObjectGroupsContainer extends EmscriptenObject { + constructor(): void; + has(name: string): boolean; + insert(objectGroup: ObjectGroup, position: number): ObjectGroup; + insertNew(name: string, position: number): ObjectGroup; + count(): number; + get(name: string): ObjectGroup; + getAt(index: number): ObjectGroup; + clear(): void; + remove(name: string): void; + getPosition(name: string): number; + rename(oldName: string, newName: string): boolean; + move(oldIndex: number, newIndex: number): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class PlatformSpecificAssets extends EmscriptenObject { + constructor(): void; + has(platform: string, name: string): boolean; + get(platform: string, name: string): string; + remove(platform: string, name: string): void; + set(platform: string, name: string, resourceName: string): void; + exposeResources(worker: ArbitraryResourceWorker): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class LoadingScreen extends EmscriptenObject { + constructor(): void; + isGDevelopLogoShownDuringLoadingScreen(): boolean; + showGDevelopLogoDuringLoadingScreen(show: boolean): LoadingScreen; + getGDevelopLogoStyle(): string; + setGDevelopLogoStyle(value: string): LoadingScreen; + getBackgroundImageResourceName(): string; + setBackgroundImageResourceName(value: string): LoadingScreen; + getBackgroundColor(): number; + setBackgroundColor(value: number): LoadingScreen; + getBackgroundFadeInDuration(): number; + setBackgroundFadeInDuration(value: number): LoadingScreen; + getMinDuration(): number; + setMinDuration(value: number): LoadingScreen; + getLogoAndProgressFadeInDuration(): number; + setLogoAndProgressFadeInDuration(value: number): LoadingScreen; + getLogoAndProgressLogoFadeInDelay(): number; + setLogoAndProgressLogoFadeInDelay(value: number): LoadingScreen; + getShowProgressBar(): boolean; + setShowProgressBar(value: boolean): LoadingScreen; + getProgressBarMaxWidth(): number; + setProgressBarMaxWidth(value: number): LoadingScreen; + getProgressBarMinWidth(): number; + setProgressBarMinWidth(value: number): LoadingScreen; + getProgressBarWidthPercent(): number; + setProgressBarWidthPercent(value: number): LoadingScreen; + getProgressBarHeight(): number; + setProgressBarHeight(value: number): LoadingScreen; + getProgressBarColor(): number; + setProgressBarColor(value: number): LoadingScreen; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class Watermark extends EmscriptenObject { + constructor(): void; + isGDevelopWatermarkShown(): boolean; + showGDevelopWatermark(show: boolean): Watermark; + getPlacement(): string; + setPlacement(value: string): Watermark; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class ObjectFolderOrObject extends EmscriptenObject { + constructor(): void; + isFolder(): boolean; + isRootFolder(): boolean; + getObject(): gdObject; + getFolderName(): string; + setFolderName(name: string): void; + hasObjectNamed(name: string): boolean; + getObjectNamed(name: string): ObjectFolderOrObject; + getChildrenCount(): number; + getChildAt(pos: number): ObjectFolderOrObject; + getObjectChild(name: string): ObjectFolderOrObject; + getChildPosition(child: ObjectFolderOrObject): number; + getParent(): ObjectFolderOrObject; + insertNewFolder(name: string, newPosition: number): ObjectFolderOrObject; + moveObjectFolderOrObjectToAnotherFolder(objectFolderOrObject: ObjectFolderOrObject, newParentFolder: ObjectFolderOrObject, newPosition: number): void; + moveChild(oldIndex: number, newIndex: number): void; + removeFolderChild(childToRemove: ObjectFolderOrObject): void; + isADescendantOf(otherObjectFolderOrObject: ObjectFolderOrObject): boolean; +} + +export class ObjectsContainer extends EmscriptenObject { + constructor(): void; + insertNewObject(project: Project, type: string, name: string, pos: number): gdObject; + insertNewObjectInFolder(project: Project, type: string, name: string, folder: ObjectFolderOrObject, pos: number): gdObject; + insertObject(obj: gdObject, pos: number): gdObject; + hasObjectNamed(name: string): boolean; + getObject(name: string): gdObject; + getObjectAt(pos: number): gdObject; + getObjectPosition(name: string): number; + removeObject(name: string): void; + moveObject(oldIndex: number, newIndex: number): void; + moveObjectFolderOrObjectToAnotherContainerInFolder(objectFolderOrObject: ObjectFolderOrObject, newObjectsContainer: ObjectsContainer, parentObjectFolderOrObject: ObjectFolderOrObject, newPosition: number): void; + getObjectsCount(): number; + getRootFolder(): ObjectFolderOrObject; + getAllObjectFolderOrObjects(): VectorObjectFolderOrObject; + getObjectGroups(): ObjectGroupsContainer; +} + +export class Project extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + getCategories(): VectorString; + setDescription(description: string): void; + getDescription(): string; + setVersion(authorName: string): void; + getVersion(): string; + setAuthor(authorName: string): void; + getAuthor(): string; + getAuthorIds(): VectorString; + getAuthorUsernames(): VectorString; + isPlayableWithKeyboard(): boolean; + setPlayableWithKeyboard(playable: boolean): void; + isPlayableWithGamepad(): boolean; + setPlayableWithGamepad(playable: boolean): void; + isPlayableWithMobile(): boolean; + setPlayableWithMobile(playable: boolean): void; + setPackageName(packageName: string): void; + getPackageName(): string; + setTemplateSlug(templateSlug: string): void; + getTemplateSlug(): string; + setOrientation(orientation: string): void; + getOrientation(): string; + setProjectUuid(projectUuid: string): void; + getProjectUuid(): string; + resetProjectUuid(): void; + setProjectFile(file: string): void; + getProjectFile(): string; + setGameResolutionSize(width: number, height: number): void; + getGameResolutionWidth(): number; + getGameResolutionHeight(): number; + getAdaptGameResolutionAtRuntime(): boolean; + setAdaptGameResolutionAtRuntime(adaptGameResolutionAtRuntime: boolean): void; + setScaleMode(scaleMode: string): void; + getScaleMode(): string; + setPixelsRounding(pixelsRounding: boolean): void; + getPixelsRounding(): boolean; + setSizeOnStartupMode(orientation: string): void; + getSizeOnStartupMode(): string; + setAntialiasingMode(antialiasingMode: string): void; + getAntialiasingMode(): string; + setAntialisingEnabledOnMobile(pixelsRounding: boolean): void; + isAntialisingEnabledOnMobile(): boolean; + getMaximumFPS(): number; + setMaximumFPS(fps: number): void; + getMinimumFPS(): number; + setMinimumFPS(fps: number): void; + setFolderProject(enable: boolean): void; + isFolderProject(): boolean; + setUseDeprecatedZeroAsDefaultZOrder(enable: boolean): void; + getUseDeprecatedZeroAsDefaultZOrder(): boolean; + setLastCompilationDirectory(path: string): void; + getLastCompilationDirectory(): string; + getExtensionProperties(): ExtensionProperties; + addPlatform(platform: Platform): void; + getCurrentPlatform(): Platform; + getPlatformSpecificAssets(): PlatformSpecificAssets; + getLoadingScreen(): LoadingScreen; + getWatermark(): Watermark; + hasLayoutNamed(name: string): boolean; + getLayout(name: string): Layout; + getLayoutAt(index: number): Layout; + moveLayout(oldIndex: number, newIndex: number): void; + swapLayouts(first: number, second: number): void; + getLayoutsCount(): number; + insertNewLayout(name: string, position: number): Layout; + removeLayout(name: string): void; + setFirstLayout(name: string): void; + getFirstLayout(): string; + hasExternalEventsNamed(name: string): boolean; + getExternalEvents(name: string): ExternalEvents; + getExternalEventsAt(index: number): ExternalEvents; + moveExternalEvents(oldIndex: number, newIndex: number): void; + swapExternalEvents(first: number, second: number): void; + getExternalEventsCount(): number; + insertNewExternalEvents(name: string, position: number): ExternalEvents; + removeExternalEvents(name: string): void; + hasExternalLayoutNamed(name: string): boolean; + getExternalLayout(name: string): ExternalLayout; + getExternalLayoutAt(index: number): ExternalLayout; + moveExternalLayout(oldIndex: number, newIndex: number): void; + swapExternalLayouts(first: number, second: number): void; + getExternalLayoutsCount(): number; + insertNewExternalLayout(name: string, position: number): ExternalLayout; + removeExternalLayout(name: string): void; + hasEventsFunctionsExtensionNamed(name: string): boolean; + getEventsFunctionsExtension(name: string): EventsFunctionsExtension; + getEventsFunctionsExtensionAt(index: number): EventsFunctionsExtension; + moveEventsFunctionsExtension(oldIndex: number, newIndex: number): void; + swapEventsFunctionsExtensions(first: number, second: number): void; + getEventsFunctionsExtensionsCount(): number; + insertNewEventsFunctionsExtension(name: string, position: number): EventsFunctionsExtension; + insertEventsFunctionsExtension(eventsFunctionsExtension: EventsFunctionsExtension, position: number): EventsFunctionsExtension; + removeEventsFunctionsExtension(name: string): void; + hasEventsBasedBehavior(type: string): boolean; + getEventsBasedBehavior(type: string): EventsBasedBehavior; + hasEventsBasedObject(type: string): boolean; + getEventsBasedObject(type: string): EventsBasedObject; + getVariables(): VariablesContainer; + getResourcesManager(): ResourcesManager; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; + static isNameSafe(name: string): boolean; + static getSafeName(name: string): string; + fREE_GetTypeOfBehavior(layout: Layout, name: string, searchInGroups: boolean): string; + fREE_GetTypeOfObject(layout: Layout, name: string, searchInGroups: boolean): string; + fREE_GetBehaviorsOfObject(layout: Layout, name: string, searchInGroups: boolean): VectorString; + fREE_IsDefaultBehavior(layout: Layout, objectOrGroupName: string, behaviorName: string, searchInGroups: boolean): boolean; + fREE_GetTypeOfBehaviorInObjectOrGroup(layout: Layout, objectOrGroupName: string, behaviorName: string, searchInGroups: boolean): string; + fREE_GetBehaviorNamesInObjectOrGroup(layout: Layout, objectOrGroupName: string, behaviorType: string, searchInGroups: boolean): VectorString; + insertNewObject(project: Project, type: string, name: string, pos: number): gdObject; + insertNewObjectInFolder(project: Project, type: string, name: string, folder: ObjectFolderOrObject, pos: number): gdObject; + insertObject(obj: gdObject, pos: number): gdObject; + hasObjectNamed(name: string): boolean; + getObject(name: string): gdObject; + getObjectAt(pos: number): gdObject; + getObjectPosition(name: string): number; + removeObject(name: string): void; + moveObject(oldIndex: number, newIndex: number): void; + moveObjectFolderOrObjectToAnotherContainerInFolder(objectFolderOrObject: ObjectFolderOrObject, newObjectsContainer: ObjectsContainer, parentObjectFolderOrObject: ObjectFolderOrObject, newPosition: number): void; + getObjectsCount(): number; + getRootFolder(): ObjectFolderOrObject; + getAllObjectFolderOrObjects(): VectorObjectFolderOrObject; + getObjectGroups(): ObjectGroupsContainer; +} + +export class ObjectsContainersList extends EmscriptenObject { + static makeNewObjectsContainersListForProjectAndLayout(project: Project, layout: Layout): ObjectsContainersList; + static makeNewObjectsContainersListForContainers(globalObjectsContainer: ObjectsContainer, objectsContainer: ObjectsContainer): ObjectsContainersList; + getTypeOfObject(objectName: string): string; + getTypeOfBehavior(name: string, searchInGroups: boolean): string; + getBehaviorsOfObject(name: string, searchInGroups: boolean): VectorString; + getTypeOfBehaviorInObjectOrGroup(objectOrGroupName: string, behaviorName: string, searchInGroups: boolean): string; +} + +export class ProjectScopedContainers extends EmscriptenObject { + static makeNewProjectScopedContainersForProjectAndLayout(project: Project, layout: Layout): ProjectScopedContainers; + static makeNewProjectScopedContainersFor(globalObjectsContainer: ObjectsContainer, objectsContainer: ObjectsContainer): ProjectScopedContainers; + addPropertiesContainer(propertiesContainer: PropertiesContainer): ProjectScopedContainers; + addParameters(parameters: VectorParameterMetadata): ProjectScopedContainers; + getObjectsContainersList(): ObjectsContainersList; + getVariablesContainersList(): VariablesContainersList; +} + +export class ExtensionProperties extends EmscriptenObject { + getValue(extension: string, property: string): string; + setValue(extension: string, property: string, newValue: string): void; + hasProperty(extension: string, property: string): boolean; + getAllExtensionProperties(extension: string, project: Project): MapStringPropertyDescriptor; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class Behavior extends EmscriptenObject { + constructor(): void; + clone(): Behavior; + setName(name: string): void; + getName(): string; + getTypeName(): string; + getProperties(): MapStringPropertyDescriptor; + updateProperty(name: string, value: string): boolean; + initializeContent(): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + isDefaultBehavior(): boolean; +} + +export class BehaviorJsImplementation extends EmscriptenObject { + constructor(): void; + getProperties(behaviorContent: SerializerElement): MapStringPropertyDescriptor; + updateProperty(behaviorContent: SerializerElement, name: string, value: string): boolean; + initializeContent(behaviorContent: SerializerElement): void; +} + +export class BehaviorsSharedData extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + getTypeName(): string; + getProperties(): MapStringPropertyDescriptor; + updateProperty(name: string, value: string): boolean; + initializeContent(): void; +} + +export class BehaviorSharedDataJsImplementation extends EmscriptenObject { + constructor(): void; + getProperties(behaviorSharedDataContent: SerializerElement): MapStringPropertyDescriptor; + updateProperty(behaviorSharedDataContent: SerializerElement, name: string, value: string): boolean; + initializeContent(behaviorSharedDataContent: SerializerElement): void; +} + +export class ObjectConfiguration extends EmscriptenObject { + constructor(): void; + clone(): UniquePtrObjectConfiguration; + getType(): string; + getProperties(): MapStringPropertyDescriptor; + updateProperty(name: string, value: string): boolean; + getInitialInstanceProperties(instance: InitialInstance, project: Project, scene: Layout): MapStringPropertyDescriptor; + updateInitialInstanceProperty(instance: InitialInstance, name: string, value: string, project: Project, scene: Layout): boolean; + exposeResources(worker: ArbitraryResourceWorker): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class UniquePtrObjectConfiguration extends EmscriptenObject { + get(): ObjectConfiguration; + release(): ObjectConfiguration; +} + +export class gdObject extends EmscriptenObject { + constructor(name: string, type: string, configuration: ObjectConfiguration): void; + clone(): UniquePtrObject; + setName(name: string): void; + getName(): string; + setAssetStoreId(assetStoreId: string): void; + getAssetStoreId(): string; + setType(type: string): void; + getType(): string; + is3DObject(): boolean; + getConfiguration(): ObjectConfiguration; + getVariables(): VariablesContainer; + getEffects(): EffectsContainer; + getAllBehaviorNames(): VectorString; + hasBehaviorNamed(name: string): boolean; + addNewBehavior(project: Project, type: string, name: string): Behavior; + getBehavior(name: string): Behavior; + removeBehavior(name: string): void; + renameBehavior(oldName: string, name: string): boolean; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; + resetPersistentUuid(): gdObject; + clearPersistentUuid(): gdObject; +} + +export class UniquePtrObject extends EmscriptenObject { + get(): gdObject; + release(): gdObject; +} + +export class ObjectJsImplementation extends EmscriptenObject { + constructor(): void; + clone(): UniquePtrObjectConfiguration; + getProperties(): MapStringPropertyDescriptor; + updateProperty(name: string, value: string): boolean; + getInitialInstanceProperties(instance: InitialInstance, project: Project, scene: Layout): MapStringPropertyDescriptor; + updateInitialInstanceProperty(instance: InitialInstance, name: string, value: string, project: Project, scene: Layout): boolean; + getRawJSONContent(): string; + setRawJSONContent(newContent: string): ObjectJsImplementation; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class CustomObjectConfiguration extends EmscriptenObject { + clone(): UniquePtrObjectConfiguration; + getChildObjectConfiguration(objectName: string): ObjectConfiguration; + getProperties(): MapStringPropertyDescriptor; + updateProperty(name: string, value: string): boolean; + getInitialInstanceProperties(instance: InitialInstance, project: Project, scene: Layout): MapStringPropertyDescriptor; + updateInitialInstanceProperty(instance: InitialInstance, name: string, value: string, project: Project, scene: Layout): boolean; +} + +export class Layout extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + setBackgroundColor(r: number, g: number, b: number): void; + getBackgroundColorRed(): number; + getBackgroundColorGreen(): number; + getBackgroundColorBlue(): number; + setWindowDefaultTitle(name: string): void; + getWindowDefaultTitle(): string; + getInitialInstances(): InitialInstancesContainer; + getVariables(): VariablesContainer; + getEvents(): EventsList; + updateBehaviorsSharedData(project: Project): void; + getAllBehaviorSharedDataNames(): VectorString; + hasBehaviorSharedData(behaviorName: string): boolean; + getBehaviorSharedData(behaviorName: string): BehaviorsSharedData; + insertNewLayer(name: string, position: number): void; + insertLayer(layer: Layer, position: number): void; + getLayer(name: string): Layer; + getLayerAt(pos: number): Layer; + hasLayerNamed(name: string): boolean; + removeLayer(name: string): void; + getLayersCount(): number; + swapLayers(firstLayerIndex: number, secondLayerIndex: number): void; + moveLayer(oldIndex: number, newIndex: number): void; + serializeLayersTo(element: SerializerElement): void; + unserializeLayersFrom(element: SerializerElement): void; + getAssociatedEditorSettings(): EditorSettings; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; + setStopSoundsOnStartup(enable: boolean): void; + stopSoundsOnStartup(): boolean; + insertNewObject(project: Project, type: string, name: string, pos: number): gdObject; + insertNewObjectInFolder(project: Project, type: string, name: string, folder: ObjectFolderOrObject, pos: number): gdObject; + insertObject(obj: gdObject, pos: number): gdObject; + hasObjectNamed(name: string): boolean; + getObject(name: string): gdObject; + getObjectAt(pos: number): gdObject; + getObjectPosition(name: string): number; + removeObject(name: string): void; + moveObject(oldIndex: number, newIndex: number): void; + moveObjectFolderOrObjectToAnotherContainerInFolder(objectFolderOrObject: ObjectFolderOrObject, newObjectsContainer: ObjectsContainer, parentObjectFolderOrObject: ObjectFolderOrObject, newPosition: number): void; + getObjectsCount(): number; + getRootFolder(): ObjectFolderOrObject; + getAllObjectFolderOrObjects(): VectorObjectFolderOrObject; + getObjectGroups(): ObjectGroupsContainer; +} + +export class ExternalEvents extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + getAssociatedLayout(): string; + setAssociatedLayout(name: string): void; + getEvents(): EventsList; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class ExternalLayout extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + setAssociatedLayout(name: string): void; + getAssociatedLayout(): string; + getInitialInstances(): InitialInstancesContainer; + getAssociatedEditorSettings(): EditorSettings; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class Effect extends EmscriptenObject { + constructor(): void; + setName(name_: string): void; + getName(): string; + setEffectType(effectType_: string): void; + getEffectType(): string; + setDoubleParameter(name: string, value: number): void; + getDoubleParameter(name: string): number; + setStringParameter(name: string, value: string): void; + getStringParameter(name: string): string; + setBooleanParameter(name: string, value: boolean): void; + getBooleanParameter(name: string): boolean; + getAllDoubleParameters(): MapStringDouble; + getAllStringParameters(): MapStringString; + getAllBooleanParameters(): MapStringBoolean; + clearParameters(): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class EffectsContainer extends EmscriptenObject { + constructor(): void; + hasEffectNamed(name: string): boolean; + getEffect(name: string): Effect; + getEffectAt(index: number): Effect; + getEffectPosition(name: string): number; + getEffectsCount(): number; + insertNewEffect(name: string, position: number): Effect; + insertEffect(theEffect: Effect, position: number): void; + removeEffect(name: string): void; + swapEffects(firstEffectIndex: number, secondEffectIndex: number): void; + moveEffect(oldIndex: number, newIndex: number): void; + clear(): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class Layer extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + setRenderingType(renderingType: string): void; + getRenderingType(): string; + setVisibility(visible: boolean): void; + getVisibility(): boolean; + setLocked(isLocked: boolean): void; + isLocked(): boolean; + setLightingLayer(lightingLayer: boolean): void; + isLightingLayer(): boolean; + setFollowBaseLayerCamera(followBaseLayerCamera: boolean): void; + isFollowingBaseLayerCamera(): boolean; + getCamera3DNearPlaneDistance(): number; + setCamera3DNearPlaneDistance(distance: number): void; + getCamera3DFarPlaneDistance(): number; + setCamera3DFarPlaneDistance(distance: number): void; + getCamera3DFieldOfView(): number; + setCamera3DFieldOfView(angle: number): void; + setAmbientLightColor(r: number, g: number, b: number): void; + getAmbientLightColorRed(): number; + getAmbientLightColorGreen(): number; + getAmbientLightColorBlue(): number; + getEffects(): EffectsContainer; + getCameraCount(): number; + setCameraCount(cameraCount: number): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class PropertyDescriptor extends EmscriptenObject { + constructor(propValue: string): void; + setValue(value: string): PropertyDescriptor; + getValue(): string; + setType(type: string): PropertyDescriptor; + getType(): string; + setLabel(label: string): PropertyDescriptor; + getLabel(): string; + setDescription(label: string): PropertyDescriptor; + getDescription(): string; + setGroup(label: string): PropertyDescriptor; + getGroup(): string; + addExtraInfo(type: string): PropertyDescriptor; + setExtraInfo(info: VectorString): PropertyDescriptor; + getExtraInfo(): VectorString; + setHidden(enable: boolean): PropertyDescriptor; + getMeasurementUnit(): MeasurementUnit; + setMeasurementUnit(measurementUnit: MeasurementUnit): PropertyDescriptor; + isHidden(): boolean; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; + serializeValuesTo(element: SerializerElement): void; + unserializeValuesFrom(element: SerializerElement): void; +} + +export class MeasurementUnit extends EmscriptenObject { + constructor(name: string, label: string, description: string): void; + getName(): string; + getLabel(): string; + getDescription(): string; + getElementsWithWords(): string; + getElementsCount(): number; + getElementPower(elementIndex: number): number; + getElementBaseUnit(elementIndex: number): MeasurementBaseUnit; + isUndefined(): boolean; + static applyTranslation(): void; + static getUndefined(): MeasurementUnit; + static getDimensionless(): MeasurementUnit; + static getDegreeAngle(): MeasurementUnit; + static getSecond(): MeasurementUnit; + static getPixel(): MeasurementUnit; + static getPixelSpeed(): MeasurementUnit; + static getPixelAcceleration(): MeasurementUnit; + static getNewton(): MeasurementUnit; + static getDefaultMeasurementUnitsCount(): number; + static getDefaultMeasurementUnitAtIndex(index: number): MeasurementUnit; + static getDefaultMeasurementUnitByName(name: string): MeasurementUnit; + static hasDefaultMeasurementUnitNamed(name: string): boolean; +} + +export class MeasurementBaseUnit extends EmscriptenObject { + constructor(name: string, symbol: string, quantity: string): void; + getName(): string; + getSymbol(): string; + getQuantity(): string; +} + +export class NamedPropertyDescriptor extends EmscriptenObject { + constructor(): void; + setName(name: string): PropertyDescriptor; + getName(): string; +} + +export class MapStringPropertyDescriptor extends EmscriptenObject { + constructor(): void; + getOrCreate(name: string): PropertyDescriptor; + get(name: string): PropertyDescriptor; + set(name: string, prop: PropertyDescriptor): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class MapStringSerializerValue extends EmscriptenObject { + constructor(): void; + getOrCreate(name: string): SerializerValue; + get(name: string): SerializerValue; + set(name: string, prop: SerializerValue): void; + has(name: string): boolean; + keys(): VectorString; +} + +export class VectorPairStringSharedPtrSerializerElement extends EmscriptenObject { + size(): number; + getString(id: number): string; + getSharedPtrSerializerElement(id: number): SharedPtrSerializerElement; +} + +export class Resource extends EmscriptenObject { + constructor(): void; + clone(): Resource; + setName(name: string): void; + getName(): string; + setKind(kind: string): void; + getKind(): string; + isUserAdded(): boolean; + setUserAdded(yes: boolean): void; + useFile(): boolean; + setFile(file: string): void; + getFile(): string; + setMetadata(metadata: string): void; + getMetadata(): string; + setOrigin(originName: string, originIdentifier: string): void; + getOriginName(): string; + getOriginIdentifier(): string; + getProperties(): MapStringPropertyDescriptor; + updateProperty(name: string, value: string): boolean; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class ResourcesManager extends EmscriptenObject { + constructor(): void; + getAllResourceNames(): VectorString; + findFilesNotInResources(filesToCheck: VectorString): VectorString; + hasResource(name: string): boolean; + getResource(name: string): Resource; + getResourceNameWithOrigin(originName: string, originIdentifier: string): string; + getResourceNameWithFile(file: string): string; + addResource(res: Resource): boolean; + removeResource(name: string): void; + renameResource(oldName: string, name: string): void; + getResourcePosition(name: string): number; + moveResourceUpInList(oldName: string): boolean; + moveResourceDownInList(oldName: string): boolean; + moveResource(oldIndex: number, newIndex: number): void; +} + +export class ImageResource extends EmscriptenObject { + constructor(): void; + isSmooth(): boolean; + setSmooth(enable: boolean): void; +} + +export class AudioResource extends EmscriptenObject { + constructor(): void; +} + +export class FontResource extends EmscriptenObject { + constructor(): void; +} + +export class BitmapFontResource extends EmscriptenObject { + constructor(): void; +} + +export class VideoResource extends EmscriptenObject { + constructor(): void; +} + +export class JsonResource extends EmscriptenObject { + constructor(): void; +} + +export class TilemapResource extends EmscriptenObject { + constructor(): void; +} + +export class TilesetResource extends EmscriptenObject { + constructor(): void; +} + +export class InitialInstance extends EmscriptenObject { + constructor(): void; + setObjectName(name: string): void; + getObjectName(): string; + getX(): number; + setX(x: number): void; + getY(): number; + setY(y: number): void; + getZ(): number; + setZ(z: number): void; + getAngle(): number; + setAngle(angle: number): void; + getRotationX(): number; + setRotationX(rotationX: number): void; + getRotationY(): number; + setRotationY(rotationY: number): void; + isLocked(): boolean; + setLocked(lock: boolean): void; + isSealed(): boolean; + setSealed(seal: boolean): void; + getZOrder(): number; + setZOrder(zOrder: number): void; + getLayer(): string; + setLayer(layer: string): void; + setHasCustomSize(enable: boolean): void; + hasCustomSize(): boolean; + setHasCustomDepth(enable: boolean): void; + hasCustomDepth(): boolean; + setCustomWidth(width: number): void; + getCustomWidth(): number; + setCustomHeight(height: number): void; + getCustomHeight(): number; + setCustomDepth(depth: number): void; + getCustomDepth(): number; + resetPersistentUuid(): InitialInstance; + updateCustomProperty(name: string, value: string, project: Project, layout: Layout): void; + getCustomProperties(project: Project, layout: Layout): MapStringPropertyDescriptor; + getRawDoubleProperty(name: string): number; + getRawStringProperty(name: string): string; + setRawDoubleProperty(name: string, value: number): void; + setRawStringProperty(name: string, value: string): void; + getVariables(): VariablesContainer; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class InitialInstancesContainer extends EmscriptenObject { + constructor(): void; + clone(): InitialInstancesContainer; + getInstancesCount(): number; + iterateOverInstances(func: InitialInstanceFunctor): void; + iterateOverInstancesWithZOrdering(func: InitialInstanceFunctor, layer: string): void; + moveInstancesToLayer(fromLayer: string, toLayer: string): void; + removeAllInstancesOnLayer(layer: string): void; + removeInitialInstancesOfObject(obj: string): void; + hasInstancesOfObject(objectName: string): boolean; + someInstancesAreOnLayer(layer: string): boolean; + renameInstancesOfObject(oldName: string, newName: string): void; + removeInstance(inst: InitialInstance): void; + getLayerInstancesCount(layerName: string): number; + insertNewInitialInstance(): InitialInstance; + insertInitialInstance(inst: InitialInstance): InitialInstance; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class HighestZOrderFinder extends EmscriptenObject { + constructor(): void; + restrictSearchToLayer(layer: string): void; + getHighestZOrder(): number; + getLowestZOrder(): number; + reset(): void; + getInstancesCount(): number; +} + +export class InitialInstanceJSFunctor extends EmscriptenObject { + constructor(): void; + invoke(instance: InitialInstance): void; +} + +export class SerializerValue extends EmscriptenObject { + getBool(): boolean; + getString(): string; + getInt(): number; + getDouble(): number; + getRawString(): string; + isBoolean(): boolean; + isString(): boolean; + isInt(): boolean; + isDouble(): boolean; +} + +export class SerializerElement extends EmscriptenObject { + constructor(): void; + setBoolValue(value: boolean): void; + setStringValue(value: string): void; + setIntValue(value: number): void; + setDoubleValue(value: number): void; + getValue(): SerializerValue; + getBoolValue(): boolean; + getStringValue(): string; + getIntValue(): number; + getDoubleValue(): number; + isValueUndefined(): boolean; + setBoolAttribute(name: string, value: boolean): SerializerElement; + setStringAttribute(name: string, value: string): SerializerElement; + setIntAttribute(name: string, value: number): SerializerElement; + setDoubleAttribute(name: string, value: number): SerializerElement; + getBoolAttribute(name: string): boolean; + getStringAttribute(name: string): string; + getIntAttribute(name: string): number; + getDoubleAttribute(name: string): number; + considerAsArray(): void; + consideredAsArray(): boolean; + addChild(str: string): SerializerElement; + getChild(str: string): SerializerElement; + setChild(str: string, element: SerializerElement): void; + hasChild(str: string): boolean; + getAllChildren(): VectorPairStringSharedPtrSerializerElement; + getAllAttributes(): MapStringSerializerValue; +} + +export class SharedPtrSerializerElement extends EmscriptenObject { + get(): SerializerElement; + reset(): void; +} + +export class Serializer extends EmscriptenObject { + static toJSON(element: SerializerElement): string; + static fromJSON(json: string): SerializerElement; +} + +export class InstructionsList extends EmscriptenObject { + constructor(): void; + insert(instr: Instruction, pos: number): Instruction; + insertInstructions(list: InstructionsList, begin: number, end: number, pos: number): void; + size(): number; + set(index: number, instr: Instruction): void; + contains(instr: Instruction): boolean; + get(index: number): Instruction; + remove(instr: Instruction): void; + removeAt(index: number): void; + clear(): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class Instruction extends EmscriptenObject { + constructor(): void; + cLONE_Instruction(): Instruction; + setType(type: string): void; + getType(): string; + setInverted(inverted: boolean): void; + isInverted(): boolean; + setAwaited(awaited: boolean): void; + isAwaited(): boolean; + setParameter(id: number, value: string): void; + getParameter(id: number): Expression; + setParametersCount(count: number): void; + getParametersCount(): number; + getSubInstructions(): InstructionsList; +} + +export class Expression extends EmscriptenObject { + getPlainString(): string; + getRootNode(): ExpressionNode; +} + +export class VectorPairStringTextFormatting extends EmscriptenObject { + size(): number; + getString(id: number): string; + getTextFormatting(id: number): TextFormatting; +} + +export class TextFormatting extends EmscriptenObject { + getUserData(): number; +} + +export class InstructionSentenceFormatter extends EmscriptenObject { + static get(): InstructionSentenceFormatter; + getAsFormattedText(instr: Instruction, metadata: InstructionMetadata): VectorPairStringTextFormatting; +} + +export class ParameterOptions extends EmscriptenObject { + setDescription(description: string): ParameterOptions; + setTypeExtraInfo(typeExtraInfo: string): ParameterOptions; + static makeNewOptions(): ParameterOptions; +} + +export class AbstractFunctionMetadata extends EmscriptenObject { + addParameter(type: string, description: string, optionalObjectType: string, parameterIsOptional: boolean): AbstractFunctionMetadata; + addCodeOnlyParameter(type: string, supplementaryInformation: string): AbstractFunctionMetadata; + setDefaultValue(defaultValue: string): AbstractFunctionMetadata; + setParameterLongDescription(longDescription: string): AbstractFunctionMetadata; + setParameterExtraInfo(extraInfo: string): AbstractFunctionMetadata; + setHidden(): AbstractFunctionMetadata; + setPrivate(): AbstractFunctionMetadata; + setFunctionName(functionName: string): AbstractFunctionMetadata; + setIncludeFile(includeFile: string): AbstractFunctionMetadata; + addIncludeFile(includeFile: string): AbstractFunctionMetadata; + getIncludeFiles(): VectorString; +} + +export class InstructionMetadata extends EmscriptenObject { + constructor(): void; + getFullName(): string; + getDescription(): string; + getSentence(): string; + getGroup(): string; + getIconFilename(): string; + getSmallIconFilename(): string; + getHelpPath(): string; + canHaveSubInstructions(): boolean; + getParameter(index: number): ParameterMetadata; + getParametersCount(): number; + getParameters(): VectorParameterMetadata; + getUsageComplexity(): number; + isHidden(): boolean; + isPrivate(): boolean; + isAsync(): boolean; + isOptionallyAsync(): boolean; + isRelevantForLayoutEvents(): boolean; + isRelevantForFunctionEvents(): boolean; + isRelevantForAsynchronousFunctionEvents(): boolean; + isRelevantForCustomObjectEvents(): boolean; + setCanHaveSubInstructions(): InstructionMetadata; + setHelpPath(helpPath: string): InstructionMetadata; + setHidden(): InstructionMetadata; + setPrivate(): InstructionMetadata; + setRelevantForLayoutEventsOnly(): InstructionMetadata; + setRelevantForFunctionEventsOnly(): InstructionMetadata; + setRelevantForAsynchronousFunctionEventsOnly(): InstructionMetadata; + setRelevantForCustomObjectEventsOnly(): InstructionMetadata; + addParameter(type: string, description: string, optionalObjectType: string, parameterIsOptional: boolean): InstructionMetadata; + addCodeOnlyParameter(type: string, supplementaryInformation: string): InstructionMetadata; + setDefaultValue(defaultValue: string): InstructionMetadata; + setParameterLongDescription(longDescription: string): InstructionMetadata; + setParameterExtraInfo(extraInfo: string): InstructionMetadata; + useStandardOperatorParameters(type: string, options: ParameterOptions): InstructionMetadata; + useStandardRelationalOperatorParameters(type: string, options: ParameterOptions): InstructionMetadata; + markAsSimple(): InstructionMetadata; + markAsAdvanced(): InstructionMetadata; + markAsComplex(): InstructionMetadata; + getCodeExtraInformation(): InstructionMetadata; + setFunctionName(functionName_: string): InstructionMetadata; + setAsyncFunctionName(functionName_: string): InstructionMetadata; + getFunctionName(): string; + getAsyncFunctionName(): string; + setManipulatedType(type_: string): InstructionMetadata; + setGetter(getter: string): InstructionMetadata; + setMutators(mutators: MapStringString): InstructionMetadata; + setIncludeFile(includeFile: string): InstructionMetadata; + addIncludeFile(includeFile: string): InstructionMetadata; + getIncludeFiles(): VectorString; +} + +export class ExpressionMetadata extends EmscriptenObject { + constructor(returnType: string, extensionNamespace: string, name: string, fullname: string, description: string, group: string, smallicon: string): void; + getReturnType(): string; + getFullName(): string; + getDescription(): string; + getGroup(): string; + getSmallIconFilename(): string; + getHelpPath(): string; + isShown(): boolean; + isPrivate(): boolean; + isRelevantForLayoutEvents(): boolean; + isRelevantForFunctionEvents(): boolean; + isRelevantForAsynchronousFunctionEvents(): boolean; + isRelevantForCustomObjectEvents(): boolean; + getParameter(id: number): ParameterMetadata; + getParametersCount(): number; + getParameters(): VectorParameterMetadata; + setHidden(): ExpressionMetadata; + setPrivate(): ExpressionMetadata; + setRelevantForLayoutEventsOnly(): ExpressionMetadata; + setRelevantForFunctionEventsOnly(): ExpressionMetadata; + setRelevantForAsynchronousFunctionEventsOnly(): ExpressionMetadata; + setRelevantForCustomObjectEventsOnly(): ExpressionMetadata; + addParameter(type: string, description: string, optionalObjectType: string, parameterIsOptional: boolean): ExpressionMetadata; + addCodeOnlyParameter(type: string, supplementaryInformation: string): ExpressionMetadata; + setDefaultValue(defaultValue: string): ExpressionMetadata; + setParameterLongDescription(longDescription: string): ExpressionMetadata; + setParameterExtraInfo(extraInfo: string): ExpressionMetadata; + getCodeExtraInformation(): ExpressionMetadata; + setFunctionName(functionName: string): ExpressionMetadata; + getFunctionName(): string; + setStatic(): ExpressionMetadata; + setIncludeFile(includeFile: string): ExpressionMetadata; + addIncludeFile(includeFile: string): ExpressionMetadata; + getIncludeFiles(): VectorString; +} + +export class MultipleInstructionMetadata extends EmscriptenObject { + addParameter(type: string, description: string, optionalObjectType: string, parameterIsOptional: boolean): MultipleInstructionMetadata; + addCodeOnlyParameter(type: string, supplementaryInformation: string): MultipleInstructionMetadata; + setDefaultValue(defaultValue: string): MultipleInstructionMetadata; + setParameterLongDescription(longDescription: string): MultipleInstructionMetadata; + setParameterExtraInfo(extraInfo: string): MultipleInstructionMetadata; + useStandardParameters(type: string, options: ParameterOptions): MultipleInstructionMetadata; + setHidden(): MultipleInstructionMetadata; + setFunctionName(functionName: string): MultipleInstructionMetadata; + setGetter(getter: string): MultipleInstructionMetadata; + setIncludeFile(includeFile: string): MultipleInstructionMetadata; + addIncludeFile(includeFile: string): MultipleInstructionMetadata; + getIncludeFiles(): VectorString; + markAsSimple(): MultipleInstructionMetadata; + markAsAdvanced(): MultipleInstructionMetadata; + markAsComplex(): MultipleInstructionMetadata; + setPrivate(): MultipleInstructionMetadata; +} + +export class DependencyMetadata extends EmscriptenObject { + constructor(): void; + getName(): string; + setName(name_: string): DependencyMetadata; + getExportName(): string; + setExportName(exportName_: string): DependencyMetadata; + getVersion(): string; + setVersion(version_: string): DependencyMetadata; + getDependencyType(): string; + setDependencyType(dependencyType_: string): DependencyMetadata; + setExtraSetting(settingName: string, settingValue: PropertyDescriptor): DependencyMetadata; + getAllExtraSettings(): MapStringPropertyDescriptor; + onlyIfSomeExtraSettingsNonEmpty(): DependencyMetadata; + onlyIfOtherDependencyIsExported(otherDependency: string): DependencyMetadata; + copyFrom(dependencyMetadata: DependencyMetadata): void; +} + +export class ParameterMetadata extends EmscriptenObject { + constructor(): void; + getType(): string; + setType(type_: string): ParameterMetadata; + getName(): string; + setName(name_: string): ParameterMetadata; + getExtraInfo(): string; + setExtraInfo(extraInfo_: string): ParameterMetadata; + isOptional(): boolean; + setOptional(optional_: boolean): ParameterMetadata; + getDescription(): string; + setDescription(description_: string): ParameterMetadata; + getLongDescription(): string; + setLongDescription(longDescription_: string): ParameterMetadata; + isCodeOnly(): boolean; + setCodeOnly(codeOnly_: boolean): ParameterMetadata; + getDefaultValue(): string; + setDefaultValue(defaultValue_: string): ParameterMetadata; + setValueTypeMetadata(type: ValueTypeMetadata): ParameterMetadata; + getValueTypeMetadata(): ValueTypeMetadata; + static isObject(param: string): boolean; + static isBehavior(param: string): boolean; + static isExpression(type_: string, parameterType: string): boolean; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class ValueTypeMetadata extends EmscriptenObject { + constructor(): void; + getName(): string; + setName(name_: string): ValueTypeMetadata; + getExtraInfo(): string; + setExtraInfo(extraInfo_: string): ValueTypeMetadata; + isOptional(): boolean; + setOptional(optional_: boolean): ValueTypeMetadata; + getDefaultValue(): string; + setDefaultValue(defaultValue_: string): ValueTypeMetadata; + isObject(): boolean; + isBehavior(): boolean; + isNumber(): boolean; + isString(): boolean; + isVariable(): boolean; + static isTypeObject(parameterType: string): boolean; + static isTypeBehavior(parameterType: string): boolean; + static isTypeExpression(type: string, parameterType: string): boolean; + static getPrimitiveValueType(parameterType: string): string; + static convertPropertyTypeToValueType(propertyType: string): string; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class VectorParameterMetadata extends EmscriptenObject { + constructor(): void; + push_back(parameterMetadata: ParameterMetadata): void; + size(): number; + at(index: number): ParameterMetadata; + set(index: number, parameterMetadata: ParameterMetadata): void; + fREE_removeFromVectorParameterMetadata(index: number): void; + fREE_insertIntoVectorParameterMetadata(index: number, parameterMetadata: ParameterMetadata): void; + fREE_swapInVectorParameterMetadata(oldIndex: number, newIndex: number): void; + clear(): void; +} + +export class ParameterMetadataTools extends EmscriptenObject { + static parametersToObjectsContainer(project: Project, parameters: VectorParameterMetadata, outputObjectsContainer: ObjectsContainer): void; + static getObjectParameterIndexFor(parameters: VectorParameterMetadata, parameterIndex: number): number; +} + +export class EventsFunctionTools extends EmscriptenObject { + static freeEventsFunctionToObjectsContainer(project: Project, functionsContainer: EventsFunctionsContainer, eventsFunction: EventsFunction, outputGlobalObjectsContainer: ObjectsContainer, outputObjectsContainer: ObjectsContainer): void; + static behaviorEventsFunctionToObjectsContainer(project: Project, eventsBasedBehavior: EventsBasedBehavior, eventsFunction: EventsFunction, outputGlobalObjectsContainer: ObjectsContainer, outputObjectsContainer: ObjectsContainer): void; + static objectEventsFunctionToObjectsContainer(project: Project, eventsBasedObject: EventsBasedObject, eventsFunction: EventsFunction, outputGlobalObjectsContainer: ObjectsContainer, outputObjectsContainer: ObjectsContainer): void; +} + +export class ObjectMetadata extends EmscriptenObject { + getName(): string; + getFullName(): string; + getDescription(): string; + getIconFilename(): string; + getHelpPath(): string; + getCategoryFullName(): string; + setCategoryFullName(categoryFullName: string): ObjectMetadata; + addScopedCondition(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addScopedAction(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addCondition(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addAction(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addExpression(name: string, fullname: string, description: string, group: string, smallicon: string): ExpressionMetadata; + addStrExpression(name: string, fullname: string, description: string, group: string, smallicon: string): ExpressionMetadata; + addExpressionAndCondition(type: string, name: string, fullname: string, description: string, sentenceName: string, group: string, icon: string): MultipleInstructionMetadata; + addExpressionAndConditionAndAction(type: string, name: string, fullname: string, description: string, sentenceName: string, group: string, icon: string): MultipleInstructionMetadata; + getAllActions(): MapStringInstructionMetadata; + getAllConditions(): MapStringInstructionMetadata; + getAllExpressions(): MapStringExpressionMetadata; + getAllStrExpressions(): MapStringExpressionMetadata; + setIncludeFile(includeFile: string): ObjectMetadata; + addIncludeFile(includeFile: string): ObjectMetadata; + getDefaultBehaviors(): SetString; + hasDefaultBehavior(behaviorType: string): boolean; + addDefaultBehavior(behaviorType: string): ObjectMetadata; + setHidden(): ObjectMetadata; + isHidden(): boolean; + markAsRenderedIn3D(): ObjectMetadata; + isRenderedIn3D(): boolean; +} + +export class BehaviorMetadata extends EmscriptenObject { + getName(): string; + getFullName(): string; + getDefaultName(): string; + getDescription(): string; + getGroup(): string; + getIconFilename(): string; + getHelpPath(): string; + addScopedCondition(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addScopedAction(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addCondition(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addAction(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addExpression(name: string, fullname: string, description: string, group: string, smallicon: string): ExpressionMetadata; + addStrExpression(name: string, fullname: string, description: string, group: string, smallicon: string): ExpressionMetadata; + addExpressionAndCondition(type: string, name: string, fullname: string, description: string, sentenceName: string, group: string, icon: string): MultipleInstructionMetadata; + addExpressionAndConditionAndAction(type: string, name: string, fullname: string, description: string, sentenceName: string, group: string, icon: string): MultipleInstructionMetadata; + addDuplicatedAction(newActionName: string, copiedActionName: string): InstructionMetadata; + addDuplicatedCondition(newConditionName: string, copiedConditionName: string): InstructionMetadata; + addDuplicatedExpression(newExpressionName: string, copiedExpressionName: string): ExpressionMetadata; + addDuplicatedStrExpression(newExpressionName: string, copiedExpressionName: string): ExpressionMetadata; + getAllActions(): MapStringInstructionMetadata; + getAllConditions(): MapStringInstructionMetadata; + getAllExpressions(): MapStringExpressionMetadata; + getAllStrExpressions(): MapStringExpressionMetadata; + setIncludeFile(includeFile: string): BehaviorMetadata; + addIncludeFile(includeFile: string): BehaviorMetadata; + addRequiredFile(resourceFile: string): BehaviorMetadata; + setObjectType(objectType: string): BehaviorMetadata; + getObjectType(): string; + getRequiredBehaviorTypes(): VectorString; + isPrivate(): boolean; + setPrivate(): BehaviorMetadata; + isHidden(): boolean; + setHidden(): BehaviorMetadata; + get(): Behavior; + getSharedDataInstance(): BehaviorsSharedData; +} + +export class EffectMetadata extends EmscriptenObject { + setFullName(fullName: string): EffectMetadata; + setDescription(description: string): EffectMetadata; + setHelpPath(helpPath: string): EffectMetadata; + setIncludeFile(includeFile: string): EffectMetadata; + addIncludeFile(includeFile: string): EffectMetadata; + markAsNotWorkingForObjects(): EffectMetadata; + markAsOnlyWorkingFor2D(): EffectMetadata; + markAsOnlyWorkingFor3D(): EffectMetadata; + markAsUnique(): EffectMetadata; + getType(): string; + getFullName(): string; + getDescription(): string; + getHelpPath(): string; + isMarkedAsNotWorkingForObjects(): boolean; + isMarkedAsOnlyWorkingFor2D(): boolean; + isMarkedAsOnlyWorkingFor3D(): boolean; + isMarkedAsUnique(): boolean; + getProperties(): MapStringPropertyDescriptor; +} + +export class EventMetadata extends EmscriptenObject { + getFullName(): string; + getDescription(): string; + getGroup(): string; +} + +export class PlatformExtension extends EmscriptenObject { + constructor(): void; + setExtensionInformation(name: string, fullname: string, description: string, author: string, license: string): PlatformExtension; + setExtensionHelpPath(helpPath: string): PlatformExtension; + setIconUrl(iconUrl: string): PlatformExtension; + setCategory(category: string): PlatformExtension; + addInstructionOrExpressionGroupMetadata(name: string): InstructionOrExpressionGroupMetadata; + markAsDeprecated(): void; + getTags(): VectorString; + setTags(csvTags: string): PlatformExtension; + addExpressionAndCondition(type: string, name: string, fullname: string, description: string, sentenceName: string, group: string, icon: string): MultipleInstructionMetadata; + addExpressionAndConditionAndAction(type: string, name: string, fullname: string, description: string, sentenceName: string, group: string, icon: string): MultipleInstructionMetadata; + addCondition(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addAction(name: string, fullname: string, description: string, sentence: string, group: string, icon: string, smallicon: string): InstructionMetadata; + addExpression(name: string, fullname: string, description: string, group: string, smallicon: string): ExpressionMetadata; + addStrExpression(name: string, fullname: string, description: string, group: string, smallicon: string): ExpressionMetadata; + addDependency(): DependencyMetadata; + addBehavior(name: string, fullname: string, defaultName: string, description: string, group: string, icon24x24: string, className: string, instance: Behavior, sharedDatasInstance: BehaviorsSharedData): BehaviorMetadata; + addEventsBasedBehavior(name: string, fullname: string, description: string, group: string, icon24x24: string): BehaviorMetadata; + addObject(name: string, fullname: string, description: string, icon24x24: string, instance: ObjectConfiguration): ObjectMetadata; + addEventsBasedObject(name: string, fullname: string, description: string, icon24x24: string): ObjectMetadata; + addEffect(name: string): EffectMetadata; + registerProperty(name: string): PropertyDescriptor; + getFullName(): string; + getName(): string; + getCategory(): string; + getDescription(): string; + getAuthor(): string; + getLicense(): string; + getHelpPath(): string; + getIconUrl(): string; + isBuiltin(): boolean; + getNameSpace(): string; + addDuplicatedAction(newActionName: string, copiedActionName: string): InstructionMetadata; + addDuplicatedCondition(newConditionName: string, copiedConditionName: string): InstructionMetadata; + addDuplicatedExpression(newExpressionName: string, copiedExpressionName: string): ExpressionMetadata; + addDuplicatedStrExpression(newExpressionName: string, copiedExpressionName: string): ExpressionMetadata; + getExtensionObjectsTypes(): VectorString; + getBehaviorsTypes(): VectorString; + getExtensionEffectTypes(): VectorString; + getObjectMetadata(type: string): ObjectMetadata; + getBehaviorMetadata(type: string): BehaviorMetadata; + getEffectMetadata(type: string): EffectMetadata; + getAllEvents(): MapStringEventMetadata; + getAllActions(): MapStringInstructionMetadata; + getAllConditions(): MapStringInstructionMetadata; + getAllExpressions(): MapStringExpressionMetadata; + getAllStrExpressions(): MapStringExpressionMetadata; + getAllActionsForObject(objectType: string): MapStringInstructionMetadata; + getAllConditionsForObject(objectType: string): MapStringInstructionMetadata; + getAllExpressionsForObject(objectType: string): MapStringExpressionMetadata; + getAllStrExpressionsForObject(objectType: string): MapStringExpressionMetadata; + getAllActionsForBehavior(autoType: string): MapStringInstructionMetadata; + getAllConditionsForBehavior(autoType: string): MapStringInstructionMetadata; + getAllExpressionsForBehavior(autoType: string): MapStringExpressionMetadata; + getAllStrExpressionsForBehavior(autoType: string): MapStringExpressionMetadata; + getAllProperties(): MapStringPropertyDescriptor; + getAllDependencies(): VectorDependencyMetadata; + static getNamespaceSeparator(): string; + static getBehaviorFullType(extensionName: string, behaviorName: string): string; +} + +export class EventsList extends EmscriptenObject { + constructor(): void; + insertEvent(event: BaseEvent, pos: number): BaseEvent; + insertNewEvent(project: Project, type: string, pos: number): BaseEvent; + insertEvents(list: EventsList, begin: number, end: number, pos: number): void; + getEventAt(pos: number): BaseEvent; + removeEventAt(pos: number): void; + removeEvent(event: BaseEvent): void; + getEventsCount(): number; + contains(event: BaseEvent, recursive: boolean): boolean; + moveEventToAnotherEventsList(eventToMove: BaseEvent, newEventsList: EventsList, newPosition: number): boolean; + isEmpty(): boolean; + clear(): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class BaseEvent extends EmscriptenObject { + constructor(): void; + clone(): BaseEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class StandardEvent extends EmscriptenObject { + constructor(): void; + getConditions(): InstructionsList; + getActions(): InstructionsList; + clone(): StandardEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class RepeatEvent extends EmscriptenObject { + constructor(): void; + getConditions(): InstructionsList; + getActions(): InstructionsList; + setRepeatExpression(expr: string): void; + getRepeatExpression(): string; + clone(): RepeatEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class WhileEvent extends EmscriptenObject { + constructor(): void; + getConditions(): InstructionsList; + getWhileConditions(): InstructionsList; + getActions(): InstructionsList; + clone(): WhileEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class ForEachEvent extends EmscriptenObject { + constructor(): void; + setObjectToPick(objects: string): void; + getObjectToPick(): string; + getConditions(): InstructionsList; + getActions(): InstructionsList; + clone(): ForEachEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class ForEachChildVariableEvent extends EmscriptenObject { + constructor(): void; + getConditions(): InstructionsList; + getActions(): InstructionsList; + getIterableVariableName(): string; + getKeyIteratorVariableName(): string; + getValueIteratorVariableName(): string; + setIterableVariableName(newName: string): void; + setKeyIteratorVariableName(newName: string): void; + setValueIteratorVariableName(newName: string): void; + clone(): ForEachChildVariableEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class CommentEvent extends EmscriptenObject { + constructor(): void; + getComment(): string; + setComment(type: string): void; + setBackgroundColor(r: number, g: number, b: number): void; + getBackgroundColorRed(): number; + getBackgroundColorGreen(): number; + getBackgroundColorBlue(): number; + setTextColor(r: number, g: number, b: number): void; + getTextColorRed(): number; + getTextColorGreen(): number; + getTextColorBlue(): number; + clone(): CommentEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class GroupEvent extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + setBackgroundColor(r: number, g: number, b: number): void; + getBackgroundColorR(): number; + getBackgroundColorG(): number; + getBackgroundColorB(): number; + setSource(source: string): void; + getSource(): string; + getCreationParameters(): VectorString; + getCreationTimestamp(): number; + setCreationTimestamp(ts: number): void; + clone(): GroupEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class LinkEvent extends EmscriptenObject { + constructor(): void; + setTarget(name: string): void; + getTarget(): string; + getIncludeConfig(): number; + setIncludeAllEvents(): void; + setIncludeEventsGroup(source: string): void; + getEventsGroupName(): string; + setIncludeStartAndEnd(start: number, end: number): void; + getIncludeStart(): number; + getIncludeEnd(): number; + clone(): LinkEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class EventsRemover extends EmscriptenObject { + constructor(): void; + addEventToRemove(eventToRemove: BaseEvent): void; + addInstructionToRemove(instructionToRemove: Instruction): void; + launch(events: EventsList): void; +} + +export class EventsListUnfolder extends EmscriptenObject { + static unfoldWhenContaining(list: EventsList, eventToContain: BaseEvent): void; + static foldAll(list: EventsList): void; + static unfoldToLevel(list: EventsList, maxLevel: number, currentLevel?: number = 0): void; +} + +export class EventsSearchResult extends EmscriptenObject { + isEventsListValid(): boolean; + getEventsList(): EventsList; + getPositionInList(): number; + isEventValid(): boolean; + getEvent(): BaseEvent; +} + +export class VectorEventsSearchResult extends EmscriptenObject { + constructor(): void; + cLONE_VectorEventsSearchResult(): VectorEventsSearchResult; + push_back(result: EventsSearchResult): void; + resize(size: number): void; + size(): number; + at(index: number): EventsSearchResult; + set(index: number, result: EventsSearchResult): void; + clear(): void; +} + +export class EventsRefactorer extends EmscriptenObject { + static renameObjectInEvents(platform: Platform, projectScopedContainers: ProjectScopedContainers, events: EventsList, oldName: string, newName: string): void; + static removeObjectInEvents(platform: Platform, projectScopedContainers: ProjectScopedContainers, events: EventsList, name: string): void; + static replaceStringInEvents(project: ObjectsContainer, layout: ObjectsContainer, events: EventsList, toReplace: string, newString: string, matchCase: boolean, inConditions: boolean, inActions: boolean, inEventStrings: boolean): VectorEventsSearchResult; + static searchInEvents(platform: Platform, events: EventsList, search: string, matchCase: boolean, inConditions: boolean, inActions: boolean, inEventStrings: boolean, inEventSentences: boolean): VectorEventsSearchResult; +} + +export class UnfilledRequiredBehaviorPropertyProblem extends EmscriptenObject { + getSourceProject(): Project; + getSourceObject(): gdObject; + getSourceBehaviorContent(): Behavior; + getSourcePropertyName(): string; + getExpectedBehaviorTypeName(): string; +} + +export class VectorUnfilledRequiredBehaviorPropertyProblem extends EmscriptenObject { + size(): number; + at(index: number): UnfilledRequiredBehaviorPropertyProblem; +} + +export class ProjectBrowserHelper extends EmscriptenObject { + static exposeProjectEvents(project: Project, worker: ArbitraryEventsWorker): void; + static exposeProjectObjects(project: Project, worker: ArbitraryObjectsWorker): void; +} + +export class ResourceExposer extends EmscriptenObject { + static exposeWholeProjectResources(project: Project, worker: ArbitraryResourceWorker): void; +} + +export class VariablesChangeset extends EmscriptenObject { + hasRemovedVariables(): boolean; + clearRemovedVariables(): VariablesChangeset; +} + +export class WholeProjectRefactorer extends EmscriptenObject { + static computeChangesetForVariablesContainer(project: Project, oldSerializedVariablesContainer: SerializerElement, newVariablesContainer: VariablesContainer): VariablesChangeset; + static applyRefactoringForVariablesContainer(project: Project, newVariablesContainer: VariablesContainer, changeset: VariablesChangeset): void; + static renameEventsFunctionsExtension(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, oldName: string, newName: string): void; + static updateExtensionNameInEventsBasedBehavior(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, sourceExtensionName: string): void; + static renameEventsFunction(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, oldName: string, newName: string): void; + static renameBehaviorEventsFunction(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, oldName: string, newName: string): void; + static renameObjectEventsFunction(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject, oldName: string, newName: string): void; + static moveEventsFunctionParameter(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, functionName: string, oldIndex: number, newIndex: number): void; + static moveBehaviorEventsFunctionParameter(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, functionName: string, oldIndex: number, newIndex: number): void; + static moveObjectEventsFunctionParameter(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject, functionName: string, oldIndex: number, newIndex: number): void; + static renameEventsBasedBehaviorProperty(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, oldName: string, newName: string): void; + static renameEventsBasedBehaviorSharedProperty(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, oldName: string, newName: string): void; + static renameEventsBasedObjectProperty(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject, oldName: string, newName: string): void; + static renameEventsBasedBehavior(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, oldName: string, newName: string): void; + static renameEventsBasedObject(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, oldName: string, newName: string): void; + static renameLayout(project: Project, oldName: string, newName: string): void; + static renameExternalLayout(project: Project, oldName: string, newName: string): void; + static renameExternalEvents(project: Project, oldName: string, newName: string): void; + static renameLayer(project: Project, layout: Layout, oldName: string, newName: string): void; + static renameLayerEffect(project: Project, layout: Layout, layer: Layer, oldName: string, newName: string): void; + static renameObjectAnimation(project: Project, layout: Layout, gdObject: gdObject, oldName: string, newName: string): void; + static renameObjectPoint(project: Project, layout: Layout, gdObject: gdObject, oldName: string, newName: string): void; + static renameObjectEffect(project: Project, layout: Layout, gdObject: gdObject, oldName: string, newName: string): void; + static objectOrGroupRenamedInLayout(project: Project, layout: Layout, oldName: string, newName: string, isObjectGroup: boolean): void; + static objectOrGroupRemovedInLayout(project: Project, layout: Layout, objectName: string, isObjectGroup: boolean, removeEventsAndGroups: boolean): void; + static objectOrGroupRenamedInEventsFunction(project: Project, eventsFunction: EventsFunction, globalObjectsContainer: ObjectsContainer, objectsContainer: ObjectsContainer, oldName: string, newName: string, isObjectGroup: boolean): void; + static objectOrGroupRemovedInEventsFunction(project: Project, eventsFunction: EventsFunction, globalObjectsContainer: ObjectsContainer, objectsContainer: ObjectsContainer, objectName: string, isObjectGroup: boolean, removeEventsAndGroups: boolean): void; + static objectOrGroupRenamedInEventsBasedObject(project: Project, globalObjectsContainer: ObjectsContainer, eventsBasedObject: EventsBasedObject, oldName: string, newName: string, isObjectGroup: boolean): void; + static objectOrGroupRemovedInEventsBasedObject(project: Project, eventsBasedObject: EventsBasedObject, globalObjectsContainer: ObjectsContainer, objectsContainer: ObjectsContainer, objectName: string, isObjectGroup: boolean, removeEventsAndGroups: boolean): void; + static globalObjectOrGroupRenamed(project: Project, oldName: string, newName: string, isObjectGroup: boolean): void; + static globalObjectOrGroupRemoved(project: Project, objectName: string, isObjectGroup: boolean, removeEventsAndGroups: boolean): void; + static getAllObjectTypesUsingEventsBasedBehavior(project: Project, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior): SetString; + static ensureBehaviorEventsFunctionsProperParameters(eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior): void; + static ensureObjectEventsFunctionsProperParameters(eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject): void; + static addBehaviorAndRequiredBehaviors(project: Project, obj: gdObject, behaviorType: string, behaviorName: string): void; + static addRequiredBehaviorsFor(project: Project, obj: gdObject, behaviorName: string): void; + static findDependentBehaviorNames(project: Project, obj: gdObject, behaviorName: string): VectorString; + static findInvalidRequiredBehaviorProperties(project: Project): VectorUnfilledRequiredBehaviorPropertyProblem; + static getBehaviorsWithType(obj: gdObject, type: string): VectorString; + static fixInvalidRequiredBehaviorProperties(project: Project): boolean; + static removeLayer(project: Project, layout: Layout, layerName: string): void; + static mergeLayers(project: Project, layout: Layout, originLayerName: string, targetLayerName: string): void; + static getLayoutAndExternalLayoutLayerInstancesCount(project: Project, layout: Layout, layerName: string): number; +} + +export class PropertyFunctionGenerator extends EmscriptenObject { + static generateBehaviorGetterAndSetter(project: Project, extension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, property: NamedPropertyDescriptor, isSharedProperties: boolean): void; + static generateObjectGetterAndSetter(project: Project, extension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject, property: NamedPropertyDescriptor): void; + static canGenerateGetterAndSetter(eventsBasedBehavior: AbstractEventsBasedEntity, property: NamedPropertyDescriptor): boolean; + static generateConditionSkeleton(project: Project, eventFunction: EventsFunction): void; +} + +export class UsedExtensionsResult extends EmscriptenObject { + getUsedExtensions(): SetString; +} + +export class UsedExtensionsFinder extends EmscriptenObject { + static scanProject(project: Project): UsedExtensionsResult; +} + +export class InstructionsCountEvaluator extends EmscriptenObject { + static scanProject(project: Project): number; +} + +export class ExtensionAndBehaviorMetadata extends EmscriptenObject { + getExtension(): PlatformExtension; + getMetadata(): BehaviorMetadata; +} + +export class ExtensionAndObjectMetadata extends EmscriptenObject { + getExtension(): PlatformExtension; + getMetadata(): ObjectMetadata; +} + +export class ExtensionAndEffectMetadata extends EmscriptenObject { + getExtension(): PlatformExtension; + getMetadata(): EffectMetadata; +} + +export class ExtensionAndInstructionMetadata extends EmscriptenObject { + getExtension(): PlatformExtension; + getMetadata(): InstructionMetadata; +} + +export class ExtensionAndExpressionMetadata extends EmscriptenObject { + getExtension(): PlatformExtension; + getMetadata(): ExpressionMetadata; +} + +export class MetadataProvider extends EmscriptenObject { + static getExtensionAndBehaviorMetadata(p: Platform, type: string): ExtensionAndBehaviorMetadata; + static getExtensionAndObjectMetadata(p: Platform, type: string): ExtensionAndObjectMetadata; + static getExtensionAndEffectMetadata(p: Platform, type: string): ExtensionAndEffectMetadata; + static getExtensionAndActionMetadata(p: Platform, type: string): ExtensionAndInstructionMetadata; + static getExtensionAndConditionMetadata(p: Platform, type: string): ExtensionAndInstructionMetadata; + static getExtensionAndExpressionMetadata(p: Platform, type: string): ExtensionAndExpressionMetadata; + static getExtensionAndObjectExpressionMetadata(p: Platform, objectType: string, type: string): ExtensionAndExpressionMetadata; + static getExtensionAndBehaviorExpressionMetadata(p: Platform, autoType: string, type: string): ExtensionAndExpressionMetadata; + static getExtensionAndStrExpressionMetadata(p: Platform, type: string): ExtensionAndExpressionMetadata; + static getExtensionAndObjectStrExpressionMetadata(p: Platform, objectType: string, type: string): ExtensionAndExpressionMetadata; + static getExtensionAndBehaviorStrExpressionMetadata(p: Platform, autoType: string, type: string): ExtensionAndExpressionMetadata; + static getBehaviorMetadata(p: Platform, type: string): BehaviorMetadata; + static getObjectMetadata(p: Platform, type: string): ObjectMetadata; + static getEffectMetadata(p: Platform, type: string): EffectMetadata; + static getActionMetadata(p: Platform, type: string): InstructionMetadata; + static getConditionMetadata(p: Platform, type: string): InstructionMetadata; + static getExpressionMetadata(p: Platform, type: string): ExpressionMetadata; + static getObjectExpressionMetadata(p: Platform, objectType: string, type: string): ExpressionMetadata; + static getBehaviorExpressionMetadata(p: Platform, autoType: string, type: string): ExpressionMetadata; + static getStrExpressionMetadata(p: Platform, type: string): ExpressionMetadata; + static getObjectStrExpressionMetadata(p: Platform, objectType: string, type: string): ExpressionMetadata; + static getBehaviorStrExpressionMetadata(p: Platform, autoType: string, type: string): ExpressionMetadata; + static isBadExpressionMetadata(metadata: ExpressionMetadata): boolean; + static isBadBehaviorMetadata(metadata: BehaviorMetadata): boolean; +} + +export class ExpressionParserDiagnostic extends EmscriptenObject { + isError(): boolean; + getMessage(): string; + getStartPosition(): number; + getEndPosition(): number; +} + +export class VectorExpressionParserDiagnostic extends EmscriptenObject { + size(): number; + at(index: number): ExpressionParserDiagnostic; +} + +export class ExpressionValidator extends EmscriptenObject { + constructor(platform: Platform, projectScopedContainers: ProjectScopedContainers, rootType: string): void; + getAllErrors(): VectorExpressionParserDiagnostic; + getFatalErrors(): VectorExpressionParserDiagnostic; +} + +export class ExpressionCompletionDescription extends EmscriptenObject { + getCompletionKind(): ExpressionCompletionDescription_CompletionKind; + getType(): string; + getVariableType(): Variable_Type; + getPrefix(): string; + getCompletion(): string; + getObjectName(): string; + getBehaviorName(): string; + isExact(): boolean; + isLastParameter(): boolean; + getReplacementStartPosition(): number; + getReplacementEndPosition(): number; + getParameterMetadata(): ParameterMetadata; + hasObjectConfiguration(): boolean; + getObjectConfiguration(): ObjectConfiguration; + toString(): string; +} + +export class VectorExpressionCompletionDescription extends EmscriptenObject { + size(): number; + at(index: number): ExpressionCompletionDescription; +} + +export class ExpressionCompletionFinder extends EmscriptenObject { + static getCompletionDescriptionsFor(platform: Platform, projectScopedContainers: ProjectScopedContainers, rootType: string, node: ExpressionNode, location: number): VectorExpressionCompletionDescription; + getCompletionDescriptions(): VectorExpressionCompletionDescription; +} + +export class ExpressionNodeLocationFinder extends EmscriptenObject { + static getNodeAtPosition(node: ExpressionNode, searchedPosition: number): ExpressionNode; +} + +export class ExpressionTypeFinder extends EmscriptenObject { + static getType(platform: Platform, projectScopedContainers: ProjectScopedContainers, rootType: string, node: ExpressionNode): string; +} + +export class ExpressionNode extends EmscriptenObject { + visit(worker: ExpressionParser2NodeWorker): void; +} + +export class UniquePtrExpressionNode extends EmscriptenObject { + get(): ExpressionNode; +} + +export class EventsFunction extends EmscriptenObject { + constructor(): void; + clone(): EventsFunction; + setDescription(description: string): EventsFunction; + getDescription(): string; + setName(name: string): EventsFunction; + getName(): string; + setFullName(fullName: string): EventsFunction; + getFullName(): string; + setSentence(sentence: string): EventsFunction; + getSentence(): string; + setGroup(group: string): EventsFunction; + getGroup(): string; + setGetterName(group: string): EventsFunction; + getGetterName(): string; + setExpressionType(type: ValueTypeMetadata): EventsFunction; + getExpressionType(): ValueTypeMetadata; + setPrivate(isPrivate: boolean): EventsFunction; + isPrivate(): boolean; + setAsync(isAsync: boolean): EventsFunction; + isAsync(): boolean; + isAction(): boolean; + isExpression(): boolean; + isCondition(): boolean; + setFunctionType(type: EventsFunction_FunctionType): EventsFunction; + getFunctionType(): EventsFunction_FunctionType; + getEvents(): EventsList; + getParameters(): VectorParameterMetadata; + getParametersForEvents(functionsContainer: EventsFunctionsContainer): VectorParameterMetadata; + getObjectGroups(): ObjectGroupsContainer; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class EventsFunctionsContainer extends EmscriptenObject { + insertNewEventsFunction(name: string, pos: number): EventsFunction; + insertEventsFunction(eventsFunction: EventsFunction, pos: number): EventsFunction; + hasEventsFunctionNamed(name: string): boolean; + getEventsFunction(name: string): EventsFunction; + getEventsFunctionAt(pos: number): EventsFunction; + removeEventsFunction(name: string): void; + moveEventsFunction(oldIndex: number, newIndex: number): void; + getEventsFunctionsCount(): number; + getEventsFunctionPosition(eventsFunction: EventsFunction): number; +} + +export class AbstractEventsBasedEntity extends EmscriptenObject { + getEventsFunctions(): EventsFunctionsContainer; + getPropertyDescriptors(): PropertiesContainer; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class EventsBasedBehavior extends EmscriptenObject { + constructor(): void; + setDescription(description: string): EventsBasedBehavior; + getDescription(): string; + setName(name: string): EventsBasedBehavior; + getName(): string; + setFullName(fullName: string): EventsBasedBehavior; + getFullName(): string; + setObjectType(fullName: string): EventsBasedBehavior; + getObjectType(): string; + setPrivate(isPrivate: boolean): EventsBasedBehavior; + isPrivate(): boolean; + getSharedPropertyDescriptors(): PropertiesContainer; + static getPropertyActionName(propertyName: string): string; + static getPropertyConditionName(propertyName: string): string; + static getPropertyExpressionName(propertyName: string): string; + static getPropertyToggleActionName(propertyName: string): string; + static getSharedPropertyActionName(propertyName: string): string; + static getSharedPropertyConditionName(propertyName: string): string; + static getSharedPropertyExpressionName(propertyName: string): string; + static getSharedPropertyToggleActionName(propertyName: string): string; +} + +export class EventsBasedBehaviorsList extends EmscriptenObject { + insertNew(name: string, pos: number): EventsBasedBehavior; + insert(item: EventsBasedBehavior, pos: number): EventsBasedBehavior; + has(name: string): boolean; + get(name: string): EventsBasedBehavior; + getAt(pos: number): EventsBasedBehavior; + remove(name: string): void; + move(oldIndex: number, newIndex: number): void; + getCount(): number; + getPosition(item: EventsBasedBehavior): number; + size(): number; + at(index: number): EventsBasedBehavior; +} + +export class EventsBasedObject extends EmscriptenObject { + constructor(): void; + setDescription(description: string): EventsBasedObject; + getDescription(): string; + setName(name: string): EventsBasedObject; + getName(): string; + setFullName(fullName: string): EventsBasedObject; + getFullName(): string; + setDefaultName(defaultName: string): EventsBasedObject; + getDefaultName(): string; + markAsRenderedIn3D(isRenderedIn3D: boolean): EventsBasedObject; + isRenderedIn3D(): boolean; + static getPropertyActionName(propertyName: string): string; + static getPropertyConditionName(propertyName: string): string; + static getPropertyExpressionName(propertyName: string): string; + static getPropertyToggleActionName(propertyName: string): string; + insertNewObject(project: Project, type: string, name: string, pos: number): gdObject; + insertNewObjectInFolder(project: Project, type: string, name: string, folder: ObjectFolderOrObject, pos: number): gdObject; + insertObject(obj: gdObject, pos: number): gdObject; + hasObjectNamed(name: string): boolean; + getObject(name: string): gdObject; + getObjectAt(pos: number): gdObject; + getObjectPosition(name: string): number; + removeObject(name: string): void; + moveObject(oldIndex: number, newIndex: number): void; + moveObjectFolderOrObjectToAnotherContainerInFolder(objectFolderOrObject: ObjectFolderOrObject, newObjectsContainer: ObjectsContainer, parentObjectFolderOrObject: ObjectFolderOrObject, newPosition: number): void; + getObjectsCount(): number; + getRootFolder(): ObjectFolderOrObject; + getObjectGroups(): ObjectGroupsContainer; +} + +export class EventsBasedObjectsList extends EmscriptenObject { + insertNew(name: string, pos: number): EventsBasedObject; + insert(item: EventsBasedObject, pos: number): EventsBasedObject; + has(name: string): boolean; + get(name: string): EventsBasedObject; + getAt(pos: number): EventsBasedObject; + remove(name: string): void; + move(oldIndex: number, newIndex: number): void; + getCount(): number; + getPosition(item: EventsBasedObject): number; + size(): number; + at(index: number): EventsBasedObject; +} + +export class PropertiesContainer extends EmscriptenObject { + constructor(owner: EventsFunctionsContainer_FunctionOwner): void; + insertNew(name: string, pos: number): NamedPropertyDescriptor; + insert(item: NamedPropertyDescriptor, pos: number): NamedPropertyDescriptor; + has(name: string): boolean; + get(name: string): NamedPropertyDescriptor; + getAt(pos: number): NamedPropertyDescriptor; + remove(name: string): void; + move(oldIndex: number, newIndex: number): void; + getCount(): number; + getPosition(item: NamedPropertyDescriptor): number; + size(): number; + at(index: number): NamedPropertyDescriptor; +} + +export class EventsFunctionsExtension extends EmscriptenObject { + constructor(): void; + setNamespace(namespace_: string): EventsFunctionsExtension; + getNamespace(): string; + setVersion(version: string): EventsFunctionsExtension; + getVersion(): string; + setShortDescription(shortDescription: string): EventsFunctionsExtension; + getShortDescription(): string; + setDescription(description: string): EventsFunctionsExtension; + getDescription(): string; + setName(name: string): EventsFunctionsExtension; + getName(): string; + setFullName(fullName: string): EventsFunctionsExtension; + getFullName(): string; + setCategory(category: string): EventsFunctionsExtension; + getCategory(): string; + getTags(): VectorString; + getAuthorIds(): VectorString; + setAuthor(author: string): EventsFunctionsExtension; + getAuthor(): string; + setPreviewIconUrl(previewIconUrl: string): EventsFunctionsExtension; + getPreviewIconUrl(): string; + setIconUrl(iconUrl: string): EventsFunctionsExtension; + getIconUrl(): string; + setHelpPath(helpPath: string): EventsFunctionsExtension; + getHelpPath(): string; + setOrigin(originName: string, originIdentifier: string): void; + getOriginName(): string; + getOriginIdentifier(): string; + addDependency(): DependencyMetadata; + removeDependencyAt(index: number): void; + getAllDependencies(): VectorDependencyMetadata; + getEventsBasedBehaviors(): EventsBasedBehaviorsList; + getEventsBasedObjects(): EventsBasedObjectsList; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; + static isExtensionLifecycleEventsFunction(eventsFunctionName: string): boolean; + insertNewEventsFunction(name: string, pos: number): EventsFunction; + insertEventsFunction(eventsFunction: EventsFunction, pos: number): EventsFunction; + hasEventsFunctionNamed(name: string): boolean; + getEventsFunction(name: string): EventsFunction; + getEventsFunctionAt(pos: number): EventsFunction; + removeEventsFunction(name: string): void; + moveEventsFunction(oldIndex: number, newIndex: number): void; + getEventsFunctionsCount(): number; + getEventsFunctionPosition(eventsFunction: EventsFunction): number; +} + +export class AbstractFileSystem extends EmscriptenObject { + +} + +export class AbstractFileSystemJS extends EmscriptenObject { + constructor(): void; + mkDir(dir: string): void; + dirExists(dir: string): void; + clearDir(dir: string): void; + getTempDir(): string; + fileNameFrom(dir: string): string; + dirNameFrom(dir: string): string; + isAbsolute(fn: string): boolean; + copyFile(src: string, dest: string): void; + writeToFile(fn: string, content: string): void; + readFile(fn: string): string; + readDir(dir: string): VectorString; + fileExists(fn: string): boolean; +} + +export class ProjectResourcesAdder extends EmscriptenObject { + static getAllUseless(project: Project, resourceType: string): VectorString; + static removeAllUseless(project: Project, resourceType: string): void; +} + +export class ArbitraryEventsWorker extends EmscriptenObject { + launch(events: EventsList): void; +} + +export class ArbitraryObjectsWorker extends EmscriptenObject { + launch(container: ObjectsContainer): void; +} + +export class EventsLeaderboardsLister extends EmscriptenObject { + constructor(project: Project): void; + getLeaderboardIds(): SetString; + launch(events: EventsList): void; +} + +export class EventsLeaderboardsRenamer extends EmscriptenObject { + constructor(project: Project, leaderboardIdMap: MapStringString): void; + launch(events: EventsList): void; +} + +export class EventsParametersLister extends EmscriptenObject { + constructor(project: Project): void; + getParametersAndTypes(): MapStringString; + launch(events: EventsList): void; +} + +export class EventsPositionFinder extends EmscriptenObject { + constructor(): void; + getPositions(): VectorInt; + addEventToSearch(event: BaseEvent): void; + launch(events: EventsList): void; +} + +export class EventsTypesLister extends EmscriptenObject { + constructor(project: Project): void; + getAllEventsTypes(): VectorString; + getAllConditionsTypes(): VectorString; + getAllActionsTypes(): VectorString; + launch(events: EventsList): void; +} + +export class InstructionsTypeRenamer extends EmscriptenObject { + constructor(project: Project, oldType: string, newType: string): void; + launch(events: EventsList): void; +} + +export class EventsContext extends EmscriptenObject { + getReferencedObjectOrGroupNames(): SetString; + getObjectNames(): SetString; + getBehaviorNamesOfObjectOrGroup(objectOrGroupName: string): SetString; +} + +export class EventsContextAnalyzer extends EmscriptenObject { + constructor(platform: Platform): void; + getEventsContext(): EventsContext; + launch(events: EventsList, projectScopedContainers: ProjectScopedContainers): void; +} + +export class ArbitraryResourceWorker extends EmscriptenObject { + +} + +export class ArbitraryResourceWorkerJS extends EmscriptenObject { + constructor(resourcesManager: ResourcesManager): void; + exposeImage(image: string): void; + exposeShader(shader: string): void; + exposeFile(file: string): void; +} + +export class ResourcesMergingHelper extends EmscriptenObject { + constructor(resourcesManager: ResourcesManager, fs: AbstractFileSystem): void; + setBaseDirectory(basePath: string): void; + getAllResourcesOldAndNewFilename(): MapStringString; +} + +export class ResourcesRenamer extends EmscriptenObject { + constructor(resourcesManager: ResourcesManager, oldToNewNames: MapStringString): void; +} + +export class ProjectResourcesCopier extends EmscriptenObject { + static copyAllResourcesTo(project: Project, fs: AbstractFileSystem, destinationDirectory: string, updateOriginalProject: boolean, preserveAbsoluteFilenames: boolean, preserveDirectoryStructure: boolean): boolean; +} + +export class ObjectsUsingResourceCollector extends EmscriptenObject { + constructor(resourcesManager: ResourcesManager, resourceName: string): void; + getObjectNames(): VectorString; + launch(container: ObjectsContainer): void; +} + +export class ResourcesInUseHelper extends EmscriptenObject { + constructor(resourcesManager: ResourcesManager): void; + getAllImages(): SetString; + getAllAudios(): SetString; + getAllFonts(): SetString; + getAllBitmapFonts(): SetString; + getAll(resourceType: string): SetString; +} + +export class EditorSettings extends EmscriptenObject { + constructor(): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(element: SerializerElement): void; +} + +export class Point extends EmscriptenObject { + constructor(name: string): void; + setName(name: string): void; + getName(): string; + setXY(x: number, y: number): void; + getX(): number; + setX(x: number): void; + getY(): number; + setY(y: number): void; +} + +export class VectorPoint extends EmscriptenObject { + constructor(): void; + push_back(pt: Point): void; + size(): number; + at(index: number): Point; + set(index: number, pt: Point): void; + clear(): void; +} + +export class Sprite extends EmscriptenObject { + constructor(): void; + setImageName(name: string): void; + getImageName(): string; + getOrigin(): Point; + getCenter(): Point; + isDefaultCenterPoint(): boolean; + setDefaultCenterPoint(defaultPoint: boolean): void; + getAllNonDefaultPoints(): VectorPoint; + addPoint(point: Point): void; + delPoint(name: string): void; + getPoint(name: string): Point; + hasPoint(name: string): boolean; + isFullImageCollisionMask(): boolean; + setFullImageCollisionMask(enabled: boolean): void; + getCustomCollisionMask(): VectorPolygon2d; + setCustomCollisionMask(collisionMask: VectorPolygon2d): void; +} + +export class Direction extends EmscriptenObject { + constructor(): void; + addSprite(sprite: Sprite): void; + getSprite(index: number): Sprite; + getSpritesCount(): number; + hasNoSprites(): boolean; + removeSprite(index: number): void; + removeAllSprites(): void; + isLooping(): boolean; + setLoop(enable: boolean): void; + getTimeBetweenFrames(): number; + getSpriteNames(): VectorString; + setTimeBetweenFrames(time: number): void; + swapSprites(first: number, second: number): void; + moveSprite(oldIndex: number, newIndex: number): void; + setMetadata(metadata: string): void; + getMetadata(): string; +} + +export class Animation extends EmscriptenObject { + constructor(): void; + setName(name: string): void; + getName(): string; + setDirectionsCount(count: number): void; + getDirectionsCount(): number; + getDirection(index: number): Direction; + setDirection(direction: Direction, index: number): void; + hasNoDirections(): boolean; + useMultipleDirections(): boolean; + setUseMultipleDirections(enable: boolean): void; +} + +export class SpriteObject extends EmscriptenObject { + constructor(): void; + addAnimation(animation: Animation): void; + getAnimation(index: number): Animation; + getAnimationsCount(): number; + removeAnimation(index: number): void; + removeAllAnimations(): void; + hasNoAnimations(): boolean; + swapAnimations(first: number, second: number): void; + moveAnimation(oldIndex: number, newIndex: number): void; + setUpdateIfNotVisible(updateIfNotVisible: boolean): void; + getUpdateIfNotVisible(): boolean; + adaptCollisionMaskAutomatically(): boolean; + setAdaptCollisionMaskAutomatically(adaptCollisionMaskAutomatically: boolean): void; +} + +export class TextObject extends EmscriptenObject { + constructor(): void; + setString(string: string): void; + getString(): string; + setCharacterSize(size: number): void; + getCharacterSize(): number; + setFontName(string: string): void; + getFontName(): string; + isBold(): boolean; + setBold(enable: boolean): void; + isItalic(): boolean; + setItalic(enable: boolean): void; + isUnderlined(): boolean; + setUnderlined(enable: boolean): void; + setColor(r: number, g: number, b: number): void; + getColorR(): number; + getColorG(): number; + getColorB(): number; + setTextAlignment(textAlignment: string): void; + getTextAlignment(): string; +} + +export class TiledSpriteObject extends EmscriptenObject { + constructor(): void; + setTexture(texture: string): void; + getTexture(): string; + setWidth(width: number): void; + getWidth(): number; + setHeight(height: number): void; + getHeight(): number; +} + +export class PanelSpriteObject extends EmscriptenObject { + constructor(): void; + getLeftMargin(): number; + setLeftMargin(newMargin: number): void; + getTopMargin(): number; + setTopMargin(newMargin: number): void; + getRightMargin(): number; + setRightMargin(newMargin: number): void; + getBottomMargin(): number; + setBottomMargin(newMargin: number): void; + isTiled(): boolean; + setTiled(enable: boolean): void; + setTexture(texture: string): void; + getTexture(): string; + setWidth(width: number): void; + getWidth(): number; + setHeight(height: number): void; + getHeight(): number; +} + +export class ShapePainterObject extends EmscriptenObject { + constructor(): void; + setCoordinatesAbsolute(): void; + setCoordinatesRelative(): void; + areCoordinatesAbsolute(): boolean; + setClearBetweenFrames(value: boolean): void; + isClearedBetweenFrames(): boolean; + setOutlineSize(size: number): void; + getOutlineSize(): number; + setOutlineOpacity(val: number): void; + getOutlineOpacity(): number; + setOutlineColor(r: number, g: number, b: number): void; + getOutlineColorR(): number; + getOutlineColorG(): number; + getOutlineColorB(): number; + setFillOpacity(val: number): void; + getFillOpacity(): number; + setFillColor(r: number, g: number, b: number): void; + getFillColorR(): number; + getFillColorG(): number; + getFillColorB(): number; + getAntialiasing(): string; + setAntialiasing(value: string): void; +} + +export class TextEntryObject extends EmscriptenObject { + constructor(): void; +} + +export class ParticleEmitterObject extends EmscriptenObject { + constructor(): void; + setRendererType(type: ParticleEmitterObject_RendererType): void; + getRendererType(): ParticleEmitterObject_RendererType; + setParticleTexture(resourceName: string): void; + getParticleTexture(): string; + setRendererParam1(newValue: number): void; + getRendererParam1(): number; + setRendererParam2(newValue: number): void; + getRendererParam2(): number; + isRenderingAdditive(): boolean; + setRenderingAdditive(): void; + setRenderingAlpha(): void; + setMaxParticleNb(newValue: number): void; + getMaxParticleNb(): number; + setTank(newValue: number): void; + getTank(): number; + setFlow(newValue: number): void; + getFlow(): number; + setDestroyWhenNoParticles(enable: boolean): void; + getDestroyWhenNoParticles(): boolean; + setEmitterForceMin(newValue: number): void; + getEmitterForceMin(): number; + setEmitterForceMax(newValue: number): void; + getEmitterForceMax(): number; + setConeSprayAngle(newValue: number): void; + getConeSprayAngle(): number; + setZoneRadius(newValue: number): void; + getZoneRadius(): number; + setParticleGravityX(newValue: number): void; + getParticleGravityX(): number; + setParticleGravityY(newValue: number): void; + getParticleGravityY(): number; + setParticleGravityAngle(newValue: number): void; + getParticleGravityAngle(): number; + setParticleGravityLength(newValue: number): void; + getParticleGravityLength(): number; + setParticleLifeTimeMin(newValue: number): void; + getParticleLifeTimeMin(): number; + setParticleLifeTimeMax(newValue: number): void; + getParticleLifeTimeMax(): number; + setParticleRed1(newValue: number): void; + getParticleRed1(): number; + setParticleRed2(newValue: number): void; + getParticleRed2(): number; + setParticleGreen1(newValue: number): void; + getParticleGreen1(): number; + setParticleGreen2(newValue: number): void; + getParticleGreen2(): number; + setParticleBlue1(newValue: number): void; + getParticleBlue1(): number; + setParticleBlue2(newValue: number): void; + getParticleBlue2(): number; + setParticleAlpha1(newValue: number): void; + getParticleAlpha1(): number; + setParticleAlpha2(newValue: number): void; + getParticleAlpha2(): number; + setParticleSize1(newValue: number): void; + getParticleSize1(): number; + setParticleSize2(newValue: number): void; + getParticleSize2(): number; + setParticleAngle1(newValue: number): void; + getParticleAngle1(): number; + setParticleAngle2(newValue: number): void; + getParticleAngle2(): number; + setParticleAlphaRandomness1(newValue: number): void; + getParticleAlphaRandomness1(): number; + setParticleAlphaRandomness2(newValue: number): void; + getParticleAlphaRandomness2(): number; + setParticleSizeRandomness1(newValue: number): void; + getParticleSizeRandomness1(): number; + setParticleSizeRandomness2(newValue: number): void; + getParticleSizeRandomness2(): number; + setParticleAngleRandomness1(newValue: number): void; + getParticleAngleRandomness1(): number; + setParticleAngleRandomness2(newValue: number): void; + getParticleAngleRandomness2(): number; + setJumpForwardInTimeOnCreation(newValue: number): void; + getJumpForwardInTimeOnCreation(): number; +} + +export class LayoutCodeGenerator extends EmscriptenObject { + constructor(project: Project): void; + generateLayoutCompleteCode(layout: Layout, includes: SetString, compilationForRuntime: boolean): string; +} + +export class BehaviorCodeGenerator extends EmscriptenObject { + constructor(project: Project): void; + generateRuntimeBehaviorCompleteCode(extensionName: string, eventsBasedBehavior: EventsBasedBehavior, codeNamespace: string, behaviorMethodMangledNames: MapStringString, includes: SetString, compilationForRuntime: boolean): string; + static getBehaviorPropertyGetterName(propertyName: string): string; + static getBehaviorPropertySetterName(propertyName: string): string; + static getBehaviorPropertyToggleFunctionName(propertyName: string): string; + static getBehaviorSharedPropertyGetterName(propertyName: string): string; + static getBehaviorSharedPropertySetterName(propertyName: string): string; + static getBehaviorSharedPropertyToggleFunctionName(propertyName: string): string; +} + +export class ObjectCodeGenerator extends EmscriptenObject { + constructor(project: Project): void; + generateRuntimeObjectCompleteCode(extensionName: string, eventsBasedObject: EventsBasedObject, codeNamespace: string, objectMethodMangledNames: MapStringString, includes: SetString, compilationForRuntime: boolean): string; + static getObjectPropertyGetterName(propertyName: string): string; + static getObjectPropertySetterName(propertyName: string): string; + static getObjectPropertyToggleFunctionName(propertyName: string): string; +} + +export class EventsFunctionsExtensionCodeGenerator extends EmscriptenObject { + constructor(project: Project): void; + generateFreeEventsFunctionCompleteCode(extension: EventsFunctionsExtension, eventsFunction: EventsFunction, codeNamespac: string, includes: SetString, compilationForRuntime: boolean): string; +} + +export class PreviewExportOptions extends EmscriptenObject { + constructor(project: Project, outputPath: string): void; + useWebsocketDebuggerClientWithServerAddress(address: string, port: string): PreviewExportOptions; + useWindowMessageDebuggerClient(): PreviewExportOptions; + setLayoutName(layoutName: string): PreviewExportOptions; + setFallbackAuthor(id: string, username: string): PreviewExportOptions; + setExternalLayoutName(externalLayoutName: string): PreviewExportOptions; + setIncludeFileHash(includeFile: string, hash: number): PreviewExportOptions; + setProjectDataOnlyExport(enable: boolean): PreviewExportOptions; + setFullLoadingScreen(enable: boolean): PreviewExportOptions; + setIsDevelopmentEnvironment(enable: boolean): PreviewExportOptions; + setNonRuntimeScriptsCacheBurst(value: number): PreviewExportOptions; + setElectronRemoteRequirePath(electronRemoteRequirePath: string): PreviewExportOptions; + setGDevelopResourceToken(gdevelopResourceToken: string): PreviewExportOptions; + setAllowAuthenticationUsingIframeForPreview(enable: boolean): PreviewExportOptions; +} + +export class ExportOptions extends EmscriptenObject { + constructor(project: Project, outputPath: string): void; + setFallbackAuthor(id: string, username: string): ExportOptions; + setTarget(target: string): ExportOptions; +} + +export class Exporter extends EmscriptenObject { + constructor(fs: AbstractFileSystem, gdjsRoot: string): void; + setCodeOutputDirectory(path: string): void; + exportProjectForPixiPreview(options: PreviewExportOptions): boolean; + exportWholePixiProject(options: ExportOptions): boolean; + getLastError(): string; +} + +export class JsCodeEvent extends EmscriptenObject { + constructor(): void; + getInlineCode(): string; + setInlineCode(type: string): void; + getParameterObjects(): string; + setParameterObjects(type: string): void; + isEventsSheetExpanded(): boolean; + setEventsSheetExpanded(enable: boolean): void; + clone(): JsCodeEvent; + getType(): string; + setType(type: string): void; + isExecutable(): boolean; + canHaveSubEvents(): boolean; + hasSubEvents(): boolean; + getSubEvents(): EventsList; + isDisabled(): boolean; + setDisabled(disable: boolean): void; + isFolded(): boolean; + setFolded(folded: boolean): void; + serializeTo(element: SerializerElement): void; + unserializeFrom(project: Project, element: SerializerElement): void; +} + +export class MetadataDeclarationHelper extends EmscriptenObject { + constructor(): void; + static declareExtension(extension: PlatformExtension, eventsFunctionsExtension: EventsFunctionsExtension): void; + generateFreeFunctionMetadata(project: Project, extension: PlatformExtension, eventsFunctionsExtension: EventsFunctionsExtension, eventsFunction: EventsFunction): AbstractFunctionMetadata; + static generateBehaviorMetadata(project: Project, extension: PlatformExtension, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedBehavior: EventsBasedBehavior, behaviorMethodMangledNames: MapStringString): BehaviorMetadata; + static generateObjectMetadata(project: Project, extension: PlatformExtension, eventsFunctionsExtension: EventsFunctionsExtension, eventsBasedObject: EventsBasedObject, objectMethodMangledNames: MapStringString): ObjectMetadata; + static getExtensionCodeNamespacePrefix(eventsFunctionsExtension: EventsFunctionsExtension): string; + static getFreeFunctionCodeName(eventsFunctionsExtension: EventsFunctionsExtension, eventsFunction: EventsFunction): string; + static getFreeFunctionCodeNamespace(eventsFunction: EventsFunction, codeNamespacePrefix: string): string; + static getBehaviorFunctionCodeNamespace(eventsBasedBehavior: EventsBasedBehavior, codeNamespacePrefix: string): string; + static getObjectFunctionCodeNamespace(eventsBasedObject: EventsBasedObject, codeNamespacePrefix: string): string; + static isBehaviorLifecycleEventsFunction(functionName: string): boolean; + static isObjectLifecycleEventsFunction(functionName: string): boolean; + static isExtensionLifecycleEventsFunction(functionName: string): boolean; + static shiftSentenceParamIndexes(sentence: string, offset: number): string; +} + +export as namespace gd;