{"_id":"@areumtecnologia/wasockets","_rev":"12-7901b080a51c5d88ee0410e5eb7270c3","name":"@areumtecnologia/wasockets","dist-tags":{"latest":"2.0.0","prerelease":"2.0.0-alpha.1"},"versions":{"1.0.0":{"name":"@areumtecnologia/wasockets","version":"1.0.0","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.0.0","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"692973be235fa92bf5746b7bb268b9b3200a29f1","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.0.0.tgz","fileCount":159,"integrity":"sha512-9+7nP/C+KihYgyuckMWy/n2zfJ9rnDkf4qLVDkXFhHzVjo14e9SalzxV+TFvi1+a1lExaf1JaMMWvG9nAe6OvQ==","signatures":[{"sig":"MEUCIQCxLfHllQeZ0bxUwYXknyUXbqIZM4xLae7Nu7Z4GB4waQIgTwl9JtQj052QMtYc6/nL6+0HnzK6raK41GXVf3kWkIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35008759},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"be96b2ae8a263ccd936a1fd51f088c73a62f91e9","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^9.6","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","audio-decode":"^2.2.2","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"1.5.3","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.27.9","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^16.0.0","typedoc-plugin-markdown":"4.4.2","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^2.2.2"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.0.0_1770307196188_0.8826702426220794","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@areumtecnologia/wasockets","version":"1.0.1","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.0.1","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"9e0f6cd621b81a2159becd5a8c4a9a5919c96f94","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.0.1.tgz","fileCount":159,"integrity":"sha512-HF8FVLQRxjQvDYvVNZOPLFAOKS0wDsW9D8y0CeJ52sAWzZbZqPaDJrJc+xF9DuMLIYEGpL7enhavRR/H9Mzd/g==","signatures":[{"sig":"MEUCIQC3ZY3ISc1ABsZdM59vid8qxm/nU9MOatb+C5I49tISoQIgeHgUb4Etsbjm/MWgtzwVPf77bFqEJOZAlxmK4KCxvu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35010839},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"d054712d10e18097b4e3368ef7d3075c90e3ff50","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^9.6","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","audio-decode":"^2.2.2","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"1.5.3","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.27.9","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^16.0.0","typedoc-plugin-markdown":"4.4.2","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^2.2.2"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.0.1_1770331959527_0.8577071282082069","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@areumtecnologia/wasockets","version":"1.0.2","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.0.2","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"7c5a47c739ded991b3f5e30cb666fc4e3498829a","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.0.2.tgz","fileCount":159,"integrity":"sha512-Idx8ip4M9z4RCh1n+XFbDEJmig/DKBd/+BXxFfeHWlyaMhFz/F0x1+h6cm/0FNjYW9SMZg5cfpmmjfdiQvQLig==","signatures":[{"sig":"MEYCIQCui2Zv5cYeaqo8x0ipT6gLi+D/z3FsYNRhxZrjEV2gOQIhAI0qYfyTZ4oPmAtEazFR+YVtoo4m15s9QfQyhr4tXPOB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35010824},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"d054712d10e18097b4e3368ef7d3075c90e3ff50","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^9.6","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","audio-decode":"^2.2.2","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"1.5.3","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.27.9","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^16.0.0","typedoc-plugin-markdown":"4.4.2","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^2.2.2"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.0.2_1772397612227_0.12160519993003471","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@areumtecnologia/wasockets","version":"1.0.3","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.0.3","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"d6113d94a69cefebfba614c3d9c527681dce0e0a","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.0.3.tgz","fileCount":159,"integrity":"sha512-GJEf22WYhzSkVqvFPja+nJQJnT4FiK/yhSmTlWfPoiNDQa43Jyhp1hfDR2mHQMKPadgsohrTzbdwIhckR/YcEw==","signatures":[{"sig":"MEUCIAGWAMfnop3/lAv6TnWtxAX7mUu2ILjnU8CxHuo2kwJAAiEAkMRbVUFOVDdjD0inSjIWclSdJubduKvHoqQ6J4MHqeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35010946},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"d054712d10e18097b4e3368ef7d3075c90e3ff50","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^9.6","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^9.1.3","protobufjs":"^7.2.4","async-mutex":"^0.5.0","audio-decode":"^2.2.2","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"1.5.3","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.27.9","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^15.10.3","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^16.0.0","typedoc-plugin-markdown":"4.4.2","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^2.2.2"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.0.3_1772401656410_0.33148778010686475","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@areumtecnologia/wasockets","version":"1.1.1","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.1.1","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"13502332e0831b711e644922976be0c2d2739612","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.1.1.tgz","fileCount":158,"integrity":"sha512-B7/2a09KU1oPz7+wszo4P51iCuw2Xcu6BY/Z1ONTbC8FfDb78eiGs/DoYIOpScYv1Za3mITPdoXXfrDcYduQrA==","signatures":[{"sig":"MEQCIHstjY0La0xOtei7b6v2BVaS2NmIxyPcJNz/4/MkWJVOAiBo9RuDwWYnjIs9F9OuKk/SRjJo5zjfVorNQhPUXSIxOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34959942},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"1499d93394dab76295a308408bafb76111c060ef","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.1.1_1782328506828_0.031958930919869566","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@areumtecnologia/wasockets","version":"1.1.2","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.1.2","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"a20264fc547412995e382e5fe67262f94003571e","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.1.2.tgz","fileCount":159,"integrity":"sha512-HsfUr1j/0zjqVNLr82UuSB8kEKXHuEUxHVkAt0dKJ/t6oioWCC5wZZMcVEm0YI1xQRzfEJbsOPa3lI2x6YoO3Q==","signatures":[{"sig":"MEUCIQDJctqG82b62TBErHq9mnKlUq7ezVepO5emi/Vn07IkuQIgfY1Eo5OBuNnpfSaclu8TjKpDpV4v6QwdlfTeQL6HgZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34960258},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"17385234383b299919869c20d67ce6ff0b8d794d","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.1.2_1782333425205_0.7485476100673871","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@areumtecnologia/wasockets","version":"1.1.3","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.1.3","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"0f965604e494098ae405a79f7ca6812bb71236a5","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.1.3.tgz","fileCount":159,"integrity":"sha512-wH4DnsiC51y7Y90ATD1+/YeyiJzUMk4r3LfGA8NaHJVUa9m5B6GjJdx+VykZSlaCp5ra+rpbd2URGywW6eE86A==","signatures":[{"sig":"MEUCIQCF2pKHBwXLcBlp8G98o/r336xm8gebNOOovqVkES3c4gIgJM2npHOTeL9T68dJvY1thPFWvwRud+oFsmP+EPGkUAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34960510},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"c5965670e7b707aa7b5f58b9d69b97706d9e9c91","scripts":{"lint":"eslint src --ext .js,.ts","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"overrides":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"resolutions":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"^9.0.0","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.1.3_1782334077050_0.5121361473528818","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@areumtecnologia/wasockets","version":"1.1.4","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.1.4","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"a50422617ceb26d3eb7431e5a8a5d3b91231580a","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.1.4.tgz","fileCount":159,"integrity":"sha512-psWXzPp+i//arL0kDW/Yho7SEcRsIAV3yCJl5xw+RGrp8nRtvwH+37WsRWPnhcJhy13vuwfamT2HgLJIXV2mKQ==","signatures":[{"sig":"MEUCIQCsytvSrh8KExMOWA+R9Hhs/42NKbZaKP7J/Px2YvuxhAIgI3uwAElqfkvZcalC5lykVl9dJQmf6CLTQTScEfwo/Jk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34966956},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"c5965670e7b707aa7b5f58b9d69b97706d9e9c91","scripts":{"lint":"eslint lib --ext .js","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"overrides":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"resolutions":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"6.6.2","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.1.4_1783380927114_0.4730308874057596","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@areumtecnologia/wasockets","version":"1.1.5","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.1.5","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"70ea095e4bc8f464e7e7ec981a0d92e1d4335276","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.1.5.tgz","fileCount":159,"integrity":"sha512-p+ZajFwtn9yCFa7Ly1BCUJdVHe0KMiTUgpcK8S5T6DnCnH+Ofar/R6ZHxhH1DfH81ENYMVMLCIMe5avE4c31bw==","signatures":[{"sig":"MEQCIFJ+OAXmRwuxZkbgpEVJ2htBivkPnkhdTZj7AJKuaOp0AiACNy8RVBEvFes+NluCCASHhvBbm1b16GGKtvttdbn9hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD/goFPa8Uux0/ttlJ4lk6JbFwYyycnIMsAGshpZvlXRwIhAMHPsGA7EhlzWtFTA5gP2Z57MRS7+3mNBsZJHlEbzwxe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34967279},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"d6001e6a8f13753c76771b4545a79fdb9efc488c","scripts":{"lint":"eslint lib --ext .js","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"overrides":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"resolutions":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"6.6.2","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.1.5_1790624764875_0.7969757563564819","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@areumtecnologia/wasockets","version":"1.1.6","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@1.1.6","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"5749e53ed2899d05c1e25bef3123568e0847c897","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-1.1.6.tgz","fileCount":159,"integrity":"sha512-Kb2uTygRxjcOhPyMEc2HopA4BcJNfUUhH22fxfwUZlU2kSPTk53R/G2wm4ZrznAdnQhDT7Otq8BkVYZFDXre4Q==","signatures":[{"sig":"MEUCIQDUWQ2YESR7XVMAKuKHHIp+n05DVRGlMh6GZFuBqB01DAIgSsZg3y3WQ9U97lSUo/pksFtUM8c7eqieVbEAh/V7C04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCr6MBFHS41R7JaThoaBdbLUug3t8AgmAxBsdzB77mbzgIhAI3pyllDq63xLTr/3Jme8/cPmR1qnC8gfYU2saFdhkhU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34980801},"main":"lib/index.js","engines":{"node":">=20.0.0"},"gitHead":"249b824f8e1954e1ae57a75fe60da745de2673e4","scripts":{"lint":"eslint lib --ext .js","test":"jest","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"overrides":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"resolutions":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"6.6.2","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","unfurl.js":"^6.4.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_1.1.6_1790627790167_0.7610986120870593","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-alpha.1":{"name":"@areumtecnologia/wasockets","version":"2.0.0-alpha.1","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"author":{"name":"areumtecnologia"},"license":"MIT","_id":"@areumtecnologia/wasockets@2.0.0-alpha.1","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"homepage":"https://github.com/areumtecnologia/WaSockets","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"a580723ac96cccf8e5febeae50bbca09dc520af0","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-2.0.0-alpha.1.tgz","fileCount":169,"integrity":"sha512-sN/J1eT2r0rLScdzl9PUuhmBgxrRonNAifemG5NlIBxGYJj4co2Geovh9NUwCx0sonH8cFdMM7y86+z+LKR/2A==","signatures":[{"sig":"MEQCICPc7wHXNFgnBIMN4PXecVvsNgcXwtdML8YCC2eVTyuMAiAG0gx3KWPpHclyq5mDwXS36fWFeXh8Qc86tlS+ZHy/Xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGET10gRKXMSgw92qtnG+V4ehVQ+b7LQ8WkNQdttNN5vAiAZjG6JTlPawFQ8GI848zHqOEdbxPYh+jzijQJTFMF+mA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35075370},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js","require":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"1f2ae5d125d86de632227d1ad4125a1bbe43c914","scripts":{"lint":"eslint lib --ext .js","test":"jest --passWithNoTests","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"overrides":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"resolutions":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"6.6.2","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","readmeFilename":"README.md","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"sharp":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/wasockets_2.0.0-alpha.1_1790707971032_0.25493645006257926","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"_id":"@areumtecnologia/wasockets@2.0.0","bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"dist":{"shasum":"b57f2b66532fec34d02961ef5517a0ac7dce3305","tarball":"https://registry.npmjs.org/@areumtecnologia/wasockets/-/wasockets-2.0.0.tgz","fileCount":169,"integrity":"sha512-E4Q4K0ZeAdGptpwpQ5rr79xDJ7cgT+Y2IxT/0jz72FilCo19tgHlBQmOJrcjFr0LF4h7f9Qz4OW0eGiFjZMkdQ==","signatures":[{"sig":"MEYCIQCXwTliq6ktOI72zOwfT3LOoHtAic6zExx4euAqkV6h+wIhAKpcqsvCS/eSW/RHP3NvdYD5g4gSNq6FK47jaOm6gFXZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCM8WlTTRfVZSVIdzGe3gyTFWAxoXoBPBVukrSbmgjWjQIgcw5IazJ6QzFuHC98QmWfmh8f8tTBAfiZT0XbB579sLE="}],"unpackedSize":35075362},"main":"lib/index.js","name":"@areumtecnologia/wasockets","types":"lib/index.d.ts","author":{"name":"areumtecnologia"},"engines":{"node":">=20.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js","require":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"1f2ae5d125d86de632227d1ad4125a1bbe43c914","license":"MIT","scripts":{"lint":"eslint lib --ext .js","test":"jest --passWithNoTests","release":"release-it","lint:fix":"yarn lint --fix","preinstall":"node ./engine-requirements.js","changelog:last":"conventional-changelog -p angular -r 2","changelog:update":"conventional-changelog -p angular -i CHANGELOG.md -s -r 0","changelog:preview":"conventional-changelog -p angular -u"},"version":"2.0.0","_npmUser":{"name":"areumtecnologia","email":"dev@areum.com.br"},"homepage":"https://github.com/areumtecnologia/WaSockets","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"overrides":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"_npmVersion":"11.6.0","description":"WhatsApp API Modification By areumtecnologia","directories":{"lib":"lib"},"maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"resolutions":{"ip":"^2.0.1","undici":"^6.21.1","js-yaml":"^4.1.1","protobufjs":"^8.6.5"},"_nodeVersion":"25.2.1","dependencies":{"ws":"^8.13.0","pino":"^10.3.1","fflate":"^0.8.2","lodash":"^4.17.21","p-queue":"6.6.2","lru-cache":"^11.1.0","unfurl.js":"^6.4.0","@hapi/boom":"^10.0.1","protobufjs":"^8.6.5","async-mutex":"^0.5.0","audio-decode":"^3.11.0","cache-manager":"^5.7.6","music-metadata":"^7.12.3","qrcode-terminal":"^0.12.0","@adiwajshing/keyed-db":"^0.2.4","@cacheable/node-cache":"3.0.1","@itsukichan/libsignal-node":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.19","devDependencies":{"jest":"^30.1.1","jimp":"^0.22.12","json":"^11.0.0","open":"^8.4.2","eslint":"^8.0.0","ts-jest":"^29.4.1","ts-node":"^10.8.1","typedoc":"^0.28.19","@types/ws":"^8.0.0","release-it":"^20.2.0","typescript":"^6.0.3","@types/jest":"^30.0.0","@types/node":"^26.0.0","typedoc-plugin-markdown":"4.12.0","@itsukichan/eslint-config":"^1.0.0","conventional-changelog-cli":"^5.0.0"},"peerDependencies":{"jimp":"^0.22.12","sharp":"*"},"peerDependenciesMeta":{"jimp":{"optional":true},"sharp":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wasockets_2.0.0_1790708909901_0.7238243139017551"}}},"time":{"created":"2026-02-05T15:59:56.107Z","modified":"2026-09-29T19:08:30.307Z","1.0.0":"2026-02-05T15:59:56.466Z","1.0.1":"2026-02-05T22:52:39.836Z","1.0.2":"2026-03-01T20:40:12.524Z","1.0.3":"2026-03-01T21:47:36.705Z","1.1.1":"2026-06-24T19:15:07.061Z","1.1.2":"2026-06-24T20:37:05.468Z","1.1.3":"2026-06-24T20:47:57.303Z","1.1.4":"2026-07-06T23:35:27.375Z","1.1.5":"2026-09-28T19:46:05.048Z","1.1.6":"2026-09-28T20:36:30.325Z","2.0.0-alpha.1":"2026-09-29T18:52:51.215Z","2.0.0":"2026-09-29T19:08:30.095Z"},"bugs":{"url":"https://github.com/areumtecnologia/WaSockets/issues"},"author":{"name":"areumtecnologia"},"license":"MIT","homepage":"https://github.com/areumtecnologia/WaSockets","keywords":["whatsapp","js-whatsapp","whatsapp-api","whatsapp-web","whatsapp-chat","whatsapp-group","automation","multi-device"],"repository":{"url":"git+ssh://git@github.com/areumtecnologia/WaSockets.git","type":"git"},"description":"WhatsApp API Modification By areumtecnologia","maintainers":[{"name":"areumtecnologia","email":"dev@areum.com.br"}],"readme":"# WaSockets - API do WhatsApp Web em TypeScript/JavaScript\n\n<div align=\"center\">\n  <p><strong>Uma modificação otimizada e de alta performance da API do WhatsApp (baseada no Baileys), mantida e aprimorada pela Áreum Tecnologia.</strong></p>\n</div>\n\n---\n\n### ⚠️ Nota Importante e Licença\n\nEsta biblioteca é uma modificação independente e não é de forma alguma afiliada, endossada ou associada ao WhatsApp ou à Meta Inc. O uso desta ferramenta é de sua inteira responsabilidade. Desencorajamos fortemente o uso para spam, envio em massa não solicitado ou qualquer prática que viole os Termos de Serviço do WhatsApp.\n\nO projeto é licenciado sob a licença **MIT** e incorpora componentes sob a licença **GPL-3.0** (devido ao uso de criptografia do `libsignal`).\n\n---\n\n## 🚀 Diferenciais e Correções da Áreum Tecnologia\n\nO **WaSockets** foi criado para resolver problemas crônicos de estabilidade e adicionar recursos ausentes na versão original do Baileys. Abaixo estão as principais melhorias implementadas:\n\n| Categoria | Recurso / Correção | Descrição |\n| :--- | :--- | :--- |\n| **Criptografia & Sessão** | Correção de descriptografia em grupos (`pn/lid mismatch`) | Corrige a falha crítica que impedia a descriptografia correta de mensagens quando a identidade de um participante alternava entre o número de telefone (PN) e o ID interno (LID). |\n| **Criptografia & Sessão** | Descriptografia robusta de Enquetes/Eventos | Resolve o erro AES-GCM `Unsupported state or unable to authenticate data` garantindo que o autor original seja extraído do objeto de mensagem persistido. |\n| **Estabilidade** | Versão Web Estabilizada | Integração com o protocolo Web `v2.3000.1038819500` e restauração da função `fetchLatestWaWebVersion` para buscar sempre a versão de compatibilidade mais recente e funcional do WhatsApp. |\n| **Eventos** | Buffer de Eventos Corrigido | Adicionada a propriedade `shouldIncrementChatUnread` no buffer de eventos para garantir um controle preciso e confiável de mensagens não lidas no chat. |\n| **Segurança** | Sessões de Autenticação Seguras | Remoção de adaptadores de autenticação inseguros/obsoletos (arquivo único ou MongoDB que causavam corrupção de estado), unificando e otimizando o uso do `useMultiFileAuthState`. |\n| **Comunidades** | Suporte a Comunidades | Implementação nativa para escutar e processar comentários em canais de comunidades (`handle comment message`) e reações em comunidades. |\n| **Eventos do WhatsApp** | Manipulação de Eventos e Respostas | Suporte a reações de edição de eventos (`handle event edit`) e decodificação das respostas de presença em eventos (`getAggregateResponsesInEventMessage`). |\n| **Mídia** | Correções de Miniaturas e Status | Correção de falhas na extração de miniaturas (`extractImageThumb`), na geração de previews de links, no envio de mídias em álbuns/vídeos e na publicação de mídias em status de grupos. |\n| **Newsletters (Canais)** | Consulta de Canais Inscritos | Adicionado o método exclusivo `newsletterSubscribed` que lista todos os canais de transmissão (Newsletters) aos quais o usuário está inscrito. |\n| **Mensagens de Negócios** | Botões Interativos & PIX | Suporte avançado para layouts de botões interativos, botões Cards (com imagem/vídeo), suporte para botões PIX estáticos e fluxos completos de checkout e pagamento (`review_and_pay`). |\n| **Recursos Web (v1.1.6)** | Fixação com Duração | Fixação de mensagens com durações configuráveis (24h, 7d, 30d) usando `pinInChatMessage` e `messageAddOnDurationInSecs`. |\n| **Recursos Web (v1.1.6)** | Reação a Status | Método nativo `reactToStatus` para curtir e reagir diretamente a publicações de Status. |\n| **Recursos Web (v1.1.6)** | Eventos & RSVP | Criação, cancelamento (`cancelEvent`) e confirmação de presença (`sendEventResponse`) em eventos de grupo. |\n| **Recursos Web (v1.1.6)** | Favoritos & Notas de Contato | Sincronização via App State de chats favoritos (`updateFavorite`) e anotações internas de contatos (`updateChatNote`). |\n| **Recursos Web (v1.1.6)** | Chamadas Web (Web Calling) | Sinalização completa de chamadas no navegador (`offerCall`, `acceptCall`, `terminateCall`, `rejectCall`). |\n| **Recursos Web (v1.1.6)** | Resolução Reversa de LID | Consulta reversa USync para obter o número de telefone a partir de um identificador `@lid` (`getPnUser`). |\n| **Transição LID (Pilar 2)** | Store Unificado (LID & PN) | `store.getContact(jid)` e `store.getChat(jid)` com indexação cruzada e resolução automática de apelidos LID/PN. |\n| **Transição LID (Pilar 2)** | Roteamento & Resolução JID | Métodos `sock.toPn()`, `sock.toLid()`, `sock.resolveJid()` e auto-aprendizado de chaves no cache do Signal. |\n| **Multimídia & Canais (Pilar 3)** | Álbum Nativo & Waveforms | Envio de álbuns (`sendAlbumMessage`), ordenação indexada e suporte a waveforms PTT customizadas. |\n| **Multimídia & Canais (Pilar 3)** | Newsletters (Canais) v2 | Consulta de reações (`newsletterFetchReactions`), mensagens individuais (`newsletterFetchMessage`) e lista parseada. |\n\n---\n\n## 📌 Índice\n\n- [Instalação](#-instalação)\n- [Conectando a Conta](#-conectando-a-conta)\n  - [Conexão via QR Code](#conexão-via-qr-code)\n  - [Conexão via Código de Emparelhamento (Pairing Code)](#conexão-via-código-de-emparelhamento-pairing-code)\n  - [Recebendo Histórico Completo](#recebendo-histórico-completo)\n- [Salvando e Restaurando Sessões](#-salvando-e-restaurando-sessões)\n- [Configurações Importantes do Socket](#-configurações-importantes-do-socket)\n- [Exemplo Prático Inicial (Bootstrap)](#-exemplo-prático-inicial-bootstrap)\n- [Tratamento de Eventos e Mídia](#-tratamento-de-eventos-e-mídia)\n  - [Download de Mídias Recebidas](#download-de-mídias-recebidas)\n  - [Decifrar Votos de Enquetes](#decifrar-votos-de-enquetes)\n  - [Decifrar Respostas de Eventos](#decifrar-respostas-de-eventos)\n- [Verificação de Contatos e Presença](#-verificação-de-contatos-e-presença)\n  - [Verificação de Números no WhatsApp (onWhatsApp)](#verificação-de-números-no-whatsapp-onwhatsapp)\n  - [Presença e Digitando / Gravando Áudio](#presença-e-digitando--gravando-áudio)\n- [Enviando Mensagens](#-enviando-mensagens)\n  - [Mensagens de Texto, Menções e Links](#mensagens-de-texto-e-menções)\n  - [Mensagens de Mídia](#mensagens-de-mídia)\n  - [Documentos e Arquivos](#documentos-e-arquivos)\n  - [Figurinhas (Stickers)](#figurinhas-stickers)\n  - [Localização Fixa e Tempo Real](#localização-fixa-e-em-tempo-real)\n  - [Contatos e Cartões vCard](#contatos-e-cartões-vcard)\n  - [Reações a Mensagens](#reações-a-mensagens)\n  - [Criação de Enquetes](#criação-de-enquetes)\n  - [Listas Interativas de Opções](#listas-interativas-de-opções-sections)\n  - [Botões Interativos](#botões-interativos)\n  - [Botão de Pagamento PIX](#botão-de-pagamento-pix)\n  - [Fluxos de Checkout (PAY)](#fluxos-de-checkout-pay)\n  - [Encaminhamento de Mensagens](#encaminhamento-de-mensagens)\n  - [Menção em Status e Reações](#menção-em-status)\n  - [Comentários em Canais e Comunidades](#comentários-em-canais-e-comunidades)\n- [Modificando Mensagens e Chats](#-modificando-mensagens-e-chats)\n  - [Confirmação de Leitura (readMessages)](#confirmação-de-leitura-readmessages)\n  - [Mensagens com Estrela (star)](#mensagens-com-estrela-star)\n  - [Fixação de Mensagens com Duração](#fixação-de-mensagens-com-duração)\n  - [Favoritos e Anotações de Contato](#favoritos-e-anotações-de-contato)\n- [Perfil do Usuário e Foto](#-perfil-do-usuário-e-foto)\n- [Eventos em Grupos e RSVP](#-eventos-em-grupos-e-rsvp)\n- [Chamadas Web (Web Calling)](#-chamadas-web-web-calling)\n- [Resolução de Usuários (LID e Telefone)](#-resolução-de-usuários--transição-lid-pilar-2)\n- [Etiquetas e Respostas Rápidas (WhatsApp Business)](#-etiquetas-de-negócio-labels---whatsapp-business)\n- [Gerenciamento de Grupos](#-gerenciamento-de-grupos)\n- [Newsletters (Canais)](#-newsletters--canais-v2-pilar-3)\n- [WhatsApp Business (Catálogo e Produtos)](#-whatsapp-business-catálogo-produtos-e-perfil-comercial)\n- [Grupos e Comunidades v2](#-grupos-comunidades-v2-e-moderação-avançada)\n- [Arquitetura de Plugins e Middlewares](#-arquitetura-de-plugins-e-middlewares)\n- [Alta Performance, Cache e Memória](#-alta-performance-cache-e-controle-de-memória)\n- [Configurações de Privacidade](#-configurações-de-privacidade)\n- [Logs e Protocolo](#-logs-e-protocolo)\n\n---\n\n## 📦 Instalação\n\nAdicione o pacote ao seu projeto via Yarn ou NPM:\n\n**Versão Estável (Recomendado):**\n```bash\nyarn add @areumtecnologia/wasockets\n# ou\nnpm install @areumtecnologia/wasockets\n```\n\n**Versão de Desenvolvimento (Edge):**\n```bash\nyarn add github:areumtecnologia/WaSockets\n```\n\n---\n\n## 🔑 Conectando a Conta\n\nO WhatsApp fornece uma API multi-dispositivo que permite ao **WaSockets** se autenticar como um segundo cliente web. Isso pode ser feito via **QR Code** ou **Código de Emparelhamento**.\n\n### Conexão via QR Code\n\n```javascript\nconst { default: makeWASocket, Browsers } = require('@areumtecnologia/wasockets')\n\nconst sock = makeWASocket({\n    // Configurações do navegador exibidas no WhatsApp do celular\n    browser: Browsers.ubuntu('Chrome'),\n    printQRInTerminal: true\n})\n```\n\n### Conexão via Código de Emparelhamento (Pairing Code)\n\nIdeal para servidores sem interface gráfica ou fluxos onde você não deseja escanear o QR Code, usando apenas o número do telefone. O número deve conter o código do país (ex: `55` para Brasil) e DDD, apenas com números.\n\n```javascript\nconst { default: makeWASocket } = require('@areumtecnologia/wasockets')\n\nconst sock = makeWASocket({\n    printQRInTerminal: false // Deve ser false\n})\n\nif (!sock.authState.creds.registered) {\n    const numeroTelefone = '5511999999999' // Insira o número completo\n    const codigo = await sock.requestPairingCode(numeroTelefone)\n    console.log(`Digite este código no seu WhatsApp: ${codigo}`)\n}\n```\n\n### Recebendo Histórico Completo\n\nPor padrão, a conexão emula um cliente leve. Para receber um histórico maior de mensagens anteriores, configure o navegador para emular um Desktop (macOS ou Windows) e ative a sincronização:\n\n```javascript\nconst sock = makeWASocket({\n    browser: Browsers.macOS('Desktop'),\n    syncFullHistory: true\n})\n```\n\n---\n\n## 💾 Salvando e Restaurando Sessões\n\nPara evitar a necessidade de escanear o QR Code a cada reinicialização, utilize a função `useMultiFileAuthState` para salvar as chaves de criptografia e credenciais em uma pasta local.\n\n```javascript\nconst { default: makeWASocket, useMultiFileAuthState } = require('@areumtecnologia/wasockets')\n\nasync function iniciar() {\n    // Carrega o estado da pasta especificada\n    const { state, saveCreds } = await useMultiFileAuthState('auth_info_baileys')\n\n    const sock = makeWASocket({\n        auth: state\n    })\n\n    // Salva as credenciais sempre que forem atualizadas\n    sock.ev.on('creds.update', saveCreds)\n}\niniciar()\n```\n\n> [!IMPORTANT]\n> Quando mensagens são enviadas ou recebidas, as chaves de criptografia são atualizadas para segurança. É crucial que o evento `creds.update` chame a função `saveCreds` para persistir o novo estado. Caso contrário, a sessão será desconectada e as mensagens falharão.\n\n---\n\n## ⚙️ Configurações Importantes do Socket\n\n### 1. Cache de Metadados de Grupo (Altamente Recomendado)\nSe a sua aplicação gerencia grupos, buscar metadados diretamente no WhatsApp para cada mensagem recebida causa lentidão e risco de banimento por limite de requisições. Implemente um cache temporário:\n\n```javascript\nconst NodeCache = require('@cacheable/node-cache') // ou similar\nconst groupCache = new NodeCache({ stdTTL: 5 * 60, useClones: false })\n\nconst sock = makeWASocket({\n    cachedGroupMetadata: async (jid) => groupCache.get(jid)\n})\n\nsock.ev.on('groups.update', async ([event]) => {\n    const metadata = await sock.groupMetadata(event.id)\n    groupCache.set(event.id, metadata)\n})\n\nsock.ev.on('group-participants.update', async (event) => {\n    const metadata = await sock.groupMetadata(event.id)\n    groupCache.set(event.id, metadata)\n})\n```\n\n### 2. Recuperação de Mensagens e Enquetes\nPara descriptografar respostas de enquetes antigas ou gerenciar tentativas de reenvio automáticas do WhatsApp, configure a função `getMessage`:\n\n```javascript\nconst sock = makeWASocket({\n    getMessage: async (key) => {\n        // Busque a mensagem salva no seu banco de dados ou store local\n        return await buscarMensagemSalva(key.id)\n    }\n})\n```\n\n### 3. Fila Inteligente de Mensagens Durante Quedas Transitórias\nQuando a conexão com o WhatsApp cai momentaneamente, o **WaSockets** armazena mensagens em buffer de espera e as envia automaticamente assim que a conexão se restabelece:\n\n```javascript\nconst sock = makeWASocket({\n    enableMessageQueue: true, // Ativado por padrão (evita perda de mensagens durante reconexão)\n    messageQueueTtlMs: 5 * 60 * 1000 // TTL de expiração na fila (padrão: 5 minutos)\n})\n```\n\n### 4. Auto-Reparo de Sessão E2E / Signal (`repairSession`)\nSe uma conversa específica apresentar erros de chave ou falhas de descriptografia (`Bad MAC` ou `Session Corrupted`), não é mais necessário deletar a pasta inteira de autenticação. Use o método `repairSession`:\n\n```javascript\n// Remove a sessão danificada e força a renegociação de chaves E2E com o contato\nawait sock.repairSession('5511999999999@s.whatsapp.net')\n```\n\n---\n\n## 🚀 Exemplo Prático Inicial (Bootstrap)\n\nAqui está um arquivo funcional completo em JavaScript (CommonJS) para iniciar a sua integração:\n\n```javascript\nconst { default: makeWASocket, DisconnectReason, useMultiFileAuthState, makeReconnectManager, shouldReconnect } = require('@areumtecnologia/wasockets')\nconst { Boom } = require('@hapi/boom')\n\nasync function connectToWhatsApp() {\n    // 1. Inicializa o estado de autenticação baseado em arquivos\n    const { state, saveCreds } = await useMultiFileAuthState('./auth_info_baileys')\n    \n    // 2. Cria o Socket de Conexão com fila de mensagens inteligente ativada por padrão\n    const sock = makeWASocket({\n        auth: state,\n        printQRInTerminal: true,\n        enableMessageQueue: true // Fila de envio automático durante reconexões transitórias\n    })\n\n    // Gerenciador de reconexão adaptativa com Backoff Exponencial e Full Jitter (evita banimentos)\n    const reconnectManager = makeReconnectManager({\n        onReconnect: async (attempt) => {\n            console.log(`Reconectando ao WhatsApp (tentativa #${attempt})...`)\n            await connectToWhatsApp()\n        }\n    })\n\n    // 3. Monitora o status da conexão\n    sock.ev.on('connection.update', async (update) => {\n        const { connection, lastDisconnect } = update\n        \n        if (connection === 'close') {\n            await reconnectManager.handleDisconnect(lastDisconnect?.error)\n        } else if (connection === 'open') {\n            reconnectManager.reset()\n            console.log('Conexão com o WhatsApp estabelecida com sucesso!')\n        }\n    })\n\n    // 4. Salva credenciais atualizadas\n    sock.ev.on('creds.update', saveCreds)\n\n    // 5. Escuta e responde a novas mensagens recebidas\n    sock.ev.on('messages.upsert', async (event) => {\n        for (const m of event.messages) {\n            // Ignora mensagens que não sejam do tipo padrão ou geradas pelo próprio bot\n            if (!m.message || m.key.fromMe) continue\n\n            console.log('Mensagem recebida de:', m.key.remoteJid)\n            console.log('Conteúdo:', JSON.stringify(m, null, 2))\n\n            // Responde à mensagem\n            await sock.sendMessage(m.key.remoteJid, { text: 'Olá! Recebi sua mensagem com sucesso.' })\n        }\n    })\n}\n\n// Inicia o processo\nconnectToWhatsApp()\n```\n\n---\n\n## 📡 Tratamento de Eventos e Mídia\n\nO **WaSockets** utiliza um sistema de eventos tipado baseado no `EventEmitter`.\n\n```javascript\nsock.ev.on('messages.upsert', ({ messages, type }) => {\n    // type pode ser 'notify' (nova notificação) ou 'append' (carregamento histórico)\n    console.log('Novas mensagens recebidas:', messages)\n})\n```\n\n### Download de Mídias Recebidas\n\nPara baixar mídias (fotos, vídeos, áudios, documentos ou stickers) recebidas no evento `messages.upsert`, utilize a função utilitária `downloadMediaMessage`:\n\n```javascript\nconst { downloadMediaMessage } = require('@areumtecnologia/wasockets')\nconst fs = require('fs')\n\nsock.ev.on('messages.upsert', async ({ messages }) => {\n    for (const msg of messages) {\n        if (!msg.message || msg.key.fromMe) continue\n\n        const isMedia = msg.message.imageMessage || \n                        msg.message.videoMessage || \n                        msg.message.audioMessage || \n                        msg.message.documentMessage || \n                        msg.message.stickerMessage\n\n        if (isMedia) {\n            // Baixa o arquivo diretamente em formato Buffer\n            const buffer = await downloadMediaMessage(msg, 'buffer', {})\n            \n            // Exemplo: Salvar no disco\n            const ext = msg.message.imageMessage ? 'jpg' : msg.message.audioMessage ? 'ogg' : 'bin'\n            fs.writeFileSync(`./download_${msg.key.id}.${ext}`, buffer)\n            console.log(`Mídia baixada com sucesso (${buffer.length} bytes)!`)\n\n            // Ou baixar como stream de leitura para processamento em tempo real:\n            // const stream = await downloadMediaMessage(msg, 'stream', {})\n        }\n    }\n})\n```\n\n### Decifrar Votos de Enquetes\n\nOs votos em enquetes chegam como mensagens criptografadas no evento `messages.update`. É preciso usar o helper `getAggregateVotesInPollMessage` passando a mensagem original da enquete.\n\n```javascript\nconst { getAggregateVotesInPollMessage } = require('@areumtecnologia/wasockets')\n\nsock.ev.on('messages.update', async (updates) => {\n    for (const { key, update } of updates) {\n        if (update.pollUpdates) {\n            // 1. Busca a mensagem original da enquete que foi criada anteriormente\n            const pollCreationMessage = await obterMensagemSalva(key)\n            if (pollCreationMessage) {\n                // 2. Agrega os votos\n                const pollVotes = await getAggregateVotesInPollMessage({\n                    message: pollCreationMessage,\n                    pollUpdates: update.pollUpdates\n                })\n                \n                // 3. Exibe as opções votadas e os respectivos eleitores\n                console.log('Resultado da Enquete Atualizado:', pollVotes)\n            }\n        }\n    }\n})\n```\n\n### Decifrar Respostas de Eventos\n\nA mesma lógica se aplica a eventos criados no chat (como convites de reuniões). O **WaSockets** fornece o helper `getAggregateResponsesInEventMessage` para analisar as presenças.\n\n```javascript\nconst { getAggregateResponsesInEventMessage } = require('@areumtecnologia/wasockets')\n\nsock.ev.on('messages.update', async (updates) => {\n    for (const { key, update } of updates) {\n        if (update.eventResponses) {\n            const eventCreationMessage = await obterMensagemSalva(key)\n            if (eventCreationMessage) {\n                const responses = await getAggregateResponsesInEventMessage({\n                    message: eventCreationMessage,\n                    eventResponses: update.eventResponses\n                })\n                console.log('Respostas ao evento atualizadas:', responses)\n            }\n        }\n    }\n})\n```\n\n---\n\n## 🔍 Verificação de Contatos e Presença\n\n### Verificação de Números no WhatsApp (onWhatsApp)\n\nValide se um ou vários números de telefone possuem contas ativas registradas no WhatsApp antes de disparar mensagens:\n\n```javascript\n// Aceita um ou vários números (com DDI e DDD)\nconst resultados = await sock.onWhatsApp('5511999999999', '5511888888888', '5521977777777')\n\nfor (const { jid, exists } of resultados) {\n    if (exists) {\n        console.log(`O número ${jid} está ativo no WhatsApp!`)\n    } else {\n        console.log(`O número ${jid} NÃO possui conta no WhatsApp.`)\n    }\n}\n```\n\n### Presença e Digitando / Gravando Áudio\n\nSimule atividade humana enviando estados de presença ou monitore o status de contatos:\n\n```javascript\n// 1. Indicar que está digitando...\nawait sock.sendPresenceUpdate('composing', jid)\n\n// 2. Indicar que está gravando áudio...\nawait sock.sendPresenceUpdate('recording', jid)\n\n// 3. Pausar status de digitação/gravação\nawait sock.sendPresenceUpdate('paused', jid)\n\n// 4. Alterar presença geral da conta ('available' = Online, 'unavailable' = Offline)\nawait sock.sendPresenceUpdate('available')\n\n// 5. Inscrever-se para escutar presença de um contato específico\nawait sock.presenceSubscribe(jid)\n\n// 6. Monitorar atualizações de presença recebidas\nsock.ev.on('presence.update', ({ id, presences }) => {\n    console.log(`Atualização de presença de ${id}:`, presences)\n})\n```\n\n---\n\n## ✉️ Enviando Mensagens\n\n### Mensagens de Texto e Menções\n\n```javascript\n// Mensagem de texto simples\nawait sock.sendMessage(jid, { text: 'Olá Mundo!' })\n\n// Mensagem citando (respondendo a) outra mensagem\nawait sock.sendMessage(jid, { text: 'Esta é uma resposta.' }, { quoted: mensagemOriginal })\n\n// Mensagem mencionando contatos no grupo\nawait sock.sendMessage(jid, {\n    text: 'Olá @5511999999999 e @5511888888888!',\n    mentions: ['5511999999999@s.whatsapp.net', '5511888888888@s.whatsapp.net']\n})\n```\n\n### Mensagens de Mídia\n\nÉ possível passar caminhos de arquivos locais (`url`), links da internet (`url`), buffers ou streams de leitura.\n\n```javascript\nconst fs = require('fs')\n\n// Imagem com legenda\nawait sock.sendMessage(jid, {\n    image: { url: './foto.jpg' }, // ou { url: 'https://example.com/foto.jpg' } ou Buffer\n    caption: 'Minha foto legal!'\n})\n\n// Álbum de mídias (Múltiplas fotos/vídeos no mesmo bloco)\nawait sock.sendMessage(jid, {\n    album: [\n        { image: { url: './foto1.jpg' }, caption: 'Foto 1' },\n        { image: { url: './foto2.jpg' }, caption: 'Foto 2' },\n        { video: { url: './video.mp4' }, caption: 'Vídeo do Álbum' }\n    ]\n})\n\n// GIF (vídeo mp4 simulado como reprodução contínua)\nawait sock.sendMessage(jid, {\n    video: fs.readFileSync('./video-gif.mp4'),\n    gifPlayback: true,\n    caption: 'Olha esse gif!'\n})\n\n// Áudio Gravado (Simula o gravador de voz do WhatsApp - PTT)\nawait sock.sendMessage(jid, {\n    audio: { url: './audio.ogg' },\n    mimetype: 'audio/mp4', // obrigatório\n    ptt: true // Define como mensagem de voz\n})\n\n// Mensagem de Visualização Única (View Once)\nawait sock.sendMessage(jid, {\n    image: { url: './foto.jpg' },\n    viewOnce: true,\n    caption: 'Esta foto desaparecerá após ser aberta!'\n})\n```\n\n> [!TIP]\n> Para mensagens de áudio funcionarem perfeitamente em todos os dispositivos móveis e web, converta o áudio original para o formato OGG Opus (codec `libopus`) usando a ferramenta FFMpeg:\n> `ffmpeg -i input.mp3 -c:a libopus -ac 1 -avoid_negative_ts make_zero output.ogg`\n\n---\n\n### Documentos e Arquivos\n\nEnvie qualquer formato de arquivo (PDF, planilhas, arquivos compactados) informando o `mimetype` e o `fileName` para exibição correta no aplicativo:\n\n```javascript\nawait sock.sendMessage(jid, {\n    document: { url: './fatura_setembro.pdf' }, // ou Buffer ou { url: 'https://exemplo.com/doc.pdf' }\n    mimetype: 'application/pdf',\n    fileName: 'Fatura_Setembro_2026.pdf'\n})\n```\n\n### Figurinhas (Stickers)\n\nEnvie figurinhas estáticas ou animadas no formato WebP:\n\n```javascript\nawait sock.sendMessage(jid, {\n    sticker: fs.readFileSync('./minha_figurinha.webp') // aceita Buffer ou { url: './figurinha.webp' }\n})\n```\n\n### Localização Fixa e em Tempo Real\n\nEnvie pontos no mapa ou compartilhe localização em tempo real com latitude e longitude:\n\n```javascript\n// Localização Fixa\nawait sock.sendMessage(jid, {\n    location: {\n        degreesLatitude: -23.55052,\n        degreesLongitude: -46.633308,\n        name: 'Sede da Áreum Tecnologia',\n        address: 'Av. Paulista, 1000 - Bela Vista, São Paulo - SP'\n    }\n})\n\n// Localização em Tempo Real (Live Location)\nawait sock.sendMessage(jid, {\n    location: {\n        degreesLatitude: -23.55052,\n        degreesLongitude: -46.633308\n    },\n    live: true\n})\n```\n\n### Contatos e Cartões vCard\n\nEnvie um ou múltiplos contatos com cartão vCard formatado:\n\n```javascript\nconst vcard = 'BEGIN:VCARD\\n'\n            + 'VERSION:3.0\\n' \n            + 'FN:Suporte Técnico Áreum\\n'\n            + 'ORG:Áreum Tecnologia;\\n'\n            + 'TEL;type=CELL;type=VOICE;waid=5511999999999:+55 11 99999-9999\\n'\n            + 'END:VCARD'\n\nawait sock.sendMessage(jid, {\n    contacts: {\n        displayName: 'Suporte Técnico Áreum',\n        contacts: [{ vcard }]\n    }\n})\n```\n\n### Reações a Mensagens\n\nReaja com emojis a qualquer mensagem enviada ou recebida (ou remova a reação enviando string vazia `''`):\n\n```javascript\n// Reagir à mensagem com um emoji\nawait sock.sendMessage(jid, {\n    react: {\n        text: '🔥', // Emoji da reação\n        key: msg.key // Chave da mensagem original que receberá a reação\n    }\n})\n\n// Remover reação anterior\nawait sock.sendMessage(jid, {\n    react: {\n        text: '',\n        key: msg.key\n    }\n})\n```\n\n### Criação de Enquetes\n\nCrie enquetes interativas com contagem configurável de seleção (voto único ou múltiplo):\n\n```javascript\nawait sock.sendMessage(jid, {\n    poll: {\n        name: 'Qual o melhor diferencial do WaSockets?',\n        values: [\n            'Resolução Transparente de LID',\n            'Envio Nativo de Álbuns',\n            'Newsletters v2 e Canais',\n            'Fila Inteligente de Reconexão'\n        ],\n        selectableCount: 1 // 1 para escolha única; > 1 para permitir múltiplas escolhas\n    }\n})\n```\n\n### Listas Interativas de Opções (Sections)\n\nEnvie menus organizados por categorias e linhas para navegação intuitiva:\n\n```javascript\nawait sock.sendMessage(jid, {\n    text: 'Selecione o setor desejado para atendimento:',\n    footer: 'Áreum Tecnologia • Atendimento Automatizado',\n    title: 'Central de Relacionamento',\n    buttonText: 'Ver Departamentos',\n    sections: [\n        {\n            title: 'Atendimento Comercial',\n            rows: [\n                { title: 'Novas Contratações', rowId: 'row_vendas', description: 'Conheça nossos planos e soluções' },\n                { title: 'Upgrade de Plano', rowId: 'row_upgrade', description: 'Amplie os limites da sua conta' }\n            ]\n        },\n        {\n            title: 'Suporte & Operações',\n            rows: [\n                { title: 'Suporte Técnico', rowId: 'row_suporte', description: 'Dúvidas de integração e bugs' },\n                { title: 'Financeiro', rowId: 'row_financeiro', description: '2ª via de boleto e notas fiscais' }\n            ]\n        }\n    ]\n})\n```\n\n---\n\n### Botões Interativos\n\nOs botões nativos do WhatsApp são suportados através da propriedade `interactiveButtons`.\n\n```javascript\nawait sock.sendMessage(jid, {\n    text: 'Olá! Escolha uma das opções abaixo:',\n    title: 'Painel Interativo',\n    subtitle: 'Selecione com um clique',\n    footer: 'Áreum Tecnologia',\n    interactiveButtons: [\n        {\n            name: 'quick_reply',\n            buttonParamsJson: JSON.stringify({\n                display_text: 'Suporte Técnico',\n                id: 'btn_suporte'\n            })\n        },\n        {\n            name: 'cta_url',\n            buttonParamsJson: JSON.stringify({\n                display_text: 'Acessar Site',\n                url: 'https://areum.com.br',\n                merchant_url: 'https://areum.com.br'\n            })\n        },\n        {\n            name: 'cta_call',\n            buttonParamsJson: JSON.stringify({\n                display_text: 'Ligar Agora',\n                phone_number: '5511999999999'\n            })\n        }\n    ]\n})\n```\n\n---\n\n### Botão de Pagamento PIX\n\nO **WaSockets** permite o envio de chaves estáticas de PIX diretamente integradas na interface de pagamento nativa do WhatsApp pelo botão `payment_info`.\n\n```javascript\nawait sock.sendMessage(jid, {\n    text: 'Efetue o pagamento do pedido abaixo clicando em Pagar:',\n    interactiveButtons: [\n        {\n            name: 'payment_info',\n            buttonParamsJson: JSON.stringify({\n                payment_settings: [{\n                    type: 'pix_static_code',\n                    pix_static_code: {\n                        merchant_name: 'Áreum Tecnologia LTDA',\n                        key: 'financeiro@areum.com.br', // Chave PIX (E-mail, CPF/CNPJ, Telefone ou EVP)\n                        key_type: 'EMAIL' // Tipos suportados: PHONE, EMAIL, CPF, EVP\n                    }\n                }]\n            })\n        }\n    ]\n})\n```\n\n---\n\n### Fluxos de Checkout (PAY)\n\nÉ possível enviar solicitações de checkout com itens detalhados de faturamento para pagamentos eletrônicos integrados no aplicativo através da ação `review_and_pay`.\n\n```javascript\nawait sock.sendMessage(jid, {\n    text: 'Fatura gerada com sucesso!',\n    interactiveButtons: [\n        {\n            name: 'review_and_pay',\n            buttonParamsJson: JSON.stringify({\n                currency: 'BRL',\n                payment_type: 'physical-goods',\n                total_amount: {\n                    value: '15000', // R$ 150,00 (representado sem decimais, multiplicado pelo offset)\n                    offset: '100'\n                },\n                reference_id: 'REF_PEDIDO_12345',\n                payment_method: 'confirm',\n                payment_status: 'captured',\n                payment_timestamp: Math.floor(Date.now() / 1000),\n                order: {\n                    status: 'completed',\n                    order_type: 'PAYMENT_REQUEST',\n                    subtotal: { value: '15000', offset: '100' },\n                    items: [{\n                        retailer_id: 'item_01',\n                        name: 'Licença Anual WaSockets',\n                        amount: { value: '15000', offset: '100' },\n                        quantity: '1'\n                    }]\n                },\n                additional_note: 'Agradecemos a sua preferência!'\n            })\n        }\n    ]\n})\n```\n\n---\n\n### Menção em Status\n\nPermite publicar status (stories) e marcar diretamente contatos/grupos específicos (máximo de 5 menções por status).\n\n```javascript\nconst contatosParaMencionar = [\n    '5511999999999@s.whatsapp.net',\n    '5511888888888@s.whatsapp.net'\n]\n\n// Envia um status em formato de texto mencionando os contatos acima\nawait sock.sendStatusMentions(\n    {\n        text: 'Novidade incrível para vocês! 🚀',\n        backgroundColor: '#1c1c1c',\n        textColor: '#ffffff'\n    },\n    contatosParaMencionar\n)\n\n// Curtir / Reagir diretamente a uma publicação de Status (Stories)\nawait sock.reactToStatus(statusMsgKey, '❤️')\n```\n\n### Comentários em Canais e Comunidades\n\nEnvie respostas e comentários estruturados em postagens de canais (Newsletters) ou mensagens de aviso em comunidades:\n\n```javascript\nawait sock.sendMessage(jid, {\n    comment: {\n        targetMessageKey: mensagemOriginal.key,\n        message: { text: 'Excelente atualização! 👏' }\n    }\n})\n```\n\n### Envio Nativo de Álbuns de Fotos e Vídeos (Pilar 3)\n\nEnvie múltiplos arquivos de imagem e vídeo agrupados nativamente em um container de álbum (layout de grade no WhatsApp Web e Celular) com ordenação indexada e suporte a legendas:\n\n```javascript\n// Método direto e simplificado\nawait sock.sendAlbumMessage(jid, [\n    { image: { url: 'https://exemplo.com/foto1.jpg' }, caption: 'Foto 1 do produto' },\n    { image: { url: 'https://exemplo.com/foto2.jpg' }, caption: 'Foto 2 em outro ângulo' },\n    { video: { url: 'https://exemplo.com/demonstracao.mp4' }, caption: 'Vídeo explicativo' }\n])\n\n// Ou através de sendMessage com a propriedade album:\nawait sock.sendMessage(jid, {\n    album: [\n        { image: { url: './local/foto1.jpg' } },\n        { image: { url: './local/foto2.jpg' } }\n    ]\n})\n```\n\n### Mensagens de Áudio PTT com Waveform Customizada (Pilar 3)\n\nVocê pode enviar notas de voz (Push-To-Talk) com geração automática de ondas sonoras ou fornecer uma forma de onda predefinida (array ou Buffer):\n\n```javascript\n// Áudio PTT com waveform automática gerada a partir do arquivo\nawait sock.sendMessage(jid, {\n    audio: { url: './audio.mp3' },\n    mimetype: 'audio/ogg; codecs=opus',\n    ptt: true\n})\n\n// Áudio PTT com waveform predefinida (evita decodificação intensiva de CPU)\nawait sock.sendMessage(jid, {\n    audio: { url: './audio.mp3' },\n    mimetype: 'audio/ogg; codecs=opus',\n    ptt: true,\n    waveform: [0, 15, 30, 75, 100, 80, 45, 20, 10, 0] // 64 barras de amplitude\n})\n```\n\n### Encaminhamento de Mensagens\n\nEncaminhe mensagens para outros chats preservando ou forçando o status de encaminhado:\n\n```javascript\n// Encaminhar uma mensagem recebida para outro destinatário\nawait sock.sendMessage(outroJid, {\n    forward: mensagemOriginal,\n    force: true // Exibe o selo de mensagem encaminhada\n})\n```\n\n---\n\n## 📝 Modificando Mensagens e Chats\n\n```javascript\n// Apagar uma mensagem para todos\nconst msg = await sock.sendMessage(jid, { text: 'Mensagem enviada com erro!' })\nawait sock.sendMessage(jid, { delete: msg.key })\n\n// Editar uma mensagem enviada\nawait sock.sendMessage(jid, {\n    text: 'Esta é a mensagem com o texto corrigido.',\n    edit: msg.key\n})\n\n// Arquivar um chat\nawait sock.chatModify({ archive: true, lastMessages: [msg] }, jid)\n\n// Silenciar um chat por 8 horas\nawait sock.chatModify({ mute: 8 * 60 * 60 * 1000 }, jid)\n\n// Remover silenciamento de um chat\nawait sock.chatModify({ mute: null }, jid)\n\n// Marcar chat como Não Lido\nawait sock.chatModify({ markRead: false, lastMessages: [msg] }, jid)\n\n// Fixar chat na lista de conversas\nawait sock.chatModify({ pin: true }, jid)\n```\n\n### Confirmação de Leitura (readMessages)\n\nEnvie confirmações de leitura explícitas para exibir os ticks azuis ao remetente:\n\n```javascript\n// Marca uma ou mais mensagens recebidas como lidas\nawait sock.readMessages([msg.key])\n```\n\n### Mensagens com Estrela (star)\n\nMarque mensagens importantes com estrela (favoritas) na conversa:\n\n```javascript\n// Adicionar estrela à mensagem\nawait sock.star(jid, [{ id: msg.key.id, fromMe: msg.key.fromMe }], true)\n\n// Remover estrela da mensagem\nawait sock.star(jid, [{ id: msg.key.id, fromMe: msg.key.fromMe }], false)\n```\n\n### Fixação de Mensagens com Duração\n\nFixe mensagens em conversas individuais ou grupos escolhendo a duração desejada:\n\n```javascript\n// Fixar mensagem por 7 dias (604800 segundos)\n// Durações padrão: 86400 (24h), 604800 (7 dias), 2592000 (30 dias)\nawait sock.sendMessage(jid, {\n    pin: {\n        key: msg.key,\n        type: 1, // 1: Fixar, 2: Desafixar\n        time: 604800\n    }\n})\n\n// Desafixar mensagem\nawait sock.sendMessage(jid, {\n    pin: {\n        key: msg.key,\n        type: 2\n    }\n})\n```\n\n### Favoritos e Anotações de Contato\n\nOrganize suas conversas sincronizando com o WhatsApp Web e celular:\n\n```javascript\n// Marcar conversa como Favorita\nawait sock.updateFavorite(jid, true)\n\n// Desmarcar conversa como Favorita\nawait sock.updateFavorite(jid, false)\n\n// Adicionar ou atualizar nota interna no contato (Chat Note)\nawait sock.updateChatNote(jid, 'Cliente solicitou proposta para 50 atendentes.')\n\n// Remover nota interna do contato\nawait sock.removeChatNote(jid)\n```\n\n---\n\n## 👤 Perfil do Usuário e Foto\n\nGerencie fotos de perfil, recados e nome de exibição (PushName) diretamente pelo socket:\n\n```javascript\n// 1. Obter a URL da foto de perfil de um contato ou grupo\nconst pfpUrl = await sock.profilePictureUrl(jid, 'image') // ou 'preview' para miniatura\nconsole.log('Foto de Perfil:', pfpUrl)\n\n// 2. Atualizar a sua própria foto de perfil (ou a foto de um grupo do qual você é admin)\nawait sock.updateProfilePicture(jid, { url: './nova_foto.jpg' }) // Aceita caminho, URL ou Buffer\n\n// 3. Remover a foto de perfil\nawait sock.removeProfilePicture(jid)\n\n// 4. Consultar o recado / About (Status) de um contato\nconst statusInfo = await sock.fetchStatus(jid)\nconsole.log(`Recado de ${jid}: ${statusInfo?.status} (Definido em: ${statusInfo?.setAt})`)\n\n// 5. Atualizar o seu próprio recado / About\nawait sock.updateProfileStatus('Disponível apenas para atendimentos prioritários 🚀')\n\n// 6. Atualizar o seu nome público de exibição (PushName)\nawait sock.updateProfileName('Áreum Tecnologia - Suporte Oficial')\n```\n\n---\n\n## 📅 Eventos em Grupos e RSVP\n\nCrie eventos colaborativos, responda confirmações de presença e cancele eventos:\n\n```javascript\n// 1. Criar um novo evento no grupo\nconst evento = await sock.sendMessage(grupoJid, {\n    event: {\n        name: 'Reunião de Planejamento de Sprints',\n        description: 'Alinhamento estratégico dos projetos da Áreum Tecnologia.',\n        startTime: Math.floor(Date.now() / 1000) + 86400, // Amanhã\n        extraGuestsAllowed: true\n    }\n})\n\n// 2. Responder ao Evento (RSVP)\n// Tipos de resposta: 'GOING' (1), 'NOT_GOING' (2), 'MAYBE' (3)\nawait sock.sendEventResponse(grupoJid, evento.key, 'GOING', 1 /* +1 convidado extra */)\n\n// 3. Cancelar o Evento\nawait sock.cancelEvent(grupoJid, evento.key)\n```\n\n---\n\n## 📞 Chamadas Web (Web Calling)\n\nGerencie o ciclo completo de sinalização de chamadas de voz e vídeo:\n\n```javascript\n// Iniciar uma chamada (áudio ou vídeo)\nconst chamada = await sock.offerCall('5511999999999@s.whatsapp.net', false /* isVideo */)\nconsole.log('ID da chamada:', chamada.id)\n\n// Atender uma chamada recebida\nawait sock.acceptCall(callId, callerJid)\n\n// Encerrar uma chamada em andamento\nawait sock.terminateCall(callId, callerJid)\n\n// Rejeitar uma chamada recebida\nawait sock.rejectCall(callId, callerJid)\n```\n\n---\n\n## 🔍 Resolução de Usuários & Transição LID (Pilar 2)\n\nCom a evolução da privacidade no WhatsApp, participantes de grupos e canais frequentemente utilizam identificadores `@lid`. O **WaSockets** oferece um conjunto completo de ferramentas de alto desempenho com cache automático em memória e no banco de chaves Signal:\n\n### Métodos de Resolução Transparente no Socket\n\n```javascript\n// 1. Converter LID para número de telefone (PN) com busca em cache/DB\nconst pnJid = await sock.toPn('12345678901234@lid')\nconsole.log('JID com número real:', pnJid) // '5511999999999@s.whatsapp.net'\n\n// Caso não esteja em cache local, pode passar true para consultar o servidor via USync:\nconst pnJidFromNetwork = await sock.toPn('12345678901234@lid', true)\n\n// 2. Converter número de telefone (PN) para LID\nconst lidJid = await sock.toLid('5511999999999@s.whatsapp.net')\nconsole.log('LID correspondente:', lidJid) // '12345678901234@lid'\n\n// 3. Resolução completa e unificada (retorna ambos)\nconst resolved = await sock.resolveJid(authorJid)\nconsole.log(resolved) // { pn: '5511999999999@s.whatsapp.net', lid: '12345678901234@lid', jid: ... }\n\n// 4. Registrar manualmente um mapeamento conhecido\nawait sock.storeLidPnMapping('5511999999999@s.whatsapp.net', '12345678901234@lid')\n\n// 5. Consultas diretas via protocolo USync (baixo nível)\nconst [lidUser] = await sock.getLidUser('5511999999999@s.whatsapp.net')\nconst [pnUser] = await sock.getPnUser('12345678901234@lid')\n```\n\n### Store Unificado de Contatos e Conversas (`makeInMemoryStore`)\n\nTradicionalmente, quando o WhatsApp chaveia as mensagens para `@lid`, chamadas como `store.contacts[jid]` ou `store.messages[jid]` falhavam por incompatibilidade de identificadores. O **WaSockets** resolve isso unificando o catálogo em tempo de execução:\n\n```javascript\nimport { makeInMemoryStore } from '@areumtecnologia/wasockets'\n\nconst store = makeInMemoryStore({})\nstore.bind(sock.ev)\n\n// Busca unificada: localiza o contato quer você passe o número (@s.whatsapp.net), o @lid ou apenas os dígitos\nconst contact = store.getContact('12345678901234@lid') \n// Retorna o contato completo contendo .id, .lid, .phoneNumber, .name, etc.\n\n// Busca unificada de chat: localiza a conversa mesmo se foi iniciada com PN ou com LID\nconst chat = store.getChat('12345678901234@lid')\n\n// Carregamento de mensagens com fallback cruzado automático entre LID e PN\nconst messages = await store.loadMessages('12345678901234@lid', 25)\n```\n\n---\n\n## 🏷️ Etiquetas de Negócio (Labels - WhatsApp Business)\n\nO **WaSockets** permite que você gerencie etiquetas e organize contatos ou mensagens diretamente pelo aplicativo WhatsApp Business.\n\n### Criando, Editando e Deletando Etiquetas (CRUD de Sistema)\n\nVocê pode criar, editar e excluir as etiquetas globais da sua conta:\n\n```javascript\n// Criar uma nova etiqueta com cor específica\n// Cores suportadas: de 0 a 19 correspondentes à paleta do WhatsApp Business\nconst novaLabel = await sock.createLabel('Lead Qualificado', 5)\n\n// Atualizar o nome e a cor de uma etiqueta existente\nawait sock.updateLabel('label_id_123', 'Pagamento Aprovado', 2)\n\n// Deletar uma etiqueta definitivamente da conta\nawait sock.deleteLabel('label_id_123')\n```\n\n### Associando Etiquetas a Conversas e Mensagens\n\nPara categorizar chats específicos ou marcar mensagens individuais dentro de uma conversa:\n\n```javascript\n// Associar etiqueta a uma conversa (JID)\nawait sock.addChatLabel(jid, 'label_id_123')\n\n// Remover etiqueta de uma conversa (JID)\nawait sock.removeChatLabel(jid, 'label_id_123')\n\n// Associar etiqueta a uma mensagem específica\nawait sock.addMessageLabel(jid, 'mensagem_id_456', 'label_id_123')\n\n// Remover etiqueta de uma mensagem específica\nawait sock.removeMessageLabel(jid, 'mensagem_id_456', 'label_id_123')\n```\n\n### Respostas Rápidas (Quick Replies)\n\nPara contas WhatsApp Business, gerencie respostas rápidas acessíveis via atalhos:\n\n```javascript\n// Criar ou atualizar resposta rápida\nawait sock.addOrEditQuickReply({\n    id: 'qr_ola',\n    shortcut: '/ola',\n    message: 'Olá! Seja muito bem-vindo à Áreum Tecnologia. Como podemos te ajudar hoje?',\n    keywords: ['ola', 'ajuda', 'suporte', 'inicio']\n})\n\n// Remover resposta rápida pelo ID\nawait sock.removeQuickReply('qr_ola')\n```\n\n---\n\n## 👥 Gerenciamento de Grupos\n\nAs operações de alteração estrutural em grupos requerem que a conta conectada seja administradora do grupo correspondente.\n\n```javascript\n// Criar um novo grupo\nconst grupo = await sock.groupCreate('Equipe de Suporte Áreum', ['5511999999999@s.whatsapp.net'])\nconsole.log('Grupo criado com ID:', grupo.id)\n\n// Adicionar/Remover/Promover participantes\n// Parâmetros de ação: 'add' | 'remove' | 'promote' | 'demote'\nawait sock.groupParticipantsUpdate(grupo.id, ['5511888888888@s.whatsapp.net'], 'add')\n\n// Obter dados/metadados de um grupo ANTES de entrar usando o código de convite\nconst infoConvite = await sock.groupGetInviteInfo('ABcdEFghIJklMnOpQrStUv')\nconsole.log(`Nome do grupo no convite: ${infoConvite.subject}`)\n\n// Obter o código/link de convite do grupo\nconst codigoConvite = await sock.groupInviteCode(grupo.id)\nconsole.log(`Link: https://chat.whatsapp.com/${codigoConvite}`)\n\n// Revogar link de convite anterior e gerar um novo\nconst novoCodigo = await sock.groupRevokeInvite(grupo.id)\n\n// Entrar em um grupo usando um código de convite (apenas o código, sem o domínio completo)\nconst resposta = await sock.groupAcceptInvite('ABcdEFghIJklMnOpQrStUv')\n\n// Alterar o assunto (título) do grupo\nawait sock.groupUpdateSubject(grupo.id, 'Novo Nome do Grupo')\n\n// Alterar a descrição do grupo\nawait sock.groupUpdateDescription(grupo.id, 'Regras do grupo e links importantes.')\n\n// Sair do grupo\nawait sock.groupLeave(grupo.id)\n\n// Obter a lista de pessoas aguardando aprovação para entrar no grupo\nconst solicitacoes = await sock.groupRequestParticipantsList(grupo.id)\nconsole.log(solicitacoes)\n\n// Aprovar entrada pendente\nawait sock.groupRequestParticipantsUpdate(grupo.id, ['5511777777777@s.whatsapp.net'], 'approve') // ou 'reject'\n\n// Obter metadados do grupo (participantes, título, regras, descrição)\nconst metadados = await sock.groupMetadata(grupo.id)\nconsole.log(`Título: ${metadados.subject}, Membros: ${metadados.participants.length}`)\n```\n\n---\n\n## 👥 Etiquetas de Membro (Member Tags) em Grupos\n\nO WhatsApp permite que os participantes de um grupo criem um rótulo ou descrição curta de até 30 caracteres para si mesmos (ex: definir seu papel ou cargo no grupo).\n\n### Definindo sua própria Etiqueta de Membro no Grupo\n\n```javascript\n// Define a sua etiqueta como \"Suporte Técnico\" no grupo especificado\nawait sock.updateMemberLabel(grupoJid, \"Suporte Técnico\")\n```\n\n### Monitorando Atualizações de Etiquetas de Outros Membros\n\nVocê pode escutar o evento `group.member-tag.update` para monitorar quando qualquer participante alterar a etiqueta de membro dele no grupo:\n\n```javascript\nsock.ev.on('group.member-tag.update', (update) => {\n    const { groupId, label, participant } = update\n    console.log(`O usuário ${participant} definiu a etiqueta \"${label}\" no grupo ${groupId}`)\n})\n```\n\n---\n\n## 📢 Newsletters / Canais v2 (Pilar 3)\n\nO **WaSockets** traz suporte avançado para a criação, monitoramento, consumo e interação em Newsletters (Canais de Transmissão públicos do WhatsApp):\n\n```javascript\n// 1. Criar uma Newsletter (Canal)\nconst canal = await sock.newsletterCreate('Notícias Tecnológicas Áreum', 'Canal oficial de novidades')\nconsole.log('Canal criado com ID:', canal.id)\n\n// 2. Obter metadados de um Canal público pelo ID ou Invite Code\nconst metadadosCanal = await sock.newsletterMetadata('JID', canal.id)\nconsole.log('Nome do Canal:', metadadosCanal.name)\n\n// 3. Listar todos os Canais inscritos\nconst canaisInscritos = await sock.newsletterSubscribed()\nconsole.log('Canais que eu sigo:', canaisInscritos)\n\n// 4. Buscar e decodificar mensagens do Canal (com contagem de visualizações e reações)\nconst { messages } = await sock.newsletterFetchMessages(canal.id, 20)\nfor (const msg of messages) {\n    console.log(`[ID: ${msg.server_id}] Visualizações: ${msg.views}`)\n    console.log('Conteúdo:', msg.message?.conversation || msg.message?.extendedTextMessage?.text)\n    console.log('Reações:', msg.reactions) // [{ code: '👍', count: 12 }, { code: '❤️', count: 5 }]\n}\n\n// 5. Buscar mensagem individual do Canal\nconst singleMsg = await sock.newsletterFetchMessage(canal.id, '12345')\n\n// 6. Consultar contadores de reações de uma postagem\nconst reacoes = await sock.newsletterFetchReactions(canal.id, '12345')\nconsole.log('Reações do post:', reacoes)\n\n// 7. Reagir a uma postagem do Canal (suporta server_id, id ou chave da mensagem)\nawait sock.newsletterReactMessage(canal.id, '12345', '🔥')\n\n// 8. Seguir / Deixar de Seguir\nawait sock.newsletterFollow(canal.id)\nawait sock.newsletterUnfollow(canal.id)\n\n// 9. Silenciar / Ativar notificações\nawait sock.newsletterMute(canal.id)\nawait sock.newsletterUnmute(canal.id)\nawait sock.newsletterToggleMute(canal.id, true) // ou false para desativar\n\n// 10. Atualizar nome, descrição ou foto do Canal (Admins)\nawait sock.newsletterUpdateName(canal.id, 'Novo Nome do Canal')\nawait sock.newsletterUpdateDescription(canal.id, 'Nova descrição detalhada do canal')\nawait sock.newsletterUpdatePicture(canal.id, './novo_avatar_canal.jpg')\nawait sock.newsletterRemovePicture(canal.id)\n\n// 11. Consultar inscritos e administradores\nconst inscritos = await sock.newsletterSubscribers(canal.id)\nconst totalAdmins = await sock.newsletterAdminCount(canal.id)\n\n// 12. Transferir propriedade ou excluir o Canal\nawait sock.newsletterChangeOwner(canal.id, '5511888888888@s.whatsapp.net')\nawait sock.newsletterDelete(canal.id)\n```\n\n---\n\n## 💼 WhatsApp Business (Catálogo, Produtos e Perfil Comercial)\n\nCaso a conta conectada seja comercial (WhatsApp Business), o **WaSockets** oferece suporte para interagir com o catálogo de produtos, obter detalhes de pedidos e gerenciar o perfil público e as mídias da empresa.\n\n### Gerenciamento de Perfil e Capa Comercial\n\nVocê pode atualizar dados públicos de endereço, e-mail, descrição, websites, horários de funcionamento e foto de capa:\n\n```javascript\n// Atualizar o perfil comercial do usuário\nawait sock.updateBussinesProfile({\n    address: 'Av. Paulista, 1000 - São Paulo, SP',\n    email: 'contato@suaempresa.com.br',\n    description: 'Empresa especializada em soluções de tecnologia.',\n    websites: ['https://suaempresa.com.br', 'https://blog.suaempresa.com.br'],\n    hours: {\n        timezone: 'America/Sao_Paulo',\n        days: [\n            { day: '1', mode: 'open_24_h' }, // Segunda-feira (1=Segunda, 7=Domingo)\n            { \n                day: '2', \n                mode: 'specific_hours', \n                openTimeInMinutes: 540,  // 09:00 (9h * 60)\n                closeTimeInMinutes: 1080 // 18:00 (18h * 60)\n            }\n        ]\n    }\n})\n\n// Atualizar ou definir a foto de capa comercial\nconst coverPhotoId = await sock.updateCoverPhoto('./capa_empresa.jpg')\n\n// Remover a foto de capa atual\nawait sock.removeCoverPhoto(coverPhotoId)\n```\n\n### Consulta de Catálogo, Coleções e Pedidos\n\n```javascript\n// Obter a lista de produtos do catálogo de um contato (ou do seu próprio)\nconst catalogo = await sock.getCatalog({\n    jid: '5511999999999@s.whatsapp.net',\n    limit: 15\n})\nconsole.log('Produtos:', catalogo.products)\n\n// Obter as coleções de produtos organizadas do catálogo\nconst colecoes = await sock.getCollections('5511999999999@s.whatsapp.net', 10)\n\n// Obter os detalhes completos de um pedido comercial a partir do ID e do Token da mensagem de carrinho\nconst detalhesPedido = await sock.getOrderDetails('ID_DO_PEDIDO', 'TOKEN_DO_PEDIDO')\nconsole.log('Itens do Pedido:', detalhesPedido.items)\n```\n\n### Cadastro e Modificação de Produtos no Catálogo\n\n```javascript\n// Adicionar um novo produto no catálogo\nconst novoProduto = await sock.productCreate({\n    name: 'Caneca Personalizada WaSockets',\n    description: 'Caneca de cerâmica de alta qualidade.',\n    price: 4990, // R$ 49,90 (valor representado sem decimais, multiplicado por 100)\n    currency: 'BRL',\n    isHidden: false,\n    image: { url: './caneca.jpg' } // Caminho local, buffer ou stream\n})\nconsole.log('Produto Criado com ID:', novoProduto.id)\n\n// Atualizar dados de um produto existente\nawait sock.productUpdate(novoProduto.id, {\n    name: 'Caneca Personalizada WaSockets (Edição Especial)',\n    price: 5990\n})\n\n// Obter detalhes de um único produto\nconst produto = await sock.getProduct(sock.user.id, novoProduto.id)\nconsole.log('Detalhes do Produto:', produto)\n\n// Remover produtos do catálogo (aceita um array de IDs de produtos)\nawait sock.productDelete([novoProduto.id])\n```\n\n---\n\n## 👥 Grupos, Comunidades v2 e Moderação Avançada\n\nO **WaSockets** oferece um conjunto completo e modernizado para gerenciamento profissional de Grupos e Comunidades no WhatsApp.\n\n### Gestão e Moderação de Entrada (Approval Mode)\n\nControle quem pode entrar no grupo através do fluxo oficial de aprovação de membros:\n\n```javascript\nconst groupJid = '1234567890-987654@g.us'\n\n// Ativar modo de aprovação obrigatória de novos membros\nawait sock.groupMembershipApprovalMode(groupJid, 'on') // ou true / 'off'\n\n// Listar participantes aguardando aprovação\nconst pendentes = await sock.groupRequestParticipantsList(groupJid)\nconsole.log('Solicitações pendentes:', pendentes)\n\n// Aprovar participantes pendentes (aceita string única ou array)\nawait sock.groupApprovePendingParticipants(groupJid, ['5511999999999@s.whatsapp.net'])\n\n// Rejeitar participantes pendentes\nawait sock.groupRejectPendingParticipants(groupJid, ['5511888888888@s.whatsapp.net'])\n```\n\n### Configuração Unificada de Políticas do Grupo\n\nAltere facilmente todas as diretrizes de segurança e permissões do grupo em uma única chamada:\n\n```javascript\nawait sock.groupUpdatePermissions(groupJid, {\n    announce: true,              // true: apenas admins enviam mensagens; false: todos\n    restrict: true,              // true: apenas admins editam dados do grupo; false: todos\n    memberAddMode: 'admin_add',  // 'admin_add' ou 'all_member_add'\n    approvalMode: true,          // Exigir aprovação de admin para novos participantes\n    ephemeral: 86400             // Mensagens temporárias (24h = 86400s, 7 dias = 604800s, false = desativar)\n})\n```\n\n### Menção a Todos os Membros (@everyone / Mention All)\n\nNotifique ou mencione todos os participantes de um grupo de forma prática e sem boilerplate:\n\n```javascript\n// Método direto\nawait sock.groupSendMentionAll(groupJid, '📢 Atenção a todos os membros: reunião às 15h!')\n\n// Ou apenas para administradores, excluindo a si próprio:\nawait sock.groupSendMentionAll(groupJid, 'Aviso importante aos administradores', {\n    adminsOnly: true,\n    excludeMe: true\n})\n\n// Ou diretamente através do sendMessage usando o parâmetro mentionAll:\nawait sock.sendMessage(groupJid, {\n    text: 'Olá a todos!',\n    mentionAll: true\n})\n```\n\n### Extração Rápida de Administradores e Membros\n\n```javascript\n// Retorna array de JIDs apenas de administradores e criador\nconst adminJids = await sock.groupGetAdminJids(groupJid)\n\n// Retorna lista completa normalizada de participantes com status de admin e LID\nconst participantes = await sock.groupGetParticipants(groupJid)\n```\n\n### Comunidades v2 (Subgrupos e Anúncios)\n\nGerencie Comunidades do WhatsApp com suporte a separação de subgrupos e grupo de avisos geral:\n\n```javascript\n// Criar uma comunidade\nconst comunidade = await sock.communityCreate('Minha Comunidade', 'Descrição da comunidade')\n\n// Vincular um grupo existente como subgrupo da comunidade\nawait sock.communityLinkGroup(groupJid, comunidade.id)\n\n// Desvincular um subgrupo da comunidade\nawait sock.communityUnlinkGroup(groupJid, comunidade.id)\n\n// Obter subgrupos organizados (grupo padrão de anúncios vs subgrupos comuns)\nconst { defaultSubGroup, subGroups, allGroups } = await sock.communityFetchSubGroups(comunidade.id)\nconsole.log('Grupo Geral de Anúncios:', defaultSubGroup)\nconsole.log('Subgrupos de discussão:', subGroups)\n\n// Gerenciar aprovações de entrada na Comunidade\nawait sock.communityMembershipApprovalMode(comunidade.id, 'on')\nawait sock.communityApprovePendingParticipants(comunidade.id, ['5511999999999@s.whatsapp.net'])\n```\n\n### Mensagens de Visualização Única (View Once)\n\nEnvie imagens, vídeos ou mídias efêmeras com a flag `viewOnce: true`:\n\n```javascript\nawait sock.sendMessage(jid, {\n    image: { url: './comprovante.jpg' },\n    caption: 'Comprovante confidencial',\n    viewOnce: true\n})\n```\n\n---\n\n## 🧩 Arquitetura de Plugins e Middlewares\n\nO **WaSockets** introduz uma arquitetura modular de plugins e ciclo de vida de middlewares que permite estender o socket de maneira limpa, sem monkey-patching.\n\n### Criando e Instalando Plugins\n\nUm plugin pode ser uma função simples ou um objeto estruturado:\n\n```javascript\n// Exemplo de Plugin de Boas-Vindas ou Auto-Resposta\nconst meuPluginBot = {\n    name: 'auto-reply-plugin',\n    version: '1.0.0',\n    description: 'Responde automaticamente a palavras-chave',\n    install(sock, options, manager) {\n        console.log('Plugin instalado com opções:', options)\n\n        // Escuta eventos normais da conexão\n        sock.ev.on('messages.upsert', async ({ messages, type }) => {\n            if (type !== 'notify') return\n            for (const msg of messages) {\n                if (!msg.key.fromMe && msg.message?.conversation === '!ping') {\n                    await sock.sendMessage(msg.key.remoteJid, { text: '🏓 Pong via Plugin!' })\n                }\n            }\n        })\n    }\n}\n\n// Instalação do plugin no socket\nsock.use(meuPluginBot, { prefix: '!' })\n\n// Listar plugins ativos\nconsole.log('Plugins ativos:', sock.listPlugins())\n```\n\n### Middlewares de Interceptação de Mensagens\n\nIntercepte ou cancele envios e recebimentos antes que cheguem à rede:\n\n```javascript\n// Intercepta qualquer mensagem antes do envio (retornar false cancela o envio)\nsock.registerMiddleware('beforeSendMessage', async ({ jid, content, options }, socket) => {\n    console.log(`Enviando mensagem para ${jid}...`)\n    \n    // Bloquear envio se contiver palavras proibidas\n    if (typeof content?.text === 'string' && content.text.includes('palavra_bloqueada')) {\n        console.warn('Mensagem bloqueada por política de segurança.')\n        return false // Cancela o disparo\n    }\n})\n\n// Executa após a mensagem ser enviada com sucesso\nsock.registerMiddleware('afterSendMessage', async ({ jid, content, fullMsg }, socket) => {\n    console.log(`Mensagem ${fullMsg.key.id} entregue ao servidor com sucesso!`)\n})\n```\n\n---\n\n## ⚡ Alta Performance, Cache e Controle de Memória\n\n### Cache Integrado de Metadados de Grupo (TTL LRU)\n\nPor padrão, o **WaSockets** ativa um cache inteligente com expiração por tempo (TTL de 5 minutos e limite de grupos em memória). Ao enviar mensagens para grupos ou listar participantes, as requisições repetidas ao WhatsApp são evitadas, acelerando disparos em massa em até 10x:\n\n```javascript\nconst sock = makeWASocket({\n    enableGroupCache: true // Ativado por padrão com TTL de 5 minutos\n})\n```\n\n### Proteção de Memória na Store (`makeInMemoryStore`)\n\nEvite vazamento de memória em bots de alta demanda com limpeza automática e limite configurável de mensagens por chat:\n\n```javascript\nconst store = makeInMemoryStore({\n    maxMessagesPerChat: 200 // Limita o histórico a 200 mensagens por chat em RAM (padrão: 500)\n})\n\n// Limpeza manual sob demanda\nstore.pruneMessages(groupJid, 50) // Mantém apenas as últimas 50 mensagens do chat especificado\nstore.pruneMessages(undefined, 100) // Trunca todos os chats para no máximo 100 mensagens\n\n// Obter contagem de mensagens armazenadas\nconst qtdTotal = store.getMessageCount()\nconst qtdChat = store.getMessageCount(groupJid)\n\n// Limpar mensagens de um chat ou resetar toda a memória\nstore.clear(groupJid)\n```\n\n---\n\n## 🔷 Suporte Completo a TypeScript\n\nO **WaSockets** inclui definições de tipo completas em `lib/index.d.ts` e exporta a tipagem de todos os métodos dos 5 pilares, interfaces de mensagens, eventos e plugins:\n\n```typescript\nimport makeWASocket, { WASocket, AnyMessageContent, DisconnectReason, GroupMetadata } from '@areumtecnologia/wasockets'\n\nconst sock: WASocket = makeWASocket({\n    printQRInTerminal: true\n})\n```\n\n---\n\n## 🔒 Configurações de Privacidade\n\n```javascript\n// Bloquear ou desbloquear um usuário\nawait sock.updateBlockStatus('5511999999999@s.whatsapp.net', 'block') // ou 'unblock'\n\n// Obter lista de usuários bloqueados\nconst listaBloqueados = await sock.fetchBlocklist()\n\n// Atualizar privacidade do \"Visto por Último\"\n// Valores aceitos: 'all' | 'contacts' | 'contact_blacklist' | 'none'\nawait sock.updateLastSeenPrivacy('contacts')\n\n// Atualizar privacidade do \"Visto Online\"\n// Valores aceitos: 'all' | 'match_last_seen'\nawait sock.updateOnlinePrivacy('match_last_seen')\n\n// Atualizar privacidade das confirmações de leitura (ticks azuis)\n// Valores aceitos: 'all' | 'none'\nawait sock.updateReadReceiptsPrivacy('none')\n\n// Atualizar privacidade da Foto de Perfil\n// Valores aceitos: 'all' | 'contacts' | 'contact_blacklist' | 'none'\nawait sock.updateProfilePicturePrivacy('contacts')\n\n// Atualizar privacidade do Recado/Status (About)\n// Valores aceitos: 'all' | 'contacts' | 'contact_blacklist' | 'none'\nawait sock.updateStatusPrivacy('contacts')\n\n// Atualizar quem pode adicionar você a grupos\n// Valores aceitos: 'all' | 'contacts' | 'contact_blacklist'\nawait sock.updateGroupsAddPrivacy('contacts')\n\n// Silenciar chamadas de números desconhecidos\n// Valores aceitos: 'all' (permite todos) | 'known' (apenas contatos conhecidos)\nawait sock.updateCallPrivacy('known')\n\n// Consultar todas as configurações de privacidade ativas da conta\nconst privacySettings = await sock.fetchPrivacySettings()\nconsole.log('Configurações de privacidade atuais:', privacySettings)\n```\n\n---\n\n## 🛡️ Logs e Protocolo\n\nPara habilitar a depuração detalhada e ver o tráfego bruto do Websocket trocado com o WhatsApp, inicialize o logger no nível `debug` ou `trace`. O **WaSockets** usa a biblioteca estruturada `pino` para logs ultra rápidos:\n\n```javascript\nconst pino = require('pino')\n\nconst sock = makeWASocket({\n    logger: pino({ level: 'debug' })\n})\n```\n\n### Como o WhatsApp se comunica (BinaryNodes)\n\nAs mensagens são trocadas em formato binário encapsuladas em estruturas chamadas `BinaryNode`. Cada nó possui três atributos:\n- **`tag`**: Nome da ação (ex: `message`, `ib`, `presence`, `iq`)\n- **`attrs`**: Objeto contendo propriedades em string/chave-valor (ID, timestamp, remetente, etc.)\n- **`content`**: O corpo de dados do nó (geralmente outro array de nós ou um buffer criptografado)\n\nVocê pode interagir diretamente com o tráfego do Websocket do WhatsApp registrando callbacks específicos:\n\n```javascript\n// Monitora todos os pacotes recebidos que possuem a tag 'edge_routing'\nsock.ws.on('CB:edge_routing', (node) => {\n    console.log('Recebido nó de roteamento:', node)\n})\n\n// Monitora pacotes 'message' específicos\nsock.ws.on('CB:message', (node) => {\n    console.log('Mensagem de protocolo bruta:', node)\n})\n```\n","readmeFilename":"README.md"}