@etherisc/gif-next 0.0.2-7edde36-170 → 0.0.2-7ee1666-376

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 (343) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  15. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +30 -177
  16. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  18. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +0 -147
  20. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +85 -192
  22. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -104
  24. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  26. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  27. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  28. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  29. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  30. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  32. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1931 -0
  34. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  36. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  46. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  47. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  48. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +95 -98
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +84 -65
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +82 -207
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  69. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  71. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  73. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  74. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  79. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +20 -167
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -147
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  94. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +0 -147
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  96. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +81 -188
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  100. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +82 -102
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +0 -10
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +0 -147
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +43 -160
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -83
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +31 -146
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -81
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -147
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +190 -175
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +98 -0
  126. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +83 -11
  128. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  129. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  130. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  132. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +198 -185
  133. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +99 -95
  135. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PricingService.sol/PricingService.json +55 -162
  137. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +68 -88
  139. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  140. package/artifacts/contracts/product/Product.sol/Product.json +0 -147
  141. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  142. package/artifacts/contracts/product/RiskService.sol/RiskService.json +25 -132
  143. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -74
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  146. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  148. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  151. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
  153. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  154. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +244 -132
  155. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  157. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  159. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  160. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  161. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  163. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  164. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
  165. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  166. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  167. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  168. package/artifacts/contracts/shared/Component.sol/Component.json +0 -147
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +75 -182
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +89 -99
  173. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  175. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  176. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  177. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  182. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  184. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  185. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  190. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  191. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -147
  193. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  195. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  196. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  197. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  199. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  200. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  201. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  203. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  204. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  205. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  208. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  209. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +16 -0
  211. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
  214. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  215. package/artifacts/contracts/staking/Staking.sol/Staking.json +66 -189
  216. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  217. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  218. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  219. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +73 -84
  220. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  222. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  224. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  225. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  226. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  227. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  228. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  229. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  230. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  231. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  235. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  237. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  241. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  251. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  257. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  263. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  264. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  265. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
  266. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  267. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  268. package/contracts/authorization/AccessAdmin.sol +25 -24
  269. package/contracts/authorization/IAccessAdmin.sol +0 -1
  270. package/contracts/distribution/Distribution.sol +1 -1
  271. package/contracts/distribution/DistributionService.sol +8 -8
  272. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  273. package/contracts/examples/fire/DamageLevel.sol +56 -0
  274. package/contracts/examples/fire/FirePool.sol +75 -0
  275. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  276. package/contracts/examples/fire/FireProduct.sol +432 -0
  277. package/contracts/examples/fire/FireProductAuthorization.sol +38 -0
  278. package/contracts/examples/fire/FireUSD.sol +26 -0
  279. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  280. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  281. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  282. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  283. package/contracts/instance/Instance.sol +2 -2
  284. package/contracts/instance/InstanceAuthorizationV3.sol +1 -0
  285. package/contracts/instance/InstanceReader.sol +8 -0
  286. package/contracts/instance/InstanceService.sol +10 -11
  287. package/contracts/instance/InstanceServiceManager.sol +6 -7
  288. package/contracts/instance/InstanceStore.sol +0 -4
  289. package/contracts/instance/base/ObjectLifecycle.sol +2 -1
  290. package/contracts/instance/module/IPolicy.sol +5 -5
  291. package/contracts/oracle/Oracle.sol +1 -1
  292. package/contracts/oracle/OracleService.sol +8 -6
  293. package/contracts/oracle/OracleServiceManager.sol +6 -6
  294. package/contracts/pool/BundleService.sol +8 -8
  295. package/contracts/pool/BundleServiceManager.sol +6 -6
  296. package/contracts/pool/Pool.sol +1 -1
  297. package/contracts/pool/PoolService.sol +5 -6
  298. package/contracts/pool/PoolServiceManager.sol +4 -4
  299. package/contracts/product/ApplicationService.sol +4 -6
  300. package/contracts/product/ApplicationServiceManager.sol +4 -4
  301. package/contracts/product/ClaimService.sol +201 -71
  302. package/contracts/product/ClaimServiceManager.sol +4 -4
  303. package/contracts/product/IClaimService.sol +27 -5
  304. package/contracts/product/IPolicyService.sol +9 -5
  305. package/contracts/product/PolicyService.sol +115 -38
  306. package/contracts/product/PolicyServiceManager.sol +4 -4
  307. package/contracts/product/PricingService.sol +4 -5
  308. package/contracts/product/PricingServiceManager.sol +3 -3
  309. package/contracts/product/Product.sol +23 -5
  310. package/contracts/product/RiskService.sol +4 -5
  311. package/contracts/product/RiskServiceManager.sol +4 -4
  312. package/contracts/registry/ChainNft.sol +65 -32
  313. package/contracts/registry/IRegistry.sol +49 -15
  314. package/contracts/registry/Registry.sol +321 -195
  315. package/contracts/registry/RegistryAdmin.sol +140 -50
  316. package/contracts/registry/RegistryService.sol +2 -2
  317. package/contracts/registry/RegistryServiceManager.sol +2 -2
  318. package/contracts/registry/ReleaseRegistry.sol +12 -6
  319. package/contracts/shared/Component.sol +6 -6
  320. package/contracts/shared/ComponentService.sol +7 -7
  321. package/contracts/shared/ComponentServiceManager.sol +8 -5
  322. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  323. package/contracts/shared/ContractLib.sol +38 -0
  324. package/contracts/shared/IPolicyHolder.sol +12 -22
  325. package/contracts/shared/InitializableERC165.sol +2 -2
  326. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  327. package/contracts/shared/NftOwnable.sol +5 -5
  328. package/contracts/shared/PolicyHolder.sol +12 -53
  329. package/contracts/shared/Registerable.sol +4 -4
  330. package/contracts/shared/RegistryLinked.sol +3 -2
  331. package/contracts/shared/Service.sol +16 -11
  332. package/contracts/staking/IStaking.sol +1 -0
  333. package/contracts/staking/StakeManagerLib.sol +18 -0
  334. package/contracts/staking/Staking.sol +6 -5
  335. package/contracts/staking/StakingManager.sol +8 -6
  336. package/contracts/staking/StakingService.sol +2 -2
  337. package/contracts/staking/StakingServiceManager.sol +2 -2
  338. package/contracts/type/NftId.sol +1 -0
  339. package/contracts/type/RiskId.sol +15 -1
  340. package/contracts/type/StateId.sol +1 -0
  341. package/contracts/upgradeability/ProxyManager.sol +67 -34
  342. package/contracts/upgradeability/Versionable.sol +2 -2
  343. package/package.json +1 -1
@@ -7,11 +7,10 @@ import {IRegistry} from "./IRegistry.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
8
  import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
9
9
  import {IStaking} from "../staking/IStaking.sol";
10
- import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
10
+ import {ObjectType, ObjectTypeLib, ALL, REGISTRY, STAKING, POOL, RELEASE} from "../type/ObjectType.sol";
11
11
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
12
12
  import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
13
  import {StakingStore} from "../staking/StakingStore.sol";
14
- import {STAKING} from "../type/ObjectType.sol";
15
14
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
15
  import {TokenRegistry} from "./TokenRegistry.sol";
17
16
  import {VersionPart} from "../type/Version.sol";
@@ -27,37 +26,33 @@ import {VersionPart} from "../type/Version.sol";
27
26
  - MUST have 1 member at any time
28
27
  - granted/revoked ONLY in transferAdminRole() -> consider lock out situations!!!
29
28
  - responsible for creation and activation of releases
30
-
31
- createServiceTarget(type, release)
32
- createServiceRole(type,release)
33
- getServiceRole(type, release)
34
29
  */
35
30
  contract RegistryAdmin is
36
31
  AccessAdmin
37
32
  {
38
- error ErrorRegistryAdminIsAlreadySetUp();
39
-
40
33
  string public constant GIF_ADMIN_ROLE_NAME = "GifAdminRole";
41
34
  string public constant GIF_MANAGER_ROLE_NAME = "GifManagerRole";
42
35
  string public constant POOL_SERVICE_ROLE_NAME = "PoolServiceRole";
43
36
  string public constant RELEASE_REGISTRY_ROLE_NAME = "ReleaseRegistryRole";
37
+ string public constant REGISTRY_SERVICE_ROLE_NAME = "RegistryServiceRole";
44
38
  string public constant STAKING_SERVICE_ROLE_NAME = "StakingServiceRole";
45
39
  string public constant STAKING_ROLE_NAME = "StakingRole";
46
40
 
41
+ string public constant REGISTRY_TARGET_NAME = "Registry";
47
42
  string public constant RELEASE_REGISTRY_TARGET_NAME = "ReleaseRegistry";
48
43
  string public constant TOKEN_REGISTRY_TARGET_NAME = "TokenRegistry";
49
44
  string public constant STAKING_TARGET_NAME = "Staking";
50
45
  string public constant STAKING_STORE_TARGET_NAME = "StakingStore";
51
46
 
52
47
  uint8 public constant MAX_NUM_RELEASES = 99;
53
-
48
+ // TODO consider deleting this
54
49
  mapping(address service => VersionPart majorVersion) private _ServiceRelease;
55
50
 
51
+ address internal _registry;
56
52
  address private _releaseRegistry;
57
53
  address private _tokenRegistry;
58
54
  address private _staking;
59
55
  address private _stakingStore;
60
- bool private _setupCompleted;
61
56
 
62
57
  constructor() AccessAdmin() { }
63
58
 
@@ -67,11 +62,10 @@ contract RegistryAdmin is
67
62
  address gifManager
68
63
  )
69
64
  external
65
+ initializer
70
66
  onlyDeployer()
71
67
  {
72
- if (_setupCompleted) { revert ErrorRegistryAdminIsAlreadySetUp(); }
73
- else { _setupCompleted = true; }
74
-
68
+ _registry = address(registry);
75
69
  _releaseRegistry = registry.getReleaseRegistryAddress();
76
70
  _tokenRegistry = registry.getTokenRegistryAddress();
77
71
  _staking = registry.getStakingAddress();
@@ -85,6 +79,7 @@ contract RegistryAdmin is
85
79
  _setupGifManagerRole(gifManager);
86
80
 
87
81
  _setupReleaseRegistry();
82
+ _setupRegistry();
88
83
  _setupStaking();
89
84
  }
90
85
 
@@ -94,15 +89,46 @@ contract RegistryAdmin is
94
89
  /// Permissioned function: Access is restricted to release manager.
95
90
  function authorizeService(
96
91
  IServiceAuthorization serviceAuthorization,
97
- IService service
92
+ IService service,
93
+ ObjectType serviceDomain,
94
+ VersionPart releaseVersion
98
95
  )
99
96
  external
100
97
  restricted()
101
98
  {
102
- _createServiceTargetAndRole(service);
103
- _authorizeServiceFunctions(serviceAuthorization, service);
99
+ _createServiceTargetAndRole(service, serviceDomain, releaseVersion);
100
+ _authorizeServiceFunctions(serviceAuthorization, service, serviceDomain, releaseVersion);
101
+ }
102
+
103
+ function grantServiceRole(
104
+ IService service,
105
+ ObjectType domain,
106
+ VersionPart version
107
+ )
108
+ external
109
+ restricted()
110
+ {
111
+ _grantRoleToAccount(
112
+ RoleIdLib.roleForTypeAndVersion(
113
+ domain,
114
+ version),
115
+ address(service));
104
116
  }
105
117
 
118
+ function revokeServiceRole(
119
+ IService service,
120
+ ObjectType domain,
121
+ VersionPart version
122
+ )
123
+ external
124
+ restricted()
125
+ {
126
+ _revokeRoleFromAccount(
127
+ RoleIdLib.roleForTypeAndVersion(
128
+ domain,
129
+ version),
130
+ address(service));
131
+ }
106
132
 
107
133
  function grantServiceRoleForAllVersions(IService service, ObjectType domain)
108
134
  external
@@ -113,14 +139,44 @@ contract RegistryAdmin is
113
139
  address(service));
114
140
  }
115
141
 
142
+ function revokeServiceRoleForAllVersions(IService service, ObjectType domain)
143
+ external
144
+ restricted()
145
+ {
146
+ _revokeRoleFromAccount(
147
+ RoleIdLib.roleForTypeAndAllVersions(domain),
148
+ address(service));
149
+ }
116
150
 
117
- function _createServiceTargetAndRole(IService service)
151
+ /*function transferAdmin(address to)
152
+ external
153
+ restricted // only with GIF_ADMIN_ROLE or nft owner
154
+ {
155
+ _accessManager.revoke(GIF_ADMIN_ROLE, );
156
+ _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
157
+ }*/
158
+
159
+ //--- view functions ----------------------------------------------------//
160
+
161
+ function getGifAdminRole() external view returns (RoleId) {
162
+ return GIF_ADMIN_ROLE();
163
+ }
164
+
165
+ function getGifManagerRole() external view returns (RoleId) {
166
+ return GIF_MANAGER_ROLE();
167
+ }
168
+
169
+ //--- private functions -------------------------------------------------//
170
+
171
+ function _createServiceTargetAndRole(
172
+ IService service,
173
+ ObjectType serviceDomain,
174
+ VersionPart releaseVersion
175
+ )
118
176
  private
119
177
  {
120
- ObjectType serviceDomain = service.getDomain();
121
178
  string memory baseName = ObjectTypeLib.toName(serviceDomain);
122
- VersionPart version = service.getVersion().toMajorPart();
123
- uint256 versionInt = version.toInt();
179
+ uint256 versionInt = releaseVersion.toInt();
124
180
 
125
181
  // create service target
126
182
  string memory serviceTargetName = ObjectTypeLib.toVersionedName(
@@ -135,7 +191,7 @@ contract RegistryAdmin is
135
191
  // create service role
136
192
  RoleId serviceRoleId = RoleIdLib.roleForTypeAndVersion(
137
193
  serviceDomain,
138
- version);
194
+ releaseVersion);
139
195
 
140
196
  _createRole(
141
197
  serviceRoleId,
@@ -156,15 +212,15 @@ contract RegistryAdmin is
156
212
 
157
213
  function _authorizeServiceFunctions(
158
214
  IServiceAuthorization serviceAuthorization,
159
- IService service
215
+ IService service,
216
+ ObjectType serviceDomain,
217
+ VersionPart releaseVersion
160
218
  )
161
219
  private
162
220
  {
163
- ObjectType serviceDomain = service.getDomain();
164
221
  ObjectType authorizedDomain;
165
222
  RoleId authorizedRoleId;
166
223
 
167
- VersionPart release = service.getVersion().toMajorPart();
168
224
  ObjectType[] memory authorizedDomains = serviceAuthorization.getAuthorizedDomains(serviceDomain);
169
225
 
170
226
  for (uint256 i = 0; i < authorizedDomains.length; i++) {
@@ -176,7 +232,7 @@ contract RegistryAdmin is
176
232
  } else {
177
233
  authorizedRoleId = RoleIdLib.roleForTypeAndVersion(
178
234
  authorizedDomain,
179
- release);
235
+ releaseVersion);
180
236
  }
181
237
 
182
238
  // get authorized functions for authorized domain
@@ -191,27 +247,12 @@ contract RegistryAdmin is
191
247
  }
192
248
  }
193
249
 
194
- /*function transferAdmin(address to)
195
- external
196
- restricted // only with GIF_ADMIN_ROLE or nft owner
197
- {
198
- _accessManager.revoke(GIF_ADMIN_ROLE, );
199
- _accesssManager.grant(GIF_ADMIN_ROLE, to, 0);
200
- }*/
250
+ //--- private initialization functions -------------------------------------------//
201
251
 
202
- //--- view functions ----------------------------------------------------//
203
-
204
- function getGifAdminRole() external view returns (RoleId) {
205
- return GIF_ADMIN_ROLE();
206
- }
207
-
208
- function getGifManagerRole() external view returns (RoleId) {
209
- return GIF_MANAGER_ROLE();
210
- }
211
-
212
- //--- private functions -------------------------------------------------//
213
-
214
- function _setupGifAdminRole(address gifAdmin) private {
252
+ function _setupGifAdminRole(address gifAdmin)
253
+ private
254
+ onlyInitializing()
255
+ {
215
256
 
216
257
  _createRole(
217
258
  GIF_ADMIN_ROLE(),
@@ -221,8 +262,13 @@ contract RegistryAdmin is
221
262
  maxMemberCount: 2, // TODO decide on max member count
222
263
  name: GIF_ADMIN_ROLE_NAME}));
223
264
 
224
- // for ReleaseRegistry
265
+ // for Registry
225
266
  FunctionInfo[] memory functions;
267
+ functions = new FunctionInfo[](1);
268
+ functions[0] = toFunction(IRegistry.registerRegistry.selector, "registerRegistry");
269
+ _authorizeTargetFunctions(_registry, GIF_ADMIN_ROLE(), functions);
270
+
271
+ // for ReleaseRegistry
226
272
  functions = new FunctionInfo[](4);
227
273
  functions[0] = toFunction(ReleaseRegistry.createNextRelease.selector, "createNextRelease");
228
274
  functions[1] = toFunction(ReleaseRegistry.activateNextRelease.selector, "activateNextRelease");
@@ -233,7 +279,10 @@ contract RegistryAdmin is
233
279
  _grantRoleToAccount(GIF_ADMIN_ROLE(), gifAdmin);
234
280
  }
235
281
 
236
- function _setupGifManagerRole(address gifManager) private {
282
+ function _setupGifManagerRole(address gifManager)
283
+ private
284
+ onlyInitializing()
285
+ {
237
286
 
238
287
  _createRole(
239
288
  GIF_MANAGER_ROLE(),
@@ -264,7 +313,10 @@ contract RegistryAdmin is
264
313
  }
265
314
 
266
315
 
267
- function _setupReleaseRegistry() private {
316
+ function _setupReleaseRegistry()
317
+ private
318
+ onlyInitializing()
319
+ {
268
320
 
269
321
  _createTarget(_releaseRegistry, RELEASE_REGISTRY_TARGET_NAME, true, false);
270
322
 
@@ -278,16 +330,54 @@ contract RegistryAdmin is
278
330
  name: RELEASE_REGISTRY_ROLE_NAME}));
279
331
 
280
332
  FunctionInfo[] memory functions;
281
- functions = new FunctionInfo[](2);
333
+ functions = new FunctionInfo[](5);
282
334
  functions[0] = toFunction(RegistryAdmin.authorizeService.selector, "authorizeService");
283
335
  functions[1] = toFunction(RegistryAdmin.grantServiceRoleForAllVersions.selector, "grantServiceRoleForAllVersions");
336
+ functions[2] = toFunction(RegistryAdmin.revokeServiceRoleForAllVersions.selector, "revokeServiceRoleForAllVersions");
337
+ functions[3] = toFunction(RegistryAdmin.grantServiceRole.selector, "grantServiceRole");
338
+ functions[4] = toFunction(RegistryAdmin.revokeServiceRole.selector, "revokeServiceRole");
284
339
  _authorizeTargetFunctions(address(this), releaseRegistryRoleId, functions);
285
340
 
286
341
  _grantRoleToAccount(releaseRegistryRoleId, _releaseRegistry);
287
342
  }
288
343
 
289
344
 
290
- function _setupStaking() private {
345
+ function _setupRegistry()
346
+ internal
347
+ virtual
348
+ onlyInitializing()
349
+ {
350
+ _createTarget(_registry, REGISTRY_TARGET_NAME, true, false);
351
+
352
+ // registry function authorization for registry service
353
+ RoleId registryServiceRoleId = RoleIdLib.roleForTypeAndAllVersions(REGISTRY());
354
+ _createRole(
355
+ registryServiceRoleId,
356
+ toRole({
357
+ adminRoleId: ADMIN_ROLE(),
358
+ roleType: RoleType.Contract,
359
+ maxMemberCount: MAX_NUM_RELEASES,
360
+ name: REGISTRY_SERVICE_ROLE_NAME}));
361
+
362
+ // authorize registry service
363
+ FunctionInfo[] memory functions;
364
+ functions = new FunctionInfo[](2);
365
+ functions[0] = toFunction(IRegistry.register.selector, "register");
366
+ functions[1] = toFunction(IRegistry.registerWithCustomType.selector, "registerWithCustomType");
367
+ _authorizeTargetFunctions(_registry, registryServiceRoleId, functions);
368
+
369
+ // authorize release registry
370
+ RoleId releaseRegistryRoleId = RoleIdLib.roleForType(RELEASE());
371
+ functions = new FunctionInfo[](1);
372
+ functions[0] = toFunction(IRegistry.registerService.selector, "registerService");
373
+ _authorizeTargetFunctions(_registry, releaseRegistryRoleId, functions);
374
+ }
375
+
376
+
377
+ function _setupStaking()
378
+ private
379
+ onlyInitializing()
380
+ {
291
381
  _createTarget(_staking, STAKING_TARGET_NAME, true, false);
292
382
  _createTarget(_stakingStore, STAKING_STORE_TARGET_NAME, true, false);
293
383
 
@@ -39,8 +39,8 @@ contract RegistryService is
39
39
  address initialAuthority
40
40
  ) = abi.decode(data, (address, address));
41
41
 
42
- initializeService(registryAddress, initialAuthority, owner);
43
- registerInterface(type(IRegistryService).interfaceId);
42
+ _initializeService(registryAddress, initialAuthority, owner);
43
+ _registerInterface(type(IRegistryService).interfaceId);
44
44
  }
45
45
 
46
46
 
@@ -21,7 +21,6 @@ contract RegistryServiceManager is
21
21
  address registry, // used by implementation
22
22
  bytes32 salt
23
23
  )
24
- ProxyManager(registry)
25
24
  {
26
25
  if(authority == address(0)) {
27
26
  revert ErrorRegistryAccessManagerAuthorityZero();
@@ -33,7 +32,8 @@ contract RegistryServiceManager is
33
32
 
34
33
  RegistryService srv = new RegistryService{ salt: salt }();
35
34
  bytes memory data = abi.encode(registry, authority);
36
- IVersionable versionable = deployDetermenistic(
35
+ IVersionable versionable = initialize(
36
+ registry,
37
37
  address(srv),
38
38
  data,
39
39
  salt);
@@ -194,7 +194,6 @@ contract ReleaseRegistry is
194
194
  emit LogReleaseCreation(version, releaseSalt);
195
195
  }
196
196
 
197
- // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
198
197
  function registerService(IService service)
199
198
  external
200
199
  restricted // GIF_MANAGER_ROLE
@@ -230,19 +229,26 @@ contract ReleaseRegistry is
230
229
  }
231
230
 
232
231
  // register service with registry
232
+ // !!! TODO MUST call registry at the end of this function
233
233
  nftId = _registry.registerService(info, serviceVersion, serviceDomain);
234
234
  service.linkToRegisteredNftId();
235
235
  _registeredServices++;
236
236
 
237
237
  // setup service authorization
238
+ // !!! TODO service A can call service B while release is not active
238
239
  _admin.authorizeService(
239
240
  _serviceAuthorization[releaseVersion],
240
- service);
241
+ service,
242
+ serviceDomain,
243
+ serviceVersion);
241
244
 
242
- // TODO consider to extend this to REGISTRY
243
245
  // special roles for registry/staking/pool service
244
- if (serviceDomain == STAKING() || serviceDomain == POOL()) {
245
- // TODO rename to grantServiceDomainRole()
246
+ // !!! TODO registry service allowed to call registry while release is not activated (same for staking/pool service and staking)
247
+ if (
248
+ serviceDomain == REGISTRY() ||
249
+ serviceDomain == STAKING() ||
250
+ serviceDomain == POOL())
251
+ {
246
252
  _admin.grantServiceRoleForAllVersions(service, serviceDomain);
247
253
  }
248
254
  }
@@ -475,7 +481,7 @@ contract ReleaseRegistry is
475
481
  // TODO try catch and return false in case of revert
476
482
  // or just panic
477
483
  // check if contract returns a zero nft id for its own address
478
- if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
484
+ if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
479
485
  return false;
480
486
  }
481
487
 
@@ -52,7 +52,7 @@ abstract contract Component is
52
52
  }
53
53
  }
54
54
 
55
- function initializeComponent(
55
+ function _initializeComponent(
56
56
  address authority,
57
57
  address registry,
58
58
  NftId parentNftId,
@@ -64,11 +64,11 @@ abstract contract Component is
64
64
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
65
65
  bytes memory componentData // other component specific data
66
66
  )
67
- public
67
+ internal
68
68
  virtual
69
69
  onlyInitializing()
70
70
  {
71
- initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
71
+ _initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
72
72
  __AccessManaged_init(authority);
73
73
 
74
74
  if (token == address(0)) {
@@ -87,8 +87,8 @@ abstract contract Component is
87
87
  $._isInterceptor = isInterceptor;
88
88
  $._data = componentData;
89
89
 
90
- registerInterface(type(IAccessManaged).interfaceId);
91
- registerInterface(type(IComponent).interfaceId);
90
+ _registerInterface(type(IAccessManaged).interfaceId);
91
+ _registerInterface(type(IComponent).interfaceId);
92
92
  }
93
93
 
94
94
 
@@ -206,7 +206,7 @@ abstract contract Component is
206
206
 
207
207
 
208
208
  function isRegistered() public virtual view returns (bool) {
209
- return getRegistry().getNftId(address(this)).gtz();
209
+ return getRegistry().getNftIdForAddress(address(this)).gtz();
210
210
  }
211
211
 
212
212
 
@@ -48,17 +48,17 @@ contract ComponentService is
48
48
  virtual override
49
49
  initializer()
50
50
  {
51
- // TODO check this, might no longer be the way, refactor if necessary
52
- address registryAddress;
53
- address initialOwner;
54
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
51
+ (
52
+ address registryAddress,
53
+ address authority
54
+ ) = abi.decode(data, (address, address));
55
55
 
56
- initializeService(registryAddress, address(0), owner);
56
+ _initializeService(registryAddress, authority, owner);
57
57
 
58
58
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
59
59
  _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
60
60
 
61
- registerInterface(type(IComponentService).interfaceId);
61
+ _registerInterface(type(IComponentService).interfaceId);
62
62
  }
63
63
 
64
64
  //-------- component ----------------------------------------------------//
@@ -622,7 +622,7 @@ contract ComponentService is
622
622
  }
623
623
 
624
624
  // check component has not already been registered
625
- if (getRegistry().getNftId(componentAddress).gtz()) {
625
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
626
626
  revert ErrorComponentServiceAlreadyRegistered(componentAddress);
627
627
  }
628
628
 
@@ -11,15 +11,18 @@ contract ComponentServiceManager is ProxyManager {
11
11
 
12
12
  /// @dev initializes proxy manager with service implementation
13
13
  constructor(
14
- address registryAddress
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
15
17
  )
16
- ProxyManager(registryAddress)
17
18
  {
18
19
  ComponentService svc = new ComponentService();
19
- bytes memory data = abi.encode(registryAddress, address(this));
20
- IVersionable versionable = deploy(
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
21
23
  address(svc),
22
- data);
24
+ data,
25
+ salt);
23
26
 
24
27
  _componentService = ComponentService(address(versionable));
25
28
  }
@@ -32,7 +32,7 @@ abstract contract ComponentVerifyingService is
32
32
  IInstance instance
33
33
  )
34
34
  {
35
- componentNftId = getRegistry().getNftId(msg.sender);
35
+ componentNftId = getRegistry().getNftIdForAddress(msg.sender);
36
36
  (componentInfo, instance) = _getAndVerifyComponentInfo(
37
37
  componentNftId,
38
38
  expectedType,
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
8
+
9
+ library ContractLib {
10
+
11
+ function isPolicyHolder(address target) external view returns (bool) {
12
+ return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
13
+ }
14
+
15
+ function isAccessManaged(address target) external view returns (bool) {
16
+ if (!isContract(target)) {
17
+ return false;
18
+ }
19
+
20
+ (bool success, ) = target.staticcall(
21
+ abi.encodeWithSelector(
22
+ IAccessManaged.authority.selector));
23
+
24
+ return success;
25
+ }
26
+
27
+ function isContract(address target) public view returns (bool) {
28
+ uint256 size;
29
+ assembly {
30
+ size := extcodesize(target)
31
+ }
32
+ return size > 0;
33
+ }
34
+
35
+ function supportsInterface(address target, bytes4 interfaceId) external view returns (bool) {
36
+ return ERC165Checker.supportsInterface(target, interfaceId);
37
+ }
38
+ }
@@ -9,37 +9,27 @@ import {ClaimId} from "../type/ClaimId.sol";
9
9
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
10
  import {NftId} from "../type/NftId.sol";
11
11
  import {PayoutId} from "../type/PayoutId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
12
13
 
13
- /// @dev generic interface for contracts that need to hold policies and receive payouts
14
- /// GIF will notify policy holder contracts for policy creation and payout execution
14
+ /// @dev Generic interface for contracts that need to hold policies and receive payouts.
15
+ /// The framework notifies policy holder contracts for policy creation/expiry, claim confirmation and payout execution
15
16
  interface IPolicyHolder is
16
17
  IERC165,
17
18
  IERC721Receiver,
18
19
  IRegistryLinked
19
20
  {
20
21
 
21
- /// @dev callback function that will be called after successful policy activation
22
- /// active policies may open claims under the activated policy
23
- function policyActivated(NftId policyNftId) external;
22
+ /// @dev Callback function that will be called after successful policy activation.
23
+ /// Active policies may open claims under the activated policy.
24
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external;
24
25
 
25
- /// @dev callback function to indicate the specified policy has expired
26
- /// expired policies may no longer open claims
27
- /// it is optional for products to notifiy policy holder of expired claims
28
- function policyExpired(NftId policyNftId) external;
26
+ /// @dev Callback function to indicate the specified policy has expired.
27
+ /// expired policies no longer accept new claims.
28
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external;
29
29
 
30
- /// @dev request for a payout by the requesting policy
31
- /// the contract implements its use case specific handling for such requests.
32
- /// eg. creation of a pending payout, a corresponding claim against one of the policies held by the IPolicyHolder
33
- function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external;
34
-
35
- /// @dev callback function to notify the confirmation of the specified claim
36
- /// active policies may open claims under the activated policy
30
+ /// @dev Callback function to notify the confirmation of the specified claim.
37
31
  function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
38
32
 
39
- /// @dev callback function that will be called after a successful payout
40
- function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
41
-
42
- /// @dev determines policy and claim specific beneficiary address
43
- /// returned address will override GIF default where the policy nft holder is treated as beneficiary
44
- function getBeneficiary(NftId policyNftId, PayoutId payoutId) external view returns (address beneficiary);
33
+ /// @dev Callback function to notify the successful payout.
34
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
45
35
  }
@@ -11,13 +11,13 @@ contract InitializableERC165 is
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
13
  // @dev initializes with support for ERC165
14
- function initializeERC165() public onlyInitializing() {
14
+ function _initializeERC165() internal onlyInitializing() {
15
15
  _isSupported[type(IERC165).interfaceId] = true;
16
16
  }
17
17
 
18
18
  // @dev register support for provided interfaceId
19
19
  // includes initialization for ERC165_ID if not yet done
20
- function registerInterface(bytes4 interfaceId) public onlyInitializing() {
20
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
21
21
  _isSupported[interfaceId] = true;
22
22
  }
23
23
 
@@ -103,7 +103,7 @@ abstract contract InstanceLinkedComponent is
103
103
  revert ErrorComponentNotInstance(instanceNftId);
104
104
  }
105
105
 
106
- initializeComponent(
106
+ _initializeComponent(
107
107
  $._instance.authority(),
108
108
  registry,
109
109
  instanceNftId,
@@ -120,8 +120,8 @@ abstract contract InstanceLinkedComponent is
120
120
  $._initialAuthorization = authorization;
121
121
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
122
122
 
123
- registerInterface(type(IAccessManaged).interfaceId);
124
- registerInterface(type(IInstanceLinkedComponent).interfaceId);
123
+ _registerInterface(type(IAccessManaged).interfaceId);
124
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
125
125
  }
126
126
 
127
127
  /// @dev for instance linked components the wallet address stored in the instance store.
@@ -132,7 +132,7 @@ abstract contract InstanceLinkedComponent is
132
132
 
133
133
 
134
134
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
135
- NftId componentNftId = getRegistry().getNftId(address(this));
135
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
136
136
 
137
137
  // if registered, attempt to return component info via instance reader
138
138
  if (componentNftId.gtz()) {