@venusprotocol/governance-contracts 2.11.1-dev.2 → 2.12.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/artifacts/build-info/3b47d4ce14ec7fb090660b6af43c54be.json +1 -0
  2. package/artifacts/contracts/Governance/GovernorBravoDelegate.sol/GovernorBravoDelegate.dbg.json +1 -1
  3. package/artifacts/contracts/Governance/GovernorBravoDelegate.sol/GovernorBravoDelegate.json +208 -62
  4. package/artifacts/contracts/Governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.dbg.json +1 -1
  5. package/artifacts/contracts/Governance/GovernorBravoDelegator.sol/GovernorBravoDelegator.json +82 -2
  6. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorAlphaInterface.dbg.json +1 -1
  7. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1.dbg.json +1 -1
  8. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1.json +2 -2
  9. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2.dbg.json +1 -1
  10. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2.json +2 -2
  11. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.dbg.json +4 -0
  12. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.json +365 -0
  13. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage.dbg.json +1 -1
  14. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage.json +2 -2
  15. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.dbg.json +1 -1
  16. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.json +82 -2
  17. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/TimelockInterface.dbg.json +1 -1
  18. package/artifacts/contracts/Governance/GovernorBravoInterfaces.sol/XvsVaultInterface.dbg.json +1 -1
  19. package/artifacts/contracts/legacy/GovenorBravoV1.sol/GovernorBravoDelegatorV1.dbg.json +1 -1
  20. package/artifacts/contracts/legacy/GovenorBravoV1.sol/GovernorBravoDelegatorV1.json +2 -2
  21. package/artifacts/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.dbg.json +4 -0
  22. package/artifacts/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.json +418 -0
  23. package/artifacts/contracts/legacy/GovernorBravoDelegateV1.sol/GovernorBravoDelegateV1.dbg.json +1 -1
  24. package/artifacts/contracts/legacy/GovernorBravoDelegateV1.sol/GovernorBravoDelegateV1.json +2 -2
  25. package/artifacts/contracts/legacy/GovernorBravoDelegateV2.sol/GovernorBravoDelegateV2.dbg.json +4 -0
  26. package/artifacts/contracts/legacy/GovernorBravoDelegateV2.sol/GovernorBravoDelegateV2.json +1173 -0
  27. package/artifacts/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1.dbg.json +1 -1
  28. package/artifacts/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1.json +2 -2
  29. package/artifacts/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage.dbg.json +1 -1
  30. package/artifacts/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage.json +2 -2
  31. package/artifacts/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoEventsV1.dbg.json +1 -1
  32. package/artifacts/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoEventsV1.json +2 -2
  33. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.dbg.json +4 -0
  34. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.json +283 -0
  35. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.dbg.json +4 -0
  36. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.json +335 -0
  37. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.dbg.json +4 -0
  38. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.json +56 -0
  39. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.dbg.json +4 -0
  40. package/artifacts/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.json +312 -0
  41. package/contracts/Governance/GovernorBravoDelegate.sol +80 -30
  42. package/contracts/Governance/GovernorBravoInterfaces.sol +33 -1
  43. package/contracts/legacy/GovenorBravoV2.sol +97 -0
  44. package/contracts/legacy/GovernorBravoDelegateV2.sol +521 -0
  45. package/contracts/legacy/GovernorBravoInterfacesV2.sol +208 -0
  46. package/deploy/011-deploy-governor-bravo.ts +32 -0
  47. package/deployments/bscmainnet/GovernorBravoDelegate.json +877 -62
  48. package/deployments/bscmainnet/solcInputs/ad770aaa336e097c7b976e7839cb0f59.json +48 -0
  49. package/deployments/bscmainnet.json +207 -61
  50. package/deployments/bscmainnet_addresses.json +1 -1
  51. package/deployments/bsctestnet/GovernorBravoDelegate.json +877 -62
  52. package/deployments/bsctestnet/solcInputs/39afa7d975793de62f715dc8afa71529.json +48 -0
  53. package/deployments/bsctestnet/solcInputs/51535febbc2fed693ac575b5f75633d2.json +48 -0
  54. package/deployments/bsctestnet/solcInputs/ad770aaa336e097c7b976e7839cb0f59.json +48 -0
  55. package/deployments/bsctestnet.json +207 -61
  56. package/deployments/bsctestnet_addresses.json +1 -1
  57. package/dist/deploy/011-deploy-governor-bravo.d.ts +4 -0
  58. package/dist/deploy/011-deploy-governor-bravo.d.ts.map +1 -0
  59. package/dist/deploy/011-deploy-governor-bravo.js +36 -0
  60. package/dist/deploy/011-deploy-governor-bravo.js.map +1 -0
  61. package/dist/deployments/bscmainnet.json +207 -61
  62. package/dist/deployments/bsctestnet.json +207 -61
  63. package/dist/typechain/contracts/Governance/GovernorBravoDelegate.d.ts +137 -39
  64. package/dist/typechain/contracts/Governance/GovernorBravoDelegate.d.ts.map +1 -1
  65. package/dist/typechain/contracts/Governance/GovernorBravoDelegator.d.ts +40 -0
  66. package/dist/typechain/contracts/Governance/GovernorBravoDelegator.d.ts.map +1 -1
  67. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.d.ts +297 -0
  68. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.d.ts.map +1 -0
  69. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.js +3 -0
  70. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.js.map +1 -0
  71. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.d.ts +40 -0
  72. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.d.ts.map +1 -1
  73. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/index.d.ts +1 -0
  74. package/dist/typechain/contracts/Governance/GovernorBravoInterfaces.sol/index.d.ts.map +1 -1
  75. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.d.ts +259 -0
  76. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.d.ts.map +1 -0
  77. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.js +3 -0
  78. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.js.map +1 -0
  79. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/index.d.ts +2 -0
  80. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/index.d.ts.map +1 -0
  81. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/index.js +3 -0
  82. package/dist/typechain/contracts/legacy/GovenorBravoV2.sol/index.js.map +1 -0
  83. package/dist/typechain/contracts/legacy/GovernorBravoDelegateV2.d.ts +833 -0
  84. package/dist/typechain/contracts/legacy/GovernorBravoDelegateV2.d.ts.map +1 -0
  85. package/dist/typechain/contracts/legacy/GovernorBravoDelegateV2.js +3 -0
  86. package/dist/typechain/contracts/legacy/GovernorBravoDelegateV2.js.map +1 -0
  87. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.d.ts +219 -0
  88. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.d.ts.map +1 -0
  89. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.js +3 -0
  90. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.js.map +1 -0
  91. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.d.ts +259 -0
  92. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.d.ts.map +1 -0
  93. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.js +3 -0
  94. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.js.map +1 -0
  95. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.d.ts +59 -0
  96. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.d.ts.map +1 -0
  97. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.js +3 -0
  98. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.js.map +1 -0
  99. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.d.ts +215 -0
  100. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.d.ts.map +1 -0
  101. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.js +3 -0
  102. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.js.map +1 -0
  103. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/index.d.ts +5 -0
  104. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/index.d.ts.map +1 -0
  105. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/index.js +3 -0
  106. package/dist/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/index.js.map +1 -0
  107. package/dist/typechain/contracts/legacy/index.d.ts +5 -0
  108. package/dist/typechain/contracts/legacy/index.d.ts.map +1 -1
  109. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegate__factory.d.ts +165 -49
  110. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegate__factory.d.ts.map +1 -1
  111. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegate__factory.js +207 -61
  112. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegate__factory.js.map +1 -1
  113. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegator__factory.d.ts +66 -1
  114. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegator__factory.d.ts.map +1 -1
  115. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegator__factory.js +81 -1
  116. package/dist/typechain/factories/contracts/Governance/GovernorBravoDelegator__factory.js.map +1 -1
  117. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1__factory.d.ts +1 -1
  118. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1__factory.js +1 -1
  119. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2__factory.d.ts +1 -1
  120. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2__factory.js +1 -1
  121. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3__factory.d.ts +302 -0
  122. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3__factory.d.ts.map +1 -0
  123. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3__factory.js +394 -0
  124. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3__factory.js.map +1 -0
  125. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage__factory.d.ts +1 -1
  126. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage__factory.js +1 -1
  127. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents__factory.d.ts +66 -1
  128. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents__factory.d.ts.map +1 -1
  129. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents__factory.js +81 -1
  130. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents__factory.js.map +1 -1
  131. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/index.d.ts +1 -0
  132. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/index.d.ts.map +1 -1
  133. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/index.js +3 -1
  134. package/dist/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/index.js.map +1 -1
  135. package/dist/typechain/factories/contracts/legacy/GovenorBravoV1.sol/GovernorBravoDelegatorV1__factory.d.ts +1 -1
  136. package/dist/typechain/factories/contracts/legacy/GovenorBravoV1.sol/GovernorBravoDelegatorV1__factory.js +1 -1
  137. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1__factory.d.ts +346 -0
  138. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1__factory.d.ts.map +1 -0
  139. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1__factory.js +447 -0
  140. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1__factory.js.map +1 -0
  141. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/index.d.ts +2 -0
  142. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/index.d.ts.map +1 -0
  143. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/index.js +6 -0
  144. package/dist/typechain/factories/contracts/legacy/GovenorBravoV2.sol/index.js.map +1 -0
  145. package/dist/typechain/factories/contracts/legacy/GovernorBravoDelegateV1__factory.d.ts +1 -1
  146. package/dist/typechain/factories/contracts/legacy/GovernorBravoDelegateV1__factory.js +1 -1
  147. package/dist/typechain/factories/contracts/legacy/GovernorBravoDelegateV2__factory.d.ts +944 -0
  148. package/dist/typechain/factories/contracts/legacy/GovernorBravoDelegateV2__factory.d.ts.map +1 -0
  149. package/dist/typechain/factories/contracts/legacy/GovernorBravoDelegateV2__factory.js +1202 -0
  150. package/dist/typechain/factories/contracts/legacy/GovernorBravoDelegateV2__factory.js.map +1 -0
  151. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1__factory.d.ts +1 -1
  152. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1__factory.js +1 -1
  153. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage__factory.d.ts +1 -1
  154. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage__factory.js +1 -1
  155. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoEventsV1__factory.d.ts +1 -1
  156. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoEventsV1__factory.js +1 -1
  157. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1__factory.d.ts +238 -0
  158. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1__factory.d.ts.map +1 -0
  159. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1__factory.js +312 -0
  160. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1__factory.js.map +1 -0
  161. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2__factory.d.ts +278 -0
  162. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2__factory.d.ts.map +1 -0
  163. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2__factory.js +364 -0
  164. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2__factory.js.map +1 -0
  165. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage__factory.d.ts +58 -0
  166. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage__factory.d.ts.map +1 -0
  167. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage__factory.js +85 -0
  168. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage__factory.js.map +1 -0
  169. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2__factory.d.ts +262 -0
  170. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2__factory.d.ts.map +1 -0
  171. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2__factory.js +341 -0
  172. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2__factory.js.map +1 -0
  173. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/index.d.ts +5 -0
  174. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/index.d.ts.map +1 -0
  175. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/index.js +12 -0
  176. package/dist/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/index.js.map +1 -0
  177. package/dist/typechain/factories/contracts/legacy/index.d.ts +3 -0
  178. package/dist/typechain/factories/contracts/legacy/index.d.ts.map +1 -1
  179. package/dist/typechain/factories/contracts/legacy/index.js +5 -1
  180. package/dist/typechain/factories/contracts/legacy/index.js.map +1 -1
  181. package/dist/typechain/index.d.ts +6 -0
  182. package/dist/typechain/index.d.ts.map +1 -1
  183. package/dist/typechain/index.js +8 -2
  184. package/dist/typechain/index.js.map +1 -1
  185. package/package.json +1 -1
  186. package/typechain/contracts/Governance/GovernorBravoDelegate.ts +221 -81
  187. package/typechain/contracts/Governance/GovernorBravoDelegator.ts +76 -0
  188. package/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3.ts +573 -0
  189. package/typechain/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents.ts +76 -0
  190. package/typechain/contracts/Governance/GovernorBravoInterfaces.sol/index.ts +1 -0
  191. package/typechain/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1.ts +477 -0
  192. package/typechain/contracts/legacy/GovenorBravoV2.sol/index.ts +4 -0
  193. package/typechain/contracts/legacy/GovernorBravoDelegateV2.ts +1716 -0
  194. package/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1.ts +438 -0
  195. package/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2.ts +526 -0
  196. package/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage.ts +125 -0
  197. package/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2.ts +371 -0
  198. package/typechain/contracts/legacy/GovernorBravoInterfacesV2.sol/index.ts +7 -0
  199. package/typechain/contracts/legacy/index.ts +7 -0
  200. package/typechain/factories/contracts/Governance/GovernorBravoDelegate__factory.ts +207 -61
  201. package/typechain/factories/contracts/Governance/GovernorBravoDelegator__factory.ts +81 -1
  202. package/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1__factory.ts +1 -1
  203. package/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV2__factory.ts +1 -1
  204. package/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV3__factory.ts +425 -0
  205. package/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage__factory.ts +1 -1
  206. package/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/GovernorBravoEvents__factory.ts +81 -1
  207. package/typechain/factories/contracts/Governance/GovernorBravoInterfaces.sol/index.ts +1 -0
  208. package/typechain/factories/contracts/legacy/GovenorBravoV1.sol/GovernorBravoDelegatorV1__factory.ts +1 -1
  209. package/typechain/factories/contracts/legacy/GovenorBravoV2.sol/GovernorBravoDelegatorV1__factory.ts +519 -0
  210. package/typechain/factories/contracts/legacy/GovenorBravoV2.sol/index.ts +4 -0
  211. package/typechain/factories/contracts/legacy/GovernorBravoDelegateV1__factory.ts +1 -1
  212. package/typechain/factories/contracts/legacy/GovernorBravoDelegateV2__factory.ts +1231 -0
  213. package/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegateStorageV1__factory.ts +1 -1
  214. package/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoDelegatorStorage__factory.ts +1 -1
  215. package/typechain/factories/contracts/legacy/GovernorBravoInterfaces.sol/GovernorBravoEventsV1__factory.ts +1 -1
  216. package/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV1__factory.ts +343 -0
  217. package/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegateStorageV2__factory.ts +395 -0
  218. package/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoDelegatorStorage__factory.ts +116 -0
  219. package/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/GovernorBravoEventsV2__factory.ts +370 -0
  220. package/typechain/factories/contracts/legacy/GovernorBravoInterfacesV2.sol/index.ts +7 -0
  221. package/typechain/factories/contracts/legacy/index.ts +3 -0
  222. package/typechain/index.ts +6 -0
  223. package/artifacts/build-info/da11d367dd07d3f79bea1d8c5833588f.json +0 -1
@@ -0,0 +1,521 @@
1
+ pragma solidity ^0.5.16;
2
+ pragma experimental ABIEncoderV2;
3
+
4
+ import "./GovernorBravoInterfacesV2.sol";
5
+
6
+ /**
7
+ * @title GovernorBravoDelegateV2
8
+ * @dev This contract is the second deployed implementation GovernorBravo.
9
+ * It is included here for testing purposes because it is not completely compatible with new block rate of BSC.
10
+ */
11
+ contract GovernorBravoDelegateV2 is GovernorBravoDelegateStorageV2, GovernorBravoEventsV2 {
12
+ /// @notice The name of this contract
13
+ string public constant name = "Venus Governor Bravo";
14
+
15
+ /// @notice The minimum setable proposal threshold
16
+ uint public constant MIN_PROPOSAL_THRESHOLD = 150000e18; // 150,000 Xvs
17
+
18
+ /// @notice The maximum setable proposal threshold
19
+ uint public constant MAX_PROPOSAL_THRESHOLD = 300000e18; //300,000 Xvs
20
+
21
+ /// @notice The minimum setable voting period
22
+ uint public constant MIN_VOTING_PERIOD = 20 * 60 * 3; // About 3 hours, 3 secs per block
23
+
24
+ /// @notice The max setable voting period
25
+ uint public constant MAX_VOTING_PERIOD = 20 * 60 * 24 * 14; // About 2 weeks, 3 secs per block
26
+
27
+ /// @notice The min setable voting delay
28
+ uint public constant MIN_VOTING_DELAY = 1;
29
+
30
+ /// @notice The max setable voting delay
31
+ uint public constant MAX_VOTING_DELAY = 20 * 60 * 24 * 7; // About 1 week, 3 secs per block
32
+
33
+ /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed
34
+ uint public constant quorumVotes = 600000e18; // 600,000 = 2% of Xvs
35
+
36
+ /// @notice The EIP-712 typehash for the contract's domain
37
+ bytes32 public constant DOMAIN_TYPEHASH =
38
+ keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
39
+
40
+ /// @notice The EIP-712 typehash for the ballot struct used by the contract
41
+ bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,uint8 support)");
42
+
43
+ /**
44
+ * @notice Used to initialize the contract during delegator contructor
45
+ * @param xvsVault_ The address of the XvsVault
46
+ * @param proposalConfigs_ Governance configs for each governance route
47
+ * @param timelocks Timelock addresses for each governance route
48
+ */
49
+ function initialize(
50
+ address xvsVault_,
51
+ ProposalConfig[] memory proposalConfigs_,
52
+ TimelockInterface[] memory timelocks,
53
+ address guardian_
54
+ ) public {
55
+ require(address(proposalTimelocks[0]) == address(0), "GovernorBravo::initialize: cannot initialize twice");
56
+ require(msg.sender == admin, "GovernorBravo::initialize: admin only");
57
+ require(xvsVault_ != address(0), "GovernorBravo::initialize: invalid xvs address");
58
+ require(guardian_ != address(0), "GovernorBravo::initialize: invalid guardian");
59
+ require(
60
+ timelocks.length == uint8(ProposalType.CRITICAL) + 1,
61
+ "GovernorBravo::initialize:number of timelocks should match number of governance routes"
62
+ );
63
+ require(
64
+ proposalConfigs_.length == uint8(ProposalType.CRITICAL) + 1,
65
+ "GovernorBravo::initialize:number of proposal configs should match number of governance routes"
66
+ );
67
+
68
+ xvsVault = XvsVaultInterface(xvsVault_);
69
+ proposalMaxOperations = 10;
70
+ guardian = guardian_;
71
+
72
+ //Set parameters for each Governance Route
73
+ uint256 arrLength = proposalConfigs_.length;
74
+ for (uint256 i; i < arrLength; ++i) {
75
+ require(
76
+ proposalConfigs_[i].votingPeriod >= MIN_VOTING_PERIOD,
77
+ "GovernorBravo::initialize: invalid min voting period"
78
+ );
79
+ require(
80
+ proposalConfigs_[i].votingPeriod <= MAX_VOTING_PERIOD,
81
+ "GovernorBravo::initialize: invalid max voting period"
82
+ );
83
+ require(
84
+ proposalConfigs_[i].votingDelay >= MIN_VOTING_DELAY,
85
+ "GovernorBravo::initialize: invalid min voting delay"
86
+ );
87
+ require(
88
+ proposalConfigs_[i].votingDelay <= MAX_VOTING_DELAY,
89
+ "GovernorBravo::initialize: invalid max voting delay"
90
+ );
91
+ require(
92
+ proposalConfigs_[i].proposalThreshold >= MIN_PROPOSAL_THRESHOLD,
93
+ "GovernorBravo::initialize: invalid min proposal threshold"
94
+ );
95
+ require(
96
+ proposalConfigs_[i].proposalThreshold <= MAX_PROPOSAL_THRESHOLD,
97
+ "GovernorBravo::initialize: invalid max proposal threshold"
98
+ );
99
+ require(address(timelocks[i]) != address(0), "GovernorBravo::initialize:invalid timelock address");
100
+
101
+ proposalConfigs[i] = proposalConfigs_[i];
102
+ proposalTimelocks[i] = timelocks[i];
103
+ }
104
+ }
105
+
106
+ /**
107
+ * @notice Function used to propose a new proposal. Sender must have delegates above the proposal threshold.
108
+ * targets, values, signatures, and calldatas must be of equal length
109
+ * @dev NOTE: Proposals with duplicate set of actions can not be queued for execution. If the proposals consists
110
+ * of duplicate actions, it's recommended to split those actions into separate proposals
111
+ * @param targets Target addresses for proposal calls
112
+ * @param values BNB values for proposal calls
113
+ * @param signatures Function signatures for proposal calls
114
+ * @param calldatas Calldatas for proposal calls
115
+ * @param description String description of the proposal
116
+ * @param proposalType the type of the proposal (e.g NORMAL, FASTTRACK, CRITICAL)
117
+ * @return Proposal id of new proposal
118
+ */
119
+ function propose(
120
+ address[] memory targets,
121
+ uint[] memory values,
122
+ string[] memory signatures,
123
+ bytes[] memory calldatas,
124
+ string memory description,
125
+ ProposalType proposalType
126
+ ) public returns (uint) {
127
+ // Reject proposals before initiating as Governor
128
+ require(initialProposalId != 0, "GovernorBravo::propose: Governor Bravo not active");
129
+ require(
130
+ xvsVault.getPriorVotes(msg.sender, sub256(block.number, 1)) >=
131
+ proposalConfigs[uint8(proposalType)].proposalThreshold,
132
+ "GovernorBravo::propose: proposer votes below proposal threshold"
133
+ );
134
+ require(
135
+ targets.length == values.length &&
136
+ targets.length == signatures.length &&
137
+ targets.length == calldatas.length,
138
+ "GovernorBravo::propose: proposal function information arity mismatch"
139
+ );
140
+ require(targets.length != 0, "GovernorBravo::propose: must provide actions");
141
+ require(targets.length <= proposalMaxOperations, "GovernorBravo::propose: too many actions");
142
+
143
+ uint latestProposalId = latestProposalIds[msg.sender];
144
+ if (latestProposalId != 0) {
145
+ ProposalState proposersLatestProposalState = state(latestProposalId);
146
+ require(
147
+ proposersLatestProposalState != ProposalState.Active,
148
+ "GovernorBravo::propose: one live proposal per proposer, found an already active proposal"
149
+ );
150
+ require(
151
+ proposersLatestProposalState != ProposalState.Pending,
152
+ "GovernorBravo::propose: one live proposal per proposer, found an already pending proposal"
153
+ );
154
+ }
155
+
156
+ uint startBlock = add256(block.number, proposalConfigs[uint8(proposalType)].votingDelay);
157
+ uint endBlock = add256(startBlock, proposalConfigs[uint8(proposalType)].votingPeriod);
158
+
159
+ proposalCount++;
160
+ Proposal memory newProposal = Proposal({
161
+ id: proposalCount,
162
+ proposer: msg.sender,
163
+ eta: 0,
164
+ targets: targets,
165
+ values: values,
166
+ signatures: signatures,
167
+ calldatas: calldatas,
168
+ startBlock: startBlock,
169
+ endBlock: endBlock,
170
+ forVotes: 0,
171
+ againstVotes: 0,
172
+ abstainVotes: 0,
173
+ canceled: false,
174
+ executed: false,
175
+ proposalType: uint8(proposalType)
176
+ });
177
+
178
+ proposals[newProposal.id] = newProposal;
179
+ latestProposalIds[newProposal.proposer] = newProposal.id;
180
+
181
+ emit ProposalCreated(
182
+ newProposal.id,
183
+ msg.sender,
184
+ targets,
185
+ values,
186
+ signatures,
187
+ calldatas,
188
+ startBlock,
189
+ endBlock,
190
+ description,
191
+ uint8(proposalType)
192
+ );
193
+ return newProposal.id;
194
+ }
195
+
196
+ /**
197
+ * @notice Queues a proposal of state succeeded
198
+ * @param proposalId The id of the proposal to queue
199
+ */
200
+ function queue(uint proposalId) external {
201
+ require(
202
+ state(proposalId) == ProposalState.Succeeded,
203
+ "GovernorBravo::queue: proposal can only be queued if it is succeeded"
204
+ );
205
+ Proposal storage proposal = proposals[proposalId];
206
+ uint eta = add256(block.timestamp, proposalTimelocks[uint8(proposal.proposalType)].delay());
207
+ for (uint i; i < proposal.targets.length; ++i) {
208
+ queueOrRevertInternal(
209
+ proposal.targets[i],
210
+ proposal.values[i],
211
+ proposal.signatures[i],
212
+ proposal.calldatas[i],
213
+ eta,
214
+ uint8(proposal.proposalType)
215
+ );
216
+ }
217
+ proposal.eta = eta;
218
+ emit ProposalQueued(proposalId, eta);
219
+ }
220
+
221
+ function queueOrRevertInternal(
222
+ address target,
223
+ uint value,
224
+ string memory signature,
225
+ bytes memory data,
226
+ uint eta,
227
+ uint8 proposalType
228
+ ) internal {
229
+ require(
230
+ !proposalTimelocks[proposalType].queuedTransactions(
231
+ keccak256(abi.encode(target, value, signature, data, eta))
232
+ ),
233
+ "GovernorBravo::queueOrRevertInternal: identical proposal action already queued at eta"
234
+ );
235
+ proposalTimelocks[proposalType].queueTransaction(target, value, signature, data, eta);
236
+ }
237
+
238
+ /**
239
+ * @notice Executes a queued proposal if eta has passed
240
+ * @param proposalId The id of the proposal to execute
241
+ */
242
+ function execute(uint proposalId) external {
243
+ require(
244
+ state(proposalId) == ProposalState.Queued,
245
+ "GovernorBravo::execute: proposal can only be executed if it is queued"
246
+ );
247
+ Proposal storage proposal = proposals[proposalId];
248
+ proposal.executed = true;
249
+ for (uint i; i < proposal.targets.length; ++i) {
250
+ proposalTimelocks[uint8(proposal.proposalType)].executeTransaction(
251
+ proposal.targets[i],
252
+ proposal.values[i],
253
+ proposal.signatures[i],
254
+ proposal.calldatas[i],
255
+ proposal.eta
256
+ );
257
+ }
258
+ emit ProposalExecuted(proposalId);
259
+ }
260
+
261
+ /**
262
+ * @notice Cancels a proposal only if sender is the proposer, or proposer delegates dropped below proposal threshold
263
+ * @param proposalId The id of the proposal to cancel
264
+ */
265
+ function cancel(uint proposalId) external {
266
+ require(state(proposalId) != ProposalState.Executed, "GovernorBravo::cancel: cannot cancel executed proposal");
267
+
268
+ Proposal storage proposal = proposals[proposalId];
269
+ require(
270
+ msg.sender == guardian ||
271
+ msg.sender == proposal.proposer ||
272
+ xvsVault.getPriorVotes(proposal.proposer, sub256(block.number, 1)) <
273
+ proposalConfigs[proposal.proposalType].proposalThreshold,
274
+ "GovernorBravo::cancel: proposer above threshold"
275
+ );
276
+
277
+ proposal.canceled = true;
278
+ for (uint i = 0; i < proposal.targets.length; i++) {
279
+ proposalTimelocks[proposal.proposalType].cancelTransaction(
280
+ proposal.targets[i],
281
+ proposal.values[i],
282
+ proposal.signatures[i],
283
+ proposal.calldatas[i],
284
+ proposal.eta
285
+ );
286
+ }
287
+
288
+ emit ProposalCanceled(proposalId);
289
+ }
290
+
291
+ /**
292
+ * @notice Gets actions of a proposal
293
+ * @param proposalId the id of the proposal
294
+ * @return targets, values, signatures, and calldatas of the proposal actions
295
+ */
296
+ function getActions(
297
+ uint proposalId
298
+ )
299
+ external
300
+ view
301
+ returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas)
302
+ {
303
+ Proposal storage p = proposals[proposalId];
304
+ return (p.targets, p.values, p.signatures, p.calldatas);
305
+ }
306
+
307
+ /**
308
+ * @notice Gets the receipt for a voter on a given proposal
309
+ * @param proposalId the id of proposal
310
+ * @param voter The address of the voter
311
+ * @return The voting receipt
312
+ */
313
+ function getReceipt(uint proposalId, address voter) external view returns (Receipt memory) {
314
+ return proposals[proposalId].receipts[voter];
315
+ }
316
+
317
+ /**
318
+ * @notice Gets the state of a proposal
319
+ * @param proposalId The id of the proposal
320
+ * @return Proposal state
321
+ */
322
+ function state(uint proposalId) public view returns (ProposalState) {
323
+ require(
324
+ proposalCount >= proposalId && proposalId > initialProposalId,
325
+ "GovernorBravo::state: invalid proposal id"
326
+ );
327
+ Proposal storage proposal = proposals[proposalId];
328
+ if (proposal.canceled) {
329
+ return ProposalState.Canceled;
330
+ } else if (block.number <= proposal.startBlock) {
331
+ return ProposalState.Pending;
332
+ } else if (block.number <= proposal.endBlock) {
333
+ return ProposalState.Active;
334
+ } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes) {
335
+ return ProposalState.Defeated;
336
+ } else if (proposal.eta == 0) {
337
+ return ProposalState.Succeeded;
338
+ } else if (proposal.executed) {
339
+ return ProposalState.Executed;
340
+ } else if (
341
+ block.timestamp >= add256(proposal.eta, proposalTimelocks[uint8(proposal.proposalType)].GRACE_PERIOD())
342
+ ) {
343
+ return ProposalState.Expired;
344
+ } else {
345
+ return ProposalState.Queued;
346
+ }
347
+ }
348
+
349
+ /**
350
+ * @notice Cast a vote for a proposal
351
+ * @param proposalId The id of the proposal to vote on
352
+ * @param support The support value for the vote. 0=against, 1=for, 2=abstain
353
+ */
354
+ function castVote(uint proposalId, uint8 support) external {
355
+ emit VoteCast(msg.sender, proposalId, support, castVoteInternal(msg.sender, proposalId, support), "");
356
+ }
357
+
358
+ /**
359
+ * @notice Cast a vote for a proposal with a reason
360
+ * @param proposalId The id of the proposal to vote on
361
+ * @param support The support value for the vote. 0=against, 1=for, 2=abstain
362
+ * @param reason The reason given for the vote by the voter
363
+ */
364
+ function castVoteWithReason(uint proposalId, uint8 support, string calldata reason) external {
365
+ emit VoteCast(msg.sender, proposalId, support, castVoteInternal(msg.sender, proposalId, support), reason);
366
+ }
367
+
368
+ /**
369
+ * @notice Cast a vote for a proposal by signature
370
+ * @dev External function that accepts EIP-712 signatures for voting on proposals.
371
+ * @param proposalId The id of the proposal to vote on
372
+ * @param support The support value for the vote. 0=against, 1=for, 2=abstain
373
+ * @param v recovery id of ECDSA signature
374
+ * @param r part of the ECDSA sig output
375
+ * @param s part of the ECDSA sig output
376
+ */
377
+ function castVoteBySig(uint proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s) external {
378
+ bytes32 domainSeparator = keccak256(
379
+ abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainIdInternal(), address(this))
380
+ );
381
+ bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support));
382
+ bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
383
+ address signatory = ecrecover(digest, v, r, s);
384
+ require(signatory != address(0), "GovernorBravo::castVoteBySig: invalid signature");
385
+ emit VoteCast(signatory, proposalId, support, castVoteInternal(signatory, proposalId, support), "");
386
+ }
387
+
388
+ /**
389
+ * @notice Internal function that caries out voting logic
390
+ * @param voter The voter that is casting their vote
391
+ * @param proposalId The id of the proposal to vote on
392
+ * @param support The support value for the vote. 0=against, 1=for, 2=abstain
393
+ * @return The number of votes cast
394
+ */
395
+ function castVoteInternal(address voter, uint proposalId, uint8 support) internal returns (uint96) {
396
+ require(state(proposalId) == ProposalState.Active, "GovernorBravo::castVoteInternal: voting is closed");
397
+ require(support <= 2, "GovernorBravo::castVoteInternal: invalid vote type");
398
+ Proposal storage proposal = proposals[proposalId];
399
+ Receipt storage receipt = proposal.receipts[voter];
400
+ require(receipt.hasVoted == false, "GovernorBravo::castVoteInternal: voter already voted");
401
+ uint96 votes = xvsVault.getPriorVotes(voter, proposal.startBlock);
402
+
403
+ if (support == 0) {
404
+ proposal.againstVotes = add256(proposal.againstVotes, votes);
405
+ } else if (support == 1) {
406
+ proposal.forVotes = add256(proposal.forVotes, votes);
407
+ } else if (support == 2) {
408
+ proposal.abstainVotes = add256(proposal.abstainVotes, votes);
409
+ }
410
+
411
+ receipt.hasVoted = true;
412
+ receipt.support = support;
413
+ receipt.votes = votes;
414
+
415
+ return votes;
416
+ }
417
+
418
+ /**
419
+ * @notice Sets the new governance guardian
420
+ * @param newGuardian the address of the new guardian
421
+ */
422
+ function _setGuardian(address newGuardian) external {
423
+ require(msg.sender == guardian || msg.sender == admin, "GovernorBravo::_setGuardian: admin or guardian only");
424
+ require(newGuardian != address(0), "GovernorBravo::_setGuardian: cannot live without a guardian");
425
+ address oldGuardian = guardian;
426
+ guardian = newGuardian;
427
+
428
+ emit NewGuardian(oldGuardian, newGuardian);
429
+ }
430
+
431
+ /**
432
+ * @notice Initiate the GovernorBravo contract
433
+ * @dev Admin only. Sets initial proposal id which initiates the contract, ensuring a continuous proposal id count
434
+ * @param governorAlpha The address for the Governor to continue the proposal id count from
435
+ */
436
+ function _initiate(address governorAlpha) external {
437
+ require(msg.sender == admin, "GovernorBravo::_initiate: admin only");
438
+ require(initialProposalId == 0, "GovernorBravo::_initiate: can only initiate once");
439
+ proposalCount = GovernorAlphaInterface(governorAlpha).proposalCount();
440
+ initialProposalId = proposalCount;
441
+ for (uint256 i; i < uint8(ProposalType.CRITICAL) + 1; ++i) {
442
+ proposalTimelocks[i].acceptAdmin();
443
+ }
444
+ }
445
+
446
+ /**
447
+ * @notice Set max proposal operations
448
+ * @dev Admin only.
449
+ * @param proposalMaxOperations_ Max proposal operations
450
+ */
451
+ function _setProposalMaxOperations(uint proposalMaxOperations_) external {
452
+ require(msg.sender == admin, "GovernorBravo::_setProposalMaxOperations: admin only");
453
+ uint oldProposalMaxOperations = proposalMaxOperations;
454
+ proposalMaxOperations = proposalMaxOperations_;
455
+
456
+ emit ProposalMaxOperationsUpdated(oldProposalMaxOperations, proposalMaxOperations_);
457
+ }
458
+
459
+ /**
460
+ * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
461
+ * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
462
+ * @param newPendingAdmin New pending admin.
463
+ */
464
+ function _setPendingAdmin(address newPendingAdmin) external {
465
+ // Check caller = admin
466
+ require(msg.sender == admin, "GovernorBravo:_setPendingAdmin: admin only");
467
+
468
+ // Save current value, if any, for inclusion in log
469
+ address oldPendingAdmin = pendingAdmin;
470
+
471
+ // Store pendingAdmin with value newPendingAdmin
472
+ pendingAdmin = newPendingAdmin;
473
+
474
+ // Emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin)
475
+ emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);
476
+ }
477
+
478
+ /**
479
+ * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin
480
+ * @dev Admin function for pending admin to accept role and update admin
481
+ */
482
+ function _acceptAdmin() external {
483
+ // Check caller is pendingAdmin and pendingAdmin ≠ address(0)
484
+ require(
485
+ msg.sender == pendingAdmin && msg.sender != address(0),
486
+ "GovernorBravo:_acceptAdmin: pending admin only"
487
+ );
488
+
489
+ // Save current values for inclusion in log
490
+ address oldAdmin = admin;
491
+ address oldPendingAdmin = pendingAdmin;
492
+
493
+ // Store admin with value pendingAdmin
494
+ admin = pendingAdmin;
495
+
496
+ // Clear the pending value
497
+ pendingAdmin = address(0);
498
+
499
+ emit NewAdmin(oldAdmin, admin);
500
+ emit NewPendingAdmin(oldPendingAdmin, pendingAdmin);
501
+ }
502
+
503
+ function add256(uint256 a, uint256 b) internal pure returns (uint) {
504
+ uint c = a + b;
505
+ require(c >= a, "addition overflow");
506
+ return c;
507
+ }
508
+
509
+ function sub256(uint256 a, uint256 b) internal pure returns (uint) {
510
+ require(b <= a, "subtraction underflow");
511
+ return a - b;
512
+ }
513
+
514
+ function getChainIdInternal() internal pure returns (uint) {
515
+ uint chainId;
516
+ assembly {
517
+ chainId := chainid()
518
+ }
519
+ return chainId;
520
+ }
521
+ }