@etherisc/gif-next 0.0.2-ff1bf36-818 → 0.0.2-ff3a8a0-504

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 (547) hide show
  1. package/README.md +91 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → accounting/IAccountingService.sol/IAccountingService.json} +408 -104
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +549 -209
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +196 -441
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +115 -325
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +682 -375
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +218 -130
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +102 -160
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +478 -108
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  65. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  66. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +55 -197
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  69. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  70. package/artifacts/contracts/{shared/KeyValueStore.sol/KeyValueStore.json → instance/IBaseStore.sol/IBaseStore.json} +34 -227
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +578 -65
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +395 -60
  75. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  76. package/artifacts/contracts/instance/Instance.sol/Instance.json +616 -183
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1021 -363
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +328 -92
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1635 -804
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +409 -231
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +143 -105
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1275 -1690
  89. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  91. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  93. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  95. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  96. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  100. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  102. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  104. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  109. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +148 -317
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +116 -109
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +124 -269
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +173 -326
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +352 -380
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +174 -126
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +247 -121
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +154 -158
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +500 -269
  139. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  140. package/artifacts/contracts/pool/Pool.sol/Pool.json +152 -308
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  142. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +723 -515
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +218 -110
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +357 -173
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +165 -97
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +305 -389
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  154. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +458 -253
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  159. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +296 -9
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +335 -19
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +300 -64
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  168. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +270 -202
  169. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  170. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +286 -21
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +428 -287
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  174. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +193 -121
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  181. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  182. package/artifacts/contracts/product/Product.sol/Product.json +278 -362
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.json +364 -186
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +166 -94
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  188. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -48
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  192. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  194. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  196. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  197. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  198. package/artifacts/contracts/registry/Registry.sol/Registry.json +565 -109
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +791 -377
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  202. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  204. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  212. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +483 -253
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  214. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  216. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  217. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Component.sol/Component.json +100 -227
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +496 -625
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +188 -130
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  231. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +93 -68
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +116 -109
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +123 -268
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  253. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  254. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  259. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  263. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  264. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1512 -167
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  276. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  277. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  278. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  279. package/artifacts/contracts/staking/Staking.sol/Staking.json +1646 -402
  280. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +193 -107
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
  292. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  293. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +180 -77
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  297. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.json +35 -11
  299. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  301. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  302. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  310. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  312. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  316. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +69 -2
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  337. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  339. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  341. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
  343. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  345. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  347. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  348. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  349. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  350. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +118 -79
  351. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  352. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  353. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  354. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  355. package/contracts/accounting/AccountingService.sol +274 -0
  356. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  357. package/contracts/accounting/IAccountingService.sol +47 -0
  358. package/contracts/authorization/AccessAdmin.sol +458 -269
  359. package/contracts/authorization/AccessAdminLib.sol +396 -0
  360. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  361. package/contracts/authorization/Authorization.sol +159 -207
  362. package/contracts/authorization/IAccess.sol +25 -6
  363. package/contracts/authorization/IAccessAdmin.sol +87 -79
  364. package/contracts/authorization/IAuthorization.sol +9 -37
  365. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  366. package/contracts/authorization/ServiceAuthorization.sol +255 -25
  367. package/contracts/distribution/BasicDistribution.sol +20 -17
  368. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  369. package/contracts/distribution/Distribution.sol +44 -92
  370. package/contracts/distribution/DistributionService.sol +243 -117
  371. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  372. package/contracts/distribution/IDistributionComponent.sol +4 -11
  373. package/contracts/distribution/IDistributionService.sol +46 -26
  374. package/contracts/examples/fire/DamageLevel.sol +59 -0
  375. package/contracts/examples/fire/FirePool.sol +86 -0
  376. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  377. package/contracts/examples/fire/FireProduct.sol +433 -0
  378. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  379. package/contracts/examples/fire/FireUSD.sol +26 -0
  380. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  381. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  382. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  383. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  384. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  385. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  386. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  387. package/contracts/instance/BaseStore.sol +93 -0
  388. package/contracts/instance/BundleSet.sol +42 -38
  389. package/contracts/instance/IBaseStore.sol +37 -0
  390. package/contracts/instance/IInstance.sol +111 -18
  391. package/contracts/instance/IInstanceService.sol +61 -34
  392. package/contracts/instance/Instance.sol +197 -75
  393. package/contracts/instance/InstanceAdmin.sol +276 -182
  394. package/contracts/instance/InstanceAuthorizationV3.sol +152 -81
  395. package/contracts/instance/InstanceReader.sol +463 -257
  396. package/contracts/instance/InstanceService.sol +320 -273
  397. package/contracts/instance/InstanceServiceManager.sol +6 -7
  398. package/contracts/instance/InstanceStore.sol +165 -107
  399. package/contracts/instance/ProductStore.sol +303 -0
  400. package/contracts/instance/RiskSet.sol +126 -0
  401. package/contracts/instance/TargetNames.sol +10 -0
  402. package/contracts/instance/base/BalanceStore.sol +4 -6
  403. package/contracts/instance/base/ObjectCounter.sol +1 -2
  404. package/contracts/instance/base/ObjectLifecycle.sol +12 -8
  405. package/contracts/instance/base/ObjectSet.sol +31 -33
  406. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  407. package/contracts/instance/module/IBundle.sol +6 -5
  408. package/contracts/instance/module/IComponents.sol +29 -13
  409. package/contracts/instance/module/IDistribution.sol +21 -8
  410. package/contracts/instance/module/IPolicy.sol +49 -28
  411. package/contracts/instance/module/IRisk.sol +5 -0
  412. package/contracts/oracle/BasicOracle.sol +2 -5
  413. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  414. package/contracts/oracle/IOracle.sol +9 -4
  415. package/contracts/oracle/IOracleService.sol +2 -1
  416. package/contracts/oracle/Oracle.sol +9 -21
  417. package/contracts/oracle/OracleService.sol +119 -87
  418. package/contracts/oracle/OracleServiceManager.sol +6 -6
  419. package/contracts/pool/BasicPool.sol +34 -38
  420. package/contracts/pool/BasicPoolAuthorization.sol +34 -11
  421. package/contracts/pool/BundleService.sol +117 -167
  422. package/contracts/pool/BundleServiceManager.sol +6 -6
  423. package/contracts/pool/IBundleService.sol +28 -46
  424. package/contracts/pool/IPoolComponent.sol +19 -15
  425. package/contracts/pool/IPoolService.sol +80 -73
  426. package/contracts/pool/Pool.sol +142 -137
  427. package/contracts/pool/PoolLib.sol +341 -0
  428. package/contracts/pool/PoolService.sol +361 -288
  429. package/contracts/pool/PoolServiceManager.sol +4 -4
  430. package/contracts/product/ApplicationService.sol +113 -36
  431. package/contracts/product/ApplicationServiceManager.sol +4 -4
  432. package/contracts/product/BasicProduct.sol +11 -14
  433. package/contracts/product/BasicProductAuthorization.sol +32 -12
  434. package/contracts/product/ClaimService.sol +391 -181
  435. package/contracts/product/ClaimServiceManager.sol +4 -4
  436. package/contracts/product/IApplicationService.sol +28 -3
  437. package/contracts/product/IClaimService.sol +47 -11
  438. package/contracts/product/IPolicyService.sol +47 -29
  439. package/contracts/product/IPricingService.sol +11 -10
  440. package/contracts/product/IProductComponent.sol +27 -5
  441. package/contracts/product/IRiskService.sol +25 -10
  442. package/contracts/product/PolicyService.sol +379 -318
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +4 -4
  445. package/contracts/product/PricingService.sol +85 -83
  446. package/contracts/product/PricingServiceManager.sol +4 -4
  447. package/contracts/product/Product.sol +177 -94
  448. package/contracts/product/RiskService.sol +132 -40
  449. package/contracts/product/RiskServiceManager.sol +4 -4
  450. package/contracts/registry/ChainNft.sol +72 -40
  451. package/contracts/registry/IRegistry.sol +70 -32
  452. package/contracts/registry/IRegistryService.sol +5 -12
  453. package/contracts/registry/IRelease.sol +29 -0
  454. package/contracts/registry/ITransferInterceptor.sol +1 -2
  455. package/contracts/registry/Registry.sol +367 -207
  456. package/contracts/registry/RegistryAdmin.sol +114 -297
  457. package/contracts/registry/RegistryAuthorization.sol +336 -0
  458. package/contracts/registry/RegistryService.sol +38 -49
  459. package/contracts/registry/RegistryServiceManager.sol +3 -3
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  462. package/contracts/registry/ReleaseRegistry.sol +279 -239
  463. package/contracts/registry/ServiceAuthorizationV3.sol +205 -63
  464. package/contracts/registry/TokenRegistry.sol +61 -59
  465. package/contracts/shared/Component.sol +69 -123
  466. package/contracts/shared/ComponentService.sol +429 -379
  467. package/contracts/shared/ComponentServiceManager.sol +8 -5
  468. package/contracts/shared/ContractLib.sol +312 -0
  469. package/contracts/shared/IComponent.sol +6 -18
  470. package/contracts/shared/IComponentService.sol +43 -40
  471. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  472. package/contracts/shared/ILifecycle.sol +3 -1
  473. package/contracts/shared/INftOwnable.sol +4 -0
  474. package/contracts/shared/IPolicyHolder.sol +12 -22
  475. package/contracts/shared/IRegisterable.sol +22 -1
  476. package/contracts/shared/IService.sol +3 -5
  477. package/contracts/shared/InitializableERC165.sol +10 -2
  478. package/contracts/shared/InstanceLinkedComponent.sol +73 -51
  479. package/contracts/shared/Lifecycle.sol +15 -4
  480. package/contracts/shared/NftOwnable.sol +31 -9
  481. package/contracts/shared/PolicyHolder.sol +18 -54
  482. package/contracts/shared/Registerable.sol +52 -21
  483. package/contracts/shared/RegistryLinked.sol +9 -14
  484. package/contracts/shared/Service.sol +20 -35
  485. package/contracts/shared/TokenHandler.sol +275 -72
  486. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  487. package/contracts/staking/IStaking.sol +271 -71
  488. package/contracts/staking/IStakingService.sol +45 -78
  489. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  490. package/contracts/staking/Staking.sol +523 -222
  491. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +70 -81
  492. package/contracts/staking/StakingManager.sol +12 -9
  493. package/contracts/staking/StakingReader.sol +70 -82
  494. package/contracts/staking/StakingService.sol +63 -149
  495. package/contracts/staking/StakingServiceManager.sol +7 -5
  496. package/contracts/staking/StakingStore.sol +1093 -330
  497. package/contracts/staking/TargetHandler.sol +132 -0
  498. package/contracts/staking/TargetManagerLib.sol +73 -46
  499. package/contracts/type/Amount.sol +19 -0
  500. package/contracts/type/Blocknumber.sol +15 -15
  501. package/contracts/type/ChainId.sol +101 -0
  502. package/contracts/type/ClaimId.sol +6 -1
  503. package/contracts/type/Fee.sol +8 -8
  504. package/contracts/type/Key32.sol +2 -2
  505. package/contracts/type/Key32Set.sol +62 -0
  506. package/contracts/type/NftId.sol +7 -0
  507. package/contracts/type/ObjectType.sol +73 -37
  508. package/contracts/type/PayoutId.sol +10 -10
  509. package/contracts/type/RiskId.sol +38 -6
  510. package/contracts/type/RoleId.sol +61 -55
  511. package/contracts/type/Seconds.sol +27 -0
  512. package/contracts/type/Selector.sol +5 -0
  513. package/contracts/type/StateId.sol +15 -1
  514. package/contracts/type/String.sol +12 -0
  515. package/contracts/type/Timestamp.sol +4 -7
  516. package/contracts/type/UFixed.sol +38 -126
  517. package/contracts/type/Version.sol +54 -5
  518. package/contracts/upgradeability/IVersionable.sol +3 -0
  519. package/contracts/upgradeability/ProxyManager.sol +93 -45
  520. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  521. package/contracts/upgradeability/Versionable.sol +8 -5
  522. package/package.json +5 -4
  523. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  524. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  525. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  526. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  527. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  529. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  530. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  531. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  532. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  533. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  534. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  535. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -387
  536. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  537. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
  538. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  539. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  540. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  541. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  542. package/contracts/instance/module/IAccess.sol +0 -46
  543. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  544. package/contracts/shared/IKeyValueStore.sol +0 -54
  545. package/contracts/shared/InitializableCustom.sol +0 -177
  546. package/contracts/shared/KeyValueStore.sol +0 -131
  547. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -9,6 +9,7 @@ using {
9
9
  eqStateId as ==,
10
10
  neStateId as !=,
11
11
  StateIdLib.eqz,
12
+ StateIdLib.eq,
12
13
  StateIdLib.gtz,
13
14
  StateIdLib.toInt
14
15
  } for StateId global;
@@ -27,10 +28,18 @@ function DEPLOYING() pure returns (StateId) {
27
28
  return toStateId(3);
28
29
  }
29
30
 
30
- function ACTIVE() pure returns (StateId) {
31
+ function DEPLOYED() pure returns (StateId) {
31
32
  return toStateId(4);
32
33
  }
33
34
 
35
+ function ACTIVE() pure returns (StateId) {
36
+ return toStateId(5);
37
+ }
38
+
39
+ function SKIPPED() pure returns (StateId) {
40
+ return toStateId(6);
41
+ }
42
+
34
43
  function APPLIED() pure returns (StateId) {
35
44
  return toStateId(10);
36
45
  }
@@ -113,6 +122,11 @@ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) {
113
122
 
114
123
  // library functions that operate on user defined type
115
124
  library StateIdLib {
125
+
126
+ function zero() public pure returns (StateId) {
127
+ return StateId.wrap(0);
128
+ }
129
+
116
130
  /// @dev Converts the NftId to a uint256.
117
131
  function toInt(StateId stateId) public pure returns (uint96) {
118
132
  return uint96(StateId.unwrap(stateId));
@@ -12,10 +12,12 @@ using {
12
12
  StrLib.length
13
13
  } for Str global;
14
14
 
15
+ // pure free function needed for the operator overloading
15
16
  function StrEq(Str s1, Str s2) pure returns (bool) {
16
17
  return StrLib.eq(s1, s2);
17
18
  }
18
19
 
20
+ // pure free function needed for the operator overloading
19
21
  function StrNe(Str s1, Str s2) pure returns (bool) {
20
22
  return StrLib.ne(s1, s2);
21
23
  }
@@ -39,6 +41,16 @@ library StrLib {
39
41
  return Str.unwrap(s1) != Str.unwrap(s2);
40
42
  }
41
43
 
44
+ /// @dev return true iff s1 equals from s2
45
+ function eq(string memory s1, string memory s2) public pure returns (bool) {
46
+ return keccak256(bytes(s1)) == keccak256(bytes(s2));
47
+ }
48
+
49
+ /// @dev return true iff s1 differs s2
50
+ function ne(string memory s1, string memory s2) public pure returns (bool) {
51
+ return !eq(s1, s2);
52
+ }
53
+
42
54
  /// @dev converts the provided short string into a string.
43
55
  /// uses ShortStrings.toString
44
56
  function toString(Str str) public pure returns (string memory) {
@@ -3,6 +3,8 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Seconds} from "./Seconds.sol";
5
5
 
6
+ /// @dev Target: Cover 10 years with 1 ms block time resolution.
7
+ /// Typical block time resolution is 1s.
6
8
  type Timestamp is uint40;
7
9
 
8
10
  using {
@@ -54,11 +56,6 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) {
54
56
  return Timestamp.unwrap(a) != Timestamp.unwrap(b);
55
57
  }
56
58
 
57
- /// @dev Converts the uint256 to a Timestamp.
58
- function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
59
- return TimestampLib.toTimestamp(timestamp);
60
- }
61
-
62
59
  // TODO move to TimestampLib and rename to zero()
63
60
  /// @dev Return the Timestamp zero (0)
64
61
  function zeroTimestamp() pure returns (Timestamp) {
@@ -74,8 +71,8 @@ library TimestampLib {
74
71
  function max() public pure returns (Timestamp) {
75
72
  return Timestamp.wrap(type(uint40).max);
76
73
  }
77
-
78
- function blockTimestamp() public view returns (Timestamp) {
74
+
75
+ function current() public view returns (Timestamp) {
79
76
  return Timestamp.wrap(uint40(block.timestamp));
80
77
  }
81
78
 
@@ -1,8 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- /// @dev UFixed is a fixed point number with 18 decimals precision.
5
- type UFixed is uint256;
4
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
5
+
6
+ /// @dev UFixed is a 160-bit fixed point number with 15 decimals precision.
7
+ type UFixed is uint160;
6
8
 
7
9
  using {
8
10
  addUFixed as +,
@@ -16,6 +18,7 @@ using {
16
18
  eqUFixed as ==,
17
19
  neUFixed as !=,
18
20
  UFixedLib.gt,
21
+ UFixedLib.eqz,
19
22
  UFixedLib.gtz,
20
23
  UFixedLib.toInt,
21
24
  UFixedLib.toInt1000
@@ -39,7 +42,7 @@ function subUFixed(UFixed a, UFixed b) pure returns (UFixed) {
39
42
 
40
43
  function mulUFixed(UFixed a, UFixed b) pure returns (UFixed) {
41
44
  return
42
- UFixed.wrap(MathLib.mulDiv(UFixed.unwrap(a), UFixed.unwrap(b), 10 ** 18));
45
+ UFixed.wrap(uint160(Math.mulDiv(UFixed.unwrap(a), UFixed.unwrap(b), 10 ** 15)));
43
46
  }
44
47
 
45
48
  function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
@@ -48,7 +51,7 @@ function divUFixed(UFixed a, UFixed b) pure returns (UFixed) {
48
51
  }
49
52
 
50
53
  return
51
- UFixed.wrap(MathLib.mulDiv(UFixed.unwrap(a), 10 ** 18, UFixed.unwrap(b)));
54
+ UFixed.wrap(uint160(Math.mulDiv(UFixed.unwrap(a), 10 ** 15, UFixed.unwrap(b))));
52
55
  }
53
56
 
54
57
  function gtUFixed(UFixed a, UFixed b) pure returns (bool isGreaterThan) {
@@ -91,118 +94,6 @@ function deltaUFixed(UFixed a, UFixed b) pure returns (UFixed) {
91
94
  return b - a;
92
95
  }
93
96
 
94
- /// @dev copied from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.9.3/contracts/utils/math/Math.sol
95
- library MathLib {
96
-
97
- error MathLigMulDivOverflow();
98
-
99
- enum Rounding {
100
- Down, // Toward negative infinity
101
- Up, // Toward infinity
102
- Zero // Toward zero
103
- }
104
-
105
- /**
106
- * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
107
- * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
108
- * with further edits by Uniswap Labs also under MIT license.
109
- */
110
- function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
111
- unchecked {
112
- // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
113
- // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
114
- // variables such that product = prod1 * 2^256 + prod0.
115
- uint256 prod0; // Least significant 256 bits of the product
116
- uint256 prod1; // Most significant 256 bits of the product
117
- assembly {
118
- let mm := mulmod(x, y, not(0))
119
- prod0 := mul(x, y)
120
- prod1 := sub(sub(mm, prod0), lt(mm, prod0))
121
- }
122
-
123
- // Handle non-overflow cases, 256 by 256 division.
124
- if (prod1 == 0) {
125
- // Solidity will revert if denominator == 0, unlike the div opcode on its own.
126
- // The surrounding unchecked block does not change this fact.
127
- // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
128
- return prod0 / denominator;
129
- }
130
-
131
- // Make sure the result is less than 2^256. Also prevents denominator == 0.
132
- if (denominator <= prod1) {
133
- revert MathLigMulDivOverflow();
134
- }
135
-
136
- ///////////////////////////////////////////////
137
- // 512 by 256 division.
138
- ///////////////////////////////////////////////
139
-
140
- // Make division exact by subtracting the remainder from [prod1 prod0].
141
- uint256 remainder;
142
- assembly {
143
- // Compute remainder using mulmod.
144
- remainder := mulmod(x, y, denominator)
145
-
146
- // Subtract 256 bit number from 512 bit number.
147
- prod1 := sub(prod1, gt(remainder, prod0))
148
- prod0 := sub(prod0, remainder)
149
- }
150
-
151
- // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
152
- // See https://cs.stackexchange.com/q/138556/92363.
153
-
154
- // Does not overflow because the denominator cannot be zero at this stage in the function.
155
- uint256 twos = denominator & (~denominator + 1);
156
- assembly {
157
- // Divide denominator by twos.
158
- denominator := div(denominator, twos)
159
-
160
- // Divide [prod1 prod0] by twos.
161
- prod0 := div(prod0, twos)
162
-
163
- // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
164
- twos := add(div(sub(0, twos), twos), 1)
165
- }
166
-
167
- // Shift in bits from prod1 into prod0.
168
- prod0 |= prod1 * twos;
169
-
170
- // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
171
- // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
172
- // four bits. That is, denominator * inv = 1 mod 2^4.
173
- uint256 inverse = (3 * denominator) ^ 2;
174
-
175
- // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
176
- // in modular arithmetic, doubling the correct bits in each step.
177
- inverse *= 2 - denominator * inverse; // inverse mod 2^8
178
- inverse *= 2 - denominator * inverse; // inverse mod 2^16
179
- inverse *= 2 - denominator * inverse; // inverse mod 2^32
180
- inverse *= 2 - denominator * inverse; // inverse mod 2^64
181
- inverse *= 2 - denominator * inverse; // inverse mod 2^128
182
- inverse *= 2 - denominator * inverse; // inverse mod 2^256
183
-
184
- // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
185
- // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
186
- // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
187
- // is no longer required.
188
- result = prod0 * inverse;
189
- return result;
190
- }
191
- }
192
-
193
- /**
194
- * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
195
- */
196
- function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
197
- uint256 result = mulDiv(x, y, denominator);
198
- if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
199
- result += 1;
200
- }
201
- return result;
202
- }
203
-
204
- }
205
-
206
97
  library UFixedLib {
207
98
  error UFixedLibNegativeResult();
208
99
  error UFixedLibDivisionByZero();
@@ -210,7 +101,9 @@ library UFixedLib {
210
101
  error UFixedLibExponentTooSmall(int8 exp);
211
102
  error UFixedLibExponentTooLarge(int8 exp);
212
103
 
213
- int8 public constant EXP = 18;
104
+ error UFixedLibNumberTooLarge(uint256 number);
105
+
106
+ int8 public constant EXP = 15;
214
107
  uint256 public constant MULTIPLIER = 10 ** uint256(int256(EXP));
215
108
  uint256 public constant MULTIPLIER_HALF = MULTIPLIER / 2;
216
109
 
@@ -229,9 +122,14 @@ library UFixedLib {
229
122
  return uint8(2);
230
123
  }
231
124
 
232
- /// @dev Converts the uint256 to a UFixed.
125
+ /// @dev Converts the uint256 to a uint160 based UFixed.
126
+ /// This method reverts if the number is too large to fit in a uint160.
233
127
  function toUFixed(uint256 a) public pure returns (UFixed) {
234
- return UFixed.wrap(a * MULTIPLIER);
128
+ uint256 n = a * MULTIPLIER;
129
+ if (n > type(uint160).max) {
130
+ revert UFixedLibNumberTooLarge(a);
131
+ }
132
+ return UFixed.wrap(uint160(n));
235
133
  }
236
134
 
237
135
  /// @dev Converts the uint256 to a UFixed with given exponent.
@@ -239,11 +137,17 @@ library UFixedLib {
239
137
  if (EXP + exp < 0) {
240
138
  revert UFixedLibExponentTooSmall(exp);
241
139
  }
242
- if (EXP + exp > 64) {
140
+ if (EXP + exp > 48) {
243
141
  revert UFixedLibExponentTooLarge(exp);
244
142
  }
245
143
 
246
- return UFixed.wrap(a * 10 ** uint8(EXP + exp));
144
+ uint256 n = a * 10 ** uint8(EXP + exp);
145
+
146
+ if (n > type(uint160).max) {
147
+ revert UFixedLibNumberTooLarge(n);
148
+ }
149
+
150
+ return UFixed.wrap(uint160(n));
247
151
  }
248
152
 
249
153
  /// @dev returns the decimals precision of the UFixed type
@@ -265,23 +169,23 @@ library UFixedLib {
265
169
  function toIntWithRounding(UFixed a, uint8 rounding) public pure returns (uint256) {
266
170
  if (rounding == ROUNDING_HALF_UP()) {
267
171
  return
268
- MathLib.mulDiv(
172
+ Math.mulDiv(
269
173
  UFixed.unwrap(a) + MULTIPLIER_HALF,
270
174
  1,
271
175
  MULTIPLIER,
272
- MathLib.Rounding.Down
176
+ Math.Rounding.Floor
273
177
  );
274
178
  } else if (rounding == ROUNDING_DOWN()) {
275
179
  return
276
- MathLib.mulDiv(
180
+ Math.mulDiv(
277
181
  UFixed.unwrap(a),
278
182
  1,
279
183
  MULTIPLIER,
280
- MathLib.Rounding.Down
184
+ Math.Rounding.Floor
281
185
  );
282
186
  } else {
283
187
  return
284
- MathLib.mulDiv(UFixed.unwrap(a), 1, MULTIPLIER, MathLib.Rounding.Up);
188
+ Math.mulDiv(UFixed.unwrap(a), 1, MULTIPLIER, Math.Rounding.Ceil);
285
189
  }
286
190
  }
287
191
 
@@ -344,6 +248,14 @@ library UFixedLib {
344
248
  return UFixed.wrap(0);
345
249
  }
346
250
 
251
+ function one() public pure returns (UFixed) {
252
+ return UFixed.wrap(uint160(MULTIPLIER));
253
+ }
254
+
255
+ function max() public pure returns (UFixed) {
256
+ return UFixed.wrap(type(uint160).max);
257
+ }
258
+
347
259
  /// @dev return the absolute delta between two UFixed numbers
348
260
  function delta(UFixed a, UFixed b) public pure returns (UFixed) {
349
261
  return deltaUFixed(a, b);
@@ -8,7 +8,10 @@ using {
8
8
  versionPartEq as ==,
9
9
  versionPartNe as !=,
10
10
  VersionPartLib.eqz,
11
- VersionPartLib.toInt
11
+ VersionPartLib.gtz,
12
+ VersionPartLib.toInt,
13
+ VersionPartLib.toString,
14
+ VersionPartLib.isValidRelease
12
15
  }
13
16
  for VersionPart global;
14
17
 
@@ -17,9 +20,54 @@ function versionPartEq(VersionPart a, VersionPart b) pure returns(bool isSame) {
17
20
  function versionPartNe(VersionPart a, VersionPart b) pure returns(bool isSame) { return VersionPart.unwrap(a) != VersionPart.unwrap(b); }
18
21
 
19
22
  library VersionPartLib {
23
+
24
+ error ErrorReleaseTooBig(VersionPart releaseMax, VersionPart release);
25
+
26
+ function releaseMin() public pure returns (VersionPart) { return toVersionPart(3); }
27
+ function releaseMax() public pure returns (VersionPart) { return toVersionPart(99); }
28
+
29
+ function isValidRelease(VersionPart release) external pure returns(bool) {
30
+ uint256 releaseInt = VersionPart.unwrap(release);
31
+ return 3 <= releaseInt && releaseInt <= 99;
32
+ }
33
+
34
+ function toString(VersionPart a) external pure returns (string memory) {
35
+ if (a > releaseMax()) {
36
+ revert ErrorReleaseTooBig(releaseMax(), a);
37
+ }
38
+
39
+ uint256 value = VersionPart.unwrap(a);
40
+ if (value == 0) {
41
+ return "0";
42
+ }
43
+
44
+ uint256 temp = value;
45
+ uint256 digits = 0;
46
+ while (temp != 0) {
47
+ digits++;
48
+ temp /= 10;
49
+ }
50
+
51
+ bytes memory buffer = new bytes(digits);
52
+ uint index = digits - 1;
53
+
54
+ temp = value;
55
+ while (temp != 0) {
56
+ buffer[index] = bytes1(uint8(48 + temp % 10));
57
+ temp /= 10;
58
+
59
+ if (index > 0) {
60
+ index--;
61
+ }
62
+ }
63
+
64
+ return string(buffer);
65
+ }
66
+
20
67
  function eqz(VersionPart a) external pure returns(bool) { return VersionPart.unwrap(a) == 0; }
68
+ function gtz(VersionPart a) external pure returns(bool) { return VersionPart.unwrap(a) > 0; }
21
69
  function toInt(VersionPart a) external pure returns(uint256) { return VersionPart.unwrap(a); }
22
- function toVersionPart(uint256 a) external pure returns(VersionPart) { return VersionPart.wrap(uint8(a)); }
70
+ function toVersionPart(uint256 a) public pure returns(VersionPart) { return VersionPart.wrap(uint8(a)); }
23
71
  }
24
72
 
25
73
  type Version is uint24; // contains major,minor,patch version parts
@@ -38,6 +86,7 @@ function versionGt(Version a, Version b) pure returns(bool isGreaterThan) { retu
38
86
  function versionEq(Version a, Version b) pure returns(bool isSame) { return Version.unwrap(a) == Version.unwrap(b); }
39
87
 
40
88
  library VersionLib {
89
+
41
90
  function toInt(Version version) external pure returns(uint) { return Version.unwrap(version); }
42
91
 
43
92
  function toUint64(Version version) external pure returns(uint64) { return Version.unwrap(version); }
@@ -75,9 +124,9 @@ library VersionLib {
75
124
  );
76
125
  }
77
126
 
78
- function toVersionPart(uint256 versionPart) external pure returns(VersionPart) {
79
- return VersionPart.wrap(uint8(versionPart));
80
- }
127
+ // function toVersionPart(uint256 versionPart) public pure returns(VersionPart) {
128
+ // return VersionPart.wrap(uint8(versionPart));
129
+ // }
81
130
 
82
131
  function toVersion(
83
132
  uint256 major,
@@ -28,6 +28,9 @@ import {Version} from "../type/Version.sol";
28
28
 
29
29
  interface IVersionable {
30
30
 
31
+ error ErrorVersionableInitializeNotImplemented();
32
+ error ErrorVersionableUpgradeNotImplemented();
33
+
31
34
  /**
32
35
  * @dev IMPORTANT
33
36
  * implementation MUST be guarded by initializer modifier
@@ -18,11 +18,13 @@ contract ProxyManager is
18
18
  {
19
19
 
20
20
  struct VersionInfo {
21
- Version version;
21
+ // slot 0
22
22
  address implementation;
23
- address activatedBy;
24
23
  Timestamp activatedAt;
25
24
  Blocknumber activatedIn;
25
+ Version version;
26
+ // slot 1
27
+ address activatedBy;
26
28
  }
27
29
 
28
30
  event LogProxyManagerVersionableDeployed(address indexed proxy, address initialImplementation);
@@ -37,60 +39,71 @@ contract ProxyManager is
37
39
  UpgradableProxyWithAdmin internal _proxy;
38
40
 
39
41
  // state to keep version history
40
- mapping(Version version => VersionInfo info) _versionHistory;
41
- Version [] _versions;
42
-
43
- /// @dev only used to capture proxy owner
44
- constructor(address registry)
45
- {
46
- initializeProxyManager(registry);
47
- }
42
+ mapping(Version version => VersionInfo info) internal _versionHistory;
43
+ Version [] internal _versions;
48
44
 
49
- function initializeProxyManager(address registry)
45
+ /// @dev convencience initializer
46
+ function initialize(
47
+ address registry,
48
+ address implementation,
49
+ bytes memory data,
50
+ bytes32 salt
51
+ )
50
52
  public
51
53
  initializer()
54
+ returns (IVersionable versionable)
52
55
  {
53
- initializeNftOwnable(msg.sender, registry);
56
+ versionable = deployDetermenistic(
57
+ registry,
58
+ implementation,
59
+ data,
60
+ salt);
54
61
  }
55
62
 
56
63
  /// @dev deploy initial contract
57
- function deploy(address initialImplementation, bytes memory initializationData)
64
+ function deploy(
65
+ address registry,
66
+ address initialImplementation,
67
+ bytes memory initializationData
68
+ )
58
69
  public
59
70
  virtual
60
- onlyOwner()
71
+ onlyInitializing()
61
72
  returns (IVersionable versionable)
62
73
  {
63
- if (_versions.length > 0) {
64
- revert ErrorProxyManagerAlreadyDeployed();
65
- }
74
+ (
75
+ address currentProxyOwner,
76
+ address initialProxyAdminOwner
77
+ ) = _preDeployChecksAndSetup(registry);
66
78
 
67
- address currentProxyOwner = getOwner(); // used by implementation
68
- address initialProxyAdminOwner = address(this); // used by proxy
69
-
70
79
  _proxy = new UpgradableProxyWithAdmin(
71
80
  initialImplementation,
72
81
  initialProxyAdminOwner,
73
82
  getDeployData(currentProxyOwner, initializationData)
74
83
  );
75
84
 
76
- versionable = IVersionable(address(_proxy));
77
- _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
85
+ versionable = _updateVersionHistory(
86
+ initialImplementation,
87
+ currentProxyOwner);
78
88
 
79
- emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
89
+ emit LogProxyManagerVersionableDeployed(address(versionable), initialImplementation);
80
90
  }
81
91
 
82
- function deployDetermenistic(address initialImplementation, bytes memory initializationData, bytes32 salt)
92
+ function deployDetermenistic(
93
+ address registry,
94
+ address initialImplementation,
95
+ bytes memory initializationData,
96
+ bytes32 salt
97
+ )
83
98
  public
84
99
  virtual
85
- onlyOwner()
100
+ onlyInitializing()
86
101
  returns (IVersionable versionable)
87
102
  {
88
- if (_versions.length > 0) {
89
- revert ErrorProxyManagerAlreadyDeployed();
90
- }
91
-
92
- address currentProxyOwner = getOwner();
93
- address initialProxyAdminOwner = address(this);
103
+ (
104
+ address currentProxyOwner,
105
+ address initialProxyAdminOwner
106
+ ) = _preDeployChecksAndSetup(registry);
94
107
 
95
108
  _proxy = new UpgradableProxyWithAdmin{salt: salt}(
96
109
  initialImplementation,
@@ -98,10 +111,23 @@ contract ProxyManager is
98
111
  getDeployData(currentProxyOwner, initializationData)
99
112
  );
100
113
 
101
- versionable = IVersionable(address(_proxy));
102
- _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
114
+ versionable = _updateVersionHistory(
115
+ initialImplementation,
116
+ currentProxyOwner);
103
117
 
104
- emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
118
+ emit LogProxyManagerVersionableDeployed(address(versionable), initialImplementation);
119
+ }
120
+
121
+ /// @dev upgrade existing contract.
122
+ /// convenience method using empty data
123
+ function upgrade(address newImplementation)
124
+ public
125
+ virtual
126
+ onlyOwner()
127
+ returns (IVersionable versionable)
128
+ {
129
+ bytes memory emptyUpgradeData;
130
+ return upgrade(newImplementation, emptyUpgradeData);
105
131
  }
106
132
 
107
133
  /// @dev upgrade existing contract
@@ -124,10 +150,11 @@ contract ProxyManager is
124
150
  newImplementation,
125
151
  getUpgradeData(upgradeData));
126
152
 
127
- versionable = IVersionable(address(_proxy));
128
- _updateVersionHistory(versionable.getVersion(), newImplementation, currentProxyOwner);
153
+ versionable = _updateVersionHistory(
154
+ newImplementation,
155
+ currentProxyOwner);
129
156
 
130
- emit LogProxyManagerVersionableUpgraded(address(_proxy), newImplementation);
157
+ emit LogProxyManagerVersionableUpgraded(address(versionable), newImplementation);
131
158
 
132
159
  }
133
160
 
@@ -168,13 +195,34 @@ contract ProxyManager is
168
195
  return _versionHistory[_version];
169
196
  }
170
197
 
198
+ function _preDeployChecksAndSetup(address registry)
199
+ private
200
+ returns (
201
+ address currentProxyOwner,
202
+ address initialProxyAdminOwner
203
+ )
204
+ {
205
+ if (_versions.length > 0) {
206
+ revert ErrorProxyManagerAlreadyDeployed();
207
+ }
208
+
209
+ address initialOwner = msg.sender;
210
+ __NftOwnable_init(registry, initialOwner);
211
+
212
+ currentProxyOwner = getOwner(); // used by implementation
213
+ initialProxyAdminOwner = address(this); // used by proxy
214
+ }
215
+
171
216
  function _updateVersionHistory(
172
- Version newVersion,
173
217
  address implementation,
174
218
  address activatedBy
175
219
  )
176
220
  private
221
+ returns (IVersionable versionable)
177
222
  {
223
+ versionable = IVersionable(address(_proxy));
224
+ Version newVersion = versionable.getVersion();
225
+
178
226
  if(newVersion == VersionLib.zeroVersion()) {
179
227
  revert ErrorProxyManagerZeroVersion();
180
228
  }
@@ -187,12 +235,12 @@ contract ProxyManager is
187
235
 
188
236
  // update version history
189
237
  _versions.push(newVersion);
190
- _versionHistory[newVersion] = VersionInfo(
191
- newVersion,
192
- implementation,
193
- activatedBy,
194
- TimestampLib.blockTimestamp(),
195
- blockNumber()
196
- );
238
+ _versionHistory[newVersion] = VersionInfo({
239
+ version: newVersion,
240
+ implementation: implementation,
241
+ activatedBy: activatedBy,
242
+ activatedAt: TimestampLib.current(),
243
+ activatedIn: blockNumber()
244
+ });
197
245
  }
198
246
  }
@@ -6,9 +6,19 @@ import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transpa
6
6
 
7
7
  contract UpgradableProxyWithAdmin is TransparentUpgradeableProxy {
8
8
 
9
+ bytes internal _initializationData;
10
+
9
11
  constructor(address implementation, address initialProxyAdminOwner, bytes memory data)
10
12
  TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
11
- {}
13
+ {
14
+ _initializationData = data;
15
+ }
12
16
 
13
- function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
17
+ function getProxyAdmin() external returns (ProxyAdmin) {
18
+ return ProxyAdmin(_proxyAdmin());
19
+ }
20
+
21
+ function getInitializationData() external view returns (bytes memory) {
22
+ return _initializationData;
23
+ }
14
24
  }