@etherisc/gif-next 0.0.2-f7eda15-119 → 0.0.2-f7fa064-035

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 (707) hide show
  1. package/README.md +59 -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/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  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 +250 -1556
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +318 -202
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +338 -2560
  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 +1054 -377
  68. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +415 -444
  70. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -106
  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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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 +25 -150
  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/{components/IPoolComponent.sol/IPoolComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +345 -326
  102. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  103. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +291 -348
  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/{instance/service → pool}/IBundleService.sol/IBundleService.json +497 -252
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  121. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +398 -408
  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/{components/IProductComponent.sol/IProductComponent.json → product/BasicProduct.sol/BasicProduct.json} +653 -228
  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/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +238 -223
  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/base/ComponentService.sol/ComponentService.json → product/IPricingService.sol/IPricingService.json} +252 -277
  150. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  151. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +424 -361
  152. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IRiskService.sol/IRiskService.json} +148 -160
  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 +463 -25
  172. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +268 -230
  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 +951 -122
  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 +333 -287
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +344 -95
  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 +349 -82
  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/{components/IComponent.sol/IComponent.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +180 -161
  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/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +203 -227
  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/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +302 -227
  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 -26
  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 +106 -147
  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/{components/Distribution.sol/Distribution.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +303 -323
  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 +74 -36
  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 +95 -55
  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 +137 -171
  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/{BundleManager.sol → BundleSet.sol} +33 -32
  353. package/contracts/instance/IInstance.sol +46 -52
  354. package/contracts/instance/IInstanceService.sol +52 -22
  355. package/contracts/instance/Instance.sol +167 -204
  356. package/contracts/instance/InstanceAdmin.sol +277 -0
  357. package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
  358. package/contracts/instance/InstanceReader.sol +264 -62
  359. package/contracts/instance/InstanceService.sol +300 -321
  360. package/contracts/instance/InstanceServiceManager.sol +14 -29
  361. package/contracts/instance/InstanceStore.sol +287 -0
  362. package/contracts/instance/base/BalanceStore.sol +123 -0
  363. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  364. package/contracts/instance/base/ObjectCounter.sol +21 -0
  365. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  366. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +19 -24
  367. package/contracts/instance/module/IAccess.sol +19 -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/TestToken.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 +79 -34
  412. package/contracts/registry/IRegistry.sol +99 -26
  413. package/contracts/registry/IRegistryService.sol +38 -41
  414. package/contracts/registry/ITransferInterceptor.sol +1 -1
  415. package/contracts/registry/Registry.sol +470 -205
  416. package/contracts/registry/RegistryAdmin.sol +448 -0
  417. package/contracts/registry/RegistryService.sol +118 -139
  418. package/contracts/registry/RegistryServiceManager.sol +24 -33
  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 +263 -60
  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 +14 -3
  436. package/contracts/shared/IRegistryLinked.sol +11 -0
  437. package/contracts/shared/IService.sol +15 -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 -87
  444. package/contracts/shared/PolicyHolder.sol +62 -0
  445. package/contracts/shared/Registerable.sol +27 -28
  446. package/contracts/shared/RegistryLinked.sol +44 -0
  447. package/contracts/shared/Service.sol +57 -33
  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/{types → type}/NftIdSet.sol +2 -2
  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/Component.sol/Component.dbg.json +0 -4
  488. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  489. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  492. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  493. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  494. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  497. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  499. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  501. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  503. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  505. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  507. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  509. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  511. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  512. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  513. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  514. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  515. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  516. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  518. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  520. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  521. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  522. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  523. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  524. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  525. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  526. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  527. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  528. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  529. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  530. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  531. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  532. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  533. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  534. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  535. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  536. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  537. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  539. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  540. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  541. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  544. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  545. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  546. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  548. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  552. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  554. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  556. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  558. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -494
  563. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  566. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  568. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  570. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  572. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  574. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  575. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  576. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  577. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  578. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  579. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  580. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  581. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  582. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  583. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  584. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  585. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  586. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  587. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -362
  588. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  589. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  590. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  591. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  592. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  593. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  594. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  595. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  596. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  597. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  598. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  600. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  601. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  602. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  603. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  604. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  605. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  606. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  607. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  608. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  609. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  610. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  612. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  614. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  616. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  618. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  619. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  620. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  622. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  623. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  624. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  626. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  628. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  630. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  632. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  634. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  636. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  638. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  640. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  642. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  644. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  646. package/contracts/components/Component.sol +0 -216
  647. package/contracts/components/Distribution.sol +0 -150
  648. package/contracts/components/IComponent.sol +0 -43
  649. package/contracts/components/IDistributionComponent.sol +0 -47
  650. package/contracts/components/IPoolComponent.sol +0 -60
  651. package/contracts/components/IProductComponent.sol +0 -39
  652. package/contracts/components/Pool.sol +0 -227
  653. package/contracts/components/Product.sol +0 -265
  654. package/contracts/experiment/cloning/Cloner.sol +0 -47
  655. package/contracts/experiment/errors/Require.sol +0 -38
  656. package/contracts/experiment/errors/Revert.sol +0 -44
  657. package/contracts/experiment/inheritance/A.sol +0 -53
  658. package/contracts/experiment/inheritance/B.sol +0 -28
  659. package/contracts/experiment/inheritance/C.sol +0 -34
  660. package/contracts/experiment/inheritance/IA.sol +0 -13
  661. package/contracts/experiment/inheritance/IB.sol +0 -10
  662. package/contracts/experiment/inheritance/IC.sol +0 -12
  663. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  664. package/contracts/experiment/statemachine/ISM.sol +0 -25
  665. package/contracts/experiment/statemachine/SM.sol +0 -57
  666. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  667. package/contracts/experiment/types/TypeA.sol +0 -47
  668. package/contracts/experiment/types/TypeB.sol +0 -29
  669. package/contracts/instance/InstanceAccessManager.sol +0 -298
  670. package/contracts/instance/base/ComponentService.sol +0 -134
  671. package/contracts/instance/base/KeyValueStore.sol +0 -172
  672. package/contracts/instance/base/Lifecycle.sol +0 -100
  673. package/contracts/instance/module/ISetup.sol +0 -46
  674. package/contracts/instance/module/ITreasury.sol +0 -23
  675. package/contracts/instance/service/BundleService.sol +0 -293
  676. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  677. package/contracts/instance/service/DistributionService.sol +0 -106
  678. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  679. package/contracts/instance/service/IBundleService.sol +0 -44
  680. package/contracts/instance/service/IDistributionService.sol +0 -12
  681. package/contracts/instance/service/IPolicyService.sol +0 -94
  682. package/contracts/instance/service/IPoolService.sol +0 -20
  683. package/contracts/instance/service/IProductService.sol +0 -40
  684. package/contracts/instance/service/PolicyService.sol +0 -538
  685. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  686. package/contracts/instance/service/PoolService.sol +0 -110
  687. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  688. package/contracts/instance/service/ProductService.sol +0 -234
  689. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  690. package/contracts/registry/RegistryAccessManager.sol +0 -216
  691. package/contracts/registry/ReleaseManager.sol +0 -332
  692. package/contracts/shared/ContractDeployerLib.sol +0 -72
  693. package/contracts/shared/ERC165.sol +0 -25
  694. package/contracts/shared/ProxyManager.sol +0 -94
  695. package/contracts/shared/Versionable.sol +0 -147
  696. package/contracts/test/TestFee.sol +0 -25
  697. package/contracts/test/TestRegisterable.sol +0 -18
  698. package/contracts/test/TestRoleId.sol +0 -14
  699. package/contracts/test/TestService.sol +0 -25
  700. package/contracts/test/TestVersion.sol +0 -44
  701. package/contracts/test/TestVersionable.sol +0 -17
  702. package/contracts/test/Usdc.sol +0 -26
  703. package/contracts/types/ChainId.sol +0 -38
  704. package/contracts/types/NumberId.sol +0 -52
  705. package/contracts/types/ObjectType.sol +0 -152
  706. package/contracts/types/RoleId.sol +0 -90
  707. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
+
8
+ contract ComponentServiceManager is ProxyManager {
9
+
10
+ ComponentService private _componentService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ ComponentService svc = new ComponentService();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _componentService = ComponentService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getComponentService()
32
+ external
33
+ view
34
+ returns (ComponentService)
35
+ {
36
+ return _componentService;
37
+ }
38
+ }
@@ -0,0 +1,126 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {InstanceReader} from "../instance/InstanceReader.sol";
6
+ import {IRegistry} from "../registry/IRegistry.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
9
+ import {Service} from "../shared/Service.sol";
10
+
11
+
12
+ abstract contract ComponentVerifyingService is
13
+ Service
14
+ {
15
+ error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
16
+ error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
17
+
18
+ /// @dev based on the sender address returns the corresponding components nft id, info and instance.
19
+ /// the function reverts iff:
20
+ /// - there is no such component
21
+ /// - the component has the wrong object type
22
+ /// - the component is locked
23
+ function _getAndVerifyActiveComponent(
24
+ ObjectType expectedType // assume always of `component` type
25
+ )
26
+ internal
27
+ view
28
+ returns(
29
+ NftId componentNftId,
30
+ IRegistry.ObjectInfo memory componentInfo,
31
+ IInstance instance
32
+ )
33
+ {
34
+ componentNftId = getRegistry().getNftIdForAddress(msg.sender);
35
+ (componentInfo, instance) = _getAndVerifyComponentInfo(
36
+ componentNftId,
37
+ expectedType,
38
+ true); // only active
39
+ }
40
+
41
+
42
+ /// @dev returns the component info and instance contract reference given a component nft id
43
+ /// the function reverts iff:
44
+ /// - there is no such component
45
+ /// - the component has the wrong object type
46
+ function _getAndVerifyComponentInfo(
47
+ NftId componentNftId,
48
+ ObjectType expectedType, // assume always of `component` type
49
+ bool onlyActive
50
+ )
51
+ internal
52
+ virtual
53
+ view
54
+ returns(
55
+ IRegistry.ObjectInfo memory info,
56
+ IInstance instance
57
+ )
58
+ {
59
+ IRegistry registry = getRegistry();
60
+ info = registry.getObjectInfo(componentNftId);
61
+
62
+ // if not COMPONENT require exact match
63
+ if(expectedType != COMPONENT()) {
64
+ // ensure component is of expected type
65
+ if(info.objectType != expectedType) {
66
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
67
+ componentNftId,
68
+ expectedType,
69
+ info.objectType);
70
+ }
71
+ } else {
72
+ if(!(info.objectType == PRODUCT()
73
+ || info.objectType == POOL()
74
+ || info.objectType == DISTRIBUTION()
75
+ || info.objectType == ORACLE()
76
+ ))
77
+ {
78
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
79
+ componentNftId,
80
+ expectedType,
81
+ info.objectType);
82
+ }
83
+ }
84
+
85
+ instance = _getInstanceForComponent(registry, info);
86
+
87
+ // ensure component is not locked
88
+ if (onlyActive) {
89
+ if (instance.getInstanceAdmin().isTargetLocked(info.objectAddress)) {
90
+ revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
91
+ }
92
+ }
93
+ }
94
+
95
+
96
+ function _getInstanceForComponent(IRegistry registry, IRegistry.ObjectInfo memory componentInfo)
97
+ internal
98
+ view
99
+ returns (IInstance instance)
100
+ {
101
+ // parent of product is instance
102
+ if (componentInfo.objectType == PRODUCT()) {
103
+ instance = _getInstance(registry, componentInfo.parentNftId);
104
+ // parent of other types is product
105
+ } else {
106
+ instance = _getInstance(
107
+ registry,
108
+ registry.getObjectInfo(
109
+ componentInfo.parentNftId).parentNftId);
110
+ }
111
+ }
112
+
113
+
114
+ /// @dev returns the product nft id from the registry.
115
+ /// assumes the component nft id is valid and represents a product linked component.
116
+ function _getProductNftId(NftId componentNftId) internal view returns (NftId productNftId) {
117
+ productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
118
+ }
119
+
120
+
121
+ /// @dev returns an IInstance contract reference for the specified instance nft id
122
+ function _getInstance(IRegistry registry, NftId instanceNftId) internal view returns (IInstance) {
123
+ return IInstance(
124
+ registry.getObjectAddress(instanceNftId));
125
+ }
126
+ }
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
8
+
9
+ library ContractLib {
10
+
11
+ function isPolicyHolder(address target) external view returns (bool) {
12
+ return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
13
+ }
14
+
15
+ function isAccessManaged(address target) external view returns (bool) {
16
+ if (!isContract(target)) {
17
+ return false;
18
+ }
19
+
20
+ (bool success, ) = target.staticcall(
21
+ abi.encodeWithSelector(
22
+ IAccessManaged.authority.selector));
23
+
24
+ return success;
25
+ }
26
+
27
+ function isContract(address target) public view returns (bool) {
28
+ uint256 size;
29
+ assembly {
30
+ size := extcodesize(target)
31
+ }
32
+ return size > 0;
33
+ }
34
+
35
+ function supportsInterface(address target, bytes4 interfaceId) external view returns (bool) {
36
+ return ERC165Checker.supportsInterface(target, interfaceId);
37
+ }
38
+ }
@@ -0,0 +1,74 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IRegisterable} from "../shared/IRegisterable.sol";
10
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
+ import {TokenHandler} from "../shared/TokenHandler.sol";
12
+
13
+ /// @dev component base class
14
+ /// component examples are staking, product, distribution, pool and oracle
15
+ interface IComponent is
16
+ IAccessManaged,
17
+ IRegisterable,
18
+ ITransferInterceptor
19
+ {
20
+ error ErrorComponentProductNftIdZero();
21
+ error ErrorComponentProductNftIdNonzero();
22
+ error ErrorComponentNameLengthZero();
23
+
24
+ error ErrorComponentNotChainNft(address caller);
25
+
26
+ error ErrorComponentTokenAddressNonzero();
27
+ error ErrorComponentTokenAddressZero();
28
+ error ErrorComponentWalletAddressZero();
29
+ error ErrorComponentWalletAddressIsSameAsCurrent();
30
+ error ErrorComponentWalletNotComponent();
31
+
32
+ event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
33
+ event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
34
+ event LogComponentTokenHandlerApproved(address token, Amount limit, bool isMaxAmount);
35
+
36
+ /// @dev approves token hanlder to spend up to the specified amount of tokens
37
+ /// reverts if component wallet is not component itself
38
+ /// only component owner (nft holder) is authorizes to call this function
39
+ function approveTokenHandler(Amount spendingLimitAmount) external;
40
+
41
+ /// @dev sets the wallet address for the component.
42
+ /// if the current wallet has tokens, these will be transferred.
43
+ /// if the new wallet address is externally owned, an approval from the
44
+ /// owner of the external wallet to the tokenhandler of the component that
45
+ /// covers the current component balance must exist
46
+ function setWallet(address walletAddress) external;
47
+
48
+ /// @dev returns the name of this component
49
+ /// to successfully register the component with an instance the name MUST be unique in the linked instance
50
+ function getName() external view returns (string memory name);
51
+
52
+ /// @dev defines which ERC20 token is used by this component
53
+ function getToken() external view returns (IERC20Metadata token);
54
+
55
+ /// @dev returns token handler for this component
56
+ function getTokenHandler() external view returns (TokenHandler tokenHandler);
57
+
58
+ /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
59
+ /// the default address is the component token address
60
+ function getWallet() external view returns (address walletAddress);
61
+
62
+ /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
63
+ function isNftInterceptor() external view returns(bool isInterceptor);
64
+
65
+ /// @dev returns true iff this component is registered with the registry
66
+ function isRegistered() external view returns (bool);
67
+
68
+ /// @dev returns the component infos for this component
69
+ /// for a non registered component the function returns getInitialComponentInfo()
70
+ function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
71
+
72
+ /// @dev returns the iniital component infos for this component
73
+ function getInitialComponentInfo() external view returns (IComponents.ComponentInfo memory info);
74
+ }
@@ -0,0 +1,120 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+
5
+ import {Amount} from "../type/Amount.sol";
6
+ import {Fee} from "../type/Fee.sol";
7
+ import {InstanceStore} from "../instance/InstanceStore.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {UFixed} from "../type/UFixed.sol";
12
+ import {VersionPart} from "../type/Version.sol";
13
+
14
+ /// @dev component base class
15
+ /// component examples are staking, product, distribution, pool and oracle
16
+ interface IComponentService is
17
+ IService
18
+ {
19
+ error ErrorComponentServiceNotInstanceLinkedComponent(address component);
20
+ error ErrorComponentServiceSenderNotRegistered(address sender);
21
+ error ErrorComponentServiceNotComponent(address component);
22
+ error ErrorComponentServiceTypeNotSupported(address component, ObjectType invalidType);
23
+ error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
24
+ error ErrorComponentServiceAlreadyRegistered(address component);
25
+ error ErrorComponentServiceReleaseMismatch(address component, VersionPart componentRelease, VersionPart parentRelease);
26
+ error ErrorComponentServiceSenderNotComponentParent(NftId senderNftId, NftId compnentParentNftId);
27
+ error ErrorComponentServiceParentNotInstance(NftId nftId, ObjectType objectType);
28
+ error ErrorComponentServiceParentNotProduct(NftId nftId, ObjectType objectType);
29
+
30
+ error ErrorProductServiceNoDistributionExpected(NftId productNftId);
31
+ error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
32
+ error ErrorProductServiceNoOraclesExpected(NftId productNftId);
33
+ error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
34
+ error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
35
+
36
+ error ErrorComponentServiceNewWalletAddressZero();
37
+ error ErrorComponentServiceWalletAddressZero();
38
+ error ErrorComponentServiceWalletAddressIsSameAsCurrent();
39
+
40
+ error ErrorComponentServiceWithdrawAmountIsZero();
41
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
42
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
43
+
44
+ event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
45
+ event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
46
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
47
+ event LogComponentServiceProductFeesUpdated(NftId productNftId);
48
+ event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
49
+ event LogComponentServicePoolFeesUpdated(NftId poolNftId);
50
+ event LogComponentServiceUpdateFee(
51
+ NftId nftId,
52
+ string feeName,
53
+ UFixed previousFractionalFee,
54
+ uint256 previousFixedFee,
55
+ UFixed newFractionalFee,
56
+ uint256 newFixedFee
57
+ );
58
+
59
+ //-------- component ----------------------------------------------------//
60
+
61
+ /// @dev sets the components associated wallet address
62
+ function setWallet(address newWallet) external;
63
+
64
+ /// @dev locks the component associated with the caller
65
+ function lock() external;
66
+
67
+ /// @dev unlocks the component associated with the caller
68
+ function unlock() external;
69
+
70
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
71
+ /// @param withdrawAmount the amount to withdraw
72
+ /// @return withdrawnAmount the amount that was actually withdrawn
73
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
74
+
75
+ /// @dev Registers the provided component with the product (sender)
76
+ function registerComponent(address component) external returns (NftId componentNftId);
77
+
78
+ //-------- product ------------------------------------------------------//
79
+
80
+ /// @dev Registers the specified product component for the instance (sender)
81
+ function registerProduct(address product) external returns (NftId productNftId);
82
+
83
+ function setProductFees(
84
+ Fee memory productFee, // product fee on net premium
85
+ Fee memory processingFee // product fee on payout amounts
86
+ ) external;
87
+
88
+ function increaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
89
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
90
+
91
+ //-------- distribution -------------------------------------------------//
92
+
93
+ function setDistributionFees(
94
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
95
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
96
+ ) external;
97
+
98
+ function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
99
+ function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
100
+
101
+ //-------- distributor --------------------------------------------------//
102
+ function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
103
+ function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
104
+
105
+ //-------- pool ---------------------------------------------------------//
106
+
107
+ function setPoolFees(
108
+ Fee memory poolFee, // pool fee on net premium
109
+ Fee memory stakingFee, // pool fee on staked capital from investor
110
+ Fee memory performanceFee // pool fee on profits from capital investors
111
+ ) external;
112
+
113
+ function increasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
114
+ function decreasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
115
+
116
+ //-------- bundle -------------------------------------------------------//
117
+ function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
118
+ function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
119
+
120
+ }
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {IComponent} from "../shared/IComponent.sol";
9
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {ObjectType} from "../type/ObjectType.sol";
13
+
14
+ /// @dev component base class
15
+ /// component examples are product, distribution, pool and oracle
16
+ interface IInstanceLinkedComponent is
17
+ IComponent
18
+ {
19
+ error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
20
+ error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
21
+
22
+ /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
23
+ /// only component owner (nft holder) is authorizes to call this function
24
+ function lock() external;
25
+
26
+ /// @dev unlocks component to (re-)enable functions that may change state related to this component
27
+ /// only component owner (nft holder) is authorizes to call this function
28
+ function unlock() external;
29
+
30
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
31
+ /// @param amount the amount to withdraw
32
+ /// @return withdrawnAmount the amount that was actually withdrawn
33
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
34
+
35
+ /// @dev defines the instance to which this component is linked to
36
+ function getInstance() external view returns (IInstance instance);
37
+
38
+ /// @dev returns the initial component authorization specification.
39
+ function getAuthorization() external view returns (IAuthorization authorization);
40
+
41
+ }
@@ -1,17 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
- import {Key32, KeyId} from "../../types/Key32.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
- import {ObjectType} from "../../types/ObjectType.sol";
8
- import {StateId} from "../../types/StateId.sol";
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId} from "../type/StateId.sol";
9
9
 
10
10
  import {ILifecycle} from "./ILifecycle.sol";
11
11
 
12
- // TODO remove - internal only?
13
12
  interface IKeyValueStore is ILifecycle {
14
13
 
14
+ error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
+ error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreNoLifecycle(ObjectType objectType);
17
+ error ErrorKeyValueStoreStateZero(Key32 key);
18
+ error ErrorKeyValueStoreNotExisting(Key32 key);
19
+
20
+ event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
21
+ event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
22
+ event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
23
+
15
24
  struct Value {
16
25
  Metadata metadata;
17
26
  bytes data;
@@ -24,15 +33,11 @@ interface IKeyValueStore is ILifecycle {
24
33
  // eg account outside gif objects that initiated the tx
25
34
  // implies the caller needs to be propagated through all calls up to key values store itself
26
35
  // to always have the instance address there doesn't seem to make sense
27
- address updatedBy;
36
+ // address updatedBy;
28
37
  Blocknumber updatedIn;
29
38
  Blocknumber createdIn;
30
39
  }
31
40
 
32
- event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
33
- event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
34
- event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
35
-
36
41
  // generic state changing functions
37
42
  // function create(Key32 key, bytes memory data) external;
38
43
  // function update(Key32 key, bytes memory data, StateId state) external;
@@ -1,14 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType} from "../../types/ObjectType.sol";
6
- import {StateId} from "../../types/StateId.sol";
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
10
+ error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
11
11
  error ErrorInvalidStateTransition(
12
+ address contractAddress,
12
13
  ObjectType objectType,
13
14
  StateId fromStateId,
14
15
  StateId toStateId
@@ -1,22 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {NftId} from "../types/NftId.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
5
 
7
- interface INftOwnable {
8
- error ErrorNotOwner(address account);
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
- error ErrorAlreadyLinked(address registry, NftId nftId);
11
- error ErrorRegistryAlreadyInitialized(address registry);
12
- error ErrorRegistryNotInitialized();
13
- error ErrorRegistryAddressZero();
14
- error ErrorNotRegistry(address registryAddress);
15
- error ErrorContractNotRegistered(address contractAddress);
10
+ interface INftOwnable is
11
+ IERC165,
12
+ IRegistryLinked
13
+ {
14
+ error ErrorNftOwnableInitialOwnerZero();
15
+ error ErrorNftOwnableNotOwner(address account);
16
+ error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
16
17
 
17
- function linkToRegisteredNftId() external;
18
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
19
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
20
+
21
+ function linkToRegisteredNftId() external returns (NftId);
18
22
 
19
- function getRegistry() external view returns (IRegistry);
20
23
  function getNftId() external view returns (NftId);
21
24
  function getOwner() external view returns (address);
22
25
  }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId} from "../type/PayoutId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+
14
+ /// @dev Generic interface for contracts that need to hold policies and receive payouts.
15
+ /// The framework notifies policy holder contracts for policy creation/expiry, claim confirmation and payout execution
16
+ interface IPolicyHolder is
17
+ IERC165,
18
+ IERC721Receiver,
19
+ IRegistryLinked
20
+ {
21
+
22
+ /// @dev Callback function that will be called after successful policy activation.
23
+ /// Active policies may open claims under the activated policy.
24
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external;
25
+
26
+ /// @dev Callback function to indicate the specified policy has expired.
27
+ /// expired policies no longer accept new claims.
28
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external;
29
+
30
+ /// @dev Callback function to notify the confirmation of the specified claim.
31
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
32
+
33
+ /// @dev Callback function to notify the successful payout.
34
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
35
+ }
@@ -1,13 +1,24 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
-
6
4
  import {INftOwnable} from "./INftOwnable.sol";
7
5
  import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {VersionPart} from "../type/Version.sol";
8
7
 
9
- interface IRegisterable is IERC165, INftOwnable {
8
+ /// @title IRegisterable
9
+ /// @dev Marks contracts that are intended to be registered in the registry.
10
+ ///
11
+ interface IRegisterable is
12
+ INftOwnable
13
+ {
14
+ /// @dev retuns the GIF release version for this contract.
15
+ /// This
16
+ function getRelease() external pure returns (VersionPart release);
10
17
 
18
+ /// @dev retuns the object info relevant for registering for this contract
19
+ /// IMPORTANT information returned by this function may only be used
20
+ /// before the contract is registered in the registry.
21
+ /// Once registered this information MUST only be accessed via the registry.
11
22
  function getInitialInfo()
12
23
  external
13
24
  view
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+
6
+ interface IRegistryLinked {
7
+
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
11
+ }
@@ -1,16 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {VersionPart} from "../types/Version.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
 
7
6
  import {IRegisterable} from "./IRegisterable.sol";
8
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
9
10
 
10
11
  interface IService is
11
12
  IRegisterable,
12
- IVersionable
13
+ IVersionable,
14
+ IAccessManaged
13
15
  {
16
+ error ErrorServiceNotImplemented();
17
+
18
+ /// @dev returns the domain for this service.
19
+ /// In any GIF release only one service for any given domain may be deployed.
14
20
  function getDomain() external pure returns(ObjectType serviceDomain);
15
- function getMajorVersion() external view returns(VersionPart majorVersion);
21
+
22
+ /// @dev returns the GIF release specific role id.
23
+ /// These role ids are used to authorize service to service communication.
24
+ function getRoleId() external pure returns(RoleId serviceRoleId);
16
25
  }