@etherisc/gif-next 0.0.2-a419a2f-980 → 0.0.2-a4799c5-153

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 (534) hide show
  1. package/README.md +84 -7
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +525 -213
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +132 -290
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -163
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +585 -231
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +170 -78
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -125
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +160 -214
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +380 -45
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +308 -327
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1476 -0
  51. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  53. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2336 -0
  55. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  57. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  59. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -247
  63. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  66. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -155
  67. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +278 -223
  69. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +944 -454
  73. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  75. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  76. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  77. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  78. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +528 -50
  79. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +397 -17
  81. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  82. package/artifacts/contracts/instance/Instance.sol/Instance.json +559 -84
  83. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1022 -326
  85. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +393 -52
  87. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  88. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1082 -470
  89. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +414 -81
  91. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -52
  93. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +724 -610
  95. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  96. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  97. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  98. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  99. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  100. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  102. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  104. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  105. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  106. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  107. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  108. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  111. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  112. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  113. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +83 -165
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +48 -64
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -101
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +157 -81
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +134 -46
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -163
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +380 -45
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +317 -344
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +125 -93
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +219 -146
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +63 -118
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +380 -214
  143. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  144. package/artifacts/contracts/pool/Pool.sol/Pool.json +76 -149
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +621 -413
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +168 -68
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +327 -62
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -43
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +199 -213
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +294 -189
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +134 -86
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +167 -56
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +175 -171
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +296 -194
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +150 -78
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -114
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +112 -60
  185. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  186. package/artifacts/contracts/product/Product.sol/Product.json +193 -207
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.json +338 -87
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +123 -43
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +78 -19
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -57
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +727 -453
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -37
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -39
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Component.sol/Component.json +66 -86
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +298 -515
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +127 -79
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
  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 +1 -1
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +48 -50
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +178 -338
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +48 -64
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +6 -6
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
  248. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +66 -100
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  256. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +6 -6
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1446 -154
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
  280. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +1583 -286
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +140 -69
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +257 -162
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +102 -46
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
  296. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  301. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  303. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  305. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  306. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  307. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  309. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  311. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  313. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  315. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  317. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  319. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  321. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  323. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  325. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  327. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  329. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  331. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  333. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
  335. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  337. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  339. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  342. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  344. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  346. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  348. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  350. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  351. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  352. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  353. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +79 -25
  354. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  355. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  356. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  357. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  358. package/contracts/accounting/AccountingService.sol +274 -0
  359. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  360. package/contracts/accounting/IAccountingService.sol +47 -0
  361. package/contracts/authorization/AccessAdmin.sol +429 -245
  362. package/contracts/authorization/AccessAdminLib.sol +396 -0
  363. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  364. package/contracts/authorization/Authorization.sol +142 -262
  365. package/contracts/authorization/IAccess.sol +25 -7
  366. package/contracts/authorization/IAccessAdmin.sol +87 -80
  367. package/contracts/authorization/IAuthorization.sol +9 -43
  368. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  369. package/contracts/authorization/ServiceAuthorization.sol +248 -34
  370. package/contracts/distribution/BasicDistribution.sol +18 -16
  371. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  372. package/contracts/distribution/Distribution.sol +43 -81
  373. package/contracts/distribution/DistributionService.sol +192 -99
  374. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  375. package/contracts/distribution/IDistributionComponent.sol +3 -10
  376. package/contracts/distribution/IDistributionService.sol +38 -24
  377. package/contracts/examples/fire/FirePool.sol +21 -8
  378. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  379. package/contracts/examples/fire/FireProduct.sol +38 -20
  380. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  381. package/contracts/examples/flight/FlightPool.sol +89 -0
  382. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  383. package/contracts/examples/flight/FlightProduct.sol +464 -0
  384. package/contracts/examples/flight/FlightProductAuthorization.sol +39 -0
  385. package/contracts/examples/flight/FlightUSD.sol +26 -0
  386. package/contracts/examples/flight/originalV1.sol +394 -0
  387. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  388. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  390. package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
  391. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +132 -46
  393. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  394. package/contracts/instance/BundleSet.sol +42 -38
  395. package/contracts/instance/IInstance.sol +98 -19
  396. package/contracts/instance/IInstanceService.sol +59 -14
  397. package/contracts/instance/Instance.sol +175 -60
  398. package/contracts/instance/InstanceAdmin.sol +271 -165
  399. package/contracts/instance/InstanceAuthorizationV3.sol +115 -43
  400. package/contracts/instance/InstanceReader.sol +455 -312
  401. package/contracts/instance/InstanceService.sol +274 -187
  402. package/contracts/instance/InstanceServiceManager.sol +1 -1
  403. package/contracts/instance/InstanceStore.sol +13 -2
  404. package/contracts/instance/RiskSet.sol +126 -0
  405. package/contracts/instance/base/BalanceStore.sol +4 -6
  406. package/contracts/instance/base/ObjectCounter.sol +1 -2
  407. package/contracts/instance/base/ObjectLifecycle.sol +6 -8
  408. package/contracts/instance/base/ObjectSet.sol +31 -33
  409. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  410. package/contracts/instance/module/IBundle.sol +6 -5
  411. package/contracts/instance/module/IComponents.sol +20 -9
  412. package/contracts/instance/module/IDistribution.sol +21 -8
  413. package/contracts/instance/module/IPolicy.sol +28 -7
  414. package/contracts/instance/module/IRisk.sol +5 -0
  415. package/contracts/oracle/BasicOracle.sol +2 -4
  416. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  417. package/contracts/oracle/IOracle.sol +9 -4
  418. package/contracts/oracle/Oracle.sol +3 -5
  419. package/contracts/oracle/OracleService.sol +98 -79
  420. package/contracts/oracle/OracleServiceManager.sol +1 -1
  421. package/contracts/pool/BasicPool.sol +25 -17
  422. package/contracts/pool/BasicPoolAuthorization.sol +34 -10
  423. package/contracts/pool/BundleService.sol +75 -182
  424. package/contracts/pool/BundleServiceManager.sol +1 -1
  425. package/contracts/pool/IBundleService.sol +28 -55
  426. package/contracts/pool/IPoolComponent.sol +1 -7
  427. package/contracts/pool/IPoolService.sol +65 -62
  428. package/contracts/pool/Pool.sol +109 -111
  429. package/contracts/pool/PoolLib.sol +341 -0
  430. package/contracts/pool/PoolService.sol +299 -229
  431. package/contracts/pool/PoolServiceManager.sol +1 -1
  432. package/contracts/product/ApplicationService.sol +91 -23
  433. package/contracts/product/ApplicationServiceManager.sol +1 -1
  434. package/contracts/product/BasicProduct.sol +9 -13
  435. package/contracts/product/BasicProductAuthorization.sol +32 -11
  436. package/contracts/product/ClaimService.sol +187 -169
  437. package/contracts/product/ClaimServiceManager.sol +1 -1
  438. package/contracts/product/IApplicationService.sol +28 -3
  439. package/contracts/product/IClaimService.sol +18 -5
  440. package/contracts/product/IPolicyService.sol +34 -12
  441. package/contracts/product/IPricingService.sol +1 -0
  442. package/contracts/product/IProductComponent.sol +4 -1
  443. package/contracts/product/IRiskService.sol +25 -10
  444. package/contracts/product/PolicyService.sol +253 -299
  445. package/contracts/product/PolicyServiceLib.sol +139 -0
  446. package/contracts/product/PolicyServiceManager.sol +1 -1
  447. package/contracts/product/PricingService.sol +52 -46
  448. package/contracts/product/PricingServiceManager.sol +3 -3
  449. package/contracts/product/Product.sol +104 -66
  450. package/contracts/product/RiskService.sol +128 -34
  451. package/contracts/product/RiskServiceManager.sol +1 -1
  452. package/contracts/registry/ChainNft.sol +4 -2
  453. package/contracts/registry/IRegistry.sol +25 -24
  454. package/contracts/registry/IRelease.sol +29 -0
  455. package/contracts/registry/Registry.sol +31 -12
  456. package/contracts/registry/RegistryAdmin.sol +107 -364
  457. package/contracts/registry/RegistryAuthorization.sol +336 -0
  458. package/contracts/registry/RegistryService.sol +4 -4
  459. package/contracts/registry/RegistryServiceManager.sol +1 -1
  460. package/contracts/registry/ReleaseAdmin.sol +195 -0
  461. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  462. package/contracts/registry/ReleaseRegistry.sol +158 -134
  463. package/contracts/registry/ServiceAuthorizationV3.sol +200 -52
  464. package/contracts/registry/TokenRegistry.sol +61 -59
  465. package/contracts/shared/Component.sol +56 -107
  466. package/contracts/shared/ComponentService.sol +365 -423
  467. package/contracts/shared/ComponentServiceManager.sol +1 -1
  468. package/contracts/shared/ContractLib.sol +277 -3
  469. package/contracts/shared/IComponent.sol +2 -18
  470. package/contracts/shared/IComponentService.sol +28 -37
  471. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  472. package/contracts/shared/IKeyValueStore.sol +1 -1
  473. package/contracts/shared/INftOwnable.sol +2 -0
  474. package/contracts/shared/IRegisterable.sol +15 -5
  475. package/contracts/shared/IService.sol +3 -5
  476. package/contracts/shared/InitializableERC165.sol +9 -1
  477. package/contracts/shared/InstanceLinkedComponent.sol +8 -27
  478. package/contracts/shared/KeyValueStore.sol +3 -3
  479. package/contracts/shared/NftOwnable.sol +8 -6
  480. package/contracts/shared/PolicyHolder.sol +4 -3
  481. package/contracts/shared/Registerable.sol +41 -20
  482. package/contracts/shared/RegistryLinked.sol +7 -13
  483. package/contracts/shared/Service.sol +13 -30
  484. package/contracts/shared/TokenHandler.sol +275 -72
  485. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  486. package/contracts/staking/IStaking.sol +271 -72
  487. package/contracts/staking/IStakingService.sol +45 -75
  488. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  489. package/contracts/staking/Staking.sol +521 -220
  490. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  491. package/contracts/staking/StakingManager.sol +4 -3
  492. package/contracts/staking/StakingReader.sol +58 -77
  493. package/contracts/staking/StakingService.sol +62 -148
  494. package/contracts/staking/StakingServiceManager.sol +6 -4
  495. package/contracts/staking/StakingStore.sol +1093 -330
  496. package/contracts/staking/TargetHandler.sol +132 -0
  497. package/contracts/staking/TargetManagerLib.sol +69 -46
  498. package/contracts/type/Amount.sol +4 -0
  499. package/contracts/type/Blocknumber.sol +15 -15
  500. package/contracts/type/ChainId.sol +101 -0
  501. package/contracts/type/Fee.sol +8 -8
  502. package/contracts/type/Key32.sol +2 -2
  503. package/contracts/type/Key32Set.sol +62 -0
  504. package/contracts/type/NftId.sol +6 -0
  505. package/contracts/type/ObjectType.sol +69 -38
  506. package/contracts/type/RiskId.sol +26 -8
  507. package/contracts/type/RoleId.sol +63 -45
  508. package/contracts/type/Seconds.sol +23 -0
  509. package/contracts/type/Selector.sol +5 -0
  510. package/contracts/type/String.sol +12 -0
  511. package/contracts/type/Timestamp.sol +14 -8
  512. package/contracts/type/UFixed.sol +35 -127
  513. package/contracts/type/Version.sol +54 -5
  514. package/contracts/upgradeability/IVersionable.sol +3 -0
  515. package/contracts/upgradeability/ProxyManager.sol +26 -12
  516. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  517. package/contracts/upgradeability/Versionable.sol +6 -3
  518. package/package.json +4 -4
  519. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  520. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  521. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  522. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  523. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  524. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
  525. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  526. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  527. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  528. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  529. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  530. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  531. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  532. package/contracts/instance/module/IAccess.sol +0 -46
  533. package/contracts/shared/ComponentVerifyingService.sol +0 -126
  534. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -2,40 +2,32 @@
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 {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
- import {Amount} from "../type/Amount.sol";
9
- import {BundleSet} from "./BundleSet.sol";
10
- import {ChainNft} from "../registry/ChainNft.sol";
11
- import {NftId} from "../type/NftId.sol";
12
- import {RoleId} from "../type/RoleId.sol";
13
- import {SecondsLib} from "../type/Seconds.sol";
14
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
- import {ADMIN_ROLE} from "../type/RoleId.sol";
16
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
17
-
18
- import {Service} from "../shared/Service.sol";
19
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
20
- import {IService} from "../shared/IService.sol";
21
-
22
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
24
- import {IProductComponent} from "../product/IProductComponent.sol";
25
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";
26
11
  import {IRegistry} from "../registry/IRegistry.sol";
27
12
  import {IRegistryService} from "../registry/IRegistryService.sol";
28
13
  import {IStakingService} from "../staking/IStakingService.sol";
29
- import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
14
 
15
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
+ import {Amount} from "../type/Amount.sol";
17
+ import {BundleSet} from "./BundleSet.sol";
31
18
  import {Instance} from "./Instance.sol";
32
- import {IInstance} from "./IInstance.sol";
33
19
  import {InstanceAdmin} from "./InstanceAdmin.sol";
34
- import {IInstanceService} from "./IInstanceService.sol";
35
20
  import {InstanceReader} from "./InstanceReader.sol";
36
21
  import {InstanceStore} from "./InstanceStore.sol";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {RiskSet} from "./RiskSet.sol";
25
+ import {RoleId} from "../type/RoleId.sol";
37
26
  import {Seconds} from "../type/Seconds.sol";
38
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
29
+ import {UFixed} from "../type/UFixed.sol";
30
+ import {VersionPart} from "../type/Version.sol";
39
31
 
40
32
 
41
33
  contract InstanceService is
@@ -48,87 +40,193 @@ contract InstanceService is
48
40
 
49
41
  IRegistryService internal _registryService;
50
42
  IStakingService internal _stakingService;
43
+ IComponentService internal _componentService;
51
44
 
52
45
  address internal _masterAccessManager;
53
46
  address internal _masterInstanceAdmin;
54
47
  address internal _masterInstance;
55
48
  address internal _masterInstanceReader;
56
49
  address internal _masterInstanceBundleSet;
50
+ address internal _masterInstanceRiskSet;
57
51
  address internal _masterInstanceStore;
58
52
 
59
53
 
60
- modifier onlyInstance() {
61
- address instanceAddress = msg.sender;
62
- NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
63
- if (instanceNftId.eqz()) {
64
- revert ErrorInstanceServiceNotRegistered(instanceAddress);
65
- }
54
+ modifier onlyInstance() {
55
+ _checkInstance(msg.sender, getRelease());
56
+ _;
57
+ }
66
58
 
67
- ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
68
- if (objectType != INSTANCE()) {
69
- revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
70
- }
71
59
 
72
- VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
73
- if (instanceVersion != getVersion().toMajorPart()) {
74
- revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
75
- }
60
+ /// @inheritdoc IInstanceService
61
+ function createRole(
62
+ string memory roleName,
63
+ RoleId adminRoleId,
64
+ uint32 maxMemberCount
65
+ )
66
+ external
67
+ restricted()
68
+ onlyInstance()
69
+ returns (RoleId roleId)
70
+ {
71
+ IInstance instance = IInstance(msg.sender);
72
+ roleId = instance.getInstanceAdmin().createRole(
73
+ roleName,
74
+ adminRoleId,
75
+ maxMemberCount);
76
+ }
76
77
 
77
- _;
78
+
79
+ /// @inheritdoc IInstanceService
80
+ function setRoleActive(RoleId roleId, bool active)
81
+ external
82
+ restricted()
83
+ onlyInstance()
84
+ {
85
+ IInstance instance = IInstance(msg.sender);
86
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
78
87
  }
79
88
 
80
89
 
81
- modifier onlyInstanceOwner(NftId instanceNftId) {
82
- if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
83
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
84
- }
85
- _;
90
+ /// @inheritdoc IInstanceService
91
+ function grantRole(RoleId roleId, address account)
92
+ external
93
+ restricted()
94
+ onlyInstance()
95
+ {
96
+ IInstance instance = IInstance(msg.sender);
97
+ instance.getInstanceAdmin().grantRole(roleId, account);
86
98
  }
87
99
 
88
- // TODO check component - service - instance version match
89
- modifier onlyComponent() {
90
- if (! getRegistry().isRegisteredComponent(msg.sender)) {
91
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
92
- }
93
- _;
100
+
101
+ /// @inheritdoc IInstanceService
102
+ function revokeRole(RoleId roleId, address account)
103
+ external
104
+ restricted()
105
+ onlyInstance()
106
+ {
107
+ IInstance instance = IInstance(msg.sender);
108
+ instance.getInstanceAdmin().revokeRole(roleId, account);
109
+ }
110
+
111
+
112
+ /// @inheritdoc IInstanceService
113
+ function createTarget(address target, string memory name)
114
+ external
115
+ restricted()
116
+ onlyInstance()
117
+ returns (RoleId contractRoleId)
118
+ {
119
+ IInstance instance = IInstance(msg.sender);
120
+ return instance.getInstanceAdmin().createTarget(target, name);
121
+ }
122
+
123
+
124
+ /// @inheritdoc IInstanceService
125
+ function authorizeFunctions(
126
+ address target,
127
+ RoleId roleId,
128
+ IAccess.FunctionInfo[] memory functions
129
+ )
130
+ external
131
+ restricted()
132
+ onlyInstance()
133
+ {
134
+ IInstance instance = IInstance(msg.sender);
135
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
136
+ }
137
+
138
+
139
+ /// @inheritdoc IInstanceService
140
+ function unauthorizeFunctions(
141
+ address target,
142
+ IAccess.FunctionInfo[] memory functions
143
+ )
144
+ external
145
+ restricted()
146
+ onlyInstance()
147
+ {
148
+ IInstance instance = IInstance(msg.sender);
149
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
150
+ }
151
+
152
+
153
+ /// @inheritdoc IInstanceService
154
+ function setTargetLocked(address target, bool locked)
155
+ external
156
+ virtual
157
+ restricted()
158
+ onlyInstance()
159
+ {
160
+ address instanceAddress = msg.sender;
161
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
94
162
  }
95
163
 
96
- function createInstance()
164
+
165
+ /// @inheritdoc IInstanceService
166
+ function setInstanceLocked(bool locked)
167
+ external
168
+ virtual
169
+ restricted()
170
+ onlyInstance()
171
+ {
172
+ address instanceAddress = msg.sender;
173
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
174
+
175
+ emit LogInstanceServiceInstanceLocked(
176
+ getRegistry().getNftIdForAddress(instanceAddress),
177
+ locked);
178
+ }
179
+
180
+
181
+ /// @inheritdoc IInstanceService
182
+ function createInstance(bool allowAnyToken)
97
183
  external
184
+ virtual
185
+ restricted()
98
186
  returns (
99
- Instance clonedInstance,
100
- NftId clonedInstanceNftId
187
+ IInstance instance,
188
+ NftId instanceNftId
101
189
  )
102
190
  {
103
191
  // tx sender will become instance owner
104
192
  address instanceOwner = msg.sender;
105
193
 
106
194
  // create instance admin and instance
107
- InstanceAdmin instanceAdmin = _createInstanceAdmin();
108
- clonedInstance = _createInstance(instanceAdmin, instanceOwner);
195
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
196
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
109
197
 
110
198
  // register cloned instance with registry
111
- clonedInstanceNftId = _registryService.registerInstance(
112
- clonedInstance, instanceOwner).nftId;
199
+ instanceNftId = _registryService.registerInstance(
200
+ instance, instanceOwner).nftId;
201
+
202
+ // MUST be set after instance is set up and registered
203
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
204
+ instanceAdmin.completeSetup(
205
+ address(getRegistry()),
206
+ address(instanceAuthorization),
207
+ getRelease(),
208
+ address(instance));
209
+
210
+ // hard checks for newly cloned instance
211
+ assert(address(instance.getRegistry()) == address(getRegistry()));
212
+ assert(instance.getRelease() == getRelease());
113
213
 
114
214
  // register cloned instance as staking target
115
215
  _stakingService.createInstanceTarget(
116
- clonedInstanceNftId,
216
+ instanceNftId,
117
217
  TargetManagerLib.getDefaultLockingPeriod(),
118
218
  TargetManagerLib.getDefaultRewardRate());
119
219
 
120
- // MUST be set after instance is set up and registered
121
- instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
122
-
123
- emit LogInstanceCloned(
124
- clonedInstanceNftId,
125
- address(clonedInstance));
220
+ emit LogInstanceServiceInstanceCreated(
221
+ instanceNftId,
222
+ address(instance));
126
223
  }
127
224
 
128
225
 
129
226
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
130
227
  external
131
228
  virtual
229
+ restricted()
132
230
  onlyInstance()
133
231
  {
134
232
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -141,6 +239,7 @@ contract InstanceService is
141
239
  function setStakingRewardRate(UFixed rewardRate)
142
240
  external
143
241
  virtual
242
+ restricted()
144
243
  onlyInstance()
145
244
  {
146
245
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -149,72 +248,79 @@ contract InstanceService is
149
248
  rewardRate);
150
249
  }
151
250
 
251
+ function setStakingMaxAmount(Amount maxStakedAmount)
252
+ external
253
+ virtual
254
+ restricted()
255
+ onlyInstance()
256
+ {
257
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
258
+ _stakingService.setInstanceMaxStakedAmount(
259
+ instanceNftId,
260
+ maxStakedAmount);
261
+ }
152
262
 
153
- function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
263
+
264
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount)
154
265
  external
155
266
  virtual
267
+ restricted()
156
268
  onlyInstance()
269
+ returns (Amount newBalance)
157
270
  {
158
271
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
159
- _stakingService.refillInstanceRewardReserves(
272
+ newBalance = _stakingService.refillInstanceRewardReserves(
160
273
  instanceNftId,
161
274
  rewardProvider,
162
275
  dipAmount);
163
276
  }
164
277
 
165
278
 
166
- function withdrawStakingRewardReserves(Amount dipAmount)
279
+ function withdrawInstanceRewardReserves(Amount dipAmount)
167
280
  external
168
281
  virtual
282
+ restricted()
169
283
  onlyInstance()
170
284
  returns (Amount newBalance)
171
285
  {
172
286
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
173
- _stakingService.withdrawInstanceRewardReserves(
287
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
174
288
  instanceNftId,
175
289
  dipAmount);
176
290
  }
177
291
 
178
292
 
179
- function setComponentLocked(bool locked)
180
- external
293
+ function upgradeInstanceReader()
294
+ external
181
295
  virtual
182
- onlyComponent()
296
+ restricted()
297
+ onlyInstance()
183
298
  {
184
- // checks
185
- address componentAddress = msg.sender;
186
-
187
- if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
188
- revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
189
- }
190
-
191
- IRegistry registry = getRegistry();
192
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
299
+ address instanceAddress = msg.sender;
300
+ IInstance instance = IInstance(msg.sender);
301
+
302
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
303
+ Clones.clone(address(_masterInstanceReader)));
193
304
 
194
- IInstance instance = IInstance(
195
- registry.getObjectAddress(instanceNftId));
305
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
306
+ instance.setInstanceReader(upgradedInstanceReaderClone);
196
307
 
197
- // no revert in case already locked
198
- // TODO refactor/implement
199
- // instance.getInstanceAdmin().setTargetLockedByService(
200
- // componentAddress,
201
- // locked);
308
+ emit LogInstanceServiceInstanceReaderUpgraded(
309
+ getRegistry().getNftIdForAddress(instanceAddress),
310
+ address(upgradedInstanceReaderClone));
202
311
  }
203
312
 
204
313
 
205
- function getMasterInstanceReader() external view returns (address) {
206
- return _masterInstanceReader;
207
- }
208
-
209
314
  function setAndRegisterMasterInstance(address instanceAddress)
210
- external
211
- onlyOwner
212
- returns(NftId masterInstanceNftId)
315
+ external
316
+ virtual
317
+ onlyOwner()
318
+ returns(NftId masterInstanceNftId)
213
319
  {
214
320
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
215
321
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
216
322
  if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
217
-
323
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
218
324
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
219
325
 
220
326
  IInstance instance = IInstance(instanceAddress);
@@ -223,28 +329,34 @@ contract InstanceService is
223
329
  address instanceAdminAddress = address(instanceAdmin);
224
330
  InstanceReader instanceReader = instance.getInstanceReader();
225
331
  address instanceReaderAddress = address(instanceReader);
226
- BundleSet bundleManager = instance.getBundleSet();
227
- address bundleManagerAddress = address(bundleManager);
332
+ BundleSet bundleSet = instance.getBundleSet();
333
+ address bundleSetAddress = address(bundleSet);
334
+ RiskSet riskSet = instance.getRiskSet();
335
+ address riskSetAddress = address(riskSet);
228
336
  InstanceStore instanceStore = instance.getInstanceStore();
229
337
  address instanceStoreAddress = address(instanceStore);
230
338
 
231
339
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
232
340
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
233
341
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
234
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
342
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
343
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
235
344
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
236
345
 
237
346
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
238
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
347
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
348
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
239
349
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
240
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
350
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
351
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
241
352
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
242
353
 
243
354
  _masterAccessManager = accessManagerAddress;
244
355
  _masterInstanceAdmin = instanceAdminAddress;
245
356
  _masterInstance = instanceAddress;
246
357
  _masterInstanceReader = instanceReaderAddress;
247
- _masterInstanceBundleSet = bundleManagerAddress;
358
+ _masterInstanceBundleSet = bundleSetAddress;
359
+ _masterInstanceRiskSet = riskSetAddress;
248
360
  _masterInstanceStore = instanceStoreAddress;
249
361
 
250
362
  IInstance masterInstance = IInstance(_masterInstance);
@@ -252,7 +364,12 @@ contract InstanceService is
252
364
  masterInstanceNftId = info.nftId;
253
365
  }
254
366
 
255
- function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
367
+
368
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
369
+ external
370
+ virtual
371
+ onlyOwner
372
+ {
256
373
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
257
374
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
258
375
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -261,43 +378,37 @@ contract InstanceService is
261
378
  if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
262
379
 
263
380
  _masterInstanceReader = instanceReaderAddress;
381
+
382
+ emit LogInstanceServiceMasterInstanceReaderUpgraded(
383
+ getRegistry().getNftIdForAddress(_masterInstance),
384
+ instanceReaderAddress);
264
385
  }
265
386
 
266
- function upgradeInstanceReader(NftId instanceNftId)
267
- external
268
- onlyInstanceOwner(instanceNftId)
269
- onlyNftOfType(instanceNftId, INSTANCE())
270
- {
271
- IRegistry registry = getRegistry();
272
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
273
- Instance instance = Instance(instanceInfo.objectAddress);
274
-
275
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
276
- upgradedInstanceReaderClone.initializeWithInstance(address(instance));
277
- instance.setInstanceReader(upgradedInstanceReaderClone);
387
+ function getMasterInstanceReader() external virtual view returns (address) {
388
+ return _masterInstanceReader;
278
389
  }
279
390
 
391
+ //--- internal functions --------------------------------------------------------//
392
+
280
393
  /// @dev create new cloned instance admin
281
394
  /// function used to setup a new instance
282
- function _createInstanceAdmin()
395
+ function _cloneNewInstanceAdmin()
283
396
  internal
284
397
  virtual
285
- returns (InstanceAdmin clonedInstanceAdmin)
398
+ returns (InstanceAdmin clonedAdmin)
286
399
  {
287
- // start with setting up a new OZ access manager
400
+ // clone instance specific access manager
288
401
  AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
289
- Clones.clone(_masterAccessManager));
402
+ Clones.clone(
403
+ InstanceAdmin(_masterInstanceAdmin).authority()));
290
404
 
291
405
  // set up the instance admin
292
- clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
293
- clonedAccessManager.initialize(
294
- address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
295
-
296
- address authorization = address(
297
- InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
298
- clonedInstanceAdmin.initialize(
299
- clonedAccessManager,
300
- authorization);
406
+ clonedAdmin = InstanceAdmin(
407
+ Clones.clone(_masterInstanceAdmin));
408
+
409
+ clonedAdmin.initialize(
410
+ address(clonedAccessManager),
411
+ "InstanceAdmin");
301
412
  }
302
413
 
303
414
 
@@ -305,58 +416,31 @@ contract InstanceService is
305
416
  /// function used to setup a new instance
306
417
  function _createInstance(
307
418
  InstanceAdmin instanceAdmin,
308
- address instanceOwner
419
+ address instanceOwner,
420
+ bool allowAnyToken
309
421
  )
310
422
  internal
311
423
  virtual
312
- returns (Instance clonedInstance)
424
+ returns (IInstance)
313
425
  {
314
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
315
- BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
316
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
-
318
426
  // clone instance
319
- clonedInstance = Instance(Clones.clone(_masterInstance));
427
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
320
428
  clonedInstance.initialize(
321
429
  instanceAdmin,
322
- clonedInstanceStore,
323
- clonedBundleSet,
324
- clonedInstanceReader,
430
+ InstanceStore(Clones.clone(address(_masterInstanceStore))),
431
+ BundleSet(Clones.clone(_masterInstanceBundleSet)),
432
+ RiskSet(Clones.clone(_masterInstanceRiskSet)),
433
+ InstanceReader(Clones.clone(address(_masterInstanceReader))),
325
434
  getRegistry(),
326
- instanceOwner);
327
- }
328
-
329
-
330
- /// all gif targets MUST be children of instanceNftId
331
- function _createGifTarget(
332
- NftId instanceNftId,
333
- address targetAddress,
334
- string memory targetName,
335
- RoleId[] memory roles,
336
- bytes4[][] memory selectors
337
- )
338
- internal
339
- virtual
340
- {
341
- // TODO instanceAdmin will check target instance match anyway
342
- (
343
- IInstance instance, // or instanceInfo
344
- // or targetInfo
345
- ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
435
+ getRelease(),
436
+ instanceOwner,
437
+ allowAnyToken);
346
438
 
347
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
439
+ return clonedInstance;
440
+ }
348
441
 
349
- // TODO refactor/implement
350
- // instanceAdmin.createGifTarget(targetAddress, targetName);
351
442
 
352
- // set proposed target config
353
- for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
354
- // TODO refactor/implement
355
- // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
356
- }
357
- }
358
-
359
- /// @dev top level initializer
443
+ /// @dev top level initializer (upgradable contract)
360
444
  function _initialize(
361
445
  address owner,
362
446
  bytes memory data
@@ -366,46 +450,49 @@ contract InstanceService is
366
450
  initializer()
367
451
  {
368
452
  (
369
- address registryAddress,
370
- address authority
453
+ address authority,
454
+ address registry
371
455
  ) = abi.decode(data, (address, address));
372
456
 
373
- _initializeService(registryAddress, authority, owner);
457
+ __Service_init(authority, registry, owner);
374
458
 
375
459
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
376
460
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
461
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
377
462
 
378
463
  _registerInterface(type(IInstanceService).interfaceId);
379
464
  }
380
465
 
381
466
 
382
- function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
467
+ function _checkInstance(
468
+ address instanceAddress,
469
+ VersionPart expectedRelease
470
+ )
383
471
  internal
472
+ virtual
384
473
  view
385
- returns (IInstance instance, NftId componentNftId)
386
474
  {
387
475
  IRegistry registry = getRegistry();
388
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
389
- if(instanceInfo.objectType != INSTANCE()) {
390
- revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
476
+
477
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
478
+ if (instanceNftId.eqz()) {
479
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
391
480
  }
392
481
 
393
- if (registry.getNftIdForAddress(componentAddress).gtz()) {
394
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
482
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
483
+ if (objectType != INSTANCE()) {
484
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
485
+ }
395
486
 
396
- if(componentInfo.parentNftId != instanceNftId) {
397
- revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
487
+ if (expectedRelease.gtz()) {
488
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
489
+ if (instanceRelease != expectedRelease) {
490
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
398
491
  }
399
-
400
- componentNftId = componentInfo.nftId;
401
- } else {
402
-
403
492
  }
404
-
405
- instance = Instance(instanceInfo.objectAddress);
406
-
407
493
  }
408
494
 
495
+
409
496
  // From IService
410
497
  function _getDomain() internal pure override returns(ObjectType) {
411
498
  return INSTANCE();
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  InstanceService svc = new InstanceService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),