@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bb9ecaf-723

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 (789) hide show
  1. package/README.md +138 -325
  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 +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +939 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +950 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +838 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +87 -184
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{IInstanceBase.sol/IInstanceBase.json → IBaseStore.sol/IBaseStore.json} +66 -210
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +619 -1245
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +696 -164
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +700 -2362
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1829 -725
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +710 -325
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +419 -87
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  108. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  109. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  111. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  112. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  113. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +886 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +392 -350
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +886 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +810 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  159. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +906 -0
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +328 -295
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → product/IPricingService.sol/IPricingService.json} +321 -389
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  173. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +531 -311
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +328 -199
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +874 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +834 -0
  186. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  187. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +607 -30
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +306 -210
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  199. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  202. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/Registry.sol/Registry.json +1033 -73
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +363 -260
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +415 -73
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  221. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +400 -76
  222. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  223. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/Component.sol/Component.json} +269 -260
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +882 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  237. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +269 -142
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +61 -22
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +162 -15
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IService.sol/IService.json +148 -141
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +98 -28
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +178 -55
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +165 -151
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  282. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +867 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +786 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  298. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +270 -0
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  362. package/contracts/accounting/AccountingService.sol +274 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +47 -0
  365. package/contracts/authorization/AccessAdmin.sol +679 -0
  366. package/contracts/authorization/AccessAdminLib.sol +678 -0
  367. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  368. package/contracts/authorization/Authorization.sol +190 -0
  369. package/contracts/authorization/IAccess.sol +66 -0
  370. package/contracts/authorization/IAccessAdmin.sol +142 -0
  371. package/contracts/authorization/IAuthorization.sol +26 -0
  372. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  373. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  374. package/contracts/distribution/BasicDistribution.sol +140 -0
  375. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  376. package/contracts/distribution/Distribution.sol +245 -0
  377. package/contracts/distribution/DistributionService.sol +448 -0
  378. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  379. package/contracts/distribution/IDistributionComponent.sol +45 -0
  380. package/contracts/distribution/IDistributionService.sol +115 -0
  381. package/contracts/examples/fire/DamageLevel.sol +59 -0
  382. package/contracts/examples/fire/FirePool.sol +86 -0
  383. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  384. package/contracts/examples/fire/FireProduct.sol +433 -0
  385. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  386. package/contracts/examples/fire/FireUSD.sol +26 -0
  387. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  388. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  390. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  391. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  393. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  394. package/contracts/instance/BaseStore.sol +93 -0
  395. package/contracts/instance/BundleSet.sol +130 -0
  396. package/contracts/instance/IBaseStore.sol +37 -0
  397. package/contracts/instance/IInstance.sol +147 -51
  398. package/contracts/instance/IInstanceService.sol +101 -22
  399. package/contracts/instance/Instance.sol +263 -174
  400. package/contracts/instance/InstanceAdmin.sol +307 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  402. package/contracts/instance/InstanceReader.sol +500 -209
  403. package/contracts/instance/InstanceService.sol +432 -263
  404. package/contracts/instance/InstanceServiceManager.sol +14 -29
  405. package/contracts/instance/InstanceStore.sol +323 -0
  406. package/contracts/instance/ProductStore.sol +290 -0
  407. package/contracts/instance/RiskSet.sol +126 -0
  408. package/contracts/instance/TargetNames.sol +10 -0
  409. package/contracts/instance/base/BalanceStore.sol +121 -0
  410. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  411. package/contracts/instance/base/ObjectCounter.sol +20 -0
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +10 -9
  416. package/contracts/instance/module/IComponents.sol +60 -0
  417. package/contracts/instance/module/IDistribution.sol +25 -10
  418. package/contracts/instance/module/IPolicy.sol +81 -21
  419. package/contracts/instance/module/IRisk.sol +6 -1
  420. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  421. package/contracts/oracle/BasicOracle.sol +44 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +41 -0
  424. package/contracts/oracle/IOracleComponent.sol +33 -0
  425. package/contracts/oracle/IOracleService.sol +66 -0
  426. package/contracts/oracle/Oracle.sol +152 -0
  427. package/contracts/oracle/OracleService.sol +310 -0
  428. package/contracts/oracle/OracleServiceManager.sol +39 -0
  429. package/contracts/pool/BasicPool.sol +161 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +386 -0
  432. package/contracts/pool/BundleServiceManager.sol +39 -0
  433. package/contracts/pool/IBundleService.sol +116 -0
  434. package/contracts/pool/IPoolComponent.sol +62 -0
  435. package/contracts/pool/IPoolService.sol +170 -0
  436. package/contracts/pool/Pool.sol +331 -0
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +614 -0
  439. package/contracts/pool/PoolServiceManager.sol +39 -0
  440. package/contracts/product/ApplicationService.sol +327 -0
  441. package/contracts/product/ApplicationServiceManager.sol +38 -0
  442. package/contracts/product/BasicProduct.sol +48 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +626 -0
  445. package/contracts/product/ClaimServiceManager.sol +38 -0
  446. package/contracts/product/IApplicationService.sol +88 -0
  447. package/contracts/product/IClaimService.sol +136 -0
  448. package/contracts/product/IPolicyService.sol +102 -0
  449. package/contracts/product/IPricingService.sol +40 -0
  450. package/contracts/product/IProductComponent.sol +62 -0
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +645 -0
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +39 -0
  455. package/contracts/product/PricingService.sol +306 -0
  456. package/contracts/product/PricingServiceManager.sol +39 -0
  457. package/contracts/product/Product.sol +491 -0
  458. package/contracts/product/RiskService.sol +189 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +83 -36
  461. package/contracts/registry/IRegistry.sol +111 -30
  462. package/contracts/registry/IRegistryService.sol +38 -34
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +1 -1
  465. package/contracts/registry/Registry.sol +551 -211
  466. package/contracts/registry/RegistryAdmin.sol +173 -0
  467. package/contracts/registry/RegistryAuthorization.sol +337 -0
  468. package/contracts/registry/RegistryService.sol +119 -198
  469. package/contracts/registry/RegistryServiceManager.sol +24 -33
  470. package/contracts/registry/ReleaseAdmin.sol +199 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  474. package/contracts/registry/TokenRegistry.sol +267 -60
  475. package/contracts/shared/Component.sol +210 -0
  476. package/contracts/shared/ComponentService.sol +691 -0
  477. package/contracts/shared/ComponentServiceManager.sol +38 -0
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +58 -0
  480. package/contracts/shared/IComponentService.sol +111 -0
  481. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  482. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  483. package/contracts/shared/INftOwnable.sol +17 -12
  484. package/contracts/shared/IPolicyHolder.sol +35 -0
  485. package/contracts/shared/IRegisterable.sol +24 -5
  486. package/contracts/shared/IRegistryLinked.sol +11 -0
  487. package/contracts/shared/IService.sol +12 -5
  488. package/contracts/shared/InitializableERC165.sol +35 -0
  489. package/contracts/shared/InstanceLinkedComponent.sol +192 -0
  490. package/contracts/shared/Lifecycle.sol +88 -0
  491. package/contracts/shared/NftIdSet.sol +65 -0
  492. package/contracts/shared/NftOwnable.sol +77 -82
  493. package/contracts/shared/PolicyHolder.sol +63 -0
  494. package/contracts/shared/Registerable.sol +54 -38
  495. package/contracts/shared/RegistryLinked.sol +38 -0
  496. package/contracts/shared/Service.sol +44 -35
  497. package/contracts/shared/TokenHandler.sol +327 -12
  498. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  499. package/contracts/staking/IStaking.sol +366 -0
  500. package/contracts/staking/IStakingService.sol +127 -0
  501. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  502. package/contracts/staking/Staking.sol +797 -0
  503. package/contracts/staking/StakingLib.sol +195 -0
  504. package/contracts/staking/StakingManager.sol +53 -0
  505. package/contracts/staking/StakingReader.sol +171 -0
  506. package/contracts/staking/StakingService.sol +321 -0
  507. package/contracts/staking/StakingServiceManager.sol +46 -0
  508. package/contracts/staking/StakingStore.sol +1368 -0
  509. package/contracts/staking/TargetHandler.sol +132 -0
  510. package/contracts/staking/TargetManagerLib.sol +234 -0
  511. package/contracts/{types → type}/AddressSet.sol +1 -1
  512. package/contracts/type/Amount.sol +154 -0
  513. package/contracts/{types → type}/Blocknumber.sol +38 -19
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/type/ClaimId.sol +80 -0
  516. package/contracts/{types → type}/DistributorType.sol +2 -2
  517. package/contracts/type/Fee.sol +66 -0
  518. package/contracts/{types → type}/Key32.sol +2 -2
  519. package/contracts/type/Key32Set.sol +62 -0
  520. package/contracts/{types → type}/NftId.sol +28 -15
  521. package/contracts/{types → type}/NftIdSet.sol +2 -2
  522. package/contracts/type/ObjectType.sol +307 -0
  523. package/contracts/type/PayoutId.sol +82 -0
  524. package/contracts/{types → type}/Referral.sol +6 -1
  525. package/contracts/type/RequestId.sol +75 -0
  526. package/contracts/type/RiskId.sol +75 -0
  527. package/contracts/type/RoleId.sol +180 -0
  528. package/contracts/type/Seconds.sol +120 -0
  529. package/contracts/type/Selector.sol +107 -0
  530. package/contracts/{types → type}/StateId.sol +48 -4
  531. package/contracts/type/String.sol +65 -0
  532. package/contracts/{types → type}/Timestamp.sol +36 -20
  533. package/contracts/type/UFixed.sol +263 -0
  534. package/contracts/{types → type}/Version.sol +59 -7
  535. package/contracts/{shared → upgradeability}/IVersionable.sol +7 -47
  536. package/contracts/upgradeability/ProxyManager.sol +246 -0
  537. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  538. package/contracts/upgradeability/Versionable.sol +62 -0
  539. package/package.json +12 -8
  540. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  542. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -408
  544. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  545. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  546. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  547. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  548. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  549. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  550. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  551. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  554. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  556. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  558. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  560. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  562. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  564. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  566. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  568. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  570. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  572. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  575. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  577. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  578. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  579. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  580. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  581. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  582. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  583. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  584. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  585. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  586. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  587. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  588. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  589. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  591. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  592. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  593. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  594. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  595. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  596. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  597. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  598. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  599. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  600. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  601. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  602. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  603. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  604. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -532
  605. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  606. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -100
  607. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  608. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  609. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  610. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  611. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  612. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  613. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  614. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -254
  615. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  616. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  617. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  619. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  620. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  621. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  622. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  623. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  624. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  625. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  627. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  628. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  629. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  630. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -499
  631. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  632. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  633. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  634. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  635. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  636. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  637. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  638. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  639. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  640. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  641. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  642. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  643. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  644. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  645. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  646. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  647. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -530
  648. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  649. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  650. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  651. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  652. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  653. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  654. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  655. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  656. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  657. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  658. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  659. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  660. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  661. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  662. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  663. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  664. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  665. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  666. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  667. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  668. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  669. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  670. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  671. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  672. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  673. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  674. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  675. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  676. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  677. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  678. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  679. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  680. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  682. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  684. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  686. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  688. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  689. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  690. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  692. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  693. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  694. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  696. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  697. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  698. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  699. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  700. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  701. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  702. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  703. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  704. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  705. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  706. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  707. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  708. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  709. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  710. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  711. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  712. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  713. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  714. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  715. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  716. package/contracts/components/BaseComponent.sol +0 -168
  717. package/contracts/components/Distribution.sol +0 -154
  718. package/contracts/components/IBaseComponent.sol +0 -35
  719. package/contracts/components/IDistributionComponent.sol +0 -44
  720. package/contracts/components/IPoolComponent.sol +0 -66
  721. package/contracts/components/IProductComponent.sol +0 -35
  722. package/contracts/components/Pool.sol +0 -258
  723. package/contracts/components/Product.sol +0 -295
  724. package/contracts/experiment/cloning/Cloner.sol +0 -47
  725. package/contracts/experiment/errors/Require.sol +0 -38
  726. package/contracts/experiment/errors/Revert.sol +0 -44
  727. package/contracts/experiment/inheritance/A.sol +0 -53
  728. package/contracts/experiment/inheritance/B.sol +0 -28
  729. package/contracts/experiment/inheritance/C.sol +0 -34
  730. package/contracts/experiment/inheritance/IA.sol +0 -13
  731. package/contracts/experiment/inheritance/IB.sol +0 -10
  732. package/contracts/experiment/inheritance/IC.sol +0 -12
  733. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  734. package/contracts/experiment/statemachine/ISM.sol +0 -25
  735. package/contracts/experiment/statemachine/SM.sol +0 -57
  736. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  737. package/contracts/experiment/types/TypeA.sol +0 -47
  738. package/contracts/experiment/types/TypeB.sol +0 -29
  739. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  740. package/contracts/instance/BundleManager.sol +0 -129
  741. package/contracts/instance/IInstanceBase.sol +0 -25
  742. package/contracts/instance/InstanceAccessManager.sol +0 -303
  743. package/contracts/instance/InstanceBase.sol +0 -39
  744. package/contracts/instance/ObjectManager.sol +0 -101
  745. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  746. package/contracts/instance/base/IInstanceBase.sol +0 -21
  747. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  748. package/contracts/instance/base/KeyValueStore.sol +0 -172
  749. package/contracts/instance/base/Lifecycle.sol +0 -100
  750. package/contracts/instance/module/IAccess.sol +0 -48
  751. package/contracts/instance/module/ISetup.sol +0 -46
  752. package/contracts/instance/module/ITreasury.sol +0 -23
  753. package/contracts/instance/service/BundleService.sol +0 -294
  754. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  755. package/contracts/instance/service/DistributionService.sol +0 -120
  756. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  757. package/contracts/instance/service/IBundleService.sol +0 -44
  758. package/contracts/instance/service/IDistributionService.sol +0 -12
  759. package/contracts/instance/service/IPolicyService.sol +0 -94
  760. package/contracts/instance/service/IPoolService.sol +0 -20
  761. package/contracts/instance/service/IProductService.sol +0 -40
  762. package/contracts/instance/service/PolicyService.sol +0 -539
  763. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  764. package/contracts/instance/service/PoolService.sol +0 -145
  765. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  766. package/contracts/instance/service/ProductService.sol +0 -213
  767. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  768. package/contracts/registry/RegistryAccessManager.sol +0 -210
  769. package/contracts/registry/ReleaseManager.sol +0 -342
  770. package/contracts/shared/ContractDeployerLib.sol +0 -72
  771. package/contracts/shared/ERC165.sol +0 -25
  772. package/contracts/shared/ProxyManager.sol +0 -94
  773. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  774. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  775. package/contracts/shared/Versionable.sol +0 -147
  776. package/contracts/test/TestFee.sol +0 -25
  777. package/contracts/test/TestRegisterable.sol +0 -18
  778. package/contracts/test/TestRoleId.sol +0 -14
  779. package/contracts/test/TestService.sol +0 -25
  780. package/contracts/test/TestToken.sol +0 -26
  781. package/contracts/test/TestVersion.sol +0 -44
  782. package/contracts/test/TestVersionable.sol +0 -17
  783. package/contracts/types/ChainId.sol +0 -38
  784. package/contracts/types/Fee.sol +0 -56
  785. package/contracts/types/NumberId.sol +0 -52
  786. package/contracts/types/ObjectType.sol +0 -152
  787. package/contracts/types/RiskId.sol +0 -43
  788. package/contracts/types/RoleId.sol +0 -90
  789. package/contracts/types/UFixed.sol +0 -325
@@ -3,343 +3,512 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
 
6
- import {Instance} from "./Instance.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
7
9
  import {IInstance} from "./IInstance.sol";
8
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
10
  import {IInstanceService} from "./IInstanceService.sol";
10
- import {InstanceReader} from "./InstanceReader.sol";
11
- import {BundleManager} from "./BundleManager.sol";
12
11
  import {IRegistry} from "../registry/IRegistry.sol";
13
- import {RegistryService} from "../registry/RegistryService.sol";
14
- import {ChainNft} from "../registry/ChainNft.sol";
15
- import {Service} from "../../contracts/shared/Service.sol";
16
- import {IService} from "../shared/IService.sol";
17
- import {NftId} from "../../contracts/types/NftId.sol";
18
- import {RoleId} from "../types/RoleId.sol";
19
- import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, POLICY_SERVICE_ROLE, BUNDLE_SERVICE_ROLE} from "../types/RoleId.sol";
20
- import {ObjectType, INSTANCE, BUNDLE, POLICY, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
21
-
22
- contract InstanceService is Service, IInstanceService {
23
-
24
- address internal _masterInstanceAccessManager;
25
- address internal _masterInstance;
26
- address internal _masterInstanceReader;
27
- address internal _masterInstanceBundleManager;
12
+ import {IRegistryService} from "../registry/IRegistryService.sol";
13
+ import {IStakingService} from "../staking/IStakingService.sol";
14
+
15
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
+ import {Amount} from "../type/Amount.sol";
17
+ import {BundleSet} from "./BundleSet.sol";
18
+ import {Instance} from "./Instance.sol";
19
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
20
+ import {InstanceReader} from "./InstanceReader.sol";
21
+ import {InstanceStore} from "./InstanceStore.sol";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {ProductStore} from "./ProductStore.sol";
25
+ import {RiskSet} from "./RiskSet.sol";
26
+ import {RoleId} from "../type/RoleId.sol";
27
+ import {Seconds} from "../type/Seconds.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
+ import {UFixed} from "../type/UFixed.sol";
31
+ import {VersionPart} from "../type/Version.sol";
32
+
33
+
34
+ contract InstanceService is
35
+ Service,
36
+ IInstanceService
37
+ {
28
38
 
29
39
  // TODO update to real hash when instance is stable
30
40
  bytes32 public constant INSTANCE_CREATION_CODE_HASH = bytes32(0);
31
- string public constant NAME = "InstanceService";
32
41
 
33
- modifier onlyInstanceOwner(NftId instanceNftId) {
34
- IRegistry registry = getRegistry();
35
- ChainNft chainNft = registry.getChainNft();
36
-
37
- if( msg.sender != chainNft.ownerOf(instanceNftId.toInt())) {
38
- revert ErrorInstanceServiceNotInstanceOwner(msg.sender, instanceNftId);
39
- }
40
- _;
41
- }
42
+ IRegistryService internal _registryService;
43
+ IStakingService internal _stakingService;
44
+ IComponentService internal _componentService;
42
45
 
43
- modifier onlyRegisteredService() {
44
- address caller = msg.sender;
45
- if (! getRegistry().isRegisteredService(caller)) {
46
- revert ErrorInstanceServiceRequestUnauhorized(caller);
47
- }
46
+ address internal _masterAccessManager;
47
+ address internal _masterInstanceAdmin;
48
+ address internal _masterInstance;
49
+ address internal _masterInstanceReader;
50
+ address internal _masterInstanceBundleSet;
51
+ address internal _masterInstanceRiskSet;
52
+ address internal _masterInstanceStore;
53
+ address internal _masterProductStore;
54
+
55
+
56
+ modifier onlyInstance() {
57
+ _checkInstance(msg.sender, getRelease());
48
58
  _;
49
59
  }
50
60
 
51
- function createInstanceClone()
52
- external
53
- returns (
54
- InstanceAccessManager clonedAccessManager,
55
- Instance clonedInstance,
56
- NftId clonedInstanceNftId,
57
- InstanceReader clonedInstanceReader,
58
- BundleManager clonedBundleManager
59
- )
60
- {
61
- address instanceOwner = msg.sender;
62
- IRegistry registry = getRegistry();
63
- address registryAddress = address(registry);
64
- NftId registryNftId = registry.getNftId(registryAddress);
65
- address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
66
- RegistryService registryService = RegistryService(registryServiceAddress);
67
-
68
- // initially set the authority of the access managar to this (being the instance service).
69
- // This will allow the instance service to bootstrap the authorizations of the instance
70
- // and then transfer the ownership of the access manager to the instance owner once everything is setup
71
- clonedAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
72
- clonedAccessManager.__InstanceAccessManager_initialize(address(this));
73
-
74
- clonedInstance = Instance(Clones.clone(_masterInstance));
75
- clonedInstance.initialize(address(clonedAccessManager), registryAddress, registryNftId, msg.sender);
76
- ( IRegistry.ObjectInfo memory info, ) = registryService.registerInstance(clonedInstance);
77
- clonedInstanceNftId = info.nftId;
78
-
79
- clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
80
- clonedInstanceReader.initialize(registryAddress, clonedInstanceNftId);
81
- clonedInstance.setInstanceReader(clonedInstanceReader);
82
61
 
83
- clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
84
- clonedBundleManager.initialize(address(clonedAccessManager), registryAddress, clonedInstanceNftId);
85
- clonedInstance.setBundleManager(clonedBundleManager);
62
+ /// @inheritdoc IInstanceService
63
+ function createRole(
64
+ string memory roleName,
65
+ RoleId adminRoleId,
66
+ uint32 maxMemberCount
67
+ )
68
+ external
69
+ restricted()
70
+ onlyInstance()
71
+ returns (RoleId roleId)
72
+ {
73
+ IInstance instance = IInstance(msg.sender);
74
+ roleId = instance.getInstanceAdmin().createRole(
75
+ roleName,
76
+ adminRoleId,
77
+ maxMemberCount);
78
+ }
86
79
 
87
- // TODO amend setters with instance specific , policy manager ...
88
80
 
89
- _grantInitialAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
81
+ /// @inheritdoc IInstanceService
82
+ function setRoleActive(RoleId roleId, bool active)
83
+ external
84
+ restricted()
85
+ onlyInstance()
86
+ {
87
+ IInstance instance = IInstance(msg.sender);
88
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
89
+ }
90
90
 
91
- // to complete setup switch instance ownership to the instance owner
92
- // TODO: use a role less powerful than admin, maybe INSTANCE_ADMIN (does not exist yet)
93
- clonedAccessManager.grantRole(ADMIN_ROLE(), instanceOwner);
94
- clonedAccessManager.revokeRole(ADMIN_ROLE(), address(this));
95
91
 
96
- emit LogInstanceCloned(address(clonedAccessManager), address(clonedInstance), address(clonedInstanceReader), clonedInstanceNftId);
92
+ /// @inheritdoc IInstanceService
93
+ function grantRole(RoleId roleId, address account)
94
+ external
95
+ restricted()
96
+ onlyInstance()
97
+ {
98
+ IInstance instance = IInstance(msg.sender);
99
+ instance.getInstanceAdmin().grantRole(roleId, account);
97
100
  }
98
101
 
99
- function _grantInitialAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
100
- _createGifRoles(clonedAccessManager);
101
- _createGifTargets(clonedAccessManager, clonedInstance, clonedBundleManager);
102
- _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstance);
103
- _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstance);
104
- _grantProductServiceAuthorizations(clonedAccessManager, clonedInstance);
105
- _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstance);
106
- _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstance, clonedBundleManager);
107
- _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance);
102
+
103
+ /// @inheritdoc IInstanceService
104
+ function revokeRole(RoleId roleId, address account)
105
+ external
106
+ restricted()
107
+ onlyInstance()
108
+ {
109
+ IInstance instance = IInstance(msg.sender);
110
+ instance.getInstanceAdmin().revokeRole(roleId, account);
108
111
  }
109
112
 
110
- function _createGifRoles(InstanceAccessManager clonedAccessManager) internal {
111
- clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole");
112
- clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole");
113
- clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole");
114
-
115
- clonedAccessManager.createGifRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
116
- clonedAccessManager.createGifRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
117
- clonedAccessManager.createGifRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
118
- clonedAccessManager.createGifRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
119
- clonedAccessManager.createGifRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
120
- clonedAccessManager.createGifRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
113
+
114
+ /// @inheritdoc IInstanceService
115
+ function createTarget(address target, string memory name)
116
+ external
117
+ restricted()
118
+ onlyInstance()
119
+ returns (RoleId contractRoleId)
120
+ {
121
+ IInstance instance = IInstance(msg.sender);
122
+ return instance.getInstanceAdmin().createTarget(target, name);
121
123
  }
122
124
 
123
- function _createGifTargets(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
124
- clonedAccessManager.createGifTarget(address(clonedInstance), "Instance");
125
- clonedAccessManager.createGifTarget(address(clonedBundleManager), "BundleManager");
126
- }
127
125
 
128
- function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
129
- // configure authorization for distribution service on instance
130
- IRegistry registry = getRegistry();
131
- address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), getMajorVersion());
132
- clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
133
- bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](2);
134
- instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
135
- instanceDistributionServiceSelectors[1] = clonedInstance.updateDistributionSetup.selector;
136
- clonedAccessManager.setTargetFunctionRole(
137
- "Instance",
138
- instanceDistributionServiceSelectors,
139
- DISTRIBUTION_SERVICE_ROLE());
126
+ /// @inheritdoc IInstanceService
127
+ function authorizeFunctions(
128
+ address target,
129
+ RoleId roleId,
130
+ IAccess.FunctionInfo[] memory functions
131
+ )
132
+ external
133
+ restricted()
134
+ onlyInstance()
135
+ {
136
+ IInstance instance = IInstance(msg.sender);
137
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
140
138
  }
141
139
 
142
- function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
143
- // configure authorization for pool service on instance
144
- address poolServiceAddress = _registry.getServiceAddress(POOL(), getMajorVersion());
145
- clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
146
- bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
147
- instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
148
- instancePoolServiceSelectors[1] = clonedInstance.updatePoolSetup.selector;
149
- clonedAccessManager.setTargetFunctionRole(
150
- "Instance",
151
- instancePoolServiceSelectors,
152
- POOL_SERVICE_ROLE());
140
+
141
+ /// @inheritdoc IInstanceService
142
+ function unauthorizeFunctions(
143
+ address target,
144
+ IAccess.FunctionInfo[] memory functions
145
+ )
146
+ external
147
+ restricted()
148
+ onlyInstance()
149
+ {
150
+ IInstance instance = IInstance(msg.sender);
151
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
153
152
  }
154
153
 
155
- function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
156
- // configure authorization for product service on instance
157
- address productServiceAddress = _registry.getServiceAddress(PRODUCT(), getMajorVersion());
158
- clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
159
- bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
160
- instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
161
- instanceProductServiceSelectors[1] = clonedInstance.updateProductSetup.selector;
162
- instanceProductServiceSelectors[2] = clonedInstance.createRisk.selector;
163
- instanceProductServiceSelectors[3] = clonedInstance.updateRisk.selector;
164
- instanceProductServiceSelectors[4] = clonedInstance.updateRiskState.selector;
165
- clonedAccessManager.setTargetFunctionRole(
166
- "Instance",
167
- instanceProductServiceSelectors,
168
- PRODUCT_SERVICE_ROLE());
154
+
155
+ /// @inheritdoc IInstanceService
156
+ function setTargetLocked(address target, bool locked)
157
+ external
158
+ virtual
159
+ restricted()
160
+ onlyInstance()
161
+ {
162
+ address instanceAddress = msg.sender;
163
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
169
164
  }
170
165
 
171
- function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
172
- // configure authorization for policy service on instance
173
- address policyServiceAddress = _registry.getServiceAddress(POLICY(), getMajorVersion());
174
- clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), address(policyServiceAddress));
175
- bytes4[] memory instancePolicyServiceSelectors = new bytes4[](3);
176
- instancePolicyServiceSelectors[0] = clonedInstance.createPolicy.selector;
177
- instancePolicyServiceSelectors[1] = clonedInstance.updatePolicy.selector;
178
- instancePolicyServiceSelectors[2] = clonedInstance.updatePolicyState.selector;
179
- clonedAccessManager.setTargetFunctionRole(
180
- "Instance",
181
- instancePolicyServiceSelectors,
182
- POLICY_SERVICE_ROLE());
166
+
167
+ /// @inheritdoc IInstanceService
168
+ function setInstanceLocked(bool locked)
169
+ external
170
+ virtual
171
+ restricted()
172
+ onlyInstance()
173
+ {
174
+ address instanceAddress = msg.sender;
175
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
176
+
177
+ emit LogInstanceServiceInstanceLocked(
178
+ getRegistry().getNftIdForAddress(instanceAddress),
179
+ locked);
183
180
  }
184
181
 
185
- function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
186
- // configure authorization for bundle service on instance
187
- address bundleServiceAddress = _registry.getServiceAddress(BUNDLE(), getMajorVersion());
188
- clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
189
- bytes4[] memory instanceBundleServiceSelectors = new bytes4[](2);
190
- instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
191
- instanceBundleServiceSelectors[1] = clonedInstance.updateBundle.selector;
192
- clonedAccessManager.setTargetFunctionRole(
193
- "Instance",
194
- instanceBundleServiceSelectors,
195
- BUNDLE_SERVICE_ROLE());
196
-
197
- // configure authorization for bundle service on bundle manager
198
- bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
199
- bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
200
- bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
201
- bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
202
- bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
203
- bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
204
- clonedAccessManager.setTargetFunctionRole(
205
- "BundleManager",
206
- bundleManagerBundleServiceSelectors,
207
- BUNDLE_SERVICE_ROLE());
182
+
183
+ /// @inheritdoc IInstanceService
184
+ function createInstance(bool allowAnyToken)
185
+ external
186
+ virtual
187
+ restricted()
188
+ returns (
189
+ IInstance instance,
190
+ NftId instanceNftId
191
+ )
192
+ {
193
+ // tx sender will become instance owner
194
+ address instanceOwner = msg.sender;
195
+
196
+ // create instance admin and instance
197
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
198
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
199
+
200
+ // register cloned instance with registry
201
+ instanceNftId = _registryService.registerInstance(
202
+ instance, instanceOwner).nftId;
203
+
204
+ // MUST be set after instance is set up and registered
205
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
206
+ instanceAdmin.completeSetup(
207
+ address(getRegistry()),
208
+ address(instanceAuthorization),
209
+ getRelease(),
210
+ address(instance));
211
+
212
+ // hard checks for newly cloned instance
213
+ assert(address(instance.getRegistry()) == address(getRegistry()));
214
+ assert(instance.getRelease() == getRelease());
215
+
216
+ // register cloned instance as staking target
217
+ _stakingService.createInstanceTarget(
218
+ instanceNftId,
219
+ TargetManagerLib.getDefaultLockingPeriod(),
220
+ TargetManagerLib.getDefaultRewardRate());
221
+
222
+ emit LogInstanceServiceInstanceCreated(
223
+ instanceNftId,
224
+ address(instance));
208
225
  }
209
226
 
210
- function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
211
- // configure authorization for instance service on instance
212
- address instanceServiceAddress = _registry.getServiceAddress(INSTANCE(), getMajorVersion());
213
- clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
214
- bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
215
- instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
216
- clonedAccessManager.setTargetFunctionRole(
217
- "Instance",
218
- instanceInstanceServiceSelectors,
219
- INSTANCE_SERVICE_ROLE());
227
+
228
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
229
+ external
230
+ virtual
231
+ restricted()
232
+ onlyInstance()
233
+ {
234
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
235
+ _stakingService.setInstanceLockingPeriod(
236
+ instanceNftId,
237
+ stakeLockingPeriod);
220
238
  }
221
239
 
222
- function setMasterInstance(address accessManagerAddress, address instanceAddress, address instanceReaderAddress, address bundleManagerAddress) external onlyOwner {
223
- require(_masterInstanceAccessManager == address(0), "ERROR:CRD-001:ACCESS_MANAGER_MASTER_ALREADY_SET");
224
- require(_masterInstance == address(0), "ERROR:CRD-002:INSTANCE_MASTER_ALREADY_SET");
225
- require(_masterInstanceBundleManager == address(0), "ERROR:CRD-004:BUNDLE_MANAGER_MASTER_ALREADY_SET");
226
240
 
227
- require (accessManagerAddress != address(0), "ERROR:CRD-005:ACCESS_MANAGER_ZERO");
228
- require (instanceAddress != address(0), "ERROR:CRD-006:INSTANCE_ZERO");
229
- require (instanceReaderAddress != address(0), "ERROR:CRD-007:INSTANCE_READER_ZERO");
230
- require (bundleManagerAddress != address(0), "ERROR:CRD-008:BUNDLE_MANAGER_ZERO");
241
+ function setStakingRewardRate(UFixed rewardRate)
242
+ external
243
+ virtual
244
+ restricted()
245
+ onlyInstance()
246
+ {
247
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
248
+ _stakingService.setInstanceRewardRate(
249
+ instanceNftId,
250
+ rewardRate);
251
+ }
231
252
 
232
- Instance instance = Instance(instanceAddress);
233
- InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
234
- BundleManager bundleManager = BundleManager(bundleManagerAddress);
253
+ function setStakingMaxAmount(Amount maxStakedAmount)
254
+ external
255
+ virtual
256
+ restricted()
257
+ onlyInstance()
258
+ {
259
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
260
+ _stakingService.setInstanceMaxStakedAmount(
261
+ instanceNftId,
262
+ maxStakedAmount);
263
+ }
264
+
265
+
266
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount)
267
+ external
268
+ virtual
269
+ restricted()
270
+ onlyInstance()
271
+ returns (Amount newBalance)
272
+ {
273
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
274
+ newBalance = _stakingService.refillInstanceRewardReserves(
275
+ instanceNftId,
276
+ rewardProvider,
277
+ dipAmount);
278
+ }
235
279
 
236
- require(instance.authority() == accessManagerAddress, "ERROR:CRD-009:INSTANCE_AUTHORITY_MISMATCH");
237
- require(instanceReader.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-010:INSTANCE_READER_INSTANCE_MISMATCH");
238
- require(bundleManager.getInstanceNftId() == instance.getNftId(), "ERROR:CRD-011:BUNDLE_MANAGER_INSTANCE_MISMATCH");
239
280
 
240
- _masterInstanceAccessManager = accessManagerAddress;
241
- _masterInstance = instanceAddress;
242
- _masterInstanceReader = instanceReaderAddress;
243
- _masterInstanceBundleManager = bundleManagerAddress;
281
+ function withdrawInstanceRewardReserves(Amount dipAmount)
282
+ external
283
+ virtual
284
+ restricted()
285
+ onlyInstance()
286
+ returns (Amount newBalance)
287
+ {
288
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
289
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
290
+ instanceNftId,
291
+ dipAmount);
244
292
  }
245
293
 
246
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
247
- require(_masterInstanceReader != address(0), "ERROR:CRD-003:INSTANCE_READER_MASTER_NOT_SET");
248
- require (instanceReaderAddress != address(0), "ERROR:CRD-012:INSTANCE_READER_ZERO");
249
- require(instanceReaderAddress != _masterInstanceReader, "ERROR:CRD-014:INSTANCE_READER_MASTER_SAME_AS_NEW");
250
294
 
251
- InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
252
- require(instanceReader.getInstanceNftId() == Instance(_masterInstance).getNftId(), "ERROR:CRD-015:INSTANCE_READER_INSTANCE_MISMATCH");
295
+ function upgradeInstanceReader()
296
+ external
297
+ virtual
298
+ restricted()
299
+ onlyInstance()
300
+ {
301
+ address instanceAddress = msg.sender;
302
+ IInstance instance = IInstance(msg.sender);
303
+
304
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
305
+ Clones.clone(address(_masterInstanceReader)));
253
306
 
254
- _masterInstanceReader = instanceReaderAddress;
307
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
308
+ instance.setInstanceReader(upgradedInstanceReaderClone);
309
+
310
+ emit LogInstanceServiceInstanceReaderUpgraded(
311
+ getRegistry().getNftIdForAddress(instanceAddress),
312
+ address(upgradedInstanceReaderClone));
255
313
  }
256
314
 
257
- function upgradeInstanceReader(NftId instanceNftId) external {
258
- IRegistry registry = getRegistry();
259
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
260
- Instance instance = Instance(instanceInfo.objectAddress);
261
- address owner = instance.getOwner();
262
315
 
263
- if (msg.sender != owner) {
264
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
316
+ function setAndRegisterMasterInstance(address instanceAddress)
317
+ external
318
+ virtual
319
+ onlyOwner()
320
+ returns(NftId masterInstanceNftId)
321
+ {
322
+ if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
323
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
324
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
325
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
326
+ if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
327
+
328
+ {
329
+ IInstance instance = IInstance(instanceAddress);
330
+ address accessManagerAddress = instance.authority();
331
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
332
+ address instanceAdminAddress = address(instanceAdmin);
333
+ InstanceReader instanceReader = instance.getInstanceReader();
334
+ address instanceReaderAddress = address(instanceReader);
335
+ BundleSet bundleSet = instance.getBundleSet();
336
+ address bundleSetAddress = address(bundleSet);
337
+ RiskSet riskSet = instance.getRiskSet();
338
+ address riskSetAddress = address(riskSet);
339
+ InstanceStore instanceStore = instance.getInstanceStore();
340
+ address instanceStoreAddress = address(instanceStore);
341
+ ProductStore productStore = instance.getProductStore();
342
+ address productStoreAddress = address(productStore);
343
+
344
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
345
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
346
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
347
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
348
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
349
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
350
+ if(productStoreAddress == address(0)) { revert ErrorInstanceServiceProductStoreZero(); } // TODO: rename exception
351
+
352
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
353
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
354
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
355
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
356
+ if(productStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceProductStoreAuthorityMismatch(); }
357
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
358
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
359
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
360
+
361
+ _masterAccessManager = accessManagerAddress;
362
+ _masterInstanceAdmin = instanceAdminAddress;
363
+ _masterInstance = instanceAddress;
364
+ _masterInstanceReader = instanceReaderAddress;
365
+ _masterInstanceBundleSet = bundleSetAddress;
366
+ _masterInstanceRiskSet = riskSetAddress;
367
+ _masterInstanceStore = instanceStoreAddress;
368
+ _masterProductStore = productStoreAddress;
265
369
  }
266
370
 
267
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
268
- upgradedInstanceReaderClone.initialize(address(registry), instanceNftId);
269
- instance.setInstanceReader(upgradedInstanceReaderClone);
371
+ {
372
+ IInstance masterInstance = IInstance(_masterInstance);
373
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
374
+ masterInstanceNftId = info.nftId;
375
+ }
270
376
  }
271
377
 
272
- function getMasterInstanceReader() external view returns (address) {
273
- return _masterInstanceReader;
274
- }
275
378
 
276
- function getMasterInstance() external view returns (address) {
277
- return _masterInstance;
379
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
380
+ external
381
+ virtual
382
+ onlyOwner
383
+ {
384
+ if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
385
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
386
+ if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
387
+
388
+ InstanceReader instanceReader = InstanceReader(instanceReaderAddress);
389
+ if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
390
+
391
+ _masterInstanceReader = instanceReaderAddress;
392
+
393
+ emit LogInstanceServiceMasterInstanceReaderUpgraded(
394
+ getRegistry().getNftIdForAddress(_masterInstance),
395
+ instanceReaderAddress);
278
396
  }
279
397
 
280
- function getMasterInstanceAccessManager() external view returns (address) {
281
- return _masterInstanceAccessManager;
398
+ function getMasterInstanceReader() external virtual view returns (address) {
399
+ return _masterInstanceReader;
282
400
  }
283
401
 
284
- function getMasterInstanceBundleManager() external view returns (address) {
285
- return _masterInstanceBundleManager;
402
+ //--- internal functions --------------------------------------------------------//
403
+
404
+ /// @dev create new cloned instance admin
405
+ /// function used to setup a new instance
406
+ function _cloneNewInstanceAdmin()
407
+ internal
408
+ virtual
409
+ returns (InstanceAdmin clonedAdmin)
410
+ {
411
+ // clone instance specific access manager
412
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
413
+ Clones.clone(
414
+ InstanceAdmin(_masterInstanceAdmin).authority()));
415
+
416
+ // set up the instance admin
417
+ clonedAdmin = InstanceAdmin(
418
+ Clones.clone(_masterInstanceAdmin));
419
+
420
+ clonedAdmin.initialize(
421
+ address(clonedAccessManager),
422
+ "InstanceAdmin");
286
423
  }
287
424
 
288
- // From IService
289
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
290
- return INSTANCE();
425
+
426
+ /// @dev create new cloned instance
427
+ /// function used to setup a new instance
428
+ function _createInstance(
429
+ InstanceAdmin instanceAdmin,
430
+ address instanceOwner,
431
+ bool allowAnyToken
432
+ )
433
+ internal
434
+ virtual
435
+ returns (IInstance)
436
+ {
437
+ // clone instance
438
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
439
+ clonedInstance.initialize(
440
+ IInstance.InstanceContracts({
441
+ instanceAdmin: instanceAdmin,
442
+ instanceStore: InstanceStore(Clones.clone(address(_masterInstanceStore))),
443
+ productStore: ProductStore(Clones.clone(address(_masterProductStore))),
444
+ bundleSet: BundleSet(Clones.clone(_masterInstanceBundleSet)),
445
+ riskSet: RiskSet(Clones.clone(_masterInstanceRiskSet)),
446
+ instanceReader: InstanceReader(Clones.clone(address(_masterInstanceReader)))
447
+ }),
448
+ getRegistry(),
449
+ getRelease(),
450
+ instanceOwner,
451
+ allowAnyToken);
452
+
453
+ return clonedInstance;
291
454
  }
292
-
293
- /// @dev top level initializer
455
+
456
+
457
+ /// @dev top level initializer (upgradable contract)
294
458
  function _initialize(
295
459
  address owner,
296
460
  bytes memory data
297
461
  )
298
462
  internal
299
- initializer
300
463
  virtual override
464
+ initializer()
301
465
  {
302
- address initialOwner;
303
- address registryAddress;
304
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
305
- // TODO while InstanceService is not deployed in InstanceServiceManager constructor
306
- // owner is InstanceServiceManager deployer
307
- _initializeService(registryAddress, owner);
308
-
466
+ (
467
+ address authority,
468
+ address registry
469
+ ) = abi.decode(data, (address, address));
470
+
471
+ __Service_init(authority, registry, owner);
472
+
473
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
474
+ _stakingService = IStakingService(_getServiceAddress(STAKING()));
475
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
476
+
309
477
  _registerInterface(type(IInstanceService).interfaceId);
310
478
  }
311
479
 
312
- function hasRole(address account, RoleId role, address instanceAddress) public view returns (bool) {
313
- Instance instance = Instance(instanceAddress);
314
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
315
- return accessManager.hasRole(role, account);
316
- }
317
480
 
318
- function createTarget(NftId instanceNftId, address targetAddress, string memory targetName) external onlyRegisteredService {
481
+ function _checkInstance(
482
+ address instanceAddress,
483
+ VersionPart expectedRelease
484
+ )
485
+ internal
486
+ virtual
487
+ view
488
+ {
319
489
  IRegistry registry = getRegistry();
320
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
321
- Instance instance = Instance(instanceInfo.objectAddress);
322
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
323
- accessManager.createTarget(targetAddress, targetName);
324
- }
325
490
 
326
- function setTargetLocked(string memory targetName, bool locked) external {
327
- address componentAddress = msg.sender;
328
- IRegistry registry = getRegistry();
329
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
330
- if (componentInfo.nftId.eqz()) {
331
- revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
491
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
492
+ if (instanceNftId.eqz()) {
493
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
332
494
  }
333
495
 
334
- // TODO validate component type
496
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
497
+ if (objectType != INSTANCE()) {
498
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
499
+ }
335
500
 
501
+ if (expectedRelease.gtz()) {
502
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
503
+ if (instanceRelease != expectedRelease) {
504
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
505
+ }
506
+ }
507
+ }
336
508
 
337
- address instanceAddress = registry.getObjectInfo(componentInfo.parentNftId).objectAddress;
338
- IInstance instance = IInstance(instanceAddress);
339
509
 
340
- InstanceAccessManager accessManager = InstanceAccessManager(instance.authority());
341
- accessManager.setTargetClosed(targetName, locked);
510
+ // From IService
511
+ function _getDomain() internal pure override returns(ObjectType) {
512
+ return INSTANCE();
342
513
  }
343
-
344
- }
345
-
514
+ }