@etherisc/gif-next 0.0.2-9a02a95-445 → 0.0.2-9a3c303-522

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