@etherisc/gif-next 0.0.2-ec436bf-674 → 0.0.2-ec4918f-024

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 (699) hide show
  1. package/README.md +121 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  16. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  18. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  20. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
  22. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  24. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1048 -0
  26. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1455 -0
  28. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  30. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +929 -0
  32. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +961 -0
  34. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  36. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1519 -0
  38. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  40. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
  42. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  44. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1573 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
  54. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  55. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +474 -553
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +391 -169
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +357 -3059
  62. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
  64. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
  66. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1048 -378
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +491 -387
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +344 -114
  72. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3678 -0
  74. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  76. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  78. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  80. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  82. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  84. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  86. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  89. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  92. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  93. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  94. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
  96. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  98. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  100. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +405 -368
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  104. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  105. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
  106. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  107. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
  108. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
  110. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1280 -0
  112. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
  114. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  115. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1465 -0
  116. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +834 -0
  118. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  119. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +960 -0
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  121. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +960 -0
  122. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  123. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  124. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/Pool.sol/Pool.json +1079 -0
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  127. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1625 -0
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +766 -0
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  131. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +771 -0
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +710 -0
  134. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  135. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
  136. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  138. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  139. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1431 -0
  140. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  141. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +838 -0
  142. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  143. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → product/IApplicationService.sol/IApplicationService.json} +231 -225
  144. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  145. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -0
  146. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  147. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +925 -0
  148. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +283 -266
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1012 -0
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  153. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IRiskService.sol/IRiskService.json} +149 -162
  154. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1302 -0
  156. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  158. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  159. package/artifacts/contracts/product/PricingService.sol/PricingService.json +907 -0
  160. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +762 -0
  162. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  163. package/artifacts/contracts/product/Product.sol/Product.json +1131 -0
  164. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  166. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  167. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  168. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  170. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +595 -186
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +371 -205
  174. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  176. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/Registry.sol/Registry.json +921 -213
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  179. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +339 -330
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +326 -138
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  185. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  192. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Component.sol/Component.json +725 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1768 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +209 -201
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +351 -165
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  219. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  220. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  224. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  225. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +829 -0
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  244. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  246. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  247. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
  248. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  250. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  252. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
  254. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  256. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
  258. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  260. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1249 -0
  262. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
  264. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  266. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  268. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  270. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  272. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  282. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  284. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  286. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  288. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  290. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  292. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  294. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  296. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  298. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  310. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  322. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  325. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  326. package/contracts/authorization/AccessAdmin.sol +596 -0
  327. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  328. package/contracts/authorization/Authorization.sol +289 -0
  329. package/contracts/authorization/IAccess.sol +49 -0
  330. package/contracts/authorization/IAccessAdmin.sol +137 -0
  331. package/contracts/authorization/IAuthorization.sol +60 -0
  332. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  333. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  334. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  335. package/contracts/distribution/BasicDistribution.sol +139 -0
  336. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  337. package/contracts/distribution/Distribution.sol +285 -0
  338. package/contracts/distribution/DistributionService.sol +355 -0
  339. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  340. package/contracts/distribution/IDistributionComponent.sol +52 -0
  341. package/contracts/distribution/IDistributionService.sol +101 -0
  342. package/contracts/examples/fire/DamageLevel.sol +59 -0
  343. package/contracts/examples/fire/FirePool.sol +73 -0
  344. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  345. package/contracts/examples/fire/FireProduct.sol +415 -0
  346. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  347. package/contracts/examples/fire/FireUSD.sol +26 -0
  348. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  349. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  350. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  351. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  352. package/contracts/instance/BundleSet.sol +126 -0
  353. package/contracts/instance/IInstance.sol +51 -24
  354. package/contracts/instance/IInstanceService.sol +58 -17
  355. package/contracts/instance/Instance.sol +164 -375
  356. package/contracts/instance/InstanceAdmin.sol +277 -0
  357. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  358. package/contracts/instance/InstanceReader.sol +271 -82
  359. package/contracts/instance/InstanceService.sol +356 -124
  360. package/contracts/instance/InstanceServiceManager.sol +14 -31
  361. package/contracts/instance/InstanceStore.sol +287 -0
  362. package/contracts/instance/base/BalanceStore.sol +123 -0
  363. package/contracts/instance/base/Cloneable.sol +28 -0
  364. package/contracts/instance/base/ObjectCounter.sol +21 -0
  365. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  366. package/contracts/instance/base/ObjectSet.sol +79 -0
  367. package/contracts/instance/module/IAccess.sol +29 -21
  368. package/contracts/instance/module/IBundle.sol +8 -8
  369. package/contracts/instance/module/IComponents.sol +51 -0
  370. package/contracts/instance/module/IDistribution.sol +6 -4
  371. package/contracts/instance/module/IPolicy.sol +58 -19
  372. package/contracts/instance/module/IRisk.sol +1 -1
  373. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  374. package/contracts/oracle/BasicOracle.sol +47 -0
  375. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  376. package/contracts/oracle/IOracle.sol +36 -0
  377. package/contracts/oracle/IOracleComponent.sol +33 -0
  378. package/contracts/oracle/IOracleService.sol +66 -0
  379. package/contracts/oracle/Oracle.sol +156 -0
  380. package/contracts/oracle/OracleService.sol +291 -0
  381. package/contracts/oracle/OracleServiceManager.sol +39 -0
  382. package/contracts/pool/BasicPool.sol +154 -0
  383. package/contracts/pool/BasicPoolAuthorization.sol +57 -0
  384. package/contracts/pool/BundleService.sol +493 -0
  385. package/contracts/pool/BundleServiceManager.sol +39 -0
  386. package/contracts/pool/IBundleService.sol +143 -0
  387. package/contracts/pool/IPoolComponent.sol +68 -0
  388. package/contracts/pool/IPoolService.sol +167 -0
  389. package/contracts/pool/Pool.sol +330 -0
  390. package/contracts/pool/PoolService.sol +544 -0
  391. package/contracts/pool/PoolServiceManager.sol +39 -0
  392. package/contracts/product/ApplicationService.sol +259 -0
  393. package/contracts/product/ApplicationServiceManager.sol +38 -0
  394. package/contracts/product/BasicProduct.sol +53 -0
  395. package/contracts/product/BasicProductAuthorization.sol +42 -0
  396. package/contracts/product/ClaimService.sol +612 -0
  397. package/contracts/product/ClaimServiceManager.sol +38 -0
  398. package/contracts/product/IApplicationService.sol +63 -0
  399. package/contracts/product/IClaimService.sol +123 -0
  400. package/contracts/product/IPolicyService.sol +80 -0
  401. package/contracts/product/IPricingService.sol +39 -0
  402. package/contracts/product/IProductComponent.sol +59 -0
  403. package/contracts/product/IRiskService.sol +33 -0
  404. package/contracts/product/PolicyService.sol +691 -0
  405. package/contracts/product/PolicyServiceManager.sol +39 -0
  406. package/contracts/product/PricingService.sol +300 -0
  407. package/contracts/product/PricingServiceManager.sol +39 -0
  408. package/contracts/product/Product.sol +455 -0
  409. package/contracts/product/RiskService.sol +96 -0
  410. package/contracts/product/RiskServiceManager.sol +39 -0
  411. package/contracts/registry/ChainNft.sol +78 -33
  412. package/contracts/registry/IRegistry.sol +125 -48
  413. package/contracts/registry/IRegistryService.sol +45 -16
  414. package/contracts/registry/ITransferInterceptor.sol +1 -1
  415. package/contracts/registry/Registry.sol +532 -304
  416. package/contracts/registry/RegistryAdmin.sol +448 -0
  417. package/contracts/registry/RegistryService.sol +126 -284
  418. package/contracts/registry/RegistryServiceManager.sol +26 -53
  419. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  420. package/contracts/registry/ReleaseRegistry.sol +501 -0
  421. package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
  422. package/contracts/registry/TokenRegistry.sol +261 -57
  423. package/contracts/shared/Component.sol +265 -0
  424. package/contracts/shared/ComponentService.sol +745 -0
  425. package/contracts/shared/ComponentServiceManager.sol +38 -0
  426. package/contracts/shared/ComponentVerifyingService.sol +126 -0
  427. package/contracts/shared/ContractLib.sol +38 -0
  428. package/contracts/shared/IComponent.sol +74 -0
  429. package/contracts/shared/IComponentService.sol +120 -0
  430. package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
  431. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  432. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  433. package/contracts/shared/INftOwnable.sol +15 -12
  434. package/contracts/shared/IPolicyHolder.sol +35 -0
  435. package/contracts/shared/IRegisterable.sol +15 -6
  436. package/contracts/shared/IRegistryLinked.sol +11 -0
  437. package/contracts/shared/IService.sol +16 -6
  438. package/contracts/shared/InitializableERC165.sol +27 -0
  439. package/contracts/shared/InstanceLinkedComponent.sol +213 -0
  440. package/contracts/shared/KeyValueStore.sol +131 -0
  441. package/contracts/shared/Lifecycle.sol +88 -0
  442. package/contracts/shared/NftIdSet.sol +65 -0
  443. package/contracts/shared/NftOwnable.sol +75 -84
  444. package/contracts/shared/PolicyHolder.sol +62 -0
  445. package/contracts/shared/Registerable.sol +34 -39
  446. package/contracts/shared/RegistryLinked.sol +44 -0
  447. package/contracts/shared/Service.sol +61 -32
  448. package/contracts/shared/TokenHandler.sol +122 -10
  449. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  450. package/contracts/staking/IStaking.sol +168 -0
  451. package/contracts/staking/IStakingService.sol +157 -0
  452. package/contracts/staking/StakeManagerLib.sol +224 -0
  453. package/contracts/staking/Staking.sol +497 -0
  454. package/contracts/staking/StakingLifecycle.sol +23 -0
  455. package/contracts/staking/StakingManager.sol +52 -0
  456. package/contracts/staking/StakingReader.sol +190 -0
  457. package/contracts/staking/StakingService.sol +407 -0
  458. package/contracts/staking/StakingServiceManager.sol +44 -0
  459. package/contracts/staking/StakingStore.sol +605 -0
  460. package/contracts/staking/TargetManagerLib.sol +211 -0
  461. package/contracts/{types → type}/AddressSet.sol +1 -1
  462. package/contracts/type/Amount.sol +150 -0
  463. package/contracts/{types → type}/Blocknumber.sol +27 -3
  464. package/contracts/type/ClaimId.sol +80 -0
  465. package/contracts/{types → type}/DistributorType.sol +2 -2
  466. package/contracts/{types → type}/Fee.sol +33 -23
  467. package/contracts/{types → type}/NftId.sol +22 -15
  468. package/contracts/type/NftIdSet.sol +62 -0
  469. package/contracts/type/ObjectType.sol +276 -0
  470. package/contracts/type/PayoutId.sol +82 -0
  471. package/contracts/{types → type}/Referral.sol +6 -1
  472. package/contracts/type/RequestId.sol +75 -0
  473. package/contracts/{types → type}/RiskId.sol +16 -2
  474. package/contracts/type/RoleId.sol +162 -0
  475. package/contracts/type/Seconds.sol +101 -0
  476. package/contracts/type/Selector.sol +102 -0
  477. package/contracts/{types → type}/StateId.sol +48 -4
  478. package/contracts/type/String.sol +53 -0
  479. package/contracts/{types → type}/Timestamp.sol +34 -15
  480. package/contracts/{types → type}/UFixed.sol +39 -9
  481. package/contracts/{types → type}/Version.sol +5 -2
  482. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  483. package/contracts/upgradeability/ProxyManager.sol +232 -0
  484. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  485. package/contracts/upgradeability/Versionable.sol +59 -0
  486. package/package.json +11 -7
  487. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  488. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  489. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  490. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  491. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  492. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  493. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  494. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  495. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  496. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  497. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  498. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  499. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  500. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  501. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  502. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  503. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  505. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  507. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  509. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  511. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  513. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  515. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  517. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  518. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  519. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  521. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  523. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  526. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  528. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  530. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  532. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  534. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  536. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  538. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  540. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  542. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  543. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  544. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  545. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  546. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  547. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  548. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  550. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  551. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  552. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  553. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  554. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  555. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  556. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  557. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  561. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  563. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -448
  565. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -855
  571. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  573. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  574. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  575. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  576. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  577. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  578. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  579. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  580. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  581. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  582. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  583. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  584. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  585. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  586. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  588. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  590. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  591. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  592. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  593. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  594. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  595. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  596. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  597. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  598. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  600. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  601. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  602. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  603. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  604. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  606. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  608. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  610. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  612. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  614. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  616. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  617. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  618. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  620. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  622. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  624. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  626. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  628. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  630. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  632. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  634. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  636. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  638. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  640. package/contracts/components/BaseComponent.sol +0 -91
  641. package/contracts/components/Distribution.sol +0 -160
  642. package/contracts/components/IBaseComponent.sol +0 -25
  643. package/contracts/components/IDistributionComponent.sol +0 -44
  644. package/contracts/components/IPoolComponent.sol +0 -62
  645. package/contracts/components/IProductComponent.sol +0 -35
  646. package/contracts/components/Pool.sol +0 -243
  647. package/contracts/components/Product.sol +0 -297
  648. package/contracts/experiment/cloning/Cloner.sol +0 -47
  649. package/contracts/experiment/errors/Require.sol +0 -38
  650. package/contracts/experiment/errors/Revert.sol +0 -44
  651. package/contracts/experiment/inheritance/A.sol +0 -53
  652. package/contracts/experiment/inheritance/B.sol +0 -28
  653. package/contracts/experiment/inheritance/C.sol +0 -34
  654. package/contracts/experiment/inheritance/IA.sol +0 -13
  655. package/contracts/experiment/inheritance/IB.sol +0 -10
  656. package/contracts/experiment/inheritance/IC.sol +0 -12
  657. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  658. package/contracts/experiment/statemachine/ISM.sol +0 -25
  659. package/contracts/experiment/statemachine/SM.sol +0 -57
  660. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  661. package/contracts/experiment/types/TypeA.sol +0 -47
  662. package/contracts/experiment/types/TypeB.sol +0 -29
  663. package/contracts/instance/AccessManagedSimple.sol +0 -115
  664. package/contracts/instance/AccessManagerSimple.sol +0 -692
  665. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  666. package/contracts/instance/InstanceAccessManager.sol +0 -288
  667. package/contracts/instance/base/ComponentServiceBase.sol +0 -118
  668. package/contracts/instance/base/IInstanceBase.sol +0 -23
  669. package/contracts/instance/base/KeyValueStore.sol +0 -172
  670. package/contracts/instance/base/Lifecycle.sol +0 -100
  671. package/contracts/instance/module/ISetup.sol +0 -44
  672. package/contracts/instance/module/ITreasury.sol +0 -23
  673. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  674. package/contracts/instance/service/DistributionService.sol +0 -87
  675. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  676. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  677. package/contracts/instance/service/IDistributionService.sol +0 -12
  678. package/contracts/instance/service/IPoolService.sol +0 -37
  679. package/contracts/instance/service/IProductService.sol +0 -107
  680. package/contracts/instance/service/PoolService.sol +0 -193
  681. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  682. package/contracts/shared/ContractDeployerLib.sol +0 -72
  683. package/contracts/shared/ERC165.sol +0 -25
  684. package/contracts/shared/ProxyManager.sol +0 -94
  685. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  686. package/contracts/shared/Versionable.sol +0 -147
  687. package/contracts/test/TestFee.sol +0 -25
  688. package/contracts/test/TestRegisterable.sol +0 -18
  689. package/contracts/test/TestRoleId.sol +0 -14
  690. package/contracts/test/TestService.sol +0 -24
  691. package/contracts/test/TestToken.sol +0 -26
  692. package/contracts/test/TestVersion.sol +0 -44
  693. package/contracts/test/TestVersionable.sol +0 -17
  694. package/contracts/types/ChainId.sol +0 -38
  695. package/contracts/types/NftIdSet.sol +0 -60
  696. package/contracts/types/NumberId.sol +0 -52
  697. package/contracts/types/ObjectType.sol +0 -152
  698. package/contracts/types/RoleId.sol +0 -89
  699. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,136 +1,127 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
4
5
  import {INftOwnable} from "./INftOwnable.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
-
8
- contract NftOwnable is INftOwnable {
9
-
10
- IRegistry internal _registry;
11
- NftId private _nftId;
12
- address private _initialOwner;
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RegistryLinked} from "./RegistryLinked.sol";
9
+
10
+ contract NftOwnable is
11
+ InitializableERC165,
12
+ RegistryLinked,
13
+ INftOwnable
14
+ {
15
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
16
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
17
+
18
+ struct NftOwnableStorage {
19
+ NftId _nftId;
20
+ address _initialOwner;
21
+ }
13
22
 
14
23
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
15
24
  modifier onlyOwner() {
16
- address owner = getOwner();
25
+ if (msg.sender != getOwner()) {
26
+ revert ErrorNftOwnableNotOwner(msg.sender);
27
+ }
28
+ _;
29
+ }
17
30
 
18
- // owner == address(0) is eg uninitialized upgradable contract
19
- if (owner != address(0) && msg.sender != owner) {
20
- revert ErrorNotOwner(msg.sender);
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
21
34
  }
22
35
  _;
23
36
  }
24
37
 
25
- constructor() {
26
- _initialOwner = msg.sender;
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
27
41
  }
28
42
 
29
- /// @dev links this contract to nft after registration
30
- // needs to be done once per registered contract and
31
- // reduces registry calls to check ownership
32
- // does not need any protection as function can only do the "right thing"
33
- function linkToRegisteredNftId() public {
34
- if (_nftId.gtz()) {
35
- revert ErrorAlreadyLinked(address(_registry), _nftId);
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
36
46
  }
47
+ }
37
48
 
38
- if (address(_registry) == address(0)) {
39
- revert ErrorRegistryNotInitialized();
40
- }
41
49
 
42
- address contractAddress = address(this);
50
+ /// @dev initialization for upgradable contracts
51
+ // used in _initializeRegisterable
52
+ function _initializeNftOwnable(
53
+ address registry,
54
+ address initialOwner
55
+ )
56
+ internal
57
+ virtual
58
+ onlyInitializing()
59
+ {
60
+ _initializeRegistryLinked(registry);
61
+ _initializeERC165();
43
62
 
44
- if (!_registry.isRegistered(contractAddress)) {
45
- revert ErrorContractNotRegistered(contractAddress);
63
+ if(initialOwner == address(0)) {
64
+ revert ErrorNftOwnableInitialOwnerZero();
46
65
  }
47
66
 
48
- _nftId = _registry.getNftId(contractAddress);
67
+ _getNftOwnableStorage()._initialOwner = initialOwner;
49
68
  }
50
69
 
51
70
 
52
- function getRegistry() public view virtual override returns (IRegistry) {
53
- return _registry;
71
+ /// @dev links this contract to nft after registration
72
+ // needs to be done once per registered contract and
73
+ // reduces registry calls to check ownership
74
+ // does not need any protection as function can only do the "right thing"
75
+ function linkToRegisteredNftId()
76
+ public
77
+ virtual
78
+ returns (NftId nftId)
79
+ {
80
+ return _linkToNftOwnable(address(this));
54
81
  }
55
82
 
56
-
57
83
  function getNftId() public view virtual override returns (NftId) {
58
- return _nftId;
84
+ return _getNftOwnableStorage()._nftId;
59
85
  }
60
86
 
61
-
62
87
  function getOwner() public view virtual override returns (address) {
63
- if (_nftId.gtz()) {
64
- return _registry.ownerOf(_nftId);
88
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
89
+
90
+ if ($._nftId.gtz()) {
91
+ return getRegistry().ownerOf($._nftId);
65
92
  }
66
93
 
67
- return _initialOwner;
94
+ return $._initialOwner;
68
95
  }
69
96
 
70
-
71
- /// @dev initialization for upgradable contracts
72
- // used in _initializeRegisterable
73
- function _initializeNftOwnable(
74
- address initialOwner,
75
- address registryAddress
76
- )
77
- internal
78
- virtual
79
- {
80
- _initialOwner = initialOwner;
81
- _setRegistry(registryAddress);
82
- }
83
-
84
-
85
97
  /// @dev used in constructor of registry service manager
86
98
  // links ownership of registry service manager ot nft owner of registry service
87
99
  function _linkToNftOwnable(
88
- address registryAddress,
89
100
  address nftOwnableAddress
90
101
  )
91
102
  internal
92
- onlyOwner()
93
103
  returns (NftId)
94
104
  {
95
- if (_nftId.gtz()) {
96
- revert ErrorAlreadyLinked(address(_registry), _nftId);
97
- }
105
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
98
106
 
99
- _setRegistry(registryAddress);
100
-
101
- if (!_registry.isRegistered(nftOwnableAddress)) {
102
- revert ErrorContractNotRegistered(nftOwnableAddress);
107
+ if ($._nftId.gtz()) {
108
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
103
109
  }
104
110
 
105
- _nftId = _registry.getNftId(nftOwnableAddress);
106
-
107
- return _nftId;
108
- }
109
-
110
-
111
- function _setRegistry(address registryAddress)
112
- private
113
- {
114
- if (address(_registry) != address(0)) {
115
- revert ErrorRegistryAlreadyInitialized(address(_registry));
111
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
112
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
116
113
  }
117
114
 
118
- if (registryAddress == address(0)) {
119
- revert ErrorRegistryAddressZero();
120
- }
115
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
121
116
 
122
- if (registryAddress.code.length == 0) {
123
- revert ErrorNotRegistry(registryAddress);
124
- }
117
+ return $._nftId;
118
+ }
125
119
 
126
- _registry = IRegistry(registryAddress);
127
120
 
128
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
129
- if (!isRegistry) {
130
- revert ErrorNotRegistry(registryAddress);
131
- }
132
- } catch {
133
- revert ErrorNotRegistry(registryAddress);
121
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
122
+ // solhint-disable-next-line no-inline-assembly
123
+ assembly {
124
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
134
125
  }
135
126
  }
136
127
  }
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {ClaimId} from "../type/ClaimId.sol";
8
+ import {InitializableERC165} from "./InitializableERC165.sol";
9
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
12
+ import {RegistryLinked} from "./RegistryLinked.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+
15
+ /// @dev template implementation for IPolicyHolder
16
+ contract PolicyHolder is
17
+ InitializableERC165,
18
+ RegistryLinked,
19
+ IPolicyHolder
20
+ {
21
+ // TODO add modifier to protect callback functions from unauthorized access
22
+ // callbacks must only be allowed from the policy and claim services
23
+ // will need a release parameter to fetch the right service addresses for the modifiers
24
+
25
+ function _initializePolicyHolder(
26
+ address registryAddress
27
+ )
28
+ internal
29
+ virtual
30
+ onlyInitializing()
31
+ {
32
+ _initializeRegistryLinked(registryAddress);
33
+ _initializeERC165();
34
+ _registerInterface(type(IPolicyHolder).interfaceId);
35
+ }
36
+
37
+ /// @dev empty default implementation
38
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
39
+
40
+ /// @dev empty default implementation
41
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
42
+
43
+ /// @dev empty default implementation
44
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
45
+
46
+ /// @dev empty default implementation
47
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
48
+
49
+ //--- IERC165 functions ---------------//
50
+ function onERC721Received(
51
+ address, // operator
52
+ address, // from
53
+ uint256, // tokenId
54
+ bytes calldata // data
55
+ )
56
+ external
57
+ virtual
58
+ returns (bytes4)
59
+ {
60
+ return IERC721Receiver.onERC721Received.selector;
61
+ }
62
+ }
@@ -3,27 +3,23 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
7
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
9
10
 
10
11
  import {IRegistry} from "../registry/IRegistry.sol";
11
12
  import {IRegisterable} from "./IRegisterable.sol";
12
- import {Versionable} from "./Versionable.sol";
13
-
14
- import {ERC165} from "./ERC165.sol";
15
13
 
16
14
  contract Registerable is
17
- ERC165,
18
- Initializable,
19
15
  NftOwnable,
20
16
  IRegisterable
21
17
  {
18
+ uint256 public constant GIF_RELEASE = 3;
19
+
22
20
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
23
21
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
24
22
 
25
- error ErrorRegisterableNotRegistry(address registryAddress);
26
-
27
23
  struct RegisterableStorage {
28
24
  NftId _parentNftId;
29
25
  ObjectType _objectType;
@@ -31,60 +27,59 @@ contract Registerable is
31
27
  bytes _data;
32
28
  }
33
29
 
34
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
35
- assembly {
36
- $.slot := REGISTERABLE_LOCATION_V1
37
- }
38
- }
39
-
40
30
  function _initializeRegisterable(
41
- address registryAddress,
31
+ address registry,
42
32
  NftId parentNftId,
43
33
  ObjectType objectType,
44
34
  bool isInterceptor,
45
35
  address initialOwner,
46
- bytes memory data
36
+ bytes memory data // writeonly data that will saved in the object info record of the registry
47
37
  )
48
38
  internal
49
- //onlyInitializing//TODO uncomment when "fully" upgradeable
50
39
  virtual
40
+ onlyInitializing()
51
41
  {
52
- _initializeERC165();
53
42
  _initializeNftOwnable(
54
- initialOwner,
55
- registryAddress);
43
+ registry,
44
+ initialOwner);
56
45
 
57
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
58
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
46
+ RegisterableStorage storage $;
47
+ assembly {
48
+ $.slot := REGISTERABLE_LOCATION_V1
49
+ }
59
50
 
60
- RegisterableStorage storage $ = _getRegisterableStorage();
61
51
  $._parentNftId = parentNftId;
62
52
  $._objectType = objectType;
63
53
  $._isInterceptor = isInterceptor;
64
54
  $._data = data;
55
+ }
56
+
65
57
 
66
- _registerInterface(type(IRegisterable).interfaceId);
58
+ /// @inheritdoc IRegisterable
59
+ function getRelease() public virtual pure returns (VersionPart release) {
60
+ return VersionPartLib.toVersionPart(GIF_RELEASE);
67
61
  }
68
62
 
69
63
 
64
+ /// @inheritdoc IRegisterable
70
65
  function getInitialInfo()
71
66
  public
72
67
  view
73
68
  virtual
74
- returns (IRegistry.ObjectInfo memory, bytes memory data)
69
+ returns (IRegistry.ObjectInfo memory info)
75
70
  {
76
- RegisterableStorage storage $ = _getRegisterableStorage();
77
- return (
78
- IRegistry.ObjectInfo(
79
- getNftId(),
80
- $._parentNftId,
81
- $._objectType,
82
- $._isInterceptor,
83
- address(this),
84
- getOwner(),
85
- $._data
86
- ),
87
- bytes("")
88
- );
71
+ RegisterableStorage storage $;
72
+ assembly {
73
+ $.slot := REGISTERABLE_LOCATION_V1
74
+ }
75
+
76
+ info = IRegistry.ObjectInfo(
77
+ NftIdLib.zero(),
78
+ $._parentNftId,
79
+ $._objectType,
80
+ $._isInterceptor,
81
+ address(this),
82
+ getOwner(),
83
+ $._data);
89
84
  }
90
85
  }
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+
8
+ contract RegistryLinked is
9
+ Initializable,
10
+ IRegistryLinked
11
+ {
12
+
13
+ // priorize simplicity and size over using standard upgradeability structs
14
+ IRegistry private _registry;
15
+
16
+ /// @dev initialization for upgradable contracts
17
+ // used in _initializeRegisterable
18
+ function _initializeRegistryLinked(
19
+ address registryAddress
20
+ )
21
+ internal
22
+ virtual
23
+ onlyInitializing()
24
+ {
25
+ if (registryAddress.code.length == 0) {
26
+ revert ErrorNotRegistry(registryAddress);
27
+ }
28
+
29
+ _registry = IRegistry(registryAddress);
30
+
31
+ try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
32
+ if (!isRegistry) {
33
+ revert ErrorNotRegistry(registryAddress);
34
+ }
35
+ } catch {
36
+ revert ErrorNotRegistry(registryAddress);
37
+ }
38
+ }
39
+
40
+
41
+ function getRegistry() public view returns (IRegistry) {
42
+ return _registry;
43
+ }
44
+ }
@@ -1,55 +1,84 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {ReentrancyGuardUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol";
3
7
 
4
8
  import {IRegistry} from "../registry/IRegistry.sol";
5
9
  import {IService} from "./IService.sol";
6
- import {IVersionable} from "./IVersionable.sol";
7
- import {NftId, zeroNftId} from "../types/NftId.sol";
8
- import {RegisterableUpgradable} from "./RegisterableUpgradable.sol";
9
- import {SERVICE} from "../types/ObjectType.sol";
10
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
11
- import {Versionable} from "./Versionable.sol";
10
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
11
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
+ import {Registerable} from "./Registerable.sol";
13
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
14
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
15
+ import {Versionable} from "../upgradeability/Versionable.sol";
16
+
12
17
 
13
18
  /// @dev service base contract
14
19
  abstract contract Service is
15
- RegisterableUpgradable,
20
+ Registerable,
21
+ Versionable,
22
+ AccessManagedUpgradeable,
23
+ ReentrancyGuardUpgradeable,
16
24
  IService
17
25
  {
18
- function getName() public pure virtual override returns(string memory name);
19
-
20
- function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
21
- return getVersion().toMajorPart();
22
- }
23
-
24
- // from Versionable
25
- function getVersion()
26
- public
27
- pure
28
- virtual override (IVersionable, Versionable)
29
- returns(Version)
30
- {
31
- return VersionLib.toVersion(3,0,0);
32
- }
33
26
 
34
27
  function _initializeService(
35
28
  address registry,
29
+ address authority, // real authority for registry service adress(0) for other services
36
30
  address initialOwner
37
31
  )
38
32
  internal
39
33
  virtual
40
- //onlyInitializing //TODO uncomment when "fully" upgradeable
34
+ onlyInitializing()
41
35
  {
42
- // service must provide its name and version upon registration
43
- bytes memory data = abi.encode(getName(), getMajorVersion());
44
- NftId registryNftId = _getRegistryNftId(registry);
45
- bool isInterceptor = false;
36
+ __ReentrancyGuard_init();
37
+
38
+ // externally provided authority
39
+ if(authority != address(0)) {
40
+ __AccessManaged_init(authority);
41
+ } else {
42
+ address registryServiceAddress = _getServiceAddress(REGISTRY());
43
+
44
+ // copy authority from already registered registry services
45
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
46
+ }
47
+
48
+ _initializeRegisterable(
49
+ registry,
50
+ IRegistry(registry).getNftId(),
51
+ SERVICE(),
52
+ false, // is interceptor
53
+ initialOwner,
54
+ ""); // data
46
55
 
47
- _initializeRegisterable(registry, registryNftId, SERVICE(), isInterceptor, initialOwner, data);
56
+
57
+ _registerInterface(type(IAccessManaged).interfaceId);
48
58
  _registerInterface(type(IService).interfaceId);
49
59
  }
50
60
 
51
- // this is just a conveniene function, actual validation will be done upon registration
52
- function _getRegistryNftId(address registryAddress) internal view returns (NftId) {
53
- return IRegistry(registryAddress).getNftId(registryAddress);
61
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
62
+ return _getDomain();
63
+ }
64
+
65
+ function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
66
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), getRelease());
67
+ }
68
+
69
+ /// @inheritdoc IVersionable
70
+ function getVersion()
71
+ public
72
+ pure
73
+ virtual override (IVersionable, Versionable)
74
+ returns(Version)
75
+ {
76
+ return VersionLib.toVersion(GIF_RELEASE,0,0);
77
+ }
78
+
79
+ function _getDomain() internal virtual pure returns (ObjectType);
80
+
81
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
82
+ return getRegistry().getServiceAddress(domain, getRelease());
54
83
  }
55
84
  }