@etherisc/gif-next 0.0.2-9542215-990 → 0.0.2-95b223b-528

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 (719) hide show
  1. package/README.md +149 -21
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → accounting/IAccountingService.sol/IAccountingService.json} +368 -352
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  25. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1292 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +986 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +885 -0
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2006 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2358 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +615 -246
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +433 -145
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +403 -2958
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1642 -565
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +546 -231
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +397 -75
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3708 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  100. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  104. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  108. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  109. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +929 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +744 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +845 -0
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1222 -0
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +922 -0
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +877 -0
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  140. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  141. package/artifacts/contracts/pool/Pool.sol/Pool.json +997 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1131 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1555 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +268 -256
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1058 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +944 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +578 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +988 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IRiskService.sol/IRiskService.json} +168 -160
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  179. package/artifacts/contracts/product/Product.sol/Product.json +1089 -0
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +896 -154
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +361 -214
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +1106 -140
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +338 -337
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +351 -118
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Component.sol/Component.json +677 -0
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1574 -0
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +818 -0
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +184 -178
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/IComponent.sol/IComponent.json} +321 -185
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1197 -0
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +679 -0
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  229. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +46 -26
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  240. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  241. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +134 -73
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  243. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  244. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  245. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +767 -0
  246. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  247. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  248. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  249. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  250. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  252. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +81 -30
  254. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  255. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  256. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  258. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  259. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  260. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  261. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +150 -189
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  266. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  268. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  269. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1417 -0
  270. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  271. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  272. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  273. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  274. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  275. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  276. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  278. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  280. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  282. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  284. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  286. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  288. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  289. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  290. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  291. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  292. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  294. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  336. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  340. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  346. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  348. package/contracts/accounting/AccountingService.sol +263 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +45 -0
  351. package/contracts/authorization/AccessAdmin.sol +615 -0
  352. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  353. package/contracts/authorization/Authorization.sol +289 -0
  354. package/contracts/authorization/IAccess.sol +49 -0
  355. package/contracts/authorization/IAccessAdmin.sol +137 -0
  356. package/contracts/authorization/IAuthorization.sol +60 -0
  357. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  358. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  359. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  360. package/contracts/distribution/BasicDistribution.sol +139 -0
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  362. package/contracts/distribution/Distribution.sol +287 -0
  363. package/contracts/distribution/DistributionService.sol +357 -0
  364. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  365. package/contracts/distribution/IDistributionComponent.sol +52 -0
  366. package/contracts/distribution/IDistributionService.sol +100 -0
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +90 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +438 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +130 -0
  381. package/contracts/instance/IInstance.sol +59 -16
  382. package/contracts/instance/IInstanceService.sol +62 -9
  383. package/contracts/instance/Instance.sol +170 -367
  384. package/contracts/instance/InstanceAdmin.sol +288 -0
  385. package/contracts/instance/InstanceAuthorizationV3.sol +225 -0
  386. package/contracts/instance/InstanceReader.sol +381 -65
  387. package/contracts/instance/InstanceService.sol +347 -57
  388. package/contracts/instance/InstanceServiceManager.sol +14 -31
  389. package/contracts/instance/InstanceStore.sol +298 -0
  390. package/contracts/instance/RiskSet.sol +119 -0
  391. package/contracts/instance/base/BalanceStore.sol +123 -0
  392. package/contracts/instance/base/Cloneable.sol +28 -0
  393. package/contracts/instance/base/ObjectCounter.sol +20 -0
  394. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  395. package/contracts/instance/base/ObjectSet.sol +78 -0
  396. package/contracts/instance/module/IAccess.sol +29 -21
  397. package/contracts/instance/module/IBundle.sol +8 -7
  398. package/contracts/instance/module/IComponents.sol +51 -0
  399. package/contracts/instance/module/IDistribution.sol +6 -4
  400. package/contracts/instance/module/IPolicy.sol +59 -19
  401. package/contracts/instance/module/IRisk.sol +2 -1
  402. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  403. package/contracts/oracle/BasicOracle.sol +47 -0
  404. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  405. package/contracts/oracle/IOracle.sol +36 -0
  406. package/contracts/oracle/IOracleComponent.sol +33 -0
  407. package/contracts/oracle/IOracleService.sol +66 -0
  408. package/contracts/oracle/Oracle.sol +156 -0
  409. package/contracts/oracle/OracleService.sol +309 -0
  410. package/contracts/oracle/OracleServiceManager.sol +39 -0
  411. package/contracts/pool/BasicPool.sol +175 -0
  412. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  413. package/contracts/pool/BundleService.sol +425 -0
  414. package/contracts/pool/BundleServiceManager.sol +39 -0
  415. package/contracts/pool/IBundleService.sol +121 -0
  416. package/contracts/pool/IPoolComponent.sol +62 -0
  417. package/contracts/pool/IPoolService.sol +153 -0
  418. package/contracts/pool/Pool.sol +345 -0
  419. package/contracts/pool/PoolService.sol +615 -0
  420. package/contracts/pool/PoolServiceManager.sol +39 -0
  421. package/contracts/product/ApplicationService.sol +259 -0
  422. package/contracts/product/ApplicationServiceManager.sol +38 -0
  423. package/contracts/product/BasicProduct.sol +51 -0
  424. package/contracts/product/BasicProductAuthorization.sol +41 -0
  425. package/contracts/product/ClaimService.sol +683 -0
  426. package/contracts/product/ClaimServiceManager.sol +38 -0
  427. package/contracts/product/IApplicationService.sol +66 -0
  428. package/contracts/product/IClaimService.sol +136 -0
  429. package/contracts/product/IPolicyService.sol +90 -0
  430. package/contracts/product/IPricingService.sol +39 -0
  431. package/contracts/product/IProductComponent.sol +62 -0
  432. package/contracts/product/IRiskService.sol +33 -0
  433. package/contracts/product/PolicyService.sol +736 -0
  434. package/contracts/product/PolicyServiceManager.sol +39 -0
  435. package/contracts/product/PricingService.sol +303 -0
  436. package/contracts/product/PricingServiceManager.sol +39 -0
  437. package/contracts/product/Product.sol +463 -0
  438. package/contracts/product/RiskService.sol +107 -0
  439. package/contracts/product/RiskServiceManager.sol +39 -0
  440. package/contracts/registry/ChainNft.sol +82 -35
  441. package/contracts/registry/IRegistry.sol +133 -17
  442. package/contracts/registry/IRegistryService.sol +47 -20
  443. package/contracts/registry/ITransferInterceptor.sol +1 -1
  444. package/contracts/registry/Registry.sol +569 -267
  445. package/contracts/registry/RegistryAdmin.sol +457 -0
  446. package/contracts/registry/RegistryService.sol +124 -322
  447. package/contracts/registry/RegistryServiceManager.sol +27 -38
  448. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  449. package/contracts/registry/ReleaseRegistry.sol +486 -0
  450. package/contracts/registry/ServiceAuthorizationV3.sol +207 -0
  451. package/contracts/registry/TokenRegistry.sol +315 -0
  452. package/contracts/shared/Component.sol +219 -0
  453. package/contracts/shared/ComponentService.sol +699 -0
  454. package/contracts/shared/ComponentServiceManager.sol +38 -0
  455. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  456. package/contracts/shared/ContractLib.sol +224 -0
  457. package/contracts/shared/IComponent.sol +62 -0
  458. package/contracts/shared/IComponentService.sol +116 -0
  459. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  460. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  461. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  462. package/contracts/shared/INftOwnable.sol +15 -12
  463. package/contracts/shared/IPolicyHolder.sol +35 -0
  464. package/contracts/shared/IRegisterable.sol +15 -6
  465. package/contracts/shared/IRegistryLinked.sol +11 -0
  466. package/contracts/shared/IService.sol +25 -0
  467. package/contracts/shared/InitializableERC165.sol +27 -0
  468. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  469. package/contracts/shared/KeyValueStore.sol +131 -0
  470. package/contracts/shared/Lifecycle.sol +88 -0
  471. package/contracts/shared/NftIdSet.sol +65 -0
  472. package/contracts/shared/NftOwnable.sol +75 -84
  473. package/contracts/shared/PolicyHolder.sol +62 -0
  474. package/contracts/shared/Registerable.sol +34 -40
  475. package/contracts/shared/RegistryLinked.sol +38 -0
  476. package/contracts/shared/Service.sol +84 -0
  477. package/contracts/shared/TokenHandler.sol +374 -12
  478. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  479. package/contracts/staking/IStaking.sol +173 -0
  480. package/contracts/staking/IStakingService.sol +157 -0
  481. package/contracts/staking/StakeManagerLib.sol +224 -0
  482. package/contracts/staking/Staking.sol +515 -0
  483. package/contracts/staking/StakingLifecycle.sol +23 -0
  484. package/contracts/staking/StakingManager.sol +52 -0
  485. package/contracts/staking/StakingReader.sol +190 -0
  486. package/contracts/staking/StakingService.sol +440 -0
  487. package/contracts/staking/StakingServiceManager.sol +44 -0
  488. package/contracts/staking/StakingStore.sol +605 -0
  489. package/contracts/staking/TargetManagerLib.sol +211 -0
  490. package/contracts/{types → type}/AddressSet.sol +1 -1
  491. package/contracts/type/Amount.sol +150 -0
  492. package/contracts/{types → type}/Blocknumber.sol +27 -3
  493. package/contracts/type/ClaimId.sol +80 -0
  494. package/contracts/{types → type}/DistributorType.sol +2 -2
  495. package/contracts/{types → type}/Fee.sol +33 -23
  496. package/contracts/{types → type}/Key32.sol +2 -2
  497. package/contracts/type/Key32Set.sol +62 -0
  498. package/contracts/{types → type}/NftId.sol +28 -15
  499. package/contracts/type/NftIdSet.sol +62 -0
  500. package/contracts/type/ObjectType.sol +290 -0
  501. package/contracts/type/PayoutId.sol +82 -0
  502. package/contracts/{types → type}/Referral.sol +6 -1
  503. package/contracts/type/RequestId.sol +75 -0
  504. package/contracts/{types → type}/RiskId.sol +31 -5
  505. package/contracts/type/RoleId.sol +162 -0
  506. package/contracts/type/Seconds.sol +101 -0
  507. package/contracts/type/Selector.sol +102 -0
  508. package/contracts/{types → type}/StateId.sol +52 -4
  509. package/contracts/type/String.sol +53 -0
  510. package/contracts/{types → type}/Timestamp.sol +34 -15
  511. package/contracts/{types → type}/UFixed.sol +41 -121
  512. package/contracts/{types → type}/Version.sol +8 -2
  513. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  514. package/contracts/upgradeability/ProxyManager.sol +232 -0
  515. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  516. package/contracts/upgradeability/Versionable.sol +59 -0
  517. package/package.json +11 -7
  518. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  519. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  520. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  521. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  522. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  523. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  524. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  525. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  526. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  527. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  528. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  529. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  530. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  531. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  532. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  533. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  534. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  535. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  536. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  537. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  538. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  539. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  540. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  541. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  542. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  543. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  544. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  545. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  546. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  547. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  548. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  549. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  550. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  551. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  552. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  553. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  554. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  556. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  558. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  560. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  562. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  564. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  566. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  568. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  570. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  572. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  573. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  574. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  575. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  576. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  577. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  578. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  579. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  580. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  581. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  582. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  583. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  584. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  585. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  586. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  587. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  588. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  589. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  590. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  593. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  596. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  598. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  599. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  600. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  601. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  602. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  603. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  604. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  605. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  606. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  607. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  608. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  609. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  610. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  612. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  613. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  614. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  616. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  618. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  620. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  622. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  624. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  625. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  626. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  627. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  628. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  630. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  632. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  634. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  636. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  638. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  640. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  641. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  642. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  644. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  646. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  648. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  650. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  652. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  654. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  656. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  658. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  660. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  662. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  664. package/contracts/components/BaseComponent.sol +0 -86
  665. package/contracts/components/Distribution.sol +0 -166
  666. package/contracts/components/IBaseComponent.sol +0 -24
  667. package/contracts/components/IDistributionComponent.sol +0 -43
  668. package/contracts/components/IPoolComponent.sol +0 -62
  669. package/contracts/components/IProductComponent.sol +0 -35
  670. package/contracts/components/Pool.sol +0 -259
  671. package/contracts/components/Product.sol +0 -297
  672. package/contracts/experiment/cloning/Cloner.sol +0 -47
  673. package/contracts/experiment/errors/Require.sol +0 -38
  674. package/contracts/experiment/errors/Revert.sol +0 -44
  675. package/contracts/experiment/inheritance/A.sol +0 -53
  676. package/contracts/experiment/inheritance/B.sol +0 -28
  677. package/contracts/experiment/inheritance/C.sol +0 -34
  678. package/contracts/experiment/inheritance/IA.sol +0 -13
  679. package/contracts/experiment/inheritance/IB.sol +0 -10
  680. package/contracts/experiment/inheritance/IC.sol +0 -12
  681. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  682. package/contracts/experiment/statemachine/ISM.sol +0 -25
  683. package/contracts/experiment/statemachine/SM.sol +0 -57
  684. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  685. package/contracts/experiment/types/TypeA.sol +0 -47
  686. package/contracts/experiment/types/TypeB.sol +0 -29
  687. package/contracts/instance/AccessManagedSimple.sol +0 -114
  688. package/contracts/instance/AccessManagerSimple.sol +0 -682
  689. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  690. package/contracts/instance/InstanceAccessManager.sol +0 -288
  691. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  692. package/contracts/instance/base/IInstanceBase.sol +0 -23
  693. package/contracts/instance/base/IService.sol +0 -15
  694. package/contracts/instance/base/KeyValueStore.sol +0 -172
  695. package/contracts/instance/base/Lifecycle.sol +0 -100
  696. package/contracts/instance/base/ServiceBase.sol +0 -44
  697. package/contracts/instance/module/ISetup.sol +0 -43
  698. package/contracts/instance/module/ITreasury.sol +0 -23
  699. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  700. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  701. package/contracts/instance/service/IDistributionService.sol +0 -12
  702. package/contracts/instance/service/IPoolService.sol +0 -37
  703. package/contracts/instance/service/IProductService.sol +0 -107
  704. package/contracts/shared/ContractDeployerLib.sol +0 -72
  705. package/contracts/shared/ERC165.sol +0 -21
  706. package/contracts/shared/ProxyManager.sol +0 -94
  707. package/contracts/shared/Versionable.sol +0 -147
  708. package/contracts/test/TestFee.sol +0 -25
  709. package/contracts/test/TestRegisterable.sol +0 -18
  710. package/contracts/test/TestRoleId.sol +0 -14
  711. package/contracts/test/TestService.sol +0 -26
  712. package/contracts/test/TestToken.sol +0 -26
  713. package/contracts/test/TestVersion.sol +0 -44
  714. package/contracts/test/TestVersionable.sol +0 -17
  715. package/contracts/types/ChainId.sol +0 -38
  716. package/contracts/types/NftIdSet.sol +0 -60
  717. package/contracts/types/NumberId.sol +0 -52
  718. package/contracts/types/ObjectType.sol +0 -152
  719. package/contracts/types/RoleId.sol +0 -82
@@ -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
+ }
@@ -1,29 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
-
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
4
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
5
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
6
+ import {ObjectType} from "../type/ObjectType.sol";
7
+ import {VersionPart, VersionPartLib} from "../type/Version.sol";
9
8
 
10
9
  import {IRegistry} from "../registry/IRegistry.sol";
11
10
  import {IRegisterable} from "./IRegisterable.sol";
12
- import {Versionable} from "./Versionable.sol";
13
-
14
- import {ERC165} from "./ERC165.sol";
15
11
 
16
12
  contract Registerable is
17
- ERC165,
18
- Initializable,
19
13
  NftOwnable,
20
14
  IRegisterable
21
15
  {
16
+ uint256 public constant GIF_RELEASE = 3;
17
+
22
18
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
23
19
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
24
20
 
25
- error ErrorRegisterableNotRegistry(address registryAddress);
26
-
27
21
  struct RegisterableStorage {
28
22
  NftId _parentNftId;
29
23
  ObjectType _objectType;
@@ -31,59 +25,59 @@ contract Registerable is
31
25
  bytes _data;
32
26
  }
33
27
 
34
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
35
- assembly {
36
- $.slot := REGISTERABLE_LOCATION_V1
37
- }
38
- }
39
-
40
28
  function _initializeRegisterable(
41
- address registryAddress,
29
+ address registry,
42
30
  NftId parentNftId,
43
31
  ObjectType objectType,
44
32
  bool isInterceptor,
45
33
  address initialOwner,
46
- bytes memory data
34
+ bytes memory data // writeonly data that will saved in the object info record of the registry
47
35
  )
48
36
  internal
49
- //onlyInitializing//TODO uncomment when "fully" upgradeable
50
37
  virtual
38
+ onlyInitializing()
51
39
  {
52
40
  _initializeNftOwnable(
53
- initialOwner,
54
- registryAddress);
41
+ registry,
42
+ initialOwner);
55
43
 
56
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
57
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
44
+ RegisterableStorage storage $;
45
+ assembly {
46
+ $.slot := REGISTERABLE_LOCATION_V1
47
+ }
58
48
 
59
- RegisterableStorage storage $ = _getRegisterableStorage();
60
49
  $._parentNftId = parentNftId;
61
50
  $._objectType = objectType;
62
51
  $._isInterceptor = isInterceptor;
63
52
  $._data = data;
53
+ }
54
+
64
55
 
65
- _registerInterface(type(IRegisterable).interfaceId);
56
+ /// @inheritdoc IRegisterable
57
+ function getRelease() public virtual pure returns (VersionPart release) {
58
+ return VersionPartLib.toVersionPart(GIF_RELEASE);
66
59
  }
67
60
 
68
61
 
62
+ /// @inheritdoc IRegisterable
69
63
  function getInitialInfo()
70
64
  public
71
65
  view
72
66
  virtual
73
- returns (IRegistry.ObjectInfo memory, bytes memory data)
67
+ returns (IRegistry.ObjectInfo memory info)
74
68
  {
75
- RegisterableStorage storage $ = _getRegisterableStorage();
76
- return (
77
- IRegistry.ObjectInfo(
78
- getNftId(),
79
- $._parentNftId,
80
- $._objectType,
81
- $._isInterceptor,
82
- address(this),
83
- getOwner(),
84
- $._data
85
- ),
86
- bytes("")
87
- );
69
+ RegisterableStorage storage $;
70
+ assembly {
71
+ $.slot := REGISTERABLE_LOCATION_V1
72
+ }
73
+
74
+ info = IRegistry.ObjectInfo(
75
+ NftIdLib.zero(),
76
+ $._parentNftId,
77
+ $._objectType,
78
+ $._isInterceptor,
79
+ address(this),
80
+ getOwner(),
81
+ $._data);
88
82
  }
89
83
  }
@@ -0,0 +1,38 @@
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
+
6
+ import {ContractLib} from "../shared/ContractLib.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
9
+
10
+ contract RegistryLinked is
11
+ Initializable,
12
+ IRegistryLinked
13
+ {
14
+
15
+ // priorize simplicity and size over using standard upgradeability structs
16
+ IRegistry private _registry;
17
+
18
+ /// @dev initialization for upgradable contracts
19
+ // used in _initializeRegisterable
20
+ function _initializeRegistryLinked(
21
+ address registry
22
+ )
23
+ internal
24
+ virtual
25
+ onlyInitializing()
26
+ {
27
+ if (!ContractLib.isRegistry(registry)) {
28
+ revert ErrorNotRegistry(registry);
29
+ }
30
+
31
+ _registry = IRegistry(registry);
32
+ }
33
+
34
+
35
+ function getRegistry() public view returns (IRegistry) {
36
+ return _registry;
37
+ }
38
+ }
@@ -0,0 +1,84 @@
1
+ // SPDX-License-Identifier: Apache-2.0
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";
7
+
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IService} from "./IService.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
+
17
+
18
+ /// @dev service base contract
19
+ abstract contract Service is
20
+ Registerable,
21
+ Versionable,
22
+ AccessManagedUpgradeable,
23
+ ReentrancyGuardUpgradeable,
24
+ IService
25
+ {
26
+
27
+ function _initializeService(
28
+ address registry,
29
+ address authority, // real authority for registry service adress(0) for other services
30
+ address initialOwner
31
+ )
32
+ internal
33
+ virtual
34
+ onlyInitializing()
35
+ {
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
55
+
56
+
57
+ _registerInterface(type(IAccessManaged).interfaceId);
58
+ _registerInterface(type(IService).interfaceId);
59
+ }
60
+
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());
83
+ }
84
+ }