{"_id":"@openzeppelin/hardhat-defender","_rev":"44-02746593bf6fa9e4ae174d09a95d762a","name":"@openzeppelin/hardhat-defender","dist-tags":{"next":"2.0.0-alpha.0","latest":"2.0.0"},"versions":{"1.4.3":{"name":"@openzeppelin/hardhat-defender","version":"1.4.3","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.4.3","maintainers":[{"name":"frangio","email":"frangio.1@gmail.com"}],"dist":{"shasum":"6ab8a9886b5a81263997e6ea1763e746838f911c","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.4.3.tgz","fileCount":18,"integrity":"sha512-PC7H6+zTzn5ws5y9larmj5ct78zVyXENL4D54FCw71z0NTKB3TDfzPDI0sXt0o7qd82xvtQRQSiGno1gaMGqhw==","signatures":[{"sig":"MEUCIQCiCE8imA8+b+4NedJIqeHGEMjJubZDkNVuAhVDjWzDSwIgHA4nNiwLOj3gSPC/h/IZmMrCoQo9QjUqNi/xPQyH29w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEzZ5CRA9TVsSAnZWagAA3+wP/R56yehpSOESfvXNBcsX\nsI74U88OeicjY7mPmp1Dqoi70dr6yUKpZFD/deRArguTEhak5l/3Co4oBsV2\nv7RynCcbcIO+pq3EQGuHMpqtRcsbAbPTDI42qUsRAx/iDs3w5r5jXmA1Vpjm\nBdHOpdqV+7ukudu/cRCx+AcXWZQUJVgSsnepkEeUvbRfMRjXa3uwo+REuozH\nl4+Av7CxWu//QP0HzwIEN2oyn2VwULJjKL3r9b61u1UatmXc2TWSQNJUu5rX\nepSbUSdYVbjKv/lhBzIsbQDdAWLAXRtEG7y28tnT26WV7PbxwPCm0JUxSjgT\n9ojiNlArjl9R6KEUVBxV8U1O5V6dUjTdU4SFvZ1s+qQ5C6PyOg1vrx+v143Y\nFGSlV3R0y66dca4Vk5BGURBzHvCv/llkWWAl8ULMc5lsC+2563U4JktBwwpJ\nKqAIq0kMwqFO2AzPNCVi3fGx5C/Zv0QvXbi+GRpvhdZhfyyLIpX3wWEVD/+k\nX5DY1iatdhOpdtzCWt/09FduVJZK+NkI8zG5S5BhO2KOGIMjBc4nS1k1TzXj\no0fPNVG9/d5oSuvRp/J2GB31zV6yVoJ5vrtlZhjW9kcQgcAsgx0O8tmEGdcY\ng4qCUWoK8Q6q1XsaBKE+NvDnPCTWXsTLDCUTHfoPw5x3IQR9DAuG0ZyKZ6MW\nuFvo\r\n=/z+p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","scripts":{"test":"tsc -b && bash scripts/test.sh","prepare":"tsc -b","version":"node ../../scripts/bump-changelog.js","prepublish":"rimraf dist *.tsbuildinfo","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"frangio","email":"frangio.1@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"_npmVersion":"6.14.8","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"12.20.0","dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.3.2","@openzeppelin/hardhat-upgrades":"^1.4.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.9.0","fgbg":"^0.1.4","sinon":"^9.2.4","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.4.2"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.4.3_1611871864604_0.00910278625378158","host":"s3://npm-registry-packages"}},"1.5.0-rc.0":{"name":"@openzeppelin/hardhat-defender","version":"1.5.0-rc.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.5.0-rc.0","maintainers":[{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"frangio","email":"frangio.1@gmail.com"}],"dist":{"shasum":"6cd8ffe68f6aa1db9b78dc0234f21b5a1fe1d976","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.5.0-rc.0.tgz","fileCount":21,"integrity":"sha512-ex8RSalGsA1ea8KC5FDuPh+J6RGsBFDwkLXsUG63+9ut4lX0Hzn5OsfDc/l5L4jpH4YmHQtdz1q6WLYba2+z6g==","signatures":[{"sig":"MEUCIGJRtYF1IlR+AwxupS1LSp3lcpJms/cIKQKn/niK3BXMAiEA7wPrqScKnivatWOUMP5vbpMoMZ/WgTD7P6pMglJVo9k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghv5eCRA9TVsSAnZWagAA6cwP/jLjN5/JUqALXAvZpSLP\nIhEy/FC0CC4fVzVyS3i5l7lane9J+pu7l0d9Vf1bzPM5I69+YOdEOnH382Jz\n6/tLbItnabJyFV1KJgXj9DtyrGFMJukbowbfUv/fL/MPmPv5XJOTeBY3ZYEk\nTkpRMWt8+ZBXohjUkIE7oox5g2TaRpSeZB8vN27WhalVdqo2fh+QDiqOmDEp\nvKbiQ0eE9LWY4qP9g4lCRmVAMslxysNbta4pBhY2JzKmzCnTsyGZv2Nh62RF\nLmfOKPs8w8bnrZhJUP1q0bMDl6R5MScOhGYKLk3Jm0wM8D7/deDTdnE9D8GG\nfJVGmqEUWWaMSnRHPaBOwka0ZlEwMX2SZBdSDd4e2fzCUcWjnR/yFY1c1pDU\nJIcJKuDyzAiaz94hQmgswe/isAY0R9uDgcMSBhxZJcIOhnw5DMgAzCW2jxVd\nwQ8vLmUGgq4OASwmthTN7hsI/k9CygxKoFjPdHx/hMWRH8EtxjqLIDp1HZpO\nu4dK1wy++7HktHiZurhm320/2datiWWjP4OowpLM68NRUMP+IdXkIK3UOKlt\nO9X8YypdM8gR3ir3m8KUrM2ma9C9Ae/KAaTjoQvIaQ/Rm5y/r1DJvio6M83z\naWbrKnOPLdXgWARSAyIRhoLP6S+GfkVuU2jB6FGBPU211KtjQBLnUeXLVSSm\nJOV0\r\n=iMHI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","scripts":{"test":"tsc -b && bash scripts/test.sh","prepare":"tsc -b","version":"node ../../scripts/bump-changelog.js","prepublish":"rimraf dist *.tsbuildinfo","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"frangio","email":"frangio.1@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.4.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.9.0","fgbg":"^0.1.4","sinon":"^10.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.4.2"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.5.0-rc.0_1619459677734_0.5786142924902138","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@openzeppelin/hardhat-defender","version":"1.5.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.5.0","maintainers":[{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"frangio","email":"frangio.1@gmail.com"}],"dist":{"shasum":"4578bc396281d9f14ed79826b0e3529fe2245e78","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.5.0.tgz","fileCount":21,"integrity":"sha512-DudeSUXoRFlRYmWvFTaAhkrq0ZcYdaqdSDXfNcpE+9rD526QkMOTbzstBo02JfdChN2QxUZTq93P8B8J6VZogg==","signatures":[{"sig":"MEQCIEo7wIJfYUDb9eyz4XrweJnF6r77TLxn7QkDhZwT3NcxAiAXHQAIUeh4GMjBzPw3gsGBiDc0Q0f+mIyv4M34panewg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi0UmCRA9TVsSAnZWagAAJxsP/3ecGBNCuz68OCBUx5I7\nIVUOJWiThVGnexuXdNM3KLTjwwTLfe9vxShAQGcHc5D1He3grt7pmJYYWhoI\n+i3b2p9ctgdBR2NfDYQTpsxTF12iU9rckGOtyZYzyNmgKv0DeJ92FF2t5jyX\n1xWqoGm4hV8Gnubb8Sgog//WyoM08JZdGCOsZGTow67ZtPKwJ2LEyuC/qyLz\nSq41+jHgU/p9/fSeJ+F4Jm+6R34N1bmrtO0h514ZtHQV0SMRjj1usRn8ydJ/\nMms8FU3dwqLlJ2d552mq2G6hg45jQrWZtGYPP6JljITBVyhyOqK8JvTpu2fY\nO/SUu3R3pVL2HNn7MDwgxP60SNcQNscm33zkHS/+/DygN+muOLE8/s6Fe+GH\nDAOFJr1jZ+zB818laqEZTYQBs4kUasHvbDAGjOM64ZxW1nPyIpiUbESeC7yX\nYs1r2xSWjsNx8iE4XLkJqbF/6XyJDiKIc3qAyA9U41qF6cYhdL6pq69/VeAn\n5gOYsNZ0Mjpz3UkcQiXliC7H3Zaj2uynqwxUm/6qRMas613szX2n4ZVtHGDF\nUkvJ1NLx0Vbk/y20q4on42vpeMXvY43XKW9XRGkKvw/FOtRgRpXsuTGWgPO5\n9kV2Dr6zKY+98qWGXq2NGTo/egbatN2iJAMH4sWnpInFW4bRYDD37koYmfvc\nCBim\r\n=uGYu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","scripts":{"test":"tsc -b && bash scripts/test.sh","prepare":"tsc -b","version":"node ../../scripts/bump-changelog.js","prepublish":"rimraf dist *.tsbuildinfo","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"frangio","email":"frangio.1@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.4.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.9.0","fgbg":"^0.1.4","sinon":"^10.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.4.2"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.5.0_1619739942129_0.1051044940681658","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"@openzeppelin/hardhat-defender","version":"1.5.1","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.5.1","maintainers":[{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"dist":{"shasum":"cb0f9ca98a9576d040e5e1b7ee6bef85b268dc50","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.5.1.tgz","fileCount":21,"integrity":"sha512-+6838ZYQAkMLPHBfa74vqIpjnsbrBLjYMPA1UvbiFeMgSgdjARIG/kv+aPTDkJH5QV16pak285QHQccbWZt9yQ==","signatures":[{"sig":"MEUCIQDl0xV/SB2Ges5vhw46iLSDfgihUg3ruHNX8Mcm2ldQ2QIgOT4BWaC9UUqf3476bJVGpCOKFqzgFrnBNoDnmR3We1U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2UriCRA9TVsSAnZWagAABM8P/iQSYOqsxW9Z+XDRxBHW\nUSeD3wArF888bRPvnQ3bd7IW3sLc1/BLixGZf2OPafsicjCOVCVULZNlikNq\n/RpFX3jzPnU2T29V6Eo7suKq3QNsJ7oFYYFyM8BrCimCZkDrlRqBqtvFb7oo\nnfdC1FDIFNhmd6vQ0oGW1gvTpCSD8BKL5H7QLw9tb3eyJAuKh1Yj64Ftrcid\nwit8YjbJGr6Qsd1fUNZbbgNhS+vszZTk4Vpv7vaVQpGWhkFFAiIxY5goY7hr\nLb3S7uQWD+KlAcTl78nefPBxL2v52NycMCHpqwBjT7zXLer5KZiCyBXVMRnA\n8rryyMF0R+Ieo1PnV0/i/9eRFolz7k7SRPljtOYmcrZCCXZU+0D8Byduhs62\nD4zo91BrFBNQ4RdCp8AM5nonjss6C3saCC6uMv+1ZfBp4sGf+KlS0ve5YH89\nmMJBVXo6FeJbUvc0NUcsCj7ps/qJaYtYEFeimLCsbqfOH52Sl2gRlawyw4r5\nbxnq24+K+yGjnHQ0MuRb8Nn1lUOCa5DeNb+I71TLjJj4CDQa5Af4chCSnS9s\nT9oRVFP6bXzp2daVQfvlHJlaAgZ+bIi9MfGFjUU9SP07CN1lArTdKmfUTHbf\nNas6ppc0VcXiTNsoMQZZ0d6YZiQtRBU5uUuQzb1QxtgI/Fzt0aZrCUVM2q3B\nOkVo\r\n=Nufj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"frangio","email":"frangio.1@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.4.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.9.0","fgbg":"^0.1.4","sinon":"^11.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.4.2"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.5.1_1636033285984_0.03503544374415313","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"@openzeppelin/hardhat-defender","version":"1.6.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.6.0","maintainers":[{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"19512a893a778ed58c833c7c1d350118193dd79a","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.6.0.tgz","fileCount":18,"integrity":"sha512-8LgE6fGI9D8WnhBEQQ3eOHL5gfW7G0fx5UktJdBPwUtQcD3kG4mVqqxj2zabTaC3NsimL7BZ+vsCdwKZ58jMFQ==","signatures":[{"sig":"MEQCICXwUxqOTwHvzSwVLv2W6GFkiQCbb6B6NiIiR6ZjakKTAiAqcEfbjvO1FStoQyq2EssbWsXqgG9cNiXsxiSF7WkrJQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19459,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3z8XCRA9TVsSAnZWagAA45wQAIQUKfkWzAoCpQmc6h3R\nq5d4MWJ35SvSIUXv7lQclSiS+/xEztkkpVl9usvJvp8XC8B5Bc9B/vwRuVDa\nvDfPo7mfuWXMHzVvVoAy5ydMLfVmXhMaLneuaKfsEetWK409fEdI1KZdGJpl\nUwICYkM/3BE50zpLOTn7aRILYZHo31a62xFO6vUIMEgjxkaBeDhMe0wSoAd2\nmxZbx0HtX2hGWA4In6XH4cV14LK2Lxd11+RpFmniOXnfrdPBYuKshBtMDV/4\n3N5G7r1cwMG5973cXeNR7uRMoBoL+KxSdXqRxW20vcKZ6Rw4FDJxLMWLh9gB\nYCtsNeK5UiKvOEzLPLXkgvoaxO/v9YeAR6K1oOQLV/wba31VGqIhChFxsScC\nP8YYT++u43LNz3MZnoZp9vZodYs/zArFvenydvnT/oxGB8n3r27ZeuIm5zLz\nXTWY/UC5gLg98d3fmqiWXjSMAcWqhGrky0CYS9lJLjQMm0+Vyw5W9oHaU0jP\nwh/GnDjbx0/qnoqqfEkmEkoJ5Vh9GHZYMGArgbPHbxi2X8LF9rs0ZkrJ91/r\nJCwte2WnCvVkSIjRUPTwL50gB+0No7TyFry9mZA7bqQtQrOR+VH0yL25IZkP\n54BqKz56g2K3NLVs0iFgyzUWFDHS8rkqzyQagEb0Q0GHcAkbmzoFK9yCvYoL\nztc4\r\n=sacc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"a32bd11a82ede9136d18de4cf0a1d18f44127103","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"frangio","email":"frangio.1@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (linux)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.13.1","dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.13.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.9.0","fgbg":"^0.1.4","sinon":"^12.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.11.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.6.0_1642020631718_0.42190053461793275","host":"s3://npm-registry-packages"}},"1.6.1":{"name":"@openzeppelin/hardhat-defender","version":"1.6.1","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.6.1","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"c832a6017902eb4d09601cba2c43e2c2770e7b7e","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.6.1.tgz","fileCount":18,"integrity":"sha512-eAxPlDhtMjUbRqsJBiVEvvAg8BnPdsLXDyq27DBdlEgEVraNaB/505GllBYHNIRn3TPOnK53SBhu8woU61Fu/Q==","signatures":[{"sig":"MEUCIAwZBLYFexWaxaZDWgKX13mFg+/RdSSq7CyjN2Z9GbDlAiEA7alujtruEOTprpV3tdRDPzH+8tnAzXjjPqoZaNHdxRo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilh8nACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrPRg//e5UAKGyVSLtxEAPPXj7PivNOrb0KA3M2P0FFnN6yO7tqlkgp\r\nvduKJy770d0/elxjVu1/tO2p1FvLa0dodU7wkCzbDg6/8zpQSVo0WYf4E6Mb\r\nV/jgVEnreU95DV9MTKkh7NpzBxRMygnz3Wk8okMn0PEq701WmjKwC0WKpuxc\r\nfUpP2rGxlh8DcUmi2ndTnAh0jI3+5KD4pk2R6d8C4qgPj5+oGpawkls4JQLL\r\nvRXH3mcOjUR9rhK0XCOt3SLiawFqmV9vVUf4BExKFrZmzhb/Dm7nbgR2XDWB\r\ndeuvwoVqHrAAnSUiRrGsUsow+pEutZsLNtPGB4wXcWFCCmH5Yd29QFPBc2mG\r\nMDvGhqX8Z7muwwsU+1dJrAoXkAGz4UzYALfCF+300Zq0VSKrzMkUDCDhVU7+\r\nJ8pJySqwjo9Lp6zMVTthQtAksdpEun+2lgbeUcD5Hojk77PHgYmwqJ22rJOj\r\nLzpiiPCOwDmvn5fEBCiptYskKTa0XLQO+s0Qu7xYw57xDj/KFqdpR+uxE0wG\r\nbQ5kW8r+KrR4n250mXlMI7WFD0tC9nZ6StLRbYOC8f1hLwIWCrkmoLbO4YPy\r\nXYIvi1274ebBqRM3SLIuS9B0n3k57l2bpaxgrWK3I7pFnIPMPAKyizkZVdku\r\n8+j2jgFXYD0+VxATtM16KQnwGWGeXgaewwI=\r\n=9wzq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"f7fa4d2a89ee87cad598a3796307411dec362eb9","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.0.0/node@v16.13.1+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.13.1","dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.13.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.11.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.6.1_1654005542827_0.9865844392559775","host":"s3://npm-registry-packages"}},"1.6.2":{"name":"@openzeppelin/hardhat-defender","version":"1.6.2","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.6.2","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"aed7413541d8925e462692143433d09623ddd15c","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.6.2.tgz","fileCount":18,"integrity":"sha512-6q5a1RHH0KL9EQPlH1cs6UFnockmuFFnz6X5EF2NVnU7R3Bh1CRFXFC9LTpatCtg0dqN2CZKiIH5fhSIlPBqEg==","signatures":[{"sig":"MEUCIH5Gc+X57dWIVR5cQeSeAQFCmUrOKtBfs9e83bRChTpMAiEAinES/mX2kZBcCzb6bNHfxiaWtK3+ad3HGyayNI14C5Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJimmVOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrq5w/+K/7nQohOThyJ04glng44rb4Oj8mpUcMfGovEXyCyPajNWwNN\r\n6woTwdpJkpkjUyrD5E5EEM1prWnLDEcMHpxtAaMrhPIZ0N59guGeypJ/e/RD\r\nuJiOqvA8GzUWrPCBmLJ/TO7krcoZBdEr9jTUXEeR1swUcpIyySz0+YjWS7HK\r\ngPhALspRwg5T9xyc7VjFnoF9OVHYn++dcbIV86orqLLQ4zvMjFePAaTnNGt1\r\nGvjRPGd8hvGBFHKfinf/VblwshHO+52VePoQ8COcrAjsqEssWQSivd3X1Bgy\r\n0Kb7VSBRJbMe3MMSxicUo4xyo6pwftLDmvHoRwcVqAxF6ImukoC7wbBk9GxG\r\n/UPermx11vR8dq3RAwqVD/tbqk5QOpAT1+u5410jdD0TBC0E8PkoOzlOspjV\r\nDhltgs/YAC8WRRsU3XzUioYj6cHxjaFrc3m3RugcPr7sqavmbDUAOVNigz7U\r\nUu5QI1YHIqnO0YsjVSFK7/7JdFQKP9nOl28lfFSAR8YMzVDcs2RTN3PAmGRt\r\nnhUzZPvmpHrBQBuh13IwNtpNdaK0eAo/OP5q9+JWjsXK1ZSijfhS4kpf1kTr\r\nDs7NX1aZ0mbh/k+rvzHavIIg2hrT3Mk2p1tEUVMgxJcjwuHiNCaW7OXPo2M7\r\nuqbgkhrRXXulwRFFsQXHvigR4qAyHXqwwKk=\r\n=6dBV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"50cae171588e1b5777c41ac9f10d168af7e632a2","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.0.0/node@v16.13.1+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.13.1","dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.18.1"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.15.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.6.2_1654285645936_0.1649144207783244","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"@openzeppelin/hardhat-defender","version":"1.7.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.7.0","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"de0aafdffe4530db1272fc01c271ab7efd227688","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.7.0.tgz","fileCount":18,"integrity":"sha512-4o1KTs03fomhEjBjWx9/p2rTy26l1Ls82+rgpUZaoej2UKEAG5n3YJeMEpQbG0Oir5DfbJqFD39tUck1gC8bfw==","signatures":[{"sig":"MEYCIQD/aoFtRC58LNLZ29vlDp5dO/pNqkjmBp+d97pLKad2dwIhAPpMoTdntvf1ENW3fycjMP4sDqRLJ6N50lX6GEb9t14n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiqz66ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpazRAAoWAfn+EniBuPHGPP4Es8TfUNEHIA0PPZ+6+eeIFS0BW/+T/K\r\n2jIzn3mBZJ6hvRfG0KLfFv4zLSFFOjsE4I5QjCbCJw6s0q2cuEFVaiqTL3kk\r\n8R0r9tYpwncTIG3taD4OkcLKFuGHqbih10j5LETtW2mSZZZp2WUuljQvpgwH\r\nvFSyN8TgKoUKRBhfpQnVIGQ77Vct72Dl6lbGEKnP8ZTsKVAVXP6oikA7ian2\r\nkF1hS15+6bGbC99S0ol0UvXT4OcGu2x4/n6sdF2jFgu6EKxXrKE36Q6k+H5a\r\nzHQCJ2i4zs4RHHIu5aM6peSiXdm2aGqUxFKXqsEvnfSSUv3cXPmUItwwZq7w\r\nKbjXIYpj74izs4bxU1rot75uceLOToXF1ASEU45u3zIwnMO4tx9s6sCL6Iti\r\n89/aJwbDPn6j9ZuWZJMNn9HJiCjTmOvfvxiV8qrWkCd+mk4o+AIhNx73geKd\r\nIIo6PUllLw0HCxq8RdgN0VMbqN3prc5t0UCxigvaMeDIKUCbgr6TEL9YSddy\r\nVtdAnvDLWW6yTQnxCYcRm+3H9lH9MBJ8ekefX8dvC2ssCjvvyi9kcKJDV7iT\r\n/vD08g2LAspE36+kv1AdgJcD4lzRTbRGKot9KZ2PJ9txrrWzXONyw9D8/yfh\r\nPqdlv4MPrlzPbZZzOfplK1zNXOmuzzBEZzk=\r\n=xLAZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"35ce088bb17487b282206d1b44026760da2622a3","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.1.4/node@v16.13.1+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.13.1","dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.19.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.16.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.7.0_1655389882040_0.3907957305444807","host":"s3://npm-registry-packages"}},"1.7.1":{"name":"@openzeppelin/hardhat-defender","version":"1.7.1","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.7.1","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"fd90aefbc67d4ad0617798e91ce2b3b51b4e307d","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.7.1.tgz","fileCount":18,"integrity":"sha512-xstc5No0t9RqlKZKnNl0oDJHAENUhNH1fOCETQ5W/VP7extgHM1GYVeB8ktr1wDWucNktPmyQuQTLT61S+xeSA==","signatures":[{"sig":"MEUCIQD0XAfzasm3UFqiZVkWxcF9do9qaIXkMhmB5YgTL0+XWQIgchTrm29vUFKza1VFjZbk5axcKywxm1Sdzw69aFIAtL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi8UhmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0MA/+P7JcqoVr5DPo7y5PBZEWEHZWpNYP7aHmldEU6IRsgnwfETdt\r\ns9+2m1Hgia6KE+TZmtfJa/WshihBqyVrMOwkBIU2T9Dgu9ZuwAUTCmj/qqwv\r\nrRR00fp6qqd+FT8OTBV1dbqSPxm/NaYYizVdHE0YZLJT1lxM5m+EohqtNG4e\r\nOgK0pHDFIvCFzgU3ksdFS9CE/eYy4el892G6rX8joD4CsiaG1EMT5xWaMZma\r\nvhqtU9Jc5sJORqi3FsyehYFbbtUy9r3Gnh9wbxexcvxYdeEXkAoeWp6IG7Ib\r\nv5oqrVv0SAsAFabfi0PwYkgbXuzSotWIa99iVVHzjQmmql0nvOz2qzQzqoLQ\r\nzFiWUeWwAi1CVwo/++rtHU76saBnj/j0GFLxcHjh1imgpUuSZk1l6UxVaPWq\r\na420AsMJdPQbrNOu8gwfd6zN1SWiz4kFa+VY4z936bFqvWQ40Q1CEmcIJ1C/\r\n0jRLEVAuNjzavthymnsmmaqwjp+f5rMI0lPOzjauCN5yX20Tjak+QumVtYaI\r\nfAfN9SPB5TgYic4bqVTR93faJP0HREayy3SeqT+1zsiwMAHpXpV9HxyANrKU\r\nyJbbNcN+P1XcD83ZIWUewNm4SjH3To+NUMCSow5XWzl5DEJH6rtpFp5yTdgx\r\npRM+FVmKhbpi8T7uYnh081uprd3idM2LWUQ=\r\n=dhBp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"a152e12fcb622faa49ceb51ba4c695a46c3f8106","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.1.8/node@v16.13.1+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.13.1","dependencies":{"defender-base-client":"^1.3.1","defender-admin-client":"^1.6.0-rc.0","@openzeppelin/hardhat-upgrades":"^1.20.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.7.1_1659979878646_0.8724681394966174","host":"s3://npm-registry-packages"}},"1.8.0-rc.0":{"name":"@openzeppelin/hardhat-defender","version":"1.8.0-rc.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.8.0-rc.0","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"spalladino","email":"spalladino@gmail.com"}],"dist":{"shasum":"4a28c3a88ef6f8943f434d5488af6c704ce7a2f1","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.8.0-rc.0.tgz","fileCount":28,"integrity":"sha512-iihBvmGCfT9a09PLJ3Hala1kcu5wY5IMAJ8s0jYgXxYIao7ACz4qg3qFWvw7QTZvY5F9A7N4qLc65hKas8DuJQ==","signatures":[{"sig":"MEUCIQC97PIwkeuVMYc9gnM6rByL3QOLxmuJ7hslvGwGP8Ov+QIgFObbnJFVPoF2n/JccfQDBmHVWgy8LnXDz2Ttw02Sun0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCSGZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdWQ/+J/g6PALHGFaER4VfAeLehbMylU9oHciIAjUKH4vazVhq0elo\r\n4QjtvTZFiI0iWSO9QLzSrZhRVQ+K/Yw0R7hq2mpPnqsYdNveYDs3wvTd1HW4\r\nvhlmW2WWkfhGbH+B2OsifZC/PTYKrAqjwFN8ILKetpLBnHQ546axC1RTg86c\r\nHuwGN1jtJn20AvRQnojQTa/GIxbm4g/FGZ/R7CBdlOxmoT652vQtx3p1fv01\r\nlnfQSnBaWHsK6DWu8Bz1M4MNHoA1zfh9ZqZ1lOFqR2OZ7/SwOb9EryNbCtVp\r\n8UU0OnDFgOFJcoZp2eVKNkDtIwzPSYWmjkGfFKvwcx+CFoYf0vLx67m4Yml/\r\n6Cx6f2zVrSbNuFu7w9/yjbJqKqZ3A4zseLT01CUJYw2GacRqod0Q5JOwREvq\r\nQcqa1Pddfu4G4l8ixrvzB296HXqOg+QuWqq1JKrCClkFAyyKA8LChDxAN+V2\r\nF8mGd2PPz4OtHENl8LRG43EmIvVFKTj83hxTSMsvqcnfzM6A6OhVUlBBmUTn\r\nF9Y8/u+BAMZs4Nfv2yot4pgZRoFWBRzuJWnO2BJINKrmQ3HiDxnBjLFpZTqe\r\nIbqvokDMZsUtpAHfkTXCAdfip6e8lTrNdMANLjv9KTY7f0Jj6A8CK+5QjCFK\r\n+FCxnmneTICZC8pNhDaSCB8LCKHTsxxR79o=\r\n=M/Yz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# OpenZeppelin Hardhat Defender\n\n[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades)\n[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-defender.svg)](https://www.npmjs.org/package/@openzeppelin/hardhat-defender)\n\n**Hardhat plugin for integrating upgrades and deployment verifications with OpenZeppelin Defender.** This package adds functions to your Hardhat scripts so you can propose upgrades for your contracts and approve them via [Defender Admin](https://docs.openzeppelin.com/defender/admin) (depends on `@openzeppelin/hardhat-upgrades` and `ethers.js`) and verify deployments.\n\n## Why?\n\nUse this package to manage upgrades for mainnet contracts using Hardhat scripts, and then approve them by a multisig through Defender Admin.\n\nYou can use `@openzeppelin/hardhat-upgrades` to deploy your upgradeable contracts via [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy), and then transfer the admin powers to a multi-signature wallet via [`transferProxyAdminOwnership`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#admin-transfer-proxy-admin-ownership) for additional security. \n\nWhen you want to upgrade, use `proposeUpgrade` to prepare the upgrade, and create a new upgrade proposal in Defender Admin. The multisig admins can then [review the upgrade in Defender](https://docs.openzeppelin.com/defender/admin#upgrades), and sign their approval.\n\n![Approve an Upgrade in Defender Admin](./assets/approve-upgrade.png)\n\nYou can also verify the deployment on Defender, which checks that the compilation artifact matches the deployed code, so reviewers can check that the new implementation matches the source code.\n\n![Review bytecode verification](./assets/verified-deploy.png)\n\n## Installation\n\n```\nnpm install --save-dev @openzeppelin/hardhat-defender\nnpm install --save-dev @nomiclabs/hardhat-ethers ethers # peer dependencies\n```\n\nRegister the plugin in your [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\n// Javascript\nrequire('@openzeppelin/hardhat-defender');\n\n// Typescript\nimport '@openzeppelin/hardhat-defender';\n```\n\nAnd add your Defender _Team API key_ to the exported configuration in [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\nmodule.exports = {\n  defender: {\n    apiKey: process.env.API_KEY,\n    apiSecret: process.env.API_SECRET,\n  }\n}\n```\n\n## Upgrades\n\nYou can use this plugin in a [Hardhat script](https://hardhat.org/guides/scripts.html) to propose an upgrade for a contract previously deployed with [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy):\n\n```js\n// scripts/propose-upgrade.js\nconst { defender } = require(\"hardhat\");\n\nasync function main() {\n  const BoxV2 = await ethers.getContractFactory(\"BoxV2\");\n  const proposal = await defender.proposeUpgrade(BOX_ADDRESS, BoxV2);\n  console.log(\"Upgrade proposal created at:\", proposal.url);\n}\n\nmain();\n```\n\nThis will automatically check that the `Box` contract deployed at `BOX_ADDRESS` can be safely upgraded to `BoxV2`, deploy the `BoxV2` implementation contract, and create a new upgrade proposal in Defender Admin.\n\nNote that `proposeUpgrade` will only deploy the implementation contract, but **will not change anything in your proxy contract**. Any changes must be approved by the upgrade admin(s), who can do so either via Defender or manually.\n\n## Verification\n\nYou can upload the compilation artifact for a contract to Defender, along with its deployment address. Defender will check that the code on chain matches the artifact, and display a verification notice on the application.\n\n```js\n// scripts/verify-deploy.js\nconst { defender } = require('hardhat');\n\nasync function main() {\n  const verification = await defender.verifyDeployment(BOX_ADDRESS, 'Box', MY_REPO_URL);\n  console.log(`Verified artifact with hash`, verification.providedSha256);\n}\n\nmain();\n```\n\nAlternatively, you can also upload the compilation artifact to a public URL and then have Defender retrieve the artifact from that location for verification, through the `verifyDeploymentWithUploadedArtifact` function. You can get the artifact to upload for a specific contract using `getDeploymentArtifact`, or an artifact that contains the build info for all your contracts using `getDeploymentBuildInfo`. You can also get the hash of the artifact for a given contract using `getBytecodeDigest` to check for matches against a pre existing verification on Defender.\n\n## Learn more\n\n* Refer to the [API documentation](https://docs.openzeppelin.com/upgrades-plugins/api-hardhat-upgrades).\n* Also see the [main documentation](https://docs.openzeppelin.com/upgrades-plugins) for more info.\n* And check the [Defender Admin documentation](https://docs.openzeppelin.com/defender/admin) to learn more about managing your contracts with Defender.\n","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"spalladino","email":"spalladino@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"_npmVersion":"6.14.17","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"14.20.0","dependencies":{"ethereumjs-util":"^7.1.5","defender-base-client":"^1.3.1","defender-admin-client":"^1.29.0-rc.1","@openzeppelin/hardhat-upgrades":"^1.20.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.8.0-rc.0_1661542809040_0.09875551521891901","host":"s3://npm-registry-packages"}},"1.8.0-rc.1":{"name":"@openzeppelin/hardhat-defender","version":"1.8.0-rc.1","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.8.0-rc.1","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"spalladino","email":"spalladino@gmail.com"}],"dist":{"shasum":"045068ba839ce81d6a04464222fbf6ffd60a0f0f","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.8.0-rc.1.tgz","fileCount":28,"integrity":"sha512-gGqataZeXpYhy5r/nhTlHYofrzdpR4hGKLvqr7MXR2NspfKb7OJQLsd2aX3orTfSA7bAdGk3S0UHaXKu8qX31g==","signatures":[{"sig":"MEQCIGgBrqDW2i/j3mtMzW2uTTf3C0JckCuP4XZFyPCqEDOMAiBoZAt0aB5R/bjA28IFPqCcLC3yioE8NUUG8luG+T05xQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCVonACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrSHw/9G6npJFMrOmqciStqg2eu+5qdz1fkurbNY40UnWhPoSdB4wfB\r\n1U9+ugP0ZD7UbOhCqTmZkVdumcZlp01Khjg8u6MVEJFJhIUg9KumxEx64XqO\r\nH6BiMCE2/YwrAWMADciC1x+NY/YVwTOJjncq+AjyhqAqOjBFaT4XdBIT0laI\r\nh/Hpc9QaUQ8pSD0l2NCK0KwHK3fVs2fqW3vExqlYDD6pd0qIjxODgp+w+st6\r\ne/DrrqftLu0Yr2acyK4vukhIH/HjwmjHRGF7th9USszYapB5NLNbXF1bzKY3\r\n9uAmPA2Yj9Q4ZY8EmV6RNc768t9TryNIauutlUip5OEjL2SOJBcB9uPvQKdU\r\nFo9I5hhAS7//qAheaxo4OJ2WcNfKAUg/1xbo/5Xbg4MOFwCCx5yDtPR6D0o3\r\n9TpH9aQ2U8ABe45JLBS/9bj8jnBugxOYPSfEJhXM2W+41oYWcGMPM/poFe8W\r\nJaQ/jJ+8oWAxYJEVoYjsigcOF8FMc1nbp39l6Bkr/xlQYQgBC4TgM68O6tle\r\nxQzU10BAIthegwzWDT+To3U+EgD5w6NRGJXJZxGbaUwIz1F9vw2L0PyrKFdS\r\n3G8OTYEAl/b87zrhhuPWJ6Y09zoJPlo6lrgkBMBbzFbKq+sRPmcujmdVqerl\r\nCgLHEhN7dRrJZh/MSD9y8wINPFAnwvIDNGU=\r\n=kVay\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","readme":"# OpenZeppelin Hardhat Defender\n\n[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades)\n[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-defender.svg)](https://www.npmjs.org/package/@openzeppelin/hardhat-defender)\n\n**Hardhat plugin for integrating upgrades and deployment verifications with OpenZeppelin Defender.** This package adds functions to your Hardhat scripts so you can propose upgrades for your contracts and approve them via [Defender Admin](https://docs.openzeppelin.com/defender/admin) (depends on `@openzeppelin/hardhat-upgrades` and `ethers.js`) and verify deployments.\n\n## Why?\n\nUse this package to manage upgrades for mainnet contracts using Hardhat scripts, and then approve them by a multisig through Defender Admin.\n\nYou can use `@openzeppelin/hardhat-upgrades` to deploy your upgradeable contracts via [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy), and then transfer the admin powers to a multi-signature wallet via [`transferProxyAdminOwnership`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#admin-transfer-proxy-admin-ownership) for additional security. \n\nWhen you want to upgrade, use `proposeUpgrade` to prepare the upgrade, and create a new upgrade proposal in Defender Admin. The multisig admins can then [review the upgrade in Defender](https://docs.openzeppelin.com/defender/admin#upgrades), and sign their approval.\n\n![Approve an Upgrade in Defender Admin](./assets/approve-upgrade.png)\n\nYou can also verify the deployment on Defender, which checks that the compilation artifact matches the deployed code, so reviewers can check that the new implementation matches the source code.\n\n![Review bytecode verification](./assets/verified-deploy.png)\n\n## Installation\n\n```\nnpm install --save-dev @openzeppelin/hardhat-defender\nnpm install --save-dev @nomiclabs/hardhat-ethers ethers # peer dependencies\n```\n\nRegister the plugin in your [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\n// Javascript\nrequire('@openzeppelin/hardhat-defender');\n\n// Typescript\nimport '@openzeppelin/hardhat-defender';\n```\n\nAnd add your Defender _Team API key_ to the exported configuration in [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\nmodule.exports = {\n  defender: {\n    apiKey: process.env.API_KEY,\n    apiSecret: process.env.API_SECRET,\n  }\n}\n```\n\n## Upgrades\n\nYou can use this plugin in a [Hardhat script](https://hardhat.org/guides/scripts.html) to propose an upgrade for a contract previously deployed with [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy):\n\n```js\n// scripts/propose-upgrade.js\nconst { defender } = require(\"hardhat\");\n\nasync function main() {\n  const BoxV2 = await ethers.getContractFactory(\"BoxV2\");\n  const proposal = await defender.proposeUpgrade(BOX_ADDRESS, BoxV2);\n  console.log(\"Upgrade proposal created at:\", proposal.url);\n}\n\nmain();\n```\n\nThis will automatically check that the `Box` contract deployed at `BOX_ADDRESS` can be safely upgraded to `BoxV2`, deploy the `BoxV2` implementation contract, and create a new upgrade proposal in Defender Admin.\n\nNote that `proposeUpgrade` will only deploy the implementation contract, but **will not change anything in your proxy contract**. Any changes must be approved by the upgrade admin(s), who can do so either via Defender or manually.\n\n## Verification\n\nYou can upload the compilation artifact for a contract to Defender, along with its deployment address. Defender will check that the code on chain matches the artifact, and display a verification notice on the application.\n\n```js\n// scripts/verify-deploy.js\nconst { defender } = require('hardhat');\n\nasync function main() {\n  const verification = await defender.verifyDeployment(BOX_ADDRESS, 'Box', MY_REPO_URL);\n  console.log(`Verified artifact with hash`, verification.providedSha256);\n}\n\nmain();\n```\n\nAlternatively, you can also upload the compilation artifact to a public URL and then have Defender retrieve the artifact from that location for verification, through the `verifyDeploymentWithUploadedArtifact` function. You can get the artifact to upload for a specific contract using `getDeploymentArtifact`, or an artifact that contains the build info for all your contracts using `getDeploymentBuildInfo`. You can also get the hash of the artifact for a given contract using `getBytecodeDigest` to check for matches against a pre existing verification on Defender.\n\n## Learn more\n\n* Refer to the [API documentation](https://docs.openzeppelin.com/upgrades-plugins/api-hardhat-upgrades).\n* Also see the [main documentation](https://docs.openzeppelin.com/upgrades-plugins) for more info.\n* And check the [Defender Admin documentation](https://docs.openzeppelin.com/defender/admin) to learn more about managing your contracts with Defender.\n","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"spalladino","email":"spalladino@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"_npmVersion":"6.14.17","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"14.20.0","dependencies":{"ethereumjs-util":"^7.1.5","defender-base-client":"^1.3.1","defender-admin-client":"^1.29.0-rc.1","@openzeppelin/hardhat-upgrades":"^1.20.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.8.0-rc.1_1661557287414_0.46686372259822706","host":"s3://npm-registry-packages"}},"1.8.0":{"name":"@openzeppelin/hardhat-defender","version":"1.8.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.8.0","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"spalladino","email":"spalladino@gmail.com"}],"dist":{"shasum":"3c1abc09f1871a76c98c32c5a5dd2a1d0d13f647","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.8.0.tgz","fileCount":28,"integrity":"sha512-BlWpfzPHzEjJYL5rwkLVLlfpr+1R6a1uil24/lLvYZYfsKALQuSvaZRksH1Y/WVBZHeUap5rMAzKLUauTHoCyg==","signatures":[{"sig":"MEQCIB1O0gIOy/rXvvXxqCtZ55KG1E8n9ra1O3IlZHa8Lc6yAiA7DqXPAvzcPZTFsdu6W5OlIawtRQvq5ASq0daJ+uXxiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDRn5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/sg//eWYjLHPUuYlgYKdBLQs0jvYvE0ZnFppOlh4hEvAIl0/zgPn/\r\nbg5ByO3YL2btR212Hwu91ptSOPEClNycqPVyVtn13NPs8N18PCBzxUKCAidd\r\n8th69FB7iw/wyn2oiix+ReWMzwqZ/a4Y9xNG55zA/F9pfU0UEXYpAxSY3n88\r\n7dI6rFvj5fovqJwoPdHyozgrz2mO5BBKGAgLo7F9Nh2l/TZKLiin5q/hkimG\r\n5HhKXs6LDMIWKKJxIpsbJbyumqBidXy2SYyn6SVDkAE+V9CJ+yoOTc8Zmdvz\r\nhIiKjDdRfz7a64N3UcPBaVcmh1kBN7mYAhoBv026J9S7+9CEZRMMz+YR0WjE\r\nlathNmmYVu38HY9rJkPrtQXKWvuEjbSZcDKs4ZfkbAHpjWTgUPTwB++fFd/H\r\n0I/q0ZLfAWIRnDIW/60iLE01XTxv85HRCRVx0vSNiEsTsWwL+S/IpEX3AHlz\r\n2fmkDhKunbpsiB7eSbjpRU+5HMybIQcE8EgJb43osFEnr4IOmGdLHwbRevRk\r\nNFZ4do5rlC+NLBWX8PFiuUKrcvkCtDeHDW+LgnaFOkSYPqufaQMkyt4WT5qo\r\npacyCQv5s6QE1PLQhYnW0YwVO8zrMiFnaajm48RQihYsI8BtIiUePHnA5iXv\r\n4IuUcJsNL+2Osn6eOUh/knqObr9TwaXNPJI=\r\n=Puuk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"spalladino","email":"spalladino@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"_npmVersion":"6.14.16","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"12.22.12","dependencies":{"ethereumjs-util":"^7.1.5","defender-base-client":"^1.3.1","defender-admin-client":"^1.29.0-rc.1","@openzeppelin/hardhat-upgrades":"^1.20.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.8.0_1661803000867_0.902755644618884","host":"s3://npm-registry-packages"}},"1.8.1":{"name":"@openzeppelin/hardhat-defender","version":"1.8.1","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.8.1","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"spalladino","email":"spalladino@gmail.com"}],"dist":{"shasum":"d2527cc7898f76cf45ba51b0aaa40075ef742b52","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.8.1.tgz","fileCount":31,"integrity":"sha512-vXfNSteO4xi8iGe/CRU5en2t6sbH8T4dIhrhZLa3TYke7LUt5du4GPFv74Kie+KIynPzAeVNEdW9suqDZNLYwA==","signatures":[{"sig":"MEQCIFAWURB1724DG990/Khzx2s6OknLbnDNaalK1NNXFR8hAiAV/DYJ8RJ59pYKu90GGt+Dn4MdcYp/9Mqu0E74wOCMRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjM33rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxKhAAoen3GPD4rqOAEpOoegi3DkKSWhEPw8kBZcdBePZj92Sh3OOj\r\nGI0nOMZ8WuGfzoOXQNUnsrQMNKpFFyd38XQKfRqZh6T53HABDXdpzyw9XRt+\r\nHhlxFIjEf31Jpn0vleU8MTS3WHyZxt/uWNhiBDhnpljPFqGx4n3jsMmGSWiA\r\nsNfSj1QJjnqNMNe3A9UERS0sg3nzpxqXeEt5VWIilaJ+ED+arXWuBXfud410\r\n1rxGP/zADp5H/wVtCF36WgwDYGBafC3k/yWudJMLmEyOAW0ArU+YGlUzrxxF\r\n2G+KEfWZRAgbYTz/czIu81c3PR7qnwkgeJghXaMZc7T7fazHrZQ/GJy1ydYL\r\nvbYQjfHX52D4F/5se2TTCnxM4iMHglUHACxDi2uUAQyh1qx4CN6myFfukBDM\r\nnQKZoxY4xDIddU97l5A3kwZSehm5rakoAEOfRThN6Vb6V8A8ILmIHCw4YOaa\r\no932AfVRFah8fDMf3NPVTxCWhX4YqyzigHvc2i4RkbE25ITcuXd8gfyNsMmT\r\ngW8JH3jFp6Y/ZLdxegGEimiIEgW+dcrW2M01r3YX5niRrPZKZ2Gd9V5ljAsJ\r\nbQrWvnU5/fnB2QDMCP9legh9CgzZIjFgLVxsD6J88NN6meIK2dniEVl9vYiJ\r\nyP/6Y9FkYX82j+iDPXquI+v7XYGjJlBJU+Q=\r\n=m3cE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"frangio","email":"frangio.1@gmail.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"dependencies":{"ethereumjs-util":"^7.1.5","defender-base-client":"^1.3.1","defender-admin-client":"^1.29.0-rc.1","@openzeppelin/hardhat-upgrades":"^1.20.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^4.0.0","fgbg":"^0.1.4","sinon":"^14.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.8.1_1664318955168_0.5864452907692719","host":"s3://npm-registry-packages"}},"1.8.2":{"name":"@openzeppelin/hardhat-defender","version":"1.8.2","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.8.2","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"138709fb7b68385aa79a73abd4abf8644b570136","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.8.2.tgz","fileCount":28,"integrity":"sha512-hYxvaVOqgJ3myjF4NQznMG1puSO/owwhUThCeDq/Rcstou4XjSn7rm72u+SrXA34eMiCSaN6m6l9bDUp966tHQ==","signatures":[{"sig":"MEQCIFq5vCdzDmiXrKfE7UbmRIN0q9MqIrBr5qh5la+9gs9uAiBQV/BaKL0pd3fscdkcXc/82KPO7OX7BgHjvU//w7LpBQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj69dDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopBQ/+IMwhsKcqgPTK0J0lR6GZVUjPt4uGSSimJbMwGekttIH+qCY5\r\nk7ARTvrR1fotsafUPb9+ngGqXbDzmD5hE5Rh3IIzNJC98w1RsBX1Q2AHSfKM\r\nf2WAxILWhdPa/oeLx2tkvT39R9Q4ZuAzl7F9n9NfLBAcUQ5SaekIy3mZYlMu\r\nam7Bon7WZmV2RV/WN4l4oNev5tqMwYuV3PfYxL3832mhbpG1NRQ90pLDj7w3\r\nCoPRi4uhC3Ra70Ssdl76LMEpGqRO5jUV1lOZ05oGir0sRYrpiw0fRAFVM+cr\r\nRh0qTkOtFcsDTU6HqU3T713JzopilEcBaPincDHIElBOhQNaNACdFjq7FBEF\r\nttEMzyat4knhETXNCVRLzuVPCr4ZyyOLtc7kk0bE6EWsVYYCwWFc3M7rhFzy\r\nYmkXsEMhzel2S/UGzLWcBYGKP0mVqtt7LSkvrTZ7uwuWP+D0OkPtaw4GlXaG\r\nm8GDUmfNbp8rQ08MZ589zQSOHDbBI8PzV9BYiGjBPDnM5Gz1XaYHQ+SsIbyu\r\noopfNy9iyhkPKf9Zh1MTXsCKeLqxi5IRO9RmMHu+6fdeytxUDmGY0LaWWu20\r\nHBm497+4K9ikoZ0kLbh9VenrlZ524WHdxldG3rtH+j/Mds1P0mQt/81TckYc\r\nBSrug6NRALvv/nlfT/snv6XbyV2gOQwb1LY=\r\n=8YJX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"0fa525f2878cc86b3411c3398891271fa93c02a6","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.6.2/node@v16.18.0+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.18.0","dependencies":{"ethereumjs-util":"^7.1.5","defender-base-client":"^1.3.1","defender-admin-client":"^1.29.0-rc.1","@openzeppelin/hardhat-upgrades":"^1.20.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^5.0.0","fgbg":"^0.1.4","sinon":"^15.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.8.2_1676400451153_0.8319489143882977","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"@openzeppelin/hardhat-defender","version":"1.9.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@1.9.0","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"dylkil","email":"dylankilkenny95@gmail.com"},{"name":"mok0230","email":"dpmckeon@gmail.com"},{"name":"zeljkox","email":"zeljko89markovic@gmail.com"},{"name":"namis","email":"me@nami.sh"},{"name":"tirumerla","email":"tirumerla@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"8773a41137642e9287e4350a4970e7fb3e56d004","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-1.9.0.tgz","fileCount":28,"integrity":"sha512-dl2pQyBvwEZVq1sgw/i+mLQiu4ZD7iKn2/ghD9RbAGHIM8hZQ4ou8cXl1S6wCA92prpeO1rPGQ+NcJajbY4MCw==","signatures":[{"sig":"MEUCIQC7Pv16OjoBVDQnIWyoQ28gYXIR89SfpHw8Qc1i6P7nCwIgF+mNpTRHZFo9EvEhpxUIL17ESiZ/+l1ZsrF1mBLWRms=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42272},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"58f7978f68fea6ba9fe7dea5364fb9412e177071","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.6.2/node@v16.20.0+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.20.0","dependencies":{"ethereumjs-util":"^7.1.5","@openzeppelin/hardhat-upgrades":"^1.20.0","@openzeppelin/defender-base-client":"^1.46.0","@openzeppelin/defender-admin-client":"^1.46.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^5.0.0","fgbg":"^0.1.4","sinon":"^15.0.0","ethers":"^5.0.5","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@nomiclabs/hardhat-ethers":"^2.0.0","@openzeppelin/upgrades-core":"^1.18.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_1.9.0_1686780086919_0.29799421627003264","host":"s3://npm-registry-packages"}},"2.0.0-alpha.0":{"name":"@openzeppelin/hardhat-defender","version":"2.0.0-alpha.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@2.0.0-alpha.0","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"dylkil","email":"dylankilkenny95@gmail.com"},{"name":"mok0230","email":"dpmckeon@gmail.com"},{"name":"zeljkox","email":"zeljko89markovic@gmail.com"},{"name":"namis","email":"me@nami.sh"},{"name":"tirumerla","email":"tirumerla@gmail.com"}],"dist":{"shasum":"2099d92e0510ad7390f30097104489500e9cf41f","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-2.0.0-alpha.0.tgz","fileCount":31,"integrity":"sha512-qSUCSWZRsgSS2sz4975LXlAr4ps6y7YpqrFogdHpcj5AEYWijNXKlHa2sX5m6YVSlvNpIv5UxLe0sh3YDLBHMw==","signatures":[{"sig":"MEUCIQCRxpcDZrUN7hoAa+rWs/pPMXpjiDhqQqh+ZplsTBpirgIgcOPyEt8sMVoD225f/GYNS5ad199vXfvwI5itfw72RLY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42781},"main":"dist/index.js","readme":"# OpenZeppelin Hardhat Defender\n\n[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades)\n[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-defender.svg)](https://www.npmjs.org/package/@openzeppelin/hardhat-defender)\n\n**Hardhat plugin for integrating upgrades and deployment verifications with OpenZeppelin Defender.** This package adds functions to your Hardhat scripts so you can propose upgrades for your contracts and approve them via [Defender Admin](https://docs.openzeppelin.com/defender/admin) (depends on `@openzeppelin/hardhat-upgrades` and `ethers.js`) and verify deployments.\n\n## Why?\n\nUse this package to manage upgrades for mainnet contracts using Hardhat scripts, and then approve them by a multisig through Defender Admin.\n\nYou can use `@openzeppelin/hardhat-upgrades` to deploy your upgradeable contracts via [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy), and then transfer the admin powers to a multi-signature wallet via [`transferProxyAdminOwnership`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#admin-transfer-proxy-admin-ownership) for additional security. \n\nWhen you want to upgrade, use `proposeUpgrade` to prepare the upgrade, and create a new upgrade proposal in Defender Admin. The multisig admins can then [review the upgrade in Defender](https://docs.openzeppelin.com/defender/admin#upgrades), and sign their approval.\n\n![Approve an Upgrade in Defender Admin](./assets/approve-upgrade.png)\n\nYou can also verify the deployment on Defender, which checks that the compilation artifact matches the deployed code, so reviewers can check that the new implementation matches the source code.\n\n![Review bytecode verification](./assets/verified-deploy.png)\n\n## Installation\n\n```\nnpm install --save-dev @openzeppelin/hardhat-defender\nnpm install --save-dev @nomiclabs/hardhat-ethers ethers # peer dependencies\n```\n\nRegister the plugin in your [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\n// Javascript\nrequire('@openzeppelin/hardhat-defender');\n\n// Typescript\nimport '@openzeppelin/hardhat-defender';\n```\n\nAnd add your Defender _Team API key_ to the exported configuration in [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\nmodule.exports = {\n  defender: {\n    apiKey: process.env.API_KEY,\n    apiSecret: process.env.API_SECRET,\n  }\n}\n```\n\n## Upgrades\n\nYou can use this plugin in a [Hardhat script](https://hardhat.org/guides/scripts.html) to propose an upgrade for a contract previously deployed with [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy):\n\n```js\n// scripts/propose-upgrade.js\nconst { defender } = require(\"hardhat\");\n\nasync function main() {\n  const BoxV2 = await ethers.getContractFactory(\"BoxV2\");\n  const proposal = await defender.proposeUpgrade(BOX_ADDRESS, BoxV2);\n  console.log(\"Upgrade proposal created at:\", proposal.url);\n}\n\nmain();\n```\n\nThis will automatically check that the `Box` contract deployed at `BOX_ADDRESS` can be safely upgraded to `BoxV2`, deploy the `BoxV2` implementation contract, and create a new upgrade proposal in Defender Admin.\n\nNote that `proposeUpgrade` will only deploy the implementation contract, but **will not change anything in your proxy contract**. Any changes must be approved by the upgrade admin(s), who can do so either via Defender or manually.\n\n## Verification\n\nYou can upload the compilation artifact for a contract to Defender, along with its deployment address. Defender will check that the code on chain matches the artifact, and display a verification notice on the application.\n\n```js\n// scripts/verify-deploy.js\nconst { defender } = require('hardhat');\n\nasync function main() {\n  const verification = await defender.verifyDeployment(BOX_ADDRESS, 'Box', MY_REPO_URL);\n  console.log(`Verified artifact with hash`, verification.providedSha256);\n}\n\nmain();\n```\n\nAlternatively, you can also upload the compilation artifact to a public URL and then have Defender retrieve the artifact from that location for verification, through the `verifyDeploymentWithUploadedArtifact` function. You can get the artifact to upload for a specific contract using `getDeploymentArtifact`, or an artifact that contains the build info for all your contracts using `getDeploymentBuildInfo`. You can also get the hash of the artifact for a given contract using `getBytecodeDigest` to check for matches against a pre existing verification on Defender.\n\n## Learn more\n\n* Refer to the [API documentation](https://docs.openzeppelin.com/upgrades-plugins/api-hardhat-upgrades).\n* Also see the [main documentation](https://docs.openzeppelin.com/upgrades-plugins) for more info.\n* And check the [Defender Admin documentation](https://docs.openzeppelin.com/defender/admin) to learn more about managing your contracts with Defender.\n","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master/packages/plugin-defender-hardhat","type":"git"},"description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"dependencies":{"ethereumjs-util":"^7.1.5","@openzeppelin/hardhat-upgrades":"^2.0.0-alpha.0","@openzeppelin/defender-base-client":"^1.46.0","@openzeppelin/defender-admin-client":"^1.46.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^5.0.0","fgbg":"^0.1.4","sinon":"^15.0.0","ethers":"^6.6.0","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@openzeppelin/upgrades-core":"^1.18.0","@nomicfoundation/hardhat-ethers":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_2.0.0-alpha.0_1687290900132_0.5086288986670964","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@openzeppelin/hardhat-defender","version":"2.0.0","license":"MIT","_id":"@openzeppelin/hardhat-defender@2.0.0","maintainers":[{"name":"ericglau","email":"ericglau@outlook.com"},{"name":"frangio","email":"frangio.1@gmail.com"},{"name":"amxx","email":"hadrien.croubois@gmail.com"},{"name":"dylkil","email":"dylankilkenny95@gmail.com"},{"name":"mok0230","email":"dpmckeon@gmail.com"},{"name":"zeljkox","email":"zeljko89markovic@gmail.com"},{"name":"namis","email":"me@nami.sh"},{"name":"tirumerla","email":"tirumerla@gmail.com"}],"homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"dist":{"shasum":"80f9dcc6fc3b9312a9d47aff6b665db290915ae9","tarball":"https://registry.npmjs.org/@openzeppelin/hardhat-defender/-/hardhat-defender-2.0.0.tgz","fileCount":28,"integrity":"sha512-fpY7mmcgBWDW82R+/pY/C1+LMjyUo6c8kwtMbUZlnnD98cTVGUgqm9via82mjTFgbfC/3hyljVAzCYctR5bOnQ==","signatures":[{"sig":"MEQCIGiSgSnDVXG4T73EIh+Lx5XYxVnfuAkq4eQn+udJkfRZAiB0zQjB8DZhSi8ZEN+QIfrQ/DWQIc5Je+Jk2DjHcXAcPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":42146},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"51d655dff656f485a63682a4db0369c8f64c25fe","scripts":{"test":"tsc -b && bash scripts/test.sh","clean":"rimraf dist *.tsbuildinfo","compile":"tsc -b","prepare":"yarn clean && yarn compile","version":"node ../../scripts/bump-changelog.js","test:watch":"fgbg 'bash scripts/test.sh --watch' 'tsc -b --watch' --"},"_npmUser":{"name":"ericglau","email":"ericglau@outlook.com"},"deprecated":"@openzeppelin/hardhat-defender is deprecated. This functionality is now included as part of @openzeppelin/hardhat-upgrades","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"_npmVersion":"lerna/5.6.2/node@v16.20.0+arm64 (darwin)","description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","directories":{},"_nodeVersion":"16.20.0","dependencies":{"ethereumjs-util":"^7.1.5","@openzeppelin/hardhat-upgrades":"^2.0.0","@openzeppelin/defender-base-client":"^1.46.0","@openzeppelin/defender-admin-client":"^1.46.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^5.0.0","fgbg":"^0.1.4","sinon":"^15.0.0","ethers":"^6.6.0","rimraf":"^3.0.2","hardhat":"^2.0.2","proxyquire":"^2.1.3","promisified":"^0.5.0","@types/mocha":"^7.0.2","@openzeppelin/upgrades-core":"^1.18.0","@nomicfoundation/hardhat-ethers":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hardhat-defender_2.0.0_1688566119798_0.5824600323461613","host":"s3://npm-registry-packages"}}},"time":{"created":"2021-01-28T22:11:04.420Z","modified":"2026-09-24T16:19:27.101Z","1.4.3":"2021-01-28T22:11:04.713Z","1.5.0-rc.0":"2021-04-26T17:54:37.840Z","1.5.0":"2021-04-29T23:45:42.495Z","1.5.1":"2021-11-04T13:41:26.128Z","1.6.0":"2022-01-12T20:50:31.892Z","1.6.1":"2022-05-31T13:59:03.113Z","1.6.2":"2022-06-03T19:47:26.156Z","1.7.0":"2022-06-16T14:31:22.192Z","1.7.1":"2022-08-08T17:31:18.802Z","1.8.0-rc.0":"2022-08-26T19:40:09.290Z","1.8.0-rc.1":"2022-08-26T23:41:27.597Z","1.8.0":"2022-08-29T19:56:41.106Z","1.8.1":"2022-09-27T22:49:15.396Z","1.8.2":"2023-02-14T18:47:31.401Z","1.9.0":"2023-06-14T22:01:27.127Z","2.0.0-alpha.0":"2023-06-20T19:55:00.313Z","2.0.0":"2023-07-05T14:08:39.997Z"},"bugs":{"url":"https://github.com/OpenZeppelin/openzeppelin-upgrades/issues"},"license":"MIT","homepage":"https://github.com/OpenZeppelin/openzeppelin-upgrades/tree/master#readme","repository":{"url":"git+https://github.com/OpenZeppelin/openzeppelin-upgrades.git#master","type":"git"},"description":"Hardhat plugin to propose smart contract upgrades on OpenZeppelin Defender","maintainers":[{"email":"ernesto@openzeppelin.com","name":"ernestognw"},{"email":"hadrien.croubois@gmail.com","name":"amxx"},{"email":"ericglau@outlook.com","name":"ericglau"},{"email":"arr00@daodudes.com","name":"arr00"},{"email":"luiz.vasconcelos@openzeppelin.com","name":"luiz-lvj"},{"email":"son.dinh@openzeppelin.com","name":"son-oz"},{"email":"collins.wekesa@openzeppelin.com","name":"collins-oz"},{"email":"tirumerla@gmail.com","name":"tirumerla"}],"readme":"# OpenZeppelin Hardhat Defender\n\n[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades)\n[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-defender.svg)](https://www.npmjs.org/package/@openzeppelin/hardhat-defender)\n\n**Hardhat plugin for integrating upgrades and deployment verifications with OpenZeppelin Defender.** This package adds functions to your Hardhat scripts so you can propose upgrades for your contracts and approve them via [Defender Admin](https://docs.openzeppelin.com/defender/admin) (depends on `@openzeppelin/hardhat-upgrades` and `ethers.js`) and verify deployments.\n\n## Why?\n\nUse this package to manage upgrades for mainnet contracts using Hardhat scripts, and then approve them by a multisig through Defender Admin.\n\nYou can use `@openzeppelin/hardhat-upgrades` to deploy your upgradeable contracts via [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy), and then transfer the admin powers to a multi-signature wallet via [`transferProxyAdminOwnership`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#admin-transfer-proxy-admin-ownership) for additional security. \n\nWhen you want to upgrade, use `proposeUpgrade` to prepare the upgrade, and create a new upgrade proposal in Defender Admin. The multisig admins can then [review the upgrade in Defender](https://docs.openzeppelin.com/defender/admin#upgrades), and sign their approval.\n\n![Approve an Upgrade in Defender Admin](./assets/approve-upgrade.png)\n\nYou can also verify the deployment on Defender, which checks that the compilation artifact matches the deployed code, so reviewers can check that the new implementation matches the source code.\n\n![Review bytecode verification](./assets/verified-deploy.png)\n\n## Installation\n\n```\nnpm install --save-dev @openzeppelin/hardhat-defender\nnpm install --save-dev @nomiclabs/hardhat-ethers ethers # peer dependencies\n```\n\nRegister the plugin in your [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\n// Javascript\nrequire('@openzeppelin/hardhat-defender');\n\n// Typescript\nimport '@openzeppelin/hardhat-defender';\n```\n\nAnd add your Defender _Team API key_ to the exported configuration in [`hardhat.config.js`](https://hardhat.org/config/):\n\n```js\nmodule.exports = {\n  defender: {\n    apiKey: process.env.API_KEY,\n    apiSecret: process.env.API_SECRET,\n  }\n}\n```\n\n## Upgrades\n\nYou can use this plugin in a [Hardhat script](https://hardhat.org/guides/scripts.html) to propose an upgrade for a contract previously deployed with [`deployProxy`](https://docs.openzeppelin.com/upgrades-plugins/1.x/api-hardhat-upgrades#deploy-proxy):\n\n```js\n// scripts/propose-upgrade.js\nconst { defender } = require(\"hardhat\");\n\nasync function main() {\n  const BoxV2 = await ethers.getContractFactory(\"BoxV2\");\n  const proposal = await defender.proposeUpgrade(BOX_ADDRESS, BoxV2);\n  console.log(\"Upgrade proposal created at:\", proposal.url);\n}\n\nmain();\n```\n\nThis will automatically check that the `Box` contract deployed at `BOX_ADDRESS` can be safely upgraded to `BoxV2`, deploy the `BoxV2` implementation contract, and create a new upgrade proposal in Defender Admin.\n\nNote that `proposeUpgrade` will only deploy the implementation contract, but **will not change anything in your proxy contract**. Any changes must be approved by the upgrade admin(s), who can do so either via Defender or manually.\n\n## Verification\n\nYou can upload the compilation artifact for a contract to Defender, along with its deployment address. Defender will check that the code on chain matches the artifact, and display a verification notice on the application.\n\n```js\n// scripts/verify-deploy.js\nconst { defender } = require('hardhat');\n\nasync function main() {\n  const verification = await defender.verifyDeployment(BOX_ADDRESS, 'Box', MY_REPO_URL);\n  console.log(`Verified artifact with hash`, verification.providedSha256);\n}\n\nmain();\n```\n\nAlternatively, you can also upload the compilation artifact to a public URL and then have Defender retrieve the artifact from that location for verification, through the `verifyDeploymentWithUploadedArtifact` function. You can get the artifact to upload for a specific contract using `getDeploymentArtifact`, or an artifact that contains the build info for all your contracts using `getDeploymentBuildInfo`. You can also get the hash of the artifact for a given contract using `getBytecodeDigest` to check for matches against a pre existing verification on Defender.\n\n## Learn more\n\n* Refer to the [API documentation](https://docs.openzeppelin.com/upgrades-plugins/api-hardhat-upgrades).\n* Also see the [main documentation](https://docs.openzeppelin.com/upgrades-plugins) for more info.\n* And check the [Defender Admin documentation](https://docs.openzeppelin.com/defender/admin) to learn more about managing your contracts with Defender.\n","readmeFilename":"README.md"}