@etherisc/gif-next 0.0.2-7f39e38-904 → 0.0.2-7fbee0d-269

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 (632) hide show
  1. package/README.md +136 -317
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +810 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1735 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +817 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1400 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +465 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +407 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +652 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1234 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +844 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +146 -617
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +767 -301
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +267 -116
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +152 -283
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +553 -77
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1474 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +844 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2043 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +844 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +383 -0
  54. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightMessageVerfier.sol/FlightMessageVerifier.json +253 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +849 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2180 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +844 -0
  68. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  70. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +844 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1161 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +844 -0
  82. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2575 -0
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +844 -0
  86. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  87. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +59 -205
  88. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  90. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  92. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +614 -92
  94. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +517 -75
  96. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  97. package/artifacts/contracts/instance/Instance.sol/Instance.json +639 -237
  98. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2400 -0
  100. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +872 -0
  102. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1806 -748
  104. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +509 -224
  106. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +175 -98
  108. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1482 -1911
  110. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  112. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  114. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  116. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  128. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  129. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  131. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  132. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  133. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  135. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +849 -0
  137. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  138. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  139. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  140. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  141. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  142. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  143. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  144. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  145. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  146. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  147. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  148. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +830 -0
  149. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  150. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  151. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +844 -0
  153. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  154. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +582 -235
  155. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +257 -94
  157. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  158. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +398 -49
  159. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  160. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +151 -404
  161. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  162. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +770 -365
  163. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  164. package/artifacts/contracts/pool/Pool.sol/Pool.json +148 -692
  165. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  166. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  167. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  168. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +947 -525
  169. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +260 -93
  171. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  172. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +382 -166
  173. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +201 -90
  175. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  176. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  177. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  178. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +844 -0
  179. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  180. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +502 -230
  181. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  182. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +229 -110
  183. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  184. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  185. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  187. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  188. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +436 -101
  189. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  190. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +202 -80
  191. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  192. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +291 -274
  193. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  194. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +295 -150
  195. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  196. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +564 -292
  197. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  198. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  199. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  200. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +239 -96
  201. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  202. package/artifacts/contracts/product/PricingService.sol/PricingService.json +262 -299
  203. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  204. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +193 -114
  205. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  206. package/artifacts/contracts/product/Product.sol/Product.json +322 -606
  207. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  208. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  209. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  210. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +794 -0
  211. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  212. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  213. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +402 -79
  215. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  216. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +125 -146
  217. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  218. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  219. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  220. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  221. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  222. package/artifacts/contracts/registry/Registry.sol/Registry.json +719 -120
  223. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  224. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2255 -0
  225. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  226. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  227. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  228. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +174 -274
  229. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  230. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +180 -92
  231. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  232. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2271 -0
  233. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  234. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  235. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  236. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1401 -0
  237. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  238. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +705 -0
  239. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  240. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +135 -67
  241. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  242. package/artifacts/contracts/shared/Component.sol/Component.json +92 -287
  243. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +632 -542
  245. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +230 -113
  247. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  248. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  249. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  250. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  251. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  252. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  253. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  254. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  255. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +99 -104
  257. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +549 -228
  259. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +138 -140
  261. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  262. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  263. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  265. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  266. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  267. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  268. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  269. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  270. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  271. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  272. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  273. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  274. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  275. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +131 -376
  276. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  277. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  278. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  279. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  280. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  281. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  282. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  283. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  284. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  285. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -98
  286. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  287. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  288. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  289. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  290. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  291. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  292. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  293. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  294. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  295. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  296. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  297. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1558 -246
  298. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  299. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +382 -119
  300. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  301. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  302. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  303. package/artifacts/contracts/staking/Staking.sol/Staking.json +1734 -561
  304. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  305. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  306. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +232 -113
  308. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  309. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +430 -94
  310. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  311. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +442 -305
  312. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  313. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +181 -93
  314. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  315. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2044 -637
  316. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  317. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  318. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  319. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +253 -68
  320. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  322. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  324. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  326. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  328. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  330. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  332. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  334. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  336. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  337. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  338. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
  340. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  341. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  342. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +150 -4
  344. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  346. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  348. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  350. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  351. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  352. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  354. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  356. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +136 -2
  358. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  359. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  360. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  361. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  362. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  364. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  365. package/artifacts/contracts/type/String.sol/StrLib.json +199 -0
  366. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  367. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +69 -5
  368. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  369. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  370. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  371. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  372. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  373. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  374. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  375. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  376. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  377. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +672 -0
  378. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  379. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  380. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  381. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  382. package/contracts/accounting/AccountingService.sol +274 -0
  383. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  384. package/contracts/accounting/IAccountingService.sol +47 -0
  385. package/contracts/authorization/AccessAdmin.sol +679 -0
  386. package/contracts/authorization/AccessAdminLib.sol +678 -0
  387. package/contracts/authorization/AccessManagerCloneable.sol +140 -0
  388. package/contracts/authorization/Authorization.sol +190 -0
  389. package/contracts/authorization/IAccess.sol +66 -0
  390. package/contracts/authorization/IAccessAdmin.sol +142 -0
  391. package/contracts/authorization/IAuthorization.sol +26 -0
  392. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  393. package/contracts/authorization/ServiceAuthorization.sol +300 -0
  394. package/contracts/distribution/BasicDistribution.sol +140 -0
  395. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  396. package/contracts/distribution/Distribution.sol +125 -143
  397. package/contracts/distribution/DistributionService.sol +287 -137
  398. package/contracts/distribution/DistributionServiceManager.sol +8 -23
  399. package/contracts/distribution/IDistributionComponent.sol +21 -42
  400. package/contracts/distribution/IDistributionService.sol +60 -26
  401. package/contracts/examples/fire/DamageLevel.sol +59 -0
  402. package/contracts/examples/fire/FirePool.sol +86 -0
  403. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  404. package/contracts/examples/fire/FireProduct.sol +433 -0
  405. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  406. package/contracts/examples/fire/FireUSD.sol +26 -0
  407. package/contracts/examples/flight/FlightLib.sol +273 -0
  408. package/contracts/examples/flight/FlightMessageVerfier.sol +129 -0
  409. package/contracts/examples/flight/FlightOracle.sol +167 -0
  410. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  411. package/contracts/examples/flight/FlightPool.sol +89 -0
  412. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  413. package/contracts/examples/flight/FlightProduct.sol +464 -0
  414. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  415. package/contracts/examples/flight/FlightUSD.sol +26 -0
  416. package/contracts/examples/flight/originalV1.sol +396 -0
  417. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  418. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  419. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  420. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  421. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  422. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  423. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  424. package/contracts/instance/BaseStore.sol +93 -0
  425. package/contracts/instance/BundleSet.sol +130 -0
  426. package/contracts/instance/IBaseStore.sol +37 -0
  427. package/contracts/instance/IInstance.sol +128 -49
  428. package/contracts/instance/IInstanceService.sol +82 -46
  429. package/contracts/instance/Instance.sol +254 -131
  430. package/contracts/instance/InstanceAdmin.sol +307 -0
  431. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  432. package/contracts/instance/InstanceReader.sol +499 -237
  433. package/contracts/instance/InstanceService.sol +391 -244
  434. package/contracts/instance/InstanceServiceManager.sol +8 -13
  435. package/contracts/instance/InstanceStore.sol +172 -109
  436. package/contracts/instance/ProductStore.sol +290 -0
  437. package/contracts/instance/RiskSet.sol +126 -0
  438. package/contracts/instance/TargetNames.sol +10 -0
  439. package/contracts/instance/base/BalanceStore.sol +15 -12
  440. package/contracts/instance/base/Cloneable.sol +2 -25
  441. package/contracts/instance/base/ObjectCounter.sol +20 -0
  442. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  443. package/contracts/instance/base/ObjectSet.sol +77 -0
  444. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  445. package/contracts/instance/module/IBundle.sol +6 -5
  446. package/contracts/instance/module/IComponents.sol +29 -21
  447. package/contracts/instance/module/IDistribution.sol +21 -9
  448. package/contracts/instance/module/IPolicy.sol +50 -29
  449. package/contracts/instance/module/IRisk.sol +5 -0
  450. package/contracts/mock/Dip.sol +1 -1
  451. package/contracts/oracle/BasicOracle.sol +44 -0
  452. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  453. package/contracts/oracle/IOracle.sol +41 -0
  454. package/contracts/oracle/IOracleComponent.sol +33 -0
  455. package/contracts/oracle/IOracleService.sol +66 -0
  456. package/contracts/oracle/Oracle.sol +152 -0
  457. package/contracts/oracle/OracleService.sol +310 -0
  458. package/contracts/oracle/OracleServiceManager.sol +39 -0
  459. package/contracts/pool/BasicPool.sol +161 -0
  460. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  461. package/contracts/pool/BundleService.sol +225 -135
  462. package/contracts/pool/BundleServiceManager.sol +8 -11
  463. package/contracts/pool/IBundleService.sol +43 -33
  464. package/contracts/pool/IPoolComponent.sol +20 -70
  465. package/contracts/pool/IPoolService.sol +98 -75
  466. package/contracts/pool/Pool.sol +196 -164
  467. package/contracts/pool/PoolLib.sol +341 -0
  468. package/contracts/pool/PoolService.sol +444 -254
  469. package/contracts/pool/PoolServiceManager.sol +6 -9
  470. package/contracts/product/ApplicationService.sol +159 -86
  471. package/contracts/product/ApplicationServiceManager.sol +6 -6
  472. package/contracts/product/BasicProduct.sol +48 -0
  473. package/contracts/product/BasicProductAuthorization.sol +64 -0
  474. package/contracts/product/ClaimService.sol +396 -207
  475. package/contracts/product/ClaimServiceManager.sol +6 -6
  476. package/contracts/product/IApplicationService.sol +29 -3
  477. package/contracts/product/IClaimService.sol +51 -8
  478. package/contracts/product/IPolicyService.sol +61 -37
  479. package/contracts/product/IPricingService.sol +11 -10
  480. package/contracts/product/IProductComponent.sol +29 -9
  481. package/contracts/product/IRiskService.sol +48 -0
  482. package/contracts/product/PolicyService.sol +450 -278
  483. package/contracts/product/PolicyServiceLib.sol +139 -0
  484. package/contracts/product/PolicyServiceManager.sol +6 -9
  485. package/contracts/product/PricingService.sol +95 -90
  486. package/contracts/product/PricingServiceManager.sol +6 -9
  487. package/contracts/product/Product.sol +261 -147
  488. package/contracts/product/RiskService.sol +189 -0
  489. package/contracts/product/RiskServiceManager.sol +39 -0
  490. package/contracts/registry/ChainNft.sol +72 -39
  491. package/contracts/registry/IRegistry.sol +88 -41
  492. package/contracts/registry/IRegistryService.sol +4 -10
  493. package/contracts/registry/IRelease.sol +29 -0
  494. package/contracts/registry/ITransferInterceptor.sol +1 -2
  495. package/contracts/registry/Registry.sol +389 -231
  496. package/contracts/registry/RegistryAdmin.sol +173 -0
  497. package/contracts/registry/RegistryAuthorization.sol +337 -0
  498. package/contracts/registry/RegistryService.sol +50 -75
  499. package/contracts/registry/RegistryServiceManager.sol +5 -24
  500. package/contracts/registry/ReleaseAdmin.sol +199 -0
  501. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  502. package/contracts/registry/ReleaseRegistry.sol +525 -0
  503. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  504. package/contracts/registry/TokenRegistry.sol +73 -110
  505. package/contracts/shared/Component.sol +72 -148
  506. package/contracts/shared/ComponentService.sol +466 -370
  507. package/contracts/shared/ComponentServiceManager.sol +10 -7
  508. package/contracts/shared/ContractLib.sol +312 -0
  509. package/contracts/shared/EcdsaChecker.sol +5 -0
  510. package/contracts/shared/IComponent.sol +7 -23
  511. package/contracts/shared/IComponentService.sol +51 -31
  512. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  513. package/contracts/shared/ILifecycle.sol +3 -2
  514. package/contracts/shared/INftOwnable.sol +5 -1
  515. package/contracts/shared/IPolicyHolder.sol +12 -22
  516. package/contracts/shared/IRegisterable.sol +22 -1
  517. package/contracts/shared/IService.sol +10 -5
  518. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  519. package/contracts/shared/InstanceLinkedComponent.sol +145 -58
  520. package/contracts/shared/Lifecycle.sol +30 -63
  521. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  522. package/contracts/shared/NftOwnable.sol +35 -24
  523. package/contracts/shared/PolicyHolder.sol +19 -57
  524. package/contracts/shared/Registerable.sol +52 -21
  525. package/contracts/shared/RegistryLinked.sol +9 -14
  526. package/contracts/shared/Service.sol +31 -41
  527. package/contracts/shared/TokenHandler.sol +310 -26
  528. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  529. package/contracts/staking/IStaking.sol +284 -70
  530. package/contracts/staking/IStakingService.sol +59 -94
  531. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  532. package/contracts/staking/Staking.sol +558 -263
  533. package/contracts/staking/StakingLib.sol +195 -0
  534. package/contracts/staking/StakingManager.sol +20 -32
  535. package/contracts/staking/StakingReader.sol +84 -60
  536. package/contracts/staking/StakingService.sol +108 -162
  537. package/contracts/staking/StakingServiceManager.sol +10 -8
  538. package/contracts/staking/StakingStore.sol +1222 -183
  539. package/contracts/staking/TargetHandler.sol +132 -0
  540. package/contracts/staking/TargetManagerLib.sol +95 -40
  541. package/contracts/type/Amount.sol +43 -3
  542. package/contracts/type/Blocknumber.sol +24 -23
  543. package/contracts/type/ChainId.sol +101 -0
  544. package/contracts/type/ClaimId.sol +6 -1
  545. package/contracts/type/Fee.sol +8 -8
  546. package/contracts/type/Key32.sol +2 -2
  547. package/contracts/type/Key32Set.sol +62 -0
  548. package/contracts/type/NftId.sol +15 -8
  549. package/contracts/type/ObjectType.sol +174 -65
  550. package/contracts/type/PayoutId.sol +10 -10
  551. package/contracts/type/Referral.sol +7 -0
  552. package/contracts/type/RequestId.sol +75 -0
  553. package/contracts/type/RequestIdSet.sol +62 -0
  554. package/contracts/type/RiskId.sol +38 -6
  555. package/contracts/type/RoleId.sol +121 -84
  556. package/contracts/type/Seconds.sol +54 -1
  557. package/contracts/type/Selector.sol +107 -0
  558. package/contracts/type/StateId.sol +27 -1
  559. package/contracts/type/String.sol +95 -0
  560. package/contracts/type/Timestamp.sol +30 -10
  561. package/contracts/type/UFixed.sol +62 -125
  562. package/contracts/type/Version.sol +57 -6
  563. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  564. package/contracts/{shared → upgradeability}/ProxyManager.sol +102 -51
  565. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  566. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  567. package/package.json +13 -8
  568. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  569. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  570. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  571. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  572. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  573. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  574. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  575. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  576. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  578. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  579. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -381
  580. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  581. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -673
  582. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  583. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -675
  584. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  585. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -322
  586. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  587. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1151
  588. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  589. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  590. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  591. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  592. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  593. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  594. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  595. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  596. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  597. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  598. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -581
  599. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  600. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  601. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  602. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -598
  603. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  604. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  605. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  606. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  607. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  608. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  609. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  610. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  611. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -402
  612. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  613. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  614. package/contracts/instance/BundleManager.sol +0 -126
  615. package/contracts/instance/InstanceAccessManager.sol +0 -543
  616. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  617. package/contracts/instance/base/ObjectManager.sol +0 -82
  618. package/contracts/instance/module/IAccess.sol +0 -54
  619. package/contracts/product/IProductService.sol +0 -33
  620. package/contracts/product/ProductService.sol +0 -124
  621. package/contracts/product/ProductServiceManager.sol +0 -42
  622. package/contracts/registry/RegistryAccessManager.sol +0 -196
  623. package/contracts/registry/ReleaseManager.sol +0 -563
  624. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  625. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  626. package/contracts/shared/ComponentVerifyingService.sol +0 -111
  627. package/contracts/shared/IKeyValueStore.sol +0 -53
  628. package/contracts/shared/KeyValueStore.sol +0 -130
  629. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  630. package/contracts/staking/IStakingManager.sol +0 -15
  631. package/contracts/staking/IStakingStore.sol +0 -130
  632. package/contracts/staking/StakeManagerLib.sol +0 -156
@@ -2,38 +2,34 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
-
7
- import {BundleManager} from "./BundleManager.sol";
8
- import {ChainNft} from "../registry/ChainNft.sol";
9
- import {NftId} from "../type/NftId.sol";
10
- import {RoleId} from "../type/RoleId.sol";
11
- import {SecondsLib} from "../type/Seconds.sol";
12
- import {UFixedLib} from "../type/UFixed.sol";
13
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
14
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
15
-
16
- import {Service} from "../shared/Service.sol";
17
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
18
- import {IService} from "../shared/IService.sol";
19
- import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
20
-
21
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
22
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
23
- import {IProductComponent} from "../product/IProductComponent.sol";
24
5
 
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
9
+ import {IInstance} from "./IInstance.sol";
10
+ import {IInstanceService} from "./IInstanceService.sol";
25
11
  import {IRegistry} from "../registry/IRegistry.sol";
26
12
  import {IRegistryService} from "../registry/IRegistryService.sol";
27
13
  import {IStakingService} from "../staking/IStakingService.sol";
28
- import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
29
14
 
15
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
+ import {Amount} from "../type/Amount.sol";
17
+ import {BundleSet} from "./BundleSet.sol";
30
18
  import {Instance} from "./Instance.sol";
31
- import {IInstance} from "./IInstance.sol";
32
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
33
- import {IInstanceService} from "./IInstanceService.sol";
19
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
34
20
  import {InstanceReader} from "./InstanceReader.sol";
35
21
  import {InstanceStore} from "./InstanceStore.sol";
36
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {ProductStore} from "./ProductStore.sol";
25
+ import {RiskSet} from "./RiskSet.sol";
26
+ import {RoleId} from "../type/RoleId.sol";
27
+ import {Seconds} from "../type/Seconds.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
+ import {UFixed} from "../type/UFixed.sol";
31
+ import {VersionPart} from "../type/Version.sol";
32
+
37
33
 
38
34
  contract InstanceService is
39
35
  Service,
@@ -45,189 +41,346 @@ contract InstanceService is
45
41
 
46
42
  IRegistryService internal _registryService;
47
43
  IStakingService internal _stakingService;
44
+ IComponentService internal _componentService;
48
45
 
49
- address internal _masterOzAccessManager;
50
- address internal _masterInstanceAccessManager;
46
+ address internal _masterAccessManager;
47
+ address internal _masterInstanceAdmin;
51
48
  address internal _masterInstance;
52
49
  address internal _masterInstanceReader;
53
- address internal _masterInstanceBundleManager;
50
+ address internal _masterInstanceBundleSet;
51
+ address internal _masterInstanceRiskSet;
54
52
  address internal _masterInstanceStore;
53
+ address internal _masterProductStore;
55
54
 
56
- modifier onlyInstanceOwner(NftId instanceNftId) {
57
- if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
58
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
59
- }
55
+
56
+ modifier onlyInstance() {
57
+ _checkInstance(msg.sender, getRelease());
60
58
  _;
61
59
  }
62
60
 
63
- // TODO check component - service - instance version match
64
- modifier onlyComponent() {
65
- if (! getRegistry().isRegisteredComponent(msg.sender)) {
66
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
67
- }
68
- _;
61
+
62
+ /// @inheritdoc IInstanceService
63
+ function createRole(
64
+ string memory roleName,
65
+ RoleId adminRoleId,
66
+ uint32 maxMemberCount
67
+ )
68
+ external
69
+ restricted()
70
+ onlyInstance()
71
+ returns (RoleId roleId)
72
+ {
73
+ IInstance instance = IInstance(msg.sender);
74
+ roleId = instance.getInstanceAdmin().createRole(
75
+ roleName,
76
+ adminRoleId,
77
+ maxMemberCount);
78
+ }
79
+
80
+
81
+ /// @inheritdoc IInstanceService
82
+ function setRoleActive(RoleId roleId, bool active)
83
+ external
84
+ restricted()
85
+ onlyInstance()
86
+ {
87
+ IInstance instance = IInstance(msg.sender);
88
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
89
+ }
90
+
91
+
92
+ /// @inheritdoc IInstanceService
93
+ function grantRole(RoleId roleId, address account)
94
+ external
95
+ restricted()
96
+ onlyInstance()
97
+ {
98
+ IInstance instance = IInstance(msg.sender);
99
+ instance.getInstanceAdmin().grantRole(roleId, account);
100
+ }
101
+
102
+
103
+ /// @inheritdoc IInstanceService
104
+ function revokeRole(RoleId roleId, address account)
105
+ external
106
+ restricted()
107
+ onlyInstance()
108
+ {
109
+ IInstance instance = IInstance(msg.sender);
110
+ instance.getInstanceAdmin().revokeRole(roleId, account);
111
+ }
112
+
113
+
114
+ /// @inheritdoc IInstanceService
115
+ function createTarget(address target, string memory name)
116
+ external
117
+ restricted()
118
+ onlyInstance()
119
+ returns (RoleId contractRoleId)
120
+ {
121
+ IInstance instance = IInstance(msg.sender);
122
+ return instance.getInstanceAdmin().createTarget(target, name);
69
123
  }
70
124
 
71
- function createInstanceClone()
125
+
126
+ /// @inheritdoc IInstanceService
127
+ function authorizeFunctions(
128
+ address target,
129
+ RoleId roleId,
130
+ IAccess.FunctionInfo[] memory functions
131
+ )
72
132
  external
133
+ restricted()
134
+ onlyInstance()
135
+ {
136
+ IInstance instance = IInstance(msg.sender);
137
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
138
+ }
139
+
140
+
141
+ /// @inheritdoc IInstanceService
142
+ function unauthorizeFunctions(
143
+ address target,
144
+ IAccess.FunctionInfo[] memory functions
145
+ )
146
+ external
147
+ restricted()
148
+ onlyInstance()
149
+ {
150
+ IInstance instance = IInstance(msg.sender);
151
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
152
+ }
153
+
154
+
155
+ /// @inheritdoc IInstanceService
156
+ function setTargetLocked(address target, bool locked)
157
+ external
158
+ virtual
159
+ restricted()
160
+ onlyInstance()
161
+ {
162
+ address instanceAddress = msg.sender;
163
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
164
+ }
165
+
166
+
167
+ /// @inheritdoc IInstanceService
168
+ function setInstanceLocked(bool locked)
169
+ external
170
+ virtual
171
+ restricted()
172
+ onlyInstance()
173
+ {
174
+ address instanceAddress = msg.sender;
175
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
176
+
177
+ emit LogInstanceServiceInstanceLocked(
178
+ getRegistry().getNftIdForAddress(instanceAddress),
179
+ locked);
180
+ }
181
+
182
+
183
+ /// @inheritdoc IInstanceService
184
+ function createInstance(bool allowAnyToken)
185
+ external
186
+ virtual
187
+ restricted()
73
188
  returns (
74
- Instance clonedInstance,
75
- NftId clonedInstanceNftId
189
+ IInstance instance,
190
+ NftId instanceNftId
76
191
  )
77
192
  {
193
+ // tx sender will become instance owner
78
194
  address instanceOwner = msg.sender;
79
- AccessManagerUpgradeableInitializeable clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
80
- Clones.clone(_masterOzAccessManager));
81
195
 
82
- // initially grants ADMIN_ROLE to this (being the instance service).
83
- // This will allow the instance service to bootstrap the authorizations of the instance.
84
- // Instance service will not use oz access manager directlly but through instance access manager instead
85
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
86
- clonedOzAccessManager.initialize(address(this));
196
+ // create instance admin and instance
197
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
198
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
87
199
 
88
- clonedInstance = Instance(Clones.clone(_masterInstance));
89
- clonedInstance.initialize(
90
- address(clonedOzAccessManager),
91
- address(getRegistry()),
92
- instanceOwner);
93
- // initialize and set before instance reader
94
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
95
- clonedInstanceStore.initialize(address(clonedInstance));
96
- clonedInstance.setInstanceStore(clonedInstanceStore);
97
-
98
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
99
- clonedInstanceReader.initialize(address(clonedInstance));
100
- clonedInstance.setInstanceReader(clonedInstanceReader);
101
-
102
- BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
103
- clonedBundleManager.initialize(address(clonedInstance));
104
- clonedInstance.setBundleManager(clonedBundleManager);
105
-
106
- InstanceAccessManager clonedInstanceAccessManager = InstanceAccessManager(Clones.clone(_masterInstanceAccessManager));
107
- clonedOzAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAccessManager), 0);
108
- clonedInstanceAccessManager.initialize(address(clonedInstance));
109
- clonedInstance.setInstanceAccessManager(clonedInstanceAccessManager);
110
-
111
- // TODO amend setters with instance specific , policy manager ...
112
-
113
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
114
- InstanceAuthorizationsLib.grantInitialAuthorizations(
115
- clonedInstanceAccessManager,
116
- clonedInstance,
117
- clonedBundleManager,
118
- clonedInstanceStore,
119
- instanceOwner,
120
- getRegistry(),
121
- getVersion().toMajorPart());
200
+ // register cloned instance with registry
201
+ instanceNftId = _registryService.registerInstance(
202
+ instance, instanceOwner).nftId;
122
203
 
123
- clonedOzAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
204
+ // MUST be set after instance is set up and registered
205
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
206
+ instanceAdmin.completeSetup(
207
+ address(getRegistry()),
208
+ address(instanceAuthorization),
209
+ getRelease(),
210
+ address(instance));
124
211
 
125
- // register new instance with registry
126
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
127
- clonedInstanceNftId = info.nftId;
212
+ // hard checks for newly cloned instance
213
+ assert(address(instance.getRegistry()) == address(getRegistry()));
214
+ assert(instance.getRelease() == getRelease());
128
215
 
129
- // create corresponding staking target
216
+ // register cloned instance as staking target
130
217
  _stakingService.createInstanceTarget(
131
- clonedInstanceNftId,
218
+ instanceNftId,
132
219
  TargetManagerLib.getDefaultLockingPeriod(),
133
220
  TargetManagerLib.getDefaultRewardRate());
134
221
 
135
- emit LogInstanceCloned(
136
- address(clonedOzAccessManager),
137
- address(clonedInstanceAccessManager),
138
- address(clonedInstance),
139
- address(clonedInstanceStore),
140
- address(clonedBundleManager),
141
- address(clonedInstanceReader),
142
- clonedInstanceNftId);
222
+ emit LogInstanceServiceInstanceCreated(
223
+ instanceNftId,
224
+ address(instance));
143
225
  }
144
226
 
145
227
 
146
- function setComponentLocked(bool locked)
228
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod)
147
229
  external
148
230
  virtual
149
- onlyComponent()
231
+ restricted()
232
+ onlyInstance()
150
233
  {
151
- // checks
152
- address componentAddress = msg.sender;
234
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
235
+ _stakingService.setInstanceLockingPeriod(
236
+ instanceNftId,
237
+ stakeLockingPeriod);
238
+ }
153
239
 
154
- if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
155
- revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
156
- }
157
240
 
158
- IRegistry registry = getRegistry();
159
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
241
+ function setStakingRewardRate(UFixed rewardRate)
242
+ external
243
+ virtual
244
+ restricted()
245
+ onlyInstance()
246
+ {
247
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
248
+ _stakingService.setInstanceRewardRate(
249
+ instanceNftId,
250
+ rewardRate);
251
+ }
160
252
 
161
- if (instanceNftId.eqz()) {
162
- revert ErrorInstanceServiceComponentNotRegistered(componentAddress);
163
- }
253
+ function setStakingMaxAmount(Amount maxStakedAmount)
254
+ external
255
+ virtual
256
+ restricted()
257
+ onlyInstance()
258
+ {
259
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
260
+ _stakingService.setInstanceMaxStakedAmount(
261
+ instanceNftId,
262
+ maxStakedAmount);
263
+ }
164
264
 
165
- IInstance instance = IInstance(
166
- registry.getObjectInfo(
167
- instanceNftId).objectAddress);
168
265
 
169
- // interaction
170
- instance.getInstanceAccessManager().setTargetLockedByService(
171
- componentAddress,
172
- locked);
266
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount)
267
+ external
268
+ virtual
269
+ restricted()
270
+ onlyInstance()
271
+ returns (Amount newBalance)
272
+ {
273
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
274
+ newBalance = _stakingService.refillInstanceRewardReserves(
275
+ instanceNftId,
276
+ rewardProvider,
277
+ dipAmount);
173
278
  }
174
279
 
175
280
 
176
- function getMasterInstanceReader() external view returns (address) {
177
- return _masterInstanceReader;
281
+ function withdrawInstanceRewardReserves(Amount dipAmount)
282
+ external
283
+ virtual
284
+ restricted()
285
+ onlyInstance()
286
+ returns (Amount newBalance)
287
+ {
288
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
289
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
290
+ instanceNftId,
291
+ dipAmount);
178
292
  }
179
293
 
180
- // From IService
181
- function getDomain() public pure override returns(ObjectType) {
182
- return INSTANCE();
294
+
295
+ function upgradeInstanceReader()
296
+ external
297
+ virtual
298
+ restricted()
299
+ onlyInstance()
300
+ {
301
+ address instanceAddress = msg.sender;
302
+ IInstance instance = IInstance(msg.sender);
303
+
304
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
305
+ Clones.clone(address(_masterInstanceReader)));
306
+
307
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
308
+ instance.setInstanceReader(upgradedInstanceReaderClone);
309
+
310
+ emit LogInstanceServiceInstanceReaderUpgraded(
311
+ getRegistry().getNftIdForAddress(instanceAddress),
312
+ address(upgradedInstanceReaderClone));
183
313
  }
184
314
 
315
+
185
316
  function setAndRegisterMasterInstance(address instanceAddress)
186
- external
187
- onlyOwner
188
- returns(NftId masterInstanceNftId)
317
+ external
318
+ virtual
319
+ onlyOwner()
320
+ returns(NftId masterInstanceNftId)
189
321
  {
190
322
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
191
- if(_masterOzAccessManager != address(0)) { revert ErrorInstanceServiceMasterOzAccessManagerAlreadySet(); }
192
- if(_masterInstanceAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
193
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
194
-
323
+ if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
324
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
325
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
195
326
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
196
327
 
197
- IInstance instance = IInstance(instanceAddress);
198
- InstanceAccessManager instanceAccessManager = instance.getInstanceAccessManager();
199
- address instanceAccessManagerAddress = address(instanceAccessManager);
200
- InstanceReader instanceReader = instance.getInstanceReader();
201
- address instanceReaderAddress = address(instanceReader);
202
- BundleManager bundleManager = instance.getBundleManager();
203
- address bundleManagerAddress = address(bundleManager);
204
- InstanceStore instanceStore = instance.getInstanceStore();
205
- address instanceStoreAddress = address(instanceStore);
206
-
207
- if(instanceAccessManagerAddress == address(0)) { revert ErrorInstanceServiceInstanceAccessManagerZero(); }
208
- if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
209
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
210
- if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
211
-
212
- if(instance.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
213
- if(bundleManager.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
214
- if(instanceStore.authority() != instanceAccessManager.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
215
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
216
- if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
217
-
218
- _masterOzAccessManager = instance.authority();
219
- _masterInstanceAccessManager = instanceAccessManagerAddress;
220
- _masterInstance = instanceAddress;
221
- _masterInstanceReader = instanceReaderAddress;
222
- _masterInstanceBundleManager = bundleManagerAddress;
223
- _masterInstanceStore = instanceStoreAddress;
328
+ {
329
+ IInstance instance = IInstance(instanceAddress);
330
+ address accessManagerAddress = instance.authority();
331
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
332
+ address instanceAdminAddress = address(instanceAdmin);
333
+ InstanceReader instanceReader = instance.getInstanceReader();
334
+ address instanceReaderAddress = address(instanceReader);
335
+ BundleSet bundleSet = instance.getBundleSet();
336
+ address bundleSetAddress = address(bundleSet);
337
+ RiskSet riskSet = instance.getRiskSet();
338
+ address riskSetAddress = address(riskSet);
339
+ InstanceStore instanceStore = instance.getInstanceStore();
340
+ address instanceStoreAddress = address(instanceStore);
341
+ ProductStore productStore = instance.getProductStore();
342
+ address productStoreAddress = address(productStore);
343
+
344
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
345
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
346
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
347
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
348
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
349
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
350
+ if(productStoreAddress == address(0)) { revert ErrorInstanceServiceProductStoreZero(); } // TODO: rename exception
351
+
352
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
353
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
354
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
355
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
356
+ if(productStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceProductStoreAuthorityMismatch(); }
357
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
358
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
359
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
360
+
361
+ _masterAccessManager = accessManagerAddress;
362
+ _masterInstanceAdmin = instanceAdminAddress;
363
+ _masterInstance = instanceAddress;
364
+ _masterInstanceReader = instanceReaderAddress;
365
+ _masterInstanceBundleSet = bundleSetAddress;
366
+ _masterInstanceRiskSet = riskSetAddress;
367
+ _masterInstanceStore = instanceStoreAddress;
368
+ _masterProductStore = productStoreAddress;
369
+ }
224
370
 
225
- IInstance masterInstance = IInstance(_masterInstance);
226
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
227
- masterInstanceNftId = info.nftId;
371
+ {
372
+ IInstance masterInstance = IInstance(_masterInstance);
373
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
374
+ masterInstanceNftId = info.nftId;
375
+ }
228
376
  }
229
377
 
230
- function setMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
378
+
379
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
380
+ external
381
+ virtual
382
+ onlyOwner
383
+ {
231
384
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
232
385
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
233
386
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -236,132 +389,126 @@ contract InstanceService is
236
389
  if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
237
390
 
238
391
  _masterInstanceReader = instanceReaderAddress;
239
- }
240
392
 
241
- function upgradeInstanceReader(NftId instanceNftId)
242
- external
243
- onlyInstanceOwner(instanceNftId)
244
- {
245
- IRegistry registry = getRegistry();
246
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
247
- Instance instance = Instance(instanceInfo.objectAddress);
248
-
249
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
250
- upgradedInstanceReaderClone.initialize(address(instance));
251
- instance.setInstanceReader(upgradedInstanceReaderClone);
393
+ emit LogInstanceServiceMasterInstanceReaderUpgraded(
394
+ getRegistry().getNftIdForAddress(_masterInstance),
395
+ instanceReaderAddress);
252
396
  }
253
397
 
254
-
255
- function createGifTarget(
256
- NftId instanceNftId,
257
- address targetAddress,
258
- string memory targetName,
259
- bytes4[][] memory selectors,
260
- RoleId[] memory roles
261
- )
262
- external
263
- virtual
264
- restricted()
265
- {
266
- _createGifTarget(
267
- instanceNftId,
268
- targetAddress,
269
- targetName,
270
- roles,
271
- selectors
272
- );
398
+ function getMasterInstanceReader() external virtual view returns (address) {
399
+ return _masterInstanceReader;
273
400
  }
274
401
 
402
+ //--- internal functions --------------------------------------------------------//
275
403
 
276
- function createComponentTarget(
277
- NftId instanceNftId,
278
- address targetAddress,
279
- string memory targetName,
280
- bytes4[][] memory selectors,
281
- RoleId[] memory roles
282
- )
283
- external
404
+ /// @dev create new cloned instance admin
405
+ /// function used to setup a new instance
406
+ function _cloneNewInstanceAdmin()
407
+ internal
284
408
  virtual
285
- // TODO re-enable once role - contract association is fixed
286
- // restricted()
409
+ returns (InstanceAdmin clonedAdmin)
287
410
  {
288
- _createGifTarget(
289
- instanceNftId,
290
- targetAddress,
291
- targetName,
292
- roles,
293
- selectors
294
- );
411
+ // clone instance specific access manager
412
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
413
+ Clones.clone(
414
+ InstanceAdmin(_masterInstanceAdmin).authority()));
415
+
416
+ // set up the instance admin
417
+ clonedAdmin = InstanceAdmin(
418
+ Clones.clone(_masterInstanceAdmin));
419
+
420
+ clonedAdmin.initialize(
421
+ address(clonedAccessManager),
422
+ "InstanceAdmin");
295
423
  }
296
424
 
297
425
 
298
- /// all gif targets MUST be children of instanceNftId
299
- function _createGifTarget(
300
- NftId instanceNftId,
301
- address targetAddress,
302
- string memory targetName,
303
- RoleId[] memory roles,
304
- bytes4[][] memory selectors
426
+ /// @dev create new cloned instance
427
+ /// function used to setup a new instance
428
+ function _createInstance(
429
+ InstanceAdmin instanceAdmin,
430
+ address instanceOwner,
431
+ bool allowAnyToken
305
432
  )
306
433
  internal
307
434
  virtual
435
+ returns (IInstance)
308
436
  {
309
- (
310
- IInstance instance, // or instanceInfo
311
- // or targetInfo
312
- ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
313
-
314
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
315
- accessManager.createGifTarget(targetAddress, targetName);
316
- // set proposed target config
317
- // TODO restriction: gif targets are set only once and only here?
318
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
319
- for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
320
- accessManager.setCoreTargetFunctionRole(targetName, selectors[roleIdx], roles[roleIdx]);
321
- }
437
+ // clone instance
438
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
439
+ clonedInstance.initialize(
440
+ IInstance.InstanceContracts({
441
+ instanceAdmin: instanceAdmin,
442
+ instanceStore: InstanceStore(Clones.clone(address(_masterInstanceStore))),
443
+ productStore: ProductStore(Clones.clone(address(_masterProductStore))),
444
+ bundleSet: BundleSet(Clones.clone(_masterInstanceBundleSet)),
445
+ riskSet: RiskSet(Clones.clone(_masterInstanceRiskSet)),
446
+ instanceReader: InstanceReader(Clones.clone(address(_masterInstanceReader)))
447
+ }),
448
+ getRegistry(),
449
+ getRelease(),
450
+ instanceOwner,
451
+ allowAnyToken);
452
+
453
+ return clonedInstance;
322
454
  }
323
-
324
- /// @dev top level initializer
455
+
456
+
457
+ /// @dev top level initializer (upgradable contract)
325
458
  function _initialize(
326
459
  address owner,
327
460
  bytes memory data
328
461
  )
329
462
  internal
330
- initializer
331
463
  virtual override
464
+ initializer()
332
465
  {
333
466
  (
334
- address registryAddress,,
335
- //address managerAddress
336
- address authority
337
- ) = abi.decode(data, (address, address, address));
467
+ address authority,
468
+ address registry
469
+ ) = abi.decode(data, (address, address));
338
470
 
339
- initializeService(registryAddress, authority, owner);
471
+ __Service_init(authority, registry, owner);
340
472
 
341
473
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
342
474
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
475
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
343
476
 
344
- registerInterface(type(IInstanceService).interfaceId);
477
+ _registerInterface(type(IInstanceService).interfaceId);
345
478
  }
346
479
 
347
480
 
348
- function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
481
+ function _checkInstance(
482
+ address instanceAddress,
483
+ VersionPart expectedRelease
484
+ )
349
485
  internal
486
+ virtual
350
487
  view
351
- returns (IInstance instance, NftId componentNftId)
352
488
  {
353
489
  IRegistry registry = getRegistry();
354
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
355
- if(instanceInfo.objectType != INSTANCE()) {
356
- revert ErrorInstanceServiceNotInstance(instanceNftId);
490
+
491
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
492
+ if (instanceNftId.eqz()) {
493
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
357
494
  }
358
495
 
359
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
360
- if(componentInfo.parentNftId != instanceNftId) {
361
- revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
496
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
497
+ if (objectType != INSTANCE()) {
498
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
362
499
  }
363
500
 
364
- instance = Instance(instanceInfo.objectAddress);
365
- componentNftId = componentInfo.nftId;
501
+ if (expectedRelease.gtz()) {
502
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
503
+ if (instanceRelease != expectedRelease) {
504
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
505
+ }
506
+ }
507
+ }
508
+
509
+
510
+ // From IService
511
+ function _getDomain() internal pure override returns(ObjectType) {
512
+ return INSTANCE();
366
513
  }
367
514
  }