{"_id":"@decentdao/decent-contracts","_rev":"12-9117eff924cf2e0b48568fb540e9d4df","name":"@decentdao/decent-contracts","dist-tags":{"latest":"2.0.0-rc.9"},"versions":{"2.0.0-rc.0":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.0","author":{"name":"fractal-contributors"},"license":"MIT","_id":"@decentdao/decent-contracts@2.0.0-rc.0","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"}],"homepage":"https://github.com/decentdao/fractal-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/fractal-contracts/issues"},"dist":{"shasum":"41e390597730c052948d6908b1521f1477f803d2","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.0.tgz","fileCount":101,"integrity":"sha512-3dMPx4lQS/3takllH5yiq+26ErULwj84TEB9HSODrxP15Wyus4wlPyYeO5apAPsQyWj/SjoYJXW8Kyvc7+BTuA==","signatures":[{"sig":"MEYCIQCjdd+jhx6w3tNgtoceNYWANNZD00fr8uA8RrdsPG6EiAIhAPo/K2pyz8FeRLvHyPn+JT0F1v1su9TY3DpO8DEYO2mL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2815282},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"71100b71249c23e6429262254296dd449c521214","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","docgen":"hardhat docgen","pretty":"prettier . --write","compile":"hardhat compile","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","actor":{"name":"trainface","type":"user","email":"galladamj@gmail.com"},"email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","prettier":"^3.3.3","@prb/math":"^4.0.3","solidity-docgen":"^0.6.0-beta.36","@gnosis-guild/zodiac":"^4.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@openzeppelin/contracts":"^5.3.0","@typescript-eslint/parser":"^7.0.0","@account-abstraction/contracts":"^0.7.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@openzeppelin/contracts-upgradeable":"^5.3.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.0_1750617753645_0.37552396626368245","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.1":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.1","author":{"name":"fractal-contributors"},"license":"MIT","_id":"@decentdao/decent-contracts@2.0.0-rc.1","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"}],"homepage":"https://github.com/decentdao/fractal-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/fractal-contracts/issues"},"dist":{"shasum":"208a54392a34298c69ed2a6ab4e3e2eb7174476b","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.1.tgz","fileCount":101,"integrity":"sha512-NLCRem+xWBNkB+t8b3Vjvcx4FiQ2obgkiYjVXbl2dVZa/Li0ezwhpTNGU9ihA3CmA4JeFJVKlZC/eMeH4uC9tQ==","signatures":[{"sig":"MEUCIEbXic7cRyGt2N1gxRyy1Dn7538tD7AMSm21qm4lJqcRAiEAlCzLzMGp2JdmEXtuN6vMjUj3VGJiVUGgCM//GITpLR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2815247},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"2a8d0fa995ffcfdf4dd7f6b3f9753f5212e68b91","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","docgen":"hardhat docgen","pretty":"prettier . --write","compile":"hardhat compile","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","actor":{"name":"trainface","type":"user","email":"galladamj@gmail.com"},"email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","prettier":"^3.3.3","@prb/math":"^4.0.3","solidity-docgen":"^0.6.0-beta.36","@gnosis-guild/zodiac":"^4.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@openzeppelin/contracts":"^5.3.0","@typescript-eslint/parser":"^7.0.0","@account-abstraction/contracts":"^0.7.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@openzeppelin/contracts-upgradeable":"^5.3.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.1_1750620441769_0.641171461304205","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.2":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.2","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.2","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"9fe95f5de42603b58de3970bc5f678801402aa3d","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.2.tgz","fileCount":101,"integrity":"sha512-BRvdzchCeKe8LARZcuVBGYNbmUEQertKyNRuq1NLXXpZCOQXy3UoAhA8W9ba6q9P+T/4AbLZXWG0TbR92YvXrg==","signatures":[{"sig":"MEUCIEU0rROpQ+nRHfaVEzzQiTtOvJumhKmFsYuZi7PpQdT2AiEAiDLAogW9//tJNXAhqREFYx063gZbRVse2ziRTpsyDjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2814057},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"4ee2fe986477b448ddd39198011f5fa87faba208","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","docgen":"hardhat docgen","pretty":"prettier . --write","compile":"hardhat compile","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","actor":{"name":"trainface","type":"user","email":"galladamj@gmail.com"},"email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","prettier":"^3.3.3","@prb/math":"^4.0.3","solidity-docgen":"^0.6.0-beta.36","@gnosis-guild/zodiac":"^4.0.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","@openzeppelin/contracts":"^5.3.0","@typescript-eslint/parser":"^7.0.0","@account-abstraction/contracts":"^0.7.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@openzeppelin/contracts-upgradeable":"^5.3.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.2_1750720913477_0.2133331885502785","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.3":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.3","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.3","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"8828413e5119e20fa722602a76e58c87366168ac","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.3.tgz","fileCount":101,"integrity":"sha512-0lngie1ScIcSojFZRvMiYt+1GrZjfO6JEDb28bK8R+hwIyJbozAMQS1nCKbacerQ5hnZCZA5pMMfb0SguP0F+g==","signatures":[{"sig":"MEUCIQClDD1wTqnMVk1GyAva0qjNEwfrR+SDEcTLyQkwNfMgFQIgXMsQaKWfqR8wjS2aFVfTTUxgSgEEnnVS1mJxVvpPULk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2816853},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"4706609a201501464924918d9e053ef18b207ae5","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","actor":{"name":"trainface","type":"user","email":"galladamj@gmail.com"},"email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.3_1750780101490_0.8467272335757183","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.4":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.4","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.4","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"66e97c508acb1774809f365ce8acb37cf0fe503d","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.4.tgz","fileCount":102,"integrity":"sha512-gc4aHQMm5M2MjSmNPQxPoutQDqZzucR8pNbk4M8wgl4jW+WZoVFm0+tyHShOv0Og3BeBe4RxVnyPz9gWN8hw0w==","signatures":[{"sig":"MEYCIQCmJAxxChrJ8cA/53kci7dShsEjG/3DvPg6cD0g5JoZLAIhANeFDcgHwww57dCcmAIb/2UKTaGxEbxqx4/GpYVTldf2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2852668},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"167014c47322444f54ec84743078292201e6c10a","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","solhint":"solhint 'contracts/**/*.sol' --fix","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","solhint:check":"solhint 'contracts/**/*.sol'","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","actor":{"name":"trainface","type":"user","email":"galladamj@gmail.com"},"email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","solhint":"^5.1.0","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.4_1750920764358_0.7006094510243353","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.5":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.5","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.5","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"b5fa94b71a7ea6fc2642984ad938e695ae50be54","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.5.tgz","fileCount":116,"integrity":"sha512-PBOhgPjPVUkKGg2KvzvxL1k89ELfILDJtyjMazbf+NdqInAa4xywMFUowg8juAfptq/v0C/JWnqPSUfbIPdDrg==","signatures":[{"sig":"MEQCIFv1Hrs0fexcQG1D03WNHwg/HMTPo1eATMB9yG8NHvzrAiBK1jm8ocHiQvwoHH/Z5ve5Erlndrnycp7ZJxeX56aWwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3192086},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"a05078d4903af70a22d6540169bae2b1fc2dd25c","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","solhint":"solhint 'contracts/**/*.sol' --fix --noPrompt","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","solhint:check":"solhint 'contracts/**/*.sol'","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","solhint":"^5.2.0","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.5_1753218072349_0.5960627104849936","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@decentdao/decent-contracts","version":"2.0.0","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"},{"name":"tbwebb22","email":"tbwebb22@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"bc0e7712833f22de468ad3a6c41165f8fa076fe9","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0.tgz","fileCount":116,"integrity":"sha512-5RiQynBHMRPvNL1nA0qh+c8jypKEtLHUoIiYx2PbAMxfeoD3APvKPLX41M/TbA6VgT/1j+LXGEZE+bkfv8Htnw==","signatures":[{"sig":"MEUCIQCpTbkxaGDK0wBxxyS1jnM7BYJIoJFJu1EtVe3xOfwa1wIgOQNswZxM2WvGrY7H1rnpZuTYOhX1dBhSK2TRm2ePwK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3201611},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"2cb4cfcc08dec1ff3bfef3deb69bb19ebbae6574","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","solhint":"solhint 'contracts/**/*.sol' --fix --noPrompt","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","solhint:check":"solhint 'contracts/**/*.sol'","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","solhint":"^5.2.0","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0_1757350896461_0.05709658611421764","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.6":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.6","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.6","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"},{"name":"tbwebb22","email":"tbwebb22@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"b7f07e5b95fdfd222bc58e372123c06d781dd09d","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.6.tgz","fileCount":116,"integrity":"sha512-rvgPkMKDygf8l+CaW3OXidandFA3K+Fi/FFGUaw6/MLBc4gAe91KlyTe2ZrdhfVQ2aJyRb9zBBnbw6fOsxxZFw==","signatures":[{"sig":"MEQCIFPb9qTy2fxX64cIrC0txnbgncjEGhM1CYTnZh9lQmRSAiBM4DdS8CpFqPIRKZ+oqgtnwKxdJCY5DGV9pd3mp8fvAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3201616},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"03026d0498dff8fee96e217819e56acd8f37126b","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","solhint":"solhint 'contracts/**/*.sol' --fix --noPrompt","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","solhint:check":"solhint 'contracts/**/*.sol'","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","solhint":"^5.2.0","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.6_1757352021570_0.9745908667216303","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.7":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.7","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.7","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"},{"name":"tbwebb22","email":"tbwebb22@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"3ca7a4bca92a1c4b46e225427351cd4da0c87dfa","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.7.tgz","fileCount":116,"integrity":"sha512-hEO5yOebNaXf8k5shBuRjQcyPqGpOeFN7YyjFDx4GJ696veyyg1Y2ftxFU3s0a3y6p2eb5yGBK8r2DDiCYIyrg==","signatures":[{"sig":"MEUCIFV98vn5GFyzwseE/8pjTC4seA2GOEuT8ciW/CzCizcxAiEAg/BxebDA/mIko1O7XU7SsS6ak7dQRgwNp1pRnJnjs0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3201634},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"23d38333c3e496c4e536302ffe17431571867ff0","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","solhint":"solhint 'contracts/**/*.sol' --fix --noPrompt","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","solhint:check":"solhint 'contracts/**/*.sol'","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","solhint":"^5.2.0","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.7_1757449513127_0.2650562765390043","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.8":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.8","author":{"name":"decent-contributors"},"license":"AGPL-3.0","_id":"@decentdao/decent-contracts@2.0.0-rc.8","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"},{"name":"tbwebb22","email":"tbwebb22@gmail.com"}],"homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dist":{"shasum":"beb39c59ec12cf4f22e760d4bbd30d86ad1e0316","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.8.tgz","fileCount":116,"integrity":"sha512-hNcaPJY2R1Jay62apGiFlG40G5ry9q0bwkqjRk85Ie5JgSRnvnaE5iaRUNFEMn+MdnlQdiFDKbo+NNmFv4Ak9A==","signatures":[{"sig":"MEUCID+zzUR0Uhko6va1ObuF1yh7g2aqo5on+0JCqoWNAQ5/AiEAhz42Y0NBAvAaVfrJNE783yASW0fzkfe53AVSxy3LFMY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3201634},"main":"publish/index.js","types":"./publish/index.d.ts","gitHead":"74de3f5b1355cf2645af071503c69547d294aad4","scripts":{"lint":"eslint . --ext .ts --fix","test":"hardhat test","clean":"hardhat clean","pretty":"prettier . --write","compile":"hardhat compile","solhint":"solhint 'contracts/**/*.sol' --fix --noPrompt","lint:check":"eslint . --ext .ts","pretty:check":"prettier . --check","solhint:check":"solhint 'contracts/**/*.sol'","prepublishOnly":"./scripts/prepublish.sh"},"_npmUser":{"name":"trainface","email":"galladamj@gmail.com"},"repository":{"url":"git+https://github.com/decentdao/decent-contracts.git","type":"git"},"_npmVersion":"10.9.2","description":"A Safe Zodiac Module framework","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@prb/math":"^4.0.3","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@account-abstraction/contracts":"^0.7.0","@openzeppelin/contracts-upgradeable":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.2.0","eslint":"^8.22.0","hardhat":"^2.24.3","solhint":"^5.2.0","prettier":"^3.3.3","eslint-plugin-import":"^2.29.1","eslint-config-prettier":"^9.1.0","prettier-plugin-solidity":"^2.0.0","@typescript-eslint/parser":"^7.0.0","@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-verify":"^2.0.14","eslint-config-airbnb-typescript":"^18.0.0","@nomicfoundation/hardhat-toolbox":"^5.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12"},"_npmOperationalInternal":{"tmp":"tmp/decent-contracts_2.0.0-rc.8_1759434567193_0.7236587285533929","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-rc.9":{"name":"@decentdao/decent-contracts","version":"2.0.0-rc.9","main":"publish/index.js","repository":{"type":"git","url":"git+https://github.com/decentdao/decent-contracts.git"},"scripts":{"lint":"eslint . --ext .ts --fix","lint:check":"eslint . --ext .ts","pretty":"prettier . --write","pretty:check":"prettier . --check","solhint":"solhint 'contracts/**/*.sol' --fix --noPrompt","solhint:check":"solhint 'contracts/**/*.sol'","clean":"hardhat clean","compile":"hardhat compile","test":"hardhat test","prepublishOnly":"./scripts/prepublish.sh"},"description":"A Safe Zodiac Module framework","homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","author":{"name":"decent-contributors"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"dependencies":{"@account-abstraction/contracts":"^0.7.0","@gnosis-guild/zodiac":"^4.0.3","@openzeppelin/contracts":"^5.3.0","@openzeppelin/contracts-upgradeable":"^5.3.0","@prb/math":"^4.0.3"},"devDependencies":{"@nomicfoundation/hardhat-ethers":"^3.0.9","@nomicfoundation/hardhat-ignition-ethers":"^0.15.12","@nomicfoundation/hardhat-network-helpers":"^1.0.12","@nomicfoundation/hardhat-toolbox":"^5.0.0","@nomicfoundation/hardhat-verify":"^2.0.14","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","chai":"^4.2.0","eslint":"^8.22.0","eslint-config-airbnb-typescript":"^18.0.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.29.1","hardhat":"^2.24.3","prettier":"^3.3.3","prettier-plugin-solidity":"^2.0.0","solhint":"^5.2.0"},"_id":"@decentdao/decent-contracts@2.0.0-rc.9","gitHead":"2c22b40ee9942ce2dcc46d7a981317c0fe44dc10","types":"./publish/index.d.ts","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-XyDX2OjoDwl7SVY+mMrTT0vaq8Q8CRKKi9k5yhBvHtidk3UI38zpRuZRfWFNmWWn3cMeDvI0XRTz2nAoO5cpHA==","shasum":"5e1bb8a31282e630c666da73d348cac9ab83cf73","tarball":"https://registry.npmjs.org/@decentdao/decent-contracts/-/decent-contracts-2.0.0-rc.9.tgz","fileCount":116,"unpackedSize":3214692,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICP4mEsHvBI8JLAe/swigNQZCPybW2mreX70iiqzyBn9AiEAijAd38cbjkEt9bXI7PRlaz9qI649q1220K09R9wfE9g="}]},"_npmUser":{"name":"trainface","email":"galladamj@gmail.com"},"directories":{},"maintainers":[{"name":"trainface","email":"galladamj@gmail.com"},{"name":"tbwebb22","email":"tbwebb22@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/decent-contracts_2.0.0-rc.9_1762108972679_0.5483758569284831"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-22T18:42:33.567Z","modified":"2025-11-02T18:42:53.438Z","2.0.0-rc.0":"2025-06-22T18:42:33.866Z","2.0.0-rc.1":"2025-06-22T19:27:22.035Z","2.0.0-rc.2":"2025-06-23T23:21:53.731Z","2.0.0-rc.3":"2025-06-24T15:48:21.732Z","2.0.0-rc.4":"2025-06-26T06:52:44.576Z","2.0.0-rc.5":"2025-07-22T21:01:12.602Z","2.0.0":"2025-09-08T17:01:36.655Z","2.0.0-rc.6":"2025-09-08T17:20:21.798Z","2.0.0-rc.7":"2025-09-09T20:25:13.367Z","2.0.0-rc.8":"2025-10-02T19:49:27.431Z","2.0.0-rc.9":"2025-11-02T18:42:52.897Z"},"bugs":{"url":"https://github.com/decentdao/decent-contracts/issues"},"author":{"name":"decent-contributors"},"license":"AGPL-3.0","homepage":"https://github.com/decentdao/decent-contracts/blob/develop/README.md","repository":{"type":"git","url":"git+https://github.com/decentdao/decent-contracts.git"},"description":"A Safe Zodiac Module framework","maintainers":[{"name":"trainface","email":"galladamj@gmail.com"},{"name":"tbwebb22","email":"tbwebb22@gmail.com"}],"readme":"# Decent Contracts\n\n## Project Overview\n\nDecent Contracts is a Hardhat-based Ethereum smart contract project implementing the Azorius Protocol - a Safe Zodiac Module framework for composable governance in DAOs. The project enables modular voting strategies with support for multiple token standards (ERC20, ERC721, Hats Protocol) integrated with Gnosis Safe.\n\n## Azorius Protocol\n\nA Safe module which allows for composable governance.\n\nAzorius conforms to the [Zodiac](https://github.com/gnosis/zodiac) pattern for Safe modules.\n\nThe Azorius contract acts as a central manager of DAO Proposals, maintaining the specifications of the transactions that comprise a Proposal.\n\nAll voting details are delegated to `BaseStrategy` implementations, of which an Azorius DAO can have any number.\n\nAzorius was forked from and heavily based on the [Usul](https://github.com/SekerDAO/Usul) module, by [SekerDAO](https://github.com/SekerDAO).\n\n## Architecture Overview\n\nThe system implements a modular governance framework using the Zodiac pattern:\n\n### Core Components\n\n1. **ModuleAzoriusV1** (`contracts/deployables/module/Azorius.sol`)\n\n   - Central governance module that manages proposals\n   - Integrates with Gnosis Safe as a Zodiac module\n   - Handles proposal submission, state management, and execution\n   - Delegates voting logic to Strategy contracts\n\n2. **ModuleFractalV1** (`contracts/deployables/module/Fractal.sol`)\n\n   - Enables parent-child DAO relationships\n   - Allows parent DAOs to execute transactions directly on child DAOs\n   - Installed on child DAO's Safe, owned by parent DAO\n   - Critical for emergency interventions when used with freeze mechanism\n\n3. **StrategyV1** (`contracts/deployables/strategies/`)\n\n   - Manages voting logic and rules\n   - Supports multiple voting adapters for different token types\n   - Implements quorum thresholds and voting periods\n   - Integrates with Light Accounts for gasless voting\n\n4. **Voting Adapters** (`contracts/deployables/voting-adapter/`)\n\n   - VotingAdapterERC20V1: ERC20 token-based voting\n   - VotingAdapterERC721V1: NFT-based voting\n   - Handle voting weight calculation and vote recording\n\n5. **Proposer Adapters** (`contracts/deployables/proposer-adapter/`)\n   - Control who can create proposals\n   - Support various mechanisms (token holdings, NFT ownership, Hats roles)\n\n### Key Workflows\n\n**Proposal Lifecycle:**\n\n1. Submit proposal through Azorius with transactions and metadata\n2. Strategy initializes voting period\n3. Users cast votes through strategy using voting adapters\n4. After voting + timelock, execute passed proposals through Safe\n\n**Parent-Child DAO Freeze Mechanism:**\n\n1. **Setup**: Child DAO has FreezeGuard attached and ModuleFractalV1 enabled (owned by parent)\n2. **Freeze Vote**: Parent DAO token holders vote to freeze child (via FreezeVoting contracts)\n3. **Activation**: When threshold reached, child DAO is frozen - cannot execute any transactions\n4. **Intervention**: Parent DAO executes necessary actions on child via ModuleFractalV1\n5. **Unfreeze**: Parent DAO can unfreeze child, or freeze expires after set period\n\n### Integration Points\n\n- **Safe Integration**: Azorius acts as a Safe module, executing transactions through `execTransactionFromModule()`\n- **Freeze Mechanism**: FreezeGuard blocks all transactions when DAO is frozen (separate from normal proposals)\n- **Account Abstraction**: Supports gasless voting via Light Accounts and paymasters\n- **Parent-Child Relations**: ModuleFractalV1 enables hierarchical DAO structures with emergency controls\n\n## Contract Categories\n\nThe codebase is organized into four distinct contract categories based on deployment patterns and usage:\n\n### 1. Deployables (`contracts/deployables/`)\n\n- **Deployment**: One instance per DAO\n- **Characteristics**: Hold state, long-lived, owned by DAOs\n- **Examples**:\n  - ModuleAzoriusV1: Central governance module\n  - StrategyV1: Voting strategy implementation\n  - VotingAdapters: Token-based voting mechanisms\n  - ProposerAdapters: Proposal creation controls\n  - DecentPaymasterV1: Account abstraction paymaster\n\n### 2. Singletons (`contracts/singletons/`)\n\n- **Deployment**: One instance per chain\n- **Characteristics**: No DAO contracts hold references to these, used by client applications\n- **Examples**:\n  - SystemDeployerV1: Orchestrates contract deployments (called via delegatecall from Safe setup)\n  - KeyValuePairsV1: On-chain key-value storage\n\n### 3. Utilities (`contracts/utilities/`)\n\n- **Deployment**: One instance per chain\n- **Characteristics**: Called via delegatecall from Safe during proposal execution\n- **Purpose**: Handle dynamic logic based on blockchain state at execution time, don't hold any state\n- **Examples**:\n  - UtilityRolesManagementV1: Creates and manages organizational roles (Hats Protocol + Sablier streams)\n\n### 4. Services (`contracts/services/`)\n\n- **Deployment**: One instance per chain\n- **Characteristics**: Referenced by multiple DAO deployable contracts\n- **Examples**:\n  - StrategyV1ValidatorV1: Validates strategy voting for account abstraction\n  - VerifierV1: Provides buyer verification services for Countersign and TokenSale contracts\n\n## Local Setup & Testing\n\n### Development Setup\n\nClone the repository:\n\n```shell\ngit clone https://github.com/decentdao/decent-contracts.git\n```\n\nLook up the recommended Node version to use in the `.nvmrc` file and install and use the correct version:\n\n```shell\nnvm install\nnvm use\n```\n\nInstall necessary dependencies:\n\n```shell\nnpm install\n```\n\nCopy the example `.env` and replace the values for the desired networks\n\n```shell\ncp .env.example .env\n```\n\n### Build & Compile\n\nCompile contracts to create typechain files:\n\n```shell\nnpm run compile\n```\n\nClean build artifacts:\n\n```shell\nnpm run clean\n```\n\n### Testing\n\nRun all tests:\n\n```shell\nnpm run test\n```\n\nRun specific test file:\n\n```shell\nnpx hardhat test test/deployables/module/Azorius.test.ts\n```\n\n### Code Quality\n\n#### Linting\n\nLint TypeScript files with ESLint:\n\n```shell\nnpm run lint\n```\n\nCheck ESLint issues without fixing:\n\n```shell\nnpm run lint:check\n```\n\nLint and fix Solidity contracts with Solhint:\n\n```shell\nnpm run solhint\n```\n\nCheck Solhint issues without fixing:\n\n```shell\nnpm run solhint:check\n```\n\n#### Formatting\n\nFormat all code (TypeScript and Solidity) with Prettier:\n\n```shell\nnpm run pretty\n```\n\nCheck code formatting without fixing:\n\n```shell\nnpm run pretty:check\n```\n\n## Contract Deployment\n\nBefore deploying, set your unique CREATE2 salt to ensure deterministic addresses:\n\n```shell\nnpx hardhat vars set DECENT_CREATE2_SALT 0xUniqueSalt\n```\n\nReplace `0xUniqueSalt` with your own unique salt value. This salt determines the final contract addresses when using CREATE2.\n\nTo deploy all contracts to a specific network using Hardhat Ignition:\n\n```shell\nnpx hardhat ignition deploy ignition/modules/DeployAll.ts --network <network> --strategy create2 --verify\n```\n\nFor example, to deploy to Sepolia:\n\n```shell\nnpx hardhat ignition deploy ignition/modules/DeployAll.ts --network sepolia --strategy create2 --verify\n```\n\nThis command will:\n\n- Deploy all contracts using CREATE2 for deterministic addresses\n- Automatically verify contracts on Etherscan (or the appropriate block explorer)\n- Store deployment artifacts in `ignition/deployments/chain-<chainId>/`\n\nThe `--strategy create2` flag ensures contracts are deployed to the same addresses across all networks when using the same salt.\n\nIndividual modules can also be deployed separately if needed:\n\n```shell\nnpx hardhat ignition deploy ignition/modules/Deployables.ts --network <network> --strategy create2 --verify\nnpx hardhat ignition deploy ignition/modules/Services.ts --network <network> --strategy create2 --verify\nnpx hardhat ignition deploy ignition/modules/Singletons.ts --network <network> --strategy create2 --verify\nnpx hardhat ignition deploy ignition/modules/Utilities.ts --network <network> --strategy create2 --verify\n```\n\n## Local Hardhat deployment\n\nTo deploy the Decent contracts to a local node:\n\n```shell\nnpx hardhat node\n```\n\n## NPM Package\n\nThe core contracts in this repository are published in an NPM package for easy use within other repositories.\n\nTo install the npm package in your project, run:\n\n```shell\nnpm i @decentdao/decent-contracts\n```\n\n## Publishing new versions to NPM\n\n1. Increment the version in `package.json`, then `npm install` to get those version updates into `package-lock.json`.\n1. Get those changes into the main branch through a PR.\n1. Tag the merge commit with that version number you just bumped.\n1. Create a Release on GitHub.\n\n## Versioning\n\nDecent follows a modified style of semantic versioning (https://semver.org/) specific to a smart contract use case.\n\nThere are three types of releases:\n\n- **MAJOR**: Rare, and correlates to a major overhaul to the core DAO governance contracts. These are changes incompatible with prior contract versions and would require an existing DAO's successful proposal to migrate to. A major version will have undergone a professional smart contract audit.\n- **MINOR**: Adds backwards-compatible functionality and additional utility or optimizations to the core governance smart contracts. New functionality will not impact the existing core governance contracts, will be optional for a DAO to utilize, and will have undergone either a contract audit or community bug bounty.\n- **PATCH**: Also rare, but adds bug and/or security fixes. No new functionality will be introduced and the code may or may not have a contract audit or bug bounty, depending on the context and severity of the issue. Also depending on the context of the issue, DAOs may be required to pass a proposal to migrate to this new version.\n\n## Important Patterns\n\n- Some contracts use UUPS proxy pattern for upgradability\n- Contracts follow OpenZeppelin's upgradeable patterns\n- SystemDeployerV1 must be called via delegatecall from Safe setup (direct calls will revert)\n- Test files mirror contract structure in `/test` directory\n- Integration tests in `/test/integration` demonstrate full workflows\n- Solidity version 0.8.30 with optimizer enabled (200 runs)\n","readmeFilename":"README.md"}