@superfluid-finance/ethereum-contracts 1.2.3-dev.f94fdbb.0 → 1.3.1-dev.b8455ea.0

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 (165) hide show
  1. package/build/contracts/AccessControl.json +3 -3
  2. package/build/contracts/AccessControlEnumerable.json +3 -3
  3. package/build/contracts/Address.json +5 -5
  4. package/build/contracts/AgreementBase.json +13 -13
  5. package/build/contracts/AgreementLibrary.json +7 -7
  6. package/build/contracts/BaseRelayRecipient.json +5 -5
  7. package/build/contracts/BatchLiquidator.json +179 -179
  8. package/build/contracts/BatchOperation.json +5 -5
  9. package/build/contracts/CFAv1Library.json +5 -5
  10. package/build/contracts/CallUtils.json +7 -7
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +2107 -1917
  12. package/build/contracts/ConstantFlowAgreementV1.json +8 -8
  13. package/build/contracts/Context.json +3 -3
  14. package/build/contracts/ContextDefinitions.json +5 -5
  15. package/build/contracts/Create2.json +5 -5
  16. package/build/contracts/CustomSuperTokenBase.json +3 -3
  17. package/build/contracts/ERC165.json +3 -3
  18. package/build/contracts/ERC1820Implementer.json +5 -5
  19. package/build/contracts/ERC1820RegistryCompiled.json +7 -7
  20. package/build/contracts/ERC20.json +5 -5
  21. package/build/contracts/ERC20Burnable.json +3 -3
  22. package/build/contracts/ERC20Pausable.json +3 -3
  23. package/build/contracts/ERC20PresetMinterPauser.json +5 -5
  24. package/build/contracts/ERC20WithTokenInfo.json +3 -3
  25. package/build/contracts/ERC777Helper.json +7 -7
  26. package/build/contracts/ERC777RecipientDrainingGas.json +839 -839
  27. package/build/contracts/ERC777RecipientReverting.json +839 -839
  28. package/build/contracts/EnumerableSet.json +5 -5
  29. package/build/contracts/EventsEmitter.json +47 -47
  30. package/build/contracts/ExclusiveInflowTestApp.json +2107 -1917
  31. package/build/contracts/FixedSizeData.json +213 -213
  32. package/build/contracts/FlowExchangeTestApp.json +2107 -1917
  33. package/build/contracts/FlowOperatorDefinitions.json +5 -5
  34. package/build/contracts/FullUpgradableSuperTokenProxy.json +226 -312
  35. package/build/contracts/IAccessControl.json +3 -3
  36. package/build/contracts/IAccessControlEnumerable.json +3 -3
  37. package/build/contracts/IConstantFlowAgreementV1.json +451 -444
  38. package/build/contracts/IDAv1Library.json +5 -5
  39. package/build/contracts/IERC165.json +3 -3
  40. package/build/contracts/IERC1820Implementer.json +3 -3
  41. package/build/contracts/IERC1820Registry.json +3 -3
  42. package/build/contracts/IERC20.json +3 -3
  43. package/build/contracts/IERC20Metadata.json +3 -3
  44. package/build/contracts/IERC777.json +3 -3
  45. package/build/contracts/IERC777Recipient.json +3 -3
  46. package/build/contracts/IERC777Sender.json +3 -3
  47. package/build/contracts/IInstantDistributionAgreementV1.json +570 -559
  48. package/build/contracts/IMaticBridgedNativeSuperToken.json +71 -32
  49. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +3 -3
  50. package/build/contracts/IMultiSigWallet.json +3 -3
  51. package/build/contracts/IPureSuperToken.json +71 -32
  52. package/build/contracts/IPureSuperTokenCustom.json +3 -3
  53. package/build/contracts/IRelayRecipient.json +3 -3
  54. package/build/contracts/IResolver.json +3 -3
  55. package/build/contracts/ISETH.json +71 -32
  56. package/build/contracts/ISETHCustom.json +3 -3
  57. package/build/contracts/ISuperAgreement.json +3 -3
  58. package/build/contracts/ISuperApp.json +179 -173
  59. package/build/contracts/ISuperToken.json +522 -483
  60. package/build/contracts/ISuperTokenFactory.json +3 -3
  61. package/build/contracts/ISuperfluid.json +633 -628
  62. package/build/contracts/ISuperfluidGovernance.json +134 -133
  63. package/build/contracts/ISuperfluidToken.json +403 -394
  64. package/build/contracts/ITOGAv1.json +1211 -1211
  65. package/build/contracts/ITOGAv2.json +1211 -1211
  66. package/build/contracts/Initializable.json +3 -3
  67. package/build/contracts/InstantDistributionAgreementV1.json +10 -10
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +194 -194
  69. package/build/contracts/NonClosableOutflowTestApp.json +2107 -1917
  70. package/build/contracts/Ownable.json +3 -3
  71. package/build/contracts/Pausable.json +3 -3
  72. package/build/contracts/Proxy.json +3 -3
  73. package/build/contracts/PureSuperToken.json +91 -91
  74. package/build/contracts/Resolver.json +96 -96
  75. package/build/contracts/SETHProxy.json +199 -199
  76. package/build/contracts/SafeCast.json +5 -5
  77. package/build/contracts/SafeERC20.json +5 -5
  78. package/build/contracts/SafeMath.json +5 -5
  79. package/build/contracts/SelfDeletingFlowTestApp.json +2107 -1917
  80. package/build/contracts/SlotsBitmapLibrary.json +7 -7
  81. package/build/contracts/Strings.json +5 -5
  82. package/build/contracts/SuperAppBase.json +3 -3
  83. package/build/contracts/SuperAppDefinitions.json +5 -5
  84. package/build/contracts/SuperToken.json +2262 -2262
  85. package/build/contracts/SuperTokenFactory.json +582 -582
  86. package/build/contracts/SuperTokenFactoryBase.json +576 -576
  87. package/build/contracts/SuperTokenFactoryHelper.json +578 -578
  88. package/build/contracts/SuperUpgrader.json +687 -687
  89. package/build/contracts/Superfluid.json +6648 -6678
  90. package/build/contracts/SuperfluidFrameworkDeployer.json +526 -526
  91. package/build/contracts/SuperfluidGovernanceBase.json +13 -13
  92. package/build/contracts/SuperfluidGovernanceConfigs.json +5 -5
  93. package/build/contracts/SuperfluidGovernanceII.json +21 -21
  94. package/build/contracts/SuperfluidGovernanceIIProxy.json +20 -20
  95. package/build/contracts/SuperfluidLoader.json +147 -147
  96. package/build/contracts/SuperfluidToken.json +1269 -1269
  97. package/build/contracts/TOGA.json +1221 -1221
  98. package/build/contracts/TestGovernance.json +315 -315
  99. package/build/contracts/TestToken.json +475 -561
  100. package/build/contracts/TokenCustodian.json +220 -220
  101. package/build/contracts/TokenInfo.json +3 -3
  102. package/build/contracts/UUPSProxiable.json +136 -136
  103. package/build/contracts/UUPSProxy.json +87 -87
  104. package/build/contracts/UUPSUtils.json +43 -43
  105. package/build/contracts-sizes.txt +3 -3
  106. package/contracts/agreements/AgreementBase.sol +1 -1
  107. package/contracts/agreements/AgreementLibrary.sol +1 -1
  108. package/contracts/agreements/ConstantFlowAgreementV1.sol +1 -1
  109. package/contracts/agreements/InstantDistributionAgreementV1.sol +1 -1
  110. package/contracts/gov/SuperfluidGovernanceBase.sol +1 -1
  111. package/contracts/gov/SuperfluidGovernanceII.sol +1 -1
  112. package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +7 -10
  113. package/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol +11 -18
  114. package/contracts/interfaces/superfluid/ISuperApp.sol +7 -9
  115. package/contracts/interfaces/superfluid/ISuperToken.sol +36 -44
  116. package/contracts/interfaces/superfluid/ISuperfluid.sol +17 -21
  117. package/contracts/interfaces/superfluid/ISuperfluidGovernance.sol +1 -1
  118. package/contracts/interfaces/superfluid/ISuperfluidToken.sol +13 -14
  119. package/contracts/libs/BaseRelayRecipient.sol +1 -1
  120. package/contracts/libs/CallUtils.sol +1 -1
  121. package/contracts/libs/ERC1820RegistryCompiled.sol +1 -1
  122. package/contracts/libs/ERC777Helper.sol +1 -1
  123. package/contracts/libs/EventsEmitter.sol +2 -2
  124. package/contracts/libs/FixedSizeData.sol +2 -2
  125. package/contracts/libs/SlotsBitmapLibrary.sol +1 -1
  126. package/contracts/mocks/AgreementMock.sol +1 -1
  127. package/contracts/mocks/CFAAppMocks.sol +6 -6
  128. package/contracts/mocks/CFALibraryMock.sol +2 -2
  129. package/contracts/mocks/CallUtilsMock.sol +1 -1
  130. package/contracts/mocks/CallUtilsTester.sol +1 -1
  131. package/contracts/mocks/CustomSuperTokenMock.sol +1 -1
  132. package/contracts/mocks/ERC777SenderRecipientMock.sol +1 -1
  133. package/contracts/mocks/FakeSuperfluidMock.sol +1 -1
  134. package/contracts/mocks/ForwarderMock.sol +1 -1
  135. package/contracts/mocks/IDASuperAppTester.sol +2 -2
  136. package/contracts/mocks/IDAv1LibraryMock.sol +3 -3
  137. package/contracts/mocks/MockSmartWallet.sol +1 -1
  138. package/contracts/mocks/MultiFlowTesterApp.sol +2 -2
  139. package/contracts/mocks/SuperAppMocks.sol +15 -12
  140. package/contracts/mocks/SuperTokenFactoryMock.sol +1 -1
  141. package/contracts/mocks/SuperTokenMock.sol +1 -1
  142. package/contracts/mocks/SuperfluidDestructorMock.sol +1 -1
  143. package/contracts/mocks/SuperfluidGovernanceIIMock.sol +1 -1
  144. package/contracts/mocks/SuperfluidMock.sol +2 -2
  145. package/contracts/mocks/UUPSProxiableMock.sol +1 -1
  146. package/contracts/superfluid/FullUpgradableSuperTokenProxy.sol +2 -2
  147. package/contracts/superfluid/SuperToken.sol +1 -1
  148. package/contracts/superfluid/SuperTokenFactory.sol +1 -1
  149. package/contracts/superfluid/Superfluid.sol +4 -4
  150. package/contracts/superfluid/SuperfluidToken.sol +1 -1
  151. package/contracts/tokens/MaticBridgedNativeSuperToken.sol +1 -1
  152. package/contracts/tokens/PureSuperToken.sol +1 -1
  153. package/contracts/tokens/SETH.sol +1 -1
  154. package/contracts/upgradability/UUPSProxiable.sol +1 -1
  155. package/contracts/upgradability/UUPSProxy.sol +1 -1
  156. package/contracts/upgradability/UUPSUtils.sol +1 -1
  157. package/contracts/utils/BatchLiquidator.sol +1 -1
  158. package/contracts/utils/Resolver.sol +1 -1
  159. package/contracts/utils/SuperUpgrader.sol +6 -6
  160. package/contracts/utils/SuperfluidLoader.sol +1 -1
  161. package/contracts/utils/TOGA.sol +1 -1
  162. package/contracts/utils/TestGovernance.sol +2 -2
  163. package/contracts/utils/TestToken.sol +2 -2
  164. package/contracts/utils/TokenCustodian.sol +1 -1
  165. package/package.json +5 -3
@@ -811,7 +811,7 @@
811
811
  "type": "function"
812
812
  }
813
813
  ],
814
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"}],\"name\":\"CFAv1LiquidationPeriodChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ConfigChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"patricianPeriod\",\"type\":\"uint256\"}],\"name\":\"PPPConfigurationChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"}],\"name\":\"RewardAddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minimumDeposit\",\"type\":\"uint256\"}],\"name\":\"SuperTokenMinimumDepositChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"TrustedForwarderChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"authorizeAppFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"batchUpdateSuperTokenLogic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minimumDeposits\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateSuperTokenMinimumDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"clearConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"clearPPPConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"clearRewardAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"clearSuperTokenMinimumDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"clearTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"disableTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"enableTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsUint256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"getPPPConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"patricianPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"getRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"getSuperTokenMinimumDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"isAuthorizedAppFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"name\":\"registerAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"replaceGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"patricianPeriod\",\"type\":\"uint256\"}],\"name\":\"setPPPConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"}],\"name\":\"setRewardAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setSuperTokenMinimumDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"unauthorizeAppFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hostNewLogic\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"agreementClassNewLogics\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"superTokenFactoryNewLogic\",\"type\":\"address\"}],\"name\":\"updateContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"authorizeAppFactory(address,address)\":{\"details\":\"allows the given factory to register new apps without requiring onetime keys\",\"params\":{\"factory\":\"must be an initialized contract\"}},\"batchUpdateSuperTokenLogic(address,address[])\":{\"details\":\"Update supertoken logic contract to the latest that is managed by the super token factory\"},\"clearConfig(address,address,bytes32)\":{\"details\":\"Clear configuration\"},\"getConfigAsAddress(address,address,bytes32)\":{\"details\":\"Get configuration as address value\"},\"getConfigAsUint256(address,address,bytes32)\":{\"details\":\"Get configuration as uint256 value\"},\"isAuthorizedAppFactory(address,address)\":{\"details\":\"tells if the given factory is authorized to register apps\"},\"registerAgreementClass(address,address)\":{\"details\":\"Register a new agreement class\"},\"replaceGovernance(address,address)\":{\"details\":\"Replace the current governance with a new governance\"},\"setConfig(address,address,bytes32,address)\":{\"details\":\"Set configuration as address value\"},\"setConfig(address,address,bytes32,uint256)\":{\"details\":\"Set configuration as uint256 value\"},\"unauthorizeAppFactory(address,address)\":{\"details\":\"withdraws authorization from a factory to register new apps. Doesn't affect apps previously registered by the factory.\"},\"updateContracts(address,address,address[],address)\":{\"details\":\"Update logics of the contracts NOTE: - Because they might have inter-dependencies, it is good to have one single function to update them all\"}},\"title\":\"Base superfluid governance implementation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/gov/SuperfluidGovernanceBase.sol\":\"SuperfluidGovernanceBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"project:/contracts/gov/SuperfluidGovernanceBase.sol\":{\"keccak256\":\"0xcbf4daa0e4c1da855ee47011428b4cd75c9fd5b7923749c481a882bbeb241fbb\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://bb93ada4ed13faf08607fc37eefdfa99342a3b766648158e58874acc1ea42861\",\"dweb:/ipfs/Qmdcks7t6bxnbR9f7q2Db9JMsicJeQJo7nEMppwPSCp4pg\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0x2d9b845469a35b66f1166406149ac85e933dbe9156f57e4a4078948e6a6e71a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://48e5cb11d4b90e42af521e23b33d57e12187c989d8d56be332b1649308168d45\",\"dweb:/ipfs/QmdaTW4HfpFfHjkHiJ3CmZUmCfLJyFCPTnCygwhiNhx3Tu\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x518b869178aafffde40c654a1e24b3b1a2b5e42e5e8f17562556f404db8b9434\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://458ce84666b418fa3a7569c0e109db4d920fb6d1cb67ebc4c497c9c71107d93b\",\"dweb:/ipfs/QmV9nqhRF7MDGkV6UW3WWcqeXov2vmqHuRcvbqaaV8yP6u\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]}},\"version\":1}",
814
+ "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"}],\"name\":\"CFAv1LiquidationPeriodChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ConfigChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"patricianPeriod\",\"type\":\"uint256\"}],\"name\":\"PPPConfigurationChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"}],\"name\":\"RewardAddressChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minimumDeposit\",\"type\":\"uint256\"}],\"name\":\"SuperTokenMinimumDepositChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isKeySet\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"TrustedForwarderChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"authorizeAppFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"batchUpdateSuperTokenLogic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minimumDeposits\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateSuperTokenMinimumDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"clearConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"clearPPPConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"clearRewardAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"clearSuperTokenMinimumDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"clearTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"disableTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"enableTrustedForwarder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsUint256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"getPPPConfig\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"patricianPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"getRewardAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"name\":\"getSuperTokenMinimumDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"isAuthorizedAppFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"name\":\"registerAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"replaceGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidationPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"patricianPeriod\",\"type\":\"uint256\"}],\"name\":\"setPPPConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardAddress\",\"type\":\"address\"}],\"name\":\"setRewardAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setSuperTokenMinimumDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"unauthorizeAppFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hostNewLogic\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"agreementClassNewLogics\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"superTokenFactoryNewLogic\",\"type\":\"address\"}],\"name\":\"updateContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"authorizeAppFactory(address,address)\":{\"details\":\"allows the given factory to register new apps without requiring onetime keys\",\"params\":{\"factory\":\"must be an initialized contract\"}},\"batchUpdateSuperTokenLogic(address,address[])\":{\"details\":\"Update supertoken logic contract to the latest that is managed by the super token factory\"},\"clearConfig(address,address,bytes32)\":{\"details\":\"Clear configuration\"},\"getConfigAsAddress(address,address,bytes32)\":{\"details\":\"Get configuration as address value\"},\"getConfigAsUint256(address,address,bytes32)\":{\"details\":\"Get configuration as uint256 value\"},\"isAuthorizedAppFactory(address,address)\":{\"details\":\"tells if the given factory is authorized to register apps\"},\"registerAgreementClass(address,address)\":{\"details\":\"Register a new agreement class\"},\"replaceGovernance(address,address)\":{\"details\":\"Replace the current governance with a new governance\"},\"setConfig(address,address,bytes32,address)\":{\"details\":\"Set configuration as address value\"},\"setConfig(address,address,bytes32,uint256)\":{\"details\":\"Set configuration as uint256 value\"},\"unauthorizeAppFactory(address,address)\":{\"details\":\"withdraws authorization from a factory to register new apps. Doesn't affect apps previously registered by the factory.\"},\"updateContracts(address,address,address[],address)\":{\"details\":\"Update logics of the contracts\"}},\"title\":\"Base superfluid governance implementation\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/gov/SuperfluidGovernanceBase.sol\":\"SuperfluidGovernanceBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"project:/contracts/gov/SuperfluidGovernanceBase.sol\":{\"keccak256\":\"0x0809d6544bbc2535a8be017b78f134913d3451c2958a3421950df6b57c3499f1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c726eacb51fe00e96e104d7d4271ca666dbadc0b2452c068d4d31898720c0b97\",\"dweb:/ipfs/QmRXFcCEdcX7pzKuAyQjGpNChRQQQuJw1SG57nGh3KugTR\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x42b604992cf67321cc12e8bed16543df0db4eaf125b8c1c82c330ebbeb20c014\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7c18b00caf7b8be7e11f75284fb96263ce48a3984d56f2a91ec44cae4413d2fc\",\"dweb:/ipfs/QmWVzdW9KnkwAVe9g5zRuMoqCf7N89AoBfzzRr8puw5d8a\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0xcff22ed43df0f34a645e6cbe0d7c5fd08f204d769e9095bc59d7c2fe6d11b7d6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://944b8c5a37839b40ec8ee1ccfecbaf007808a61ea16c7b1351a7184606772032\",\"dweb:/ipfs/QmbUKZqZtVfqZMKYnQUygE4svatKuN9kT2ibrnxMuWXR7n\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xf16efd1ba72322e77e0d936b723c0e71eb14c23e11cf69efae8c7caa407012cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ff4bb321b72dc3332984346e5b66ad131c6132101658fe6707d7a9d043f981ab\",\"dweb:/ipfs/QmXmVD2mZ3LRb7wQZ2VcrpYhtjm21zUe5hPDDDJA1WXbFz\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0xea33d20751ffea4f4446bc04f6c10194fb4da0803a988586d41d49cf4859731c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7716b1f5eec0a7ac8780d82de4f0274ecd7059be4eec46c82b0b7adce110f10b\",\"dweb:/ipfs/QmWRQafvdCBsyfDYnevXSav1AAz8uZRRBwh2be5Z3vSfVN\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x3eec5a3bf337cd319c1918fd1b16f350cf5f6850ac71f6859066fbf86e734ff4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cda19a2f5ca18e79c1e2300c8efac84c718df76c4fb313f59f84264a4c6b398a\",\"dweb:/ipfs/QmfQiwgDH5Q64w5ufBnDzVaeWv6WCZ6fLTrYu1FSYfBGhq\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0xabe3beb46dff1433d7ae61fe470fc347967d5a5b09d48fa45f35ddb2735d61f2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ad0fdb3210d3b0ed62886decdeef62b43bdbdd59bd55fc5ea3d636e97fbfb65d\",\"dweb:/ipfs/QmPjd6ehqgoiHkrf2g2h9AZRxKakqxsGx1GTiy5DSwfYJg\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xe624225773a60f62c7a0687afb0536ba19a17e4e5605ae71e8af77a0287aca59\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://4294e5eb5b194477bca3b8ca04ca92a6fe72dd6cf8da8f0d942a4a86c41c1c7f\",\"dweb:/ipfs/QmdfPXZxJPaBjKNfC8joTcvEhWammJHzRACB1S18sFYfd7\"]}},\"version\":1}",
815
815
  "bytecode": "0x",
816
816
  "deployedBytecode": "0x",
817
817
  "immutableReferences": {},
@@ -819,7 +819,7 @@
819
819
  "deployedGeneratedSources": [],
820
820
  "sourceMap": "",
821
821
  "deployedSourceMap": "",
822
- "source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.13;\n\nimport {\n ISuperfluid,\n ISuperAgreement,\n ISuperfluidToken,\n ISuperToken,\n ISuperTokenFactory,\n ISuperfluidGovernance,\n SuperfluidGovernanceConfigs\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\n\nimport { UUPSProxiable } from \"../upgradability/UUPSProxiable.sol\";\n\n\n/**\n * @title Base superfluid governance implementation\n * @author Superfluid\n */\nabstract contract SuperfluidGovernanceBase is ISuperfluidGovernance\n{\n struct Value {\n bool set;\n uint256 value;\n }\n\n // host => superToken => config\n mapping (address => mapping (address => mapping (bytes32 => Value))) internal _configs;\n\n /**************************************************************************\n /* ISuperfluidGovernance interface\n /*************************************************************************/\n\n function replaceGovernance(\n ISuperfluid host,\n address newGov\n )\n external override\n onlyAuthorized(host)\n {\n host.replaceGovernance(ISuperfluidGovernance(newGov));\n }\n\n function registerAgreementClass(\n ISuperfluid host,\n address agreementClass\n )\n external override\n onlyAuthorized(host)\n {\n host.registerAgreementClass(ISuperAgreement(agreementClass));\n }\n\n function updateContracts(\n ISuperfluid host,\n address hostNewLogic,\n address[] calldata agreementClassNewLogics,\n address superTokenFactoryNewLogic\n )\n external override\n onlyAuthorized(host)\n {\n if (hostNewLogic != address(0)) {\n UUPSProxiable(address(host)).updateCode(hostNewLogic);\n }\n for (uint i = 0; i < agreementClassNewLogics.length; ++i) {\n host.updateAgreementClass(ISuperAgreement(agreementClassNewLogics[i]));\n }\n if (superTokenFactoryNewLogic != address(0)) {\n host.updateSuperTokenFactory(ISuperTokenFactory(superTokenFactoryNewLogic));\n }\n }\n\n function batchUpdateSuperTokenLogic(\n ISuperfluid host,\n ISuperToken[] calldata tokens\n )\n external override\n onlyAuthorized(host)\n {\n for (uint i = 0; i < tokens.length; ++i) {\n host.updateSuperTokenLogic(tokens[i]);\n }\n }\n\n function batchUpdateSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperToken[] calldata tokens,\n uint256[] calldata minimumDeposits\n ) external {\n require(tokens.length == minimumDeposits.length, \"SFGov: arrays are not the same length\");\n for (uint i = 0; i < minimumDeposits.length; ++i) {\n setSuperTokenMinimumDeposit(\n host,\n tokens[i],\n minimumDeposits[i]\n );\n }\n }\n\n event ConfigChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bytes32 key,\n\t\tbool isKeySet,\n uint256 value);\n\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n address value\n )\n external override\n {\n _setConfig(host, superToken, key, value);\n }\n\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n uint256 value\n )\n external override\n {\n _setConfig(host, superToken, key, value);\n }\n\n function clearConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n external override\n {\n _clearConfig(host, superToken, key);\n }\n\n function _setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n address value\n )\n internal\n onlyAuthorized(host)\n {\n emit ConfigChanged(host, superToken, key, true, uint256(uint160(value)));\n _configs[address(host)][address(superToken)][key] = Value(true, uint256(uint160(value)));\n }\n\n function _setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n uint256 value\n )\n internal\n onlyAuthorized(host)\n {\n emit ConfigChanged(host, superToken, key, true, value);\n _configs[address(host)][address(superToken)][key] = Value(true, value);\n }\n\n function _clearConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n internal\n onlyAuthorized(host)\n {\n emit ConfigChanged(host, superToken, key, false, 0);\n _configs[address(host)][address(superToken)][key] = Value(false, 0);\n }\n\n function getConfigAsAddress(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n public view override\n returns(address value)\n {\n Value storage v = _configs[address(host)][address(superToken)][key];\n if (!v.set) {\n // fallback to default config\n v = _configs[address(host)][address(0)][key];\n }\n return address(uint160(v.value));\n }\n\n function getConfigAsUint256(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n public view override\n returns(uint256 period)\n {\n Value storage v = _configs[address(host)][address(superToken)][key];\n if (!v.set) {\n // fallback to default config\n v = _configs[address(host)][address(0)][key];\n }\n return v.value;\n }\n\n /**************************************************************************\n /* Known Configurations\n /*************************************************************************/\n\n // Superfluid rewardAddress\n event RewardAddressChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n address rewardAddress);\n\n function getRewardAddress(\n ISuperfluid host,\n ISuperfluidToken superToken\n )\n public view returns (address)\n {\n return getConfigAsAddress(\n host, superToken,\n SuperfluidGovernanceConfigs.SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY);\n }\n\n function setRewardAddress(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address rewardAddress\n )\n public\n {\n emit RewardAddressChanged(host, superToken, true, rewardAddress);\n return _setConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY,\n rewardAddress);\n }\n\n function clearRewardAddress(\n ISuperfluid host,\n ISuperfluidToken superToken\n )\n public\n {\n emit RewardAddressChanged(host, superToken, false, address(0));\n _clearConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY);\n }\n\n // CFAv1 liquidationPeriod (DEPRECATED BY PPPConfigurationChanged)\n event CFAv1LiquidationPeriodChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n uint256 liquidationPeriod);\n\n // CFAv1 PPPConfiguration - Liquidation Period + Patrician Period\n event PPPConfigurationChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n uint256 liquidationPeriod,\n uint256 patricianPeriod);\n\n function getPPPConfig(\n ISuperfluid host,\n ISuperfluidToken superToken\n ) public view\n returns (uint256 liquidationPeriod, uint256 patricianPeriod)\n {\n uint256 pppConfig = getConfigAsUint256(\n host,\n superToken,\n SuperfluidGovernanceConfigs.CFAV1_PPP_CONFIG_KEY\n );\n (liquidationPeriod, patricianPeriod) = SuperfluidGovernanceConfigs.decodePPPConfig(pppConfig);\n }\n\n function setPPPConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n uint256 liquidationPeriod,\n uint256 patricianPeriod\n )\n public\n {\n require(liquidationPeriod > patricianPeriod\n && liquidationPeriod < type(uint32).max\n && patricianPeriod < type(uint32).max,\n \"SFGov: Invalid liquidationPeriod or patricianPeriod\"\n );\n emit PPPConfigurationChanged(host, superToken, true, liquidationPeriod, patricianPeriod);\n uint256 value = (uint256(liquidationPeriod) << 32) | uint256(patricianPeriod);\n return _setConfig(\n host,\n superToken,\n SuperfluidGovernanceConfigs.CFAV1_PPP_CONFIG_KEY,\n value\n );\n }\n\n function clearPPPConfig(\n ISuperfluid host,\n ISuperfluidToken superToken\n ) public {\n emit PPPConfigurationChanged(host, superToken, false, 0, 0);\n return _clearConfig(host, superToken, SuperfluidGovernanceConfigs.CFAV1_PPP_CONFIG_KEY);\n }\n event SuperTokenMinimumDepositChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n uint256 minimumDeposit\n );\n\n function getSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperfluidToken superToken\n ) public view\n returns (uint256 value)\n {\n return getConfigAsUint256(host, superToken,\n SuperfluidGovernanceConfigs.SUPERTOKEN_MINIMUM_DEPOSIT_KEY);\n }\n\n function setSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperfluidToken superToken,\n uint256 value\n ) public {\n emit SuperTokenMinimumDepositChanged(host, superToken, true, value);\n return _setConfig(host, superToken, SuperfluidGovernanceConfigs.SUPERTOKEN_MINIMUM_DEPOSIT_KEY, value);\n }\n\n function clearSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperToken superToken\n ) public\n {\n emit SuperTokenMinimumDepositChanged(host, superToken, false, 0);\n return _clearConfig(host, superToken, SuperfluidGovernanceConfigs.SUPERTOKEN_MINIMUM_DEPOSIT_KEY);\n }\n\n // trustedForwarder\n event TrustedForwarderChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n address forwarder,\n bool enabled);\n\n function isTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public view\n returns (bool)\n {\n return getConfigAsUint256(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder)) == 1;\n }\n\n function enableTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public\n {\n _setConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder),\n 1);\n emit TrustedForwarderChanged(host, superToken, true, forwarder, true);\n }\n\n function disableTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public\n {\n _setConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder),\n 0);\n emit TrustedForwarderChanged(host, superToken, true, forwarder, false);\n }\n\n function clearTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public\n {\n emit TrustedForwarderChanged(host, superToken, false, forwarder, false);\n return _clearConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder));\n }\n\n /**\n * @dev tells if the given factory is authorized to register apps\n */\n function isAuthorizedAppFactory(\n ISuperfluid host,\n address factory\n )\n public view\n returns (bool)\n {\n return getConfigAsUint256(\n host, ISuperfluidToken(address(0)),\n SuperfluidGovernanceConfigs.getAppFactoryConfigKey(factory)) == 1;\n }\n\n /**\n * @dev allows the given factory to register new apps without requiring onetime keys\n * @param factory must be an initialized contract\n */\n function authorizeAppFactory(\n ISuperfluid host,\n address factory\n )\n public\n {\n // check if contract\n {\n uint256 cs;\n // solhint-disable-next-line no-inline-assembly\n assembly { cs := extcodesize(factory) }\n require(cs > 0, \"SFGov: factory must be a contract\");\n }\n\n _setConfig(\n host, ISuperfluidToken(address(0)),\n SuperfluidGovernanceConfigs.getAppFactoryConfigKey(factory),\n 1);\n }\n\n /**\n * @dev withdraws authorization from a factory to register new apps.\n * Doesn't affect apps previously registered by the factory.\n */\n function unauthorizeAppFactory(\n ISuperfluid host,\n address factory\n )\n public\n {\n _clearConfig(\n host, ISuperfluidToken(address(0)),\n SuperfluidGovernanceConfigs.getAppFactoryConfigKey(factory));\n }\n\n // TODO: would like to use virtual modifier, but solhint doesn't like it atm\n modifier onlyAuthorized(ISuperfluid host) {\n _requireAuthorised(host);\n _;\n }\n\n function _requireAuthorised(ISuperfluid host) internal view virtual;\n}\n",
822
+ "source": "// SPDX-License-Identifier: AGPLv3\npragma solidity 0.8.14;\n\nimport {\n ISuperfluid,\n ISuperAgreement,\n ISuperfluidToken,\n ISuperToken,\n ISuperTokenFactory,\n ISuperfluidGovernance,\n SuperfluidGovernanceConfigs\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\n\nimport { UUPSProxiable } from \"../upgradability/UUPSProxiable.sol\";\n\n\n/**\n * @title Base superfluid governance implementation\n * @author Superfluid\n */\nabstract contract SuperfluidGovernanceBase is ISuperfluidGovernance\n{\n struct Value {\n bool set;\n uint256 value;\n }\n\n // host => superToken => config\n mapping (address => mapping (address => mapping (bytes32 => Value))) internal _configs;\n\n /**************************************************************************\n /* ISuperfluidGovernance interface\n /*************************************************************************/\n\n function replaceGovernance(\n ISuperfluid host,\n address newGov\n )\n external override\n onlyAuthorized(host)\n {\n host.replaceGovernance(ISuperfluidGovernance(newGov));\n }\n\n function registerAgreementClass(\n ISuperfluid host,\n address agreementClass\n )\n external override\n onlyAuthorized(host)\n {\n host.registerAgreementClass(ISuperAgreement(agreementClass));\n }\n\n function updateContracts(\n ISuperfluid host,\n address hostNewLogic,\n address[] calldata agreementClassNewLogics,\n address superTokenFactoryNewLogic\n )\n external override\n onlyAuthorized(host)\n {\n if (hostNewLogic != address(0)) {\n UUPSProxiable(address(host)).updateCode(hostNewLogic);\n }\n for (uint i = 0; i < agreementClassNewLogics.length; ++i) {\n host.updateAgreementClass(ISuperAgreement(agreementClassNewLogics[i]));\n }\n if (superTokenFactoryNewLogic != address(0)) {\n host.updateSuperTokenFactory(ISuperTokenFactory(superTokenFactoryNewLogic));\n }\n }\n\n function batchUpdateSuperTokenLogic(\n ISuperfluid host,\n ISuperToken[] calldata tokens\n )\n external override\n onlyAuthorized(host)\n {\n for (uint i = 0; i < tokens.length; ++i) {\n host.updateSuperTokenLogic(tokens[i]);\n }\n }\n\n function batchUpdateSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperToken[] calldata tokens,\n uint256[] calldata minimumDeposits\n ) external {\n require(tokens.length == minimumDeposits.length, \"SFGov: arrays are not the same length\");\n for (uint i = 0; i < minimumDeposits.length; ++i) {\n setSuperTokenMinimumDeposit(\n host,\n tokens[i],\n minimumDeposits[i]\n );\n }\n }\n\n event ConfigChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bytes32 key,\n\t\tbool isKeySet,\n uint256 value);\n\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n address value\n )\n external override\n {\n _setConfig(host, superToken, key, value);\n }\n\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n uint256 value\n )\n external override\n {\n _setConfig(host, superToken, key, value);\n }\n\n function clearConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n external override\n {\n _clearConfig(host, superToken, key);\n }\n\n function _setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n address value\n )\n internal\n onlyAuthorized(host)\n {\n emit ConfigChanged(host, superToken, key, true, uint256(uint160(value)));\n _configs[address(host)][address(superToken)][key] = Value(true, uint256(uint160(value)));\n }\n\n function _setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n uint256 value\n )\n internal\n onlyAuthorized(host)\n {\n emit ConfigChanged(host, superToken, key, true, value);\n _configs[address(host)][address(superToken)][key] = Value(true, value);\n }\n\n function _clearConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n internal\n onlyAuthorized(host)\n {\n emit ConfigChanged(host, superToken, key, false, 0);\n _configs[address(host)][address(superToken)][key] = Value(false, 0);\n }\n\n function getConfigAsAddress(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n public view override\n returns(address value)\n {\n Value storage v = _configs[address(host)][address(superToken)][key];\n if (!v.set) {\n // fallback to default config\n v = _configs[address(host)][address(0)][key];\n }\n return address(uint160(v.value));\n }\n\n function getConfigAsUint256(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n )\n public view override\n returns(uint256 period)\n {\n Value storage v = _configs[address(host)][address(superToken)][key];\n if (!v.set) {\n // fallback to default config\n v = _configs[address(host)][address(0)][key];\n }\n return v.value;\n }\n\n /**************************************************************************\n /* Known Configurations\n /*************************************************************************/\n\n // Superfluid rewardAddress\n event RewardAddressChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n address rewardAddress);\n\n function getRewardAddress(\n ISuperfluid host,\n ISuperfluidToken superToken\n )\n public view returns (address)\n {\n return getConfigAsAddress(\n host, superToken,\n SuperfluidGovernanceConfigs.SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY);\n }\n\n function setRewardAddress(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address rewardAddress\n )\n public\n {\n emit RewardAddressChanged(host, superToken, true, rewardAddress);\n return _setConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY,\n rewardAddress);\n }\n\n function clearRewardAddress(\n ISuperfluid host,\n ISuperfluidToken superToken\n )\n public\n {\n emit RewardAddressChanged(host, superToken, false, address(0));\n _clearConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY);\n }\n\n // CFAv1 liquidationPeriod (DEPRECATED BY PPPConfigurationChanged)\n event CFAv1LiquidationPeriodChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n uint256 liquidationPeriod);\n\n // CFAv1 PPPConfiguration - Liquidation Period + Patrician Period\n event PPPConfigurationChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n uint256 liquidationPeriod,\n uint256 patricianPeriod);\n\n function getPPPConfig(\n ISuperfluid host,\n ISuperfluidToken superToken\n ) public view\n returns (uint256 liquidationPeriod, uint256 patricianPeriod)\n {\n uint256 pppConfig = getConfigAsUint256(\n host,\n superToken,\n SuperfluidGovernanceConfigs.CFAV1_PPP_CONFIG_KEY\n );\n (liquidationPeriod, patricianPeriod) = SuperfluidGovernanceConfigs.decodePPPConfig(pppConfig);\n }\n\n function setPPPConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n uint256 liquidationPeriod,\n uint256 patricianPeriod\n )\n public\n {\n require(liquidationPeriod > patricianPeriod\n && liquidationPeriod < type(uint32).max\n && patricianPeriod < type(uint32).max,\n \"SFGov: Invalid liquidationPeriod or patricianPeriod\"\n );\n emit PPPConfigurationChanged(host, superToken, true, liquidationPeriod, patricianPeriod);\n uint256 value = (uint256(liquidationPeriod) << 32) | uint256(patricianPeriod);\n return _setConfig(\n host,\n superToken,\n SuperfluidGovernanceConfigs.CFAV1_PPP_CONFIG_KEY,\n value\n );\n }\n\n function clearPPPConfig(\n ISuperfluid host,\n ISuperfluidToken superToken\n ) public {\n emit PPPConfigurationChanged(host, superToken, false, 0, 0);\n return _clearConfig(host, superToken, SuperfluidGovernanceConfigs.CFAV1_PPP_CONFIG_KEY);\n }\n event SuperTokenMinimumDepositChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n uint256 minimumDeposit\n );\n\n function getSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperfluidToken superToken\n ) public view\n returns (uint256 value)\n {\n return getConfigAsUint256(host, superToken,\n SuperfluidGovernanceConfigs.SUPERTOKEN_MINIMUM_DEPOSIT_KEY);\n }\n\n function setSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperfluidToken superToken,\n uint256 value\n ) public {\n emit SuperTokenMinimumDepositChanged(host, superToken, true, value);\n return _setConfig(host, superToken, SuperfluidGovernanceConfigs.SUPERTOKEN_MINIMUM_DEPOSIT_KEY, value);\n }\n\n function clearSuperTokenMinimumDeposit(\n ISuperfluid host,\n ISuperToken superToken\n ) public\n {\n emit SuperTokenMinimumDepositChanged(host, superToken, false, 0);\n return _clearConfig(host, superToken, SuperfluidGovernanceConfigs.SUPERTOKEN_MINIMUM_DEPOSIT_KEY);\n }\n\n // trustedForwarder\n event TrustedForwarderChanged(\n ISuperfluid indexed host,\n ISuperfluidToken indexed superToken,\n bool isKeySet,\n address forwarder,\n bool enabled);\n\n function isTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public view\n returns (bool)\n {\n return getConfigAsUint256(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder)) == 1;\n }\n\n function enableTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public\n {\n _setConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder),\n 1);\n emit TrustedForwarderChanged(host, superToken, true, forwarder, true);\n }\n\n function disableTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public\n {\n _setConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder),\n 0);\n emit TrustedForwarderChanged(host, superToken, true, forwarder, false);\n }\n\n function clearTrustedForwarder(\n ISuperfluid host,\n ISuperfluidToken superToken,\n address forwarder\n )\n public\n {\n emit TrustedForwarderChanged(host, superToken, false, forwarder, false);\n return _clearConfig(\n host, superToken,\n SuperfluidGovernanceConfigs.getTrustedForwarderConfigKey(forwarder));\n }\n\n /**\n * @dev tells if the given factory is authorized to register apps\n */\n function isAuthorizedAppFactory(\n ISuperfluid host,\n address factory\n )\n public view\n returns (bool)\n {\n return getConfigAsUint256(\n host, ISuperfluidToken(address(0)),\n SuperfluidGovernanceConfigs.getAppFactoryConfigKey(factory)) == 1;\n }\n\n /**\n * @dev allows the given factory to register new apps without requiring onetime keys\n * @param factory must be an initialized contract\n */\n function authorizeAppFactory(\n ISuperfluid host,\n address factory\n )\n public\n {\n // check if contract\n {\n uint256 cs;\n // solhint-disable-next-line no-inline-assembly\n assembly { cs := extcodesize(factory) }\n require(cs > 0, \"SFGov: factory must be a contract\");\n }\n\n _setConfig(\n host, ISuperfluidToken(address(0)),\n SuperfluidGovernanceConfigs.getAppFactoryConfigKey(factory),\n 1);\n }\n\n /**\n * @dev withdraws authorization from a factory to register new apps.\n * Doesn't affect apps previously registered by the factory.\n */\n function unauthorizeAppFactory(\n ISuperfluid host,\n address factory\n )\n public\n {\n _clearConfig(\n host, ISuperfluidToken(address(0)),\n SuperfluidGovernanceConfigs.getAppFactoryConfigKey(factory));\n }\n\n // TODO: would like to use virtual modifier, but solhint doesn't like it atm\n modifier onlyAuthorized(ISuperfluid host) {\n _requireAuthorised(host);\n _;\n }\n\n function _requireAuthorised(ISuperfluid host) internal view virtual;\n}\n",
823
823
  "sourcePath": "/home/runner/work/protocol-monorepo/protocol-monorepo/packages/ethereum-contracts/contracts/gov/SuperfluidGovernanceBase.sol",
824
824
  "ast": {
825
825
  "absolutePath": "project:/contracts/gov/SuperfluidGovernanceBase.sol",
@@ -849,7 +849,7 @@
849
849
  17242
850
850
  ],
851
851
  "UUPSProxiable": [
852
- 34838
852
+ 34857
853
853
  ]
854
854
  },
855
855
  "id": 15970,
@@ -861,7 +861,7 @@
861
861
  "literals": [
862
862
  "solidity",
863
863
  "0.8",
864
- ".13"
864
+ ".14"
865
865
  ],
866
866
  "nodeType": "PragmaDirective",
867
867
  "src": "35:23:37"
@@ -970,7 +970,7 @@
970
970
  "nameLocation": "-1:-1:-1",
971
971
  "nodeType": "ImportDirective",
972
972
  "scope": 15970,
973
- "sourceUnit": 34839,
973
+ "sourceUnit": 34858,
974
974
  "src": "281:67:37",
975
975
  "symbolAliases": [
976
976
  {
@@ -979,7 +979,7 @@
979
979
  "name": "UUPSProxiable",
980
980
  "nodeType": "Identifier",
981
981
  "overloadedDeclarations": [],
982
- "referencedDeclaration": 34838,
982
+ "referencedDeclaration": 34857,
983
983
  "src": "290:13:37",
984
984
  "typeDescriptions": {}
985
985
  },
@@ -1857,10 +1857,10 @@
1857
1857
  "name": "UUPSProxiable",
1858
1858
  "nodeType": "Identifier",
1859
1859
  "overloadedDeclarations": [],
1860
- "referencedDeclaration": 34838,
1860
+ "referencedDeclaration": 34857,
1861
1861
  "src": "1656:13:37",
1862
1862
  "typeDescriptions": {
1863
- "typeIdentifier": "t_type$_t_contract$_UUPSProxiable_$34838_$",
1863
+ "typeIdentifier": "t_type$_t_contract$_UUPSProxiable_$34857_$",
1864
1864
  "typeString": "type(contract UUPSProxiable)"
1865
1865
  }
1866
1866
  },
@@ -1875,7 +1875,7 @@
1875
1875
  "src": "1656:28:37",
1876
1876
  "tryCall": false,
1877
1877
  "typeDescriptions": {
1878
- "typeIdentifier": "t_contract$_UUPSProxiable_$34838",
1878
+ "typeIdentifier": "t_contract$_UUPSProxiable_$34857",
1879
1879
  "typeString": "contract UUPSProxiable"
1880
1880
  }
1881
1881
  },
@@ -1886,7 +1886,7 @@
1886
1886
  "lValueRequested": false,
1887
1887
  "memberName": "updateCode",
1888
1888
  "nodeType": "MemberAccess",
1889
- "referencedDeclaration": 34772,
1889
+ "referencedDeclaration": 34791,
1890
1890
  "src": "1656:39:37",
1891
1891
  "typeDescriptions": {
1892
1892
  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
@@ -15125,11 +15125,11 @@
15125
15125
  },
15126
15126
  "compiler": {
15127
15127
  "name": "solc",
15128
- "version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
15128
+ "version": "0.8.14+commit.80d49f37.Emscripten.clang"
15129
15129
  },
15130
15130
  "networks": {},
15131
15131
  "schemaVersion": "3.4.7",
15132
- "updatedAt": "2022-06-03T09:45:13.964Z",
15132
+ "updatedAt": "2022-06-15T22:03:58.574Z",
15133
15133
  "devdoc": {
15134
15134
  "author": "Superfluid",
15135
15135
  "kind": "dev",
@@ -15171,7 +15171,7 @@
15171
15171
  "details": "withdraws authorization from a factory to register new apps. Doesn't affect apps previously registered by the factory."
15172
15172
  },
15173
15173
  "updateContracts(address,address,address[],address)": {
15174
- "details": "Update logics of the contracts NOTE: - Because they might have inter-dependencies, it is good to have one single function to update them all"
15174
+ "details": "Update logics of the contracts"
15175
15175
  }
15176
15176
  },
15177
15177
  "title": "Base superfluid governance implementation",
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "contractName": "SuperfluidGovernanceConfigs",
3
3
  "abi": [],
4
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Superfluid governance configs library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/superfluid/Definitions.sol\":\"SuperfluidGovernanceConfigs\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]}},\"version\":1}",
5
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff689e2cd187d211a5e78b845b10bc2427f0bea896a2d3fae7a66dc56194752c64736f6c634300080d0033",
6
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ff689e2cd187d211a5e78b845b10bc2427f0bea896a2d3fae7a66dc56194752c64736f6c634300080d0033",
4
+ "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Superfluid governance configs library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/superfluid/Definitions.sol\":\"SuperfluidGovernanceConfigs\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]}},\"version\":1}",
5
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206eb49a3c7fd180b76e5a42c08109e1bfd0957427337ecdbc06a9084c094350d064736f6c634300080e0033",
6
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206eb49a3c7fd180b76e5a42c08109e1bfd0957427337ecdbc06a9084c094350d064736f6c634300080e0033",
7
7
  "immutableReferences": {},
8
8
  "generatedSources": [],
9
9
  "deployedGeneratedSources": [],
@@ -6473,11 +6473,11 @@
6473
6473
  },
6474
6474
  "compiler": {
6475
6475
  "name": "solc",
6476
- "version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
6476
+ "version": "0.8.14+commit.80d49f37.Emscripten.clang"
6477
6477
  },
6478
6478
  "networks": {},
6479
6479
  "schemaVersion": "3.4.7",
6480
- "updatedAt": "2022-06-03T09:45:13.990Z",
6480
+ "updatedAt": "2022-06-15T22:03:58.602Z",
6481
6481
  "devdoc": {
6482
6482
  "author": "Superfluid",
6483
6483
  "kind": "dev",