@etherisc/gif-next 0.0.2-a196164-289 → 0.0.2-a221fa7-461

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 (736) hide show
  1. package/README.md +249 -41
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -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 +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1234 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1571 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +858 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +956 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +283 -1679
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +485 -2053
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1735 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1160 -0
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  70. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  74. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  76. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  78. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  79. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  80. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  82. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  84. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  86. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  88. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  90. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  92. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  94. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  96. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1496 -0
  98. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  100. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +360 -328
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +978 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1288 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  116. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  117. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  118. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  120. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  121. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  122. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  124. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  126. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  128. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +279 -248
  130. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  132. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  134. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  135. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  136. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  137. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → product/IProductService.sol/IProductService.json} +187 -174
  140. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  142. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  144. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  146. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  148. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  149. package/artifacts/contracts/product/Product.sol/Product.json +1276 -0
  150. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  151. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  152. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  154. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +655 -50
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  160. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +885 -99
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  179. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1640 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +310 -176
  186. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +977 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +159 -154
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  212. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +102 -165
  214. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  216. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  217. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  218. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  220. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  221. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  222. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  224. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  225. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  226. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  227. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +255 -211
  228. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  229. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  236. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  237. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  253. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  290. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  302. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  308. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  309. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  310. package/contracts/authorization/AccessAdmin.sol +591 -0
  311. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  312. package/contracts/authorization/Authorization.sol +218 -0
  313. package/contracts/authorization/IAccess.sol +48 -0
  314. package/contracts/authorization/IAccessAdmin.sol +136 -0
  315. package/contracts/authorization/IAuthorization.sol +54 -0
  316. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  317. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  318. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  319. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  320. package/contracts/distribution/BasicDistribution.sol +138 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  322. package/contracts/distribution/Distribution.sol +295 -0
  323. package/contracts/distribution/DistributionService.sol +352 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  325. package/contracts/distribution/IDistributionComponent.sol +52 -0
  326. package/contracts/distribution/IDistributionService.sol +98 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +79 -46
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +239 -59
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +40 -0
  336. package/contracts/instance/InstanceStore.sol +276 -0
  337. package/contracts/instance/base/BalanceStore.sol +123 -0
  338. package/contracts/instance/base/Cloneable.sol +28 -0
  339. package/contracts/instance/base/ObjectCounter.sol +21 -0
  340. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  341. package/contracts/instance/base/ObjectSet.sol +79 -0
  342. package/contracts/instance/module/IAccess.sol +46 -0
  343. package/contracts/instance/module/IBundle.sol +20 -0
  344. package/contracts/instance/module/IComponents.sol +51 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -0
  346. package/contracts/instance/module/IPolicy.sol +84 -0
  347. package/contracts/instance/module/IRisk.sol +11 -0
  348. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  349. package/contracts/oracle/BasicOracle.sol +48 -0
  350. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  351. package/contracts/oracle/IOracle.sol +36 -0
  352. package/contracts/oracle/IOracleComponent.sol +33 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +166 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +39 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +52 -0
  359. package/contracts/pool/BundleService.sol +284 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +51 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +436 -0
  366. package/contracts/pool/PoolServiceManager.sol +39 -0
  367. package/contracts/product/ApplicationService.sol +230 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +43 -0
  371. package/contracts/product/ClaimService.sol +416 -0
  372. package/contracts/product/ClaimServiceManager.sol +38 -0
  373. package/contracts/product/IApplicationService.sol +62 -0
  374. package/contracts/product/IClaimService.sol +99 -0
  375. package/contracts/product/IPolicyService.sol +78 -0
  376. package/contracts/product/IPricingService.sol +39 -0
  377. package/contracts/product/IProductComponent.sol +40 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +39 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +39 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +99 -0
  385. package/contracts/product/ProductServiceManager.sol +39 -0
  386. package/contracts/registry/ChainNft.sol +95 -37
  387. package/contracts/registry/IRegistry.sol +106 -29
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +475 -280
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +252 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +280 -0
  399. package/contracts/shared/ComponentService.sol +622 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +15 -9
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +112 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +10 -19
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/InitializableCustom.sol +177 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  415. package/contracts/shared/KeyValueStore.sol +131 -0
  416. package/contracts/shared/Lifecycle.sol +77 -0
  417. package/contracts/shared/NftIdSet.sol +65 -0
  418. package/contracts/shared/NftOwnable.sol +107 -0
  419. package/contracts/shared/PolicyHolder.sol +102 -0
  420. package/contracts/shared/Registerable.sol +54 -65
  421. package/contracts/shared/RegistryLinked.sol +43 -0
  422. package/contracts/shared/Service.sol +82 -0
  423. package/contracts/shared/TokenHandler.sol +58 -0
  424. package/contracts/staking/IStaking.sol +167 -0
  425. package/contracts/staking/IStakingService.sol +160 -0
  426. package/contracts/staking/StakeManagerLib.sol +231 -0
  427. package/contracts/staking/Staking.sol +514 -0
  428. package/contracts/staking/StakingLifecycle.sol +23 -0
  429. package/contracts/staking/StakingManager.sol +50 -0
  430. package/contracts/staking/StakingReader.sol +183 -0
  431. package/contracts/staking/StakingService.sol +411 -0
  432. package/contracts/staking/StakingServiceManager.sol +44 -0
  433. package/contracts/staking/StakingStore.sol +605 -0
  434. package/contracts/staking/TargetManagerLib.sol +207 -0
  435. package/contracts/{types → type}/AddressSet.sol +1 -1
  436. package/contracts/type/Amount.sol +128 -0
  437. package/contracts/{types → type}/Blocknumber.sol +21 -3
  438. package/contracts/type/ClaimId.sol +75 -0
  439. package/contracts/type/DistributorType.sol +55 -0
  440. package/contracts/type/Fee.sol +66 -0
  441. package/contracts/{types → type}/Key32.sol +8 -3
  442. package/contracts/{types → type}/NftId.sol +21 -15
  443. package/contracts/type/NftIdSet.sol +62 -0
  444. package/contracts/type/ObjectType.sol +271 -0
  445. package/contracts/type/PayoutId.sol +82 -0
  446. package/contracts/type/Referral.sol +89 -0
  447. package/contracts/type/RequestId.sol +75 -0
  448. package/contracts/{types → type}/RiskId.sol +1 -1
  449. package/contracts/type/RoleId.sol +174 -0
  450. package/contracts/type/Seconds.sol +81 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/{types → type}/StateId.sol +39 -5
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +27 -14
  455. package/contracts/type/UFixed.sol +332 -0
  456. package/contracts/{types → type}/Version.sol +9 -2
  457. package/contracts/upgradeability/IVersionable.sol +53 -0
  458. package/contracts/upgradeability/ProxyManager.sol +198 -0
  459. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  460. package/contracts/upgradeability/Versionable.sol +59 -0
  461. package/package.json +11 -7
  462. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  464. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  465. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  466. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  468. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  470. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  472. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  473. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  474. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  475. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  476. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  477. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  492. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  494. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  496. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  498. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  503. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  505. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  507. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  509. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  511. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  512. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  513. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -387
  515. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  517. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  523. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  525. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  529. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  532. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  534. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  536. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  537. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  539. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  541. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  544. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  547. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  550. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  552. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  556. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  558. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  561. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  563. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  567. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  569. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -618
  573. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -507
  575. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -366
  578. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  581. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -630
  582. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -945
  584. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  585. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  586. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  587. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  588. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -711
  589. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  591. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  592. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  593. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  594. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -235
  595. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  596. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +0 -129
  597. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  598. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -251
  599. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  600. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -228
  601. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  603. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  605. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  607. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  609. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  610. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  611. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  612. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  613. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  614. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -466
  615. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  616. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  617. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  618. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  619. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  620. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -293
  621. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  622. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  623. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  624. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  625. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  627. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  629. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  631. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  632. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  633. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  635. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  636. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  637. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  639. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  640. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  641. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  643. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  645. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  648. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  650. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  652. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  654. package/contracts/components/BaseComponent.sol +0 -94
  655. package/contracts/components/Distribution.sol +0 -132
  656. package/contracts/components/IBaseComponent.sol +0 -19
  657. package/contracts/components/IDistributionComponent.sol +0 -47
  658. package/contracts/components/IPoolComponent.sol +0 -71
  659. package/contracts/components/IProductComponent.sol +0 -38
  660. package/contracts/components/Pool.sol +0 -235
  661. package/contracts/components/Product.sol +0 -227
  662. package/contracts/experiment/errors/Require.sol +0 -38
  663. package/contracts/experiment/errors/Revert.sol +0 -44
  664. package/contracts/experiment/inheritance/A.sol +0 -53
  665. package/contracts/experiment/inheritance/B.sol +0 -28
  666. package/contracts/experiment/inheritance/C.sol +0 -34
  667. package/contracts/experiment/inheritance/IA.sol +0 -13
  668. package/contracts/experiment/inheritance/IB.sol +0 -10
  669. package/contracts/experiment/inheritance/IC.sol +0 -12
  670. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  671. package/contracts/experiment/statemachine/ISM.sol +0 -25
  672. package/contracts/experiment/statemachine/README.md +0 -112
  673. package/contracts/experiment/statemachine/SM.sol +0 -57
  674. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  675. package/contracts/experiment/types/TypeA.sol +0 -47
  676. package/contracts/experiment/types/TypeB.sol +0 -29
  677. package/contracts/instance/IInstanceLinked.sol +0 -8
  678. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  679. package/contracts/instance/base/IInstanceBase.sol +0 -22
  680. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  681. package/contracts/instance/base/IService.sol +0 -15
  682. package/contracts/instance/base/InstanceBase.sol +0 -91
  683. package/contracts/instance/base/KeyValueStore.sol +0 -161
  684. package/contracts/instance/base/Lifecycle.sol +0 -100
  685. package/contracts/instance/base/ModuleBase.sol +0 -57
  686. package/contracts/instance/base/ServiceBase.sol +0 -37
  687. package/contracts/instance/module/access/Access.sol +0 -149
  688. package/contracts/instance/module/access/IAccess.sol +0 -53
  689. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  690. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  691. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  692. package/contracts/instance/module/component/IComponent.sol +0 -28
  693. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  694. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  695. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  696. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  697. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  698. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  699. package/contracts/instance/module/risk/IRisk.sol +0 -26
  700. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  701. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  702. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  703. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  704. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  705. package/contracts/instance/service/DistributionService.sol +0 -59
  706. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  707. package/contracts/instance/service/IDistributionService.sol +0 -12
  708. package/contracts/instance/service/IPoolService.sol +0 -37
  709. package/contracts/instance/service/IProductService.sol +0 -107
  710. package/contracts/instance/service/PoolService.sol +0 -149
  711. package/contracts/instance/service/ProductService.sol +0 -509
  712. package/contracts/registry/IChainNft.sol +0 -21
  713. package/contracts/registry/IRegistryLinked.sol +0 -8
  714. package/contracts/registry/RegistryUpgradeable.sol +0 -548
  715. package/contracts/shared/IOwnable.sol +0 -6
  716. package/contracts/shared/IVersionable.sol +0 -65
  717. package/contracts/shared/Proxy.sol +0 -89
  718. package/contracts/shared/Versionable.sol +0 -99
  719. package/contracts/shared/VersionableUpgradeable.sol +0 -120
  720. package/contracts/test/TestDistribution.sol +0 -21
  721. package/contracts/test/TestFee.sol +0 -25
  722. package/contracts/test/TestPool.sol +0 -25
  723. package/contracts/test/TestProduct.sol +0 -72
  724. package/contracts/test/TestRegisterable.sol +0 -19
  725. package/contracts/test/TestRoleId.sol +0 -14
  726. package/contracts/test/TestService.sol +0 -32
  727. package/contracts/test/TestToken.sol +0 -26
  728. package/contracts/test/TestVersion.sol +0 -44
  729. package/contracts/test/TestVersionable.sol +0 -17
  730. package/contracts/types/ChainId.sol +0 -38
  731. package/contracts/types/Fee.sol +0 -56
  732. package/contracts/types/NftIdSet.sol +0 -60
  733. package/contracts/types/ObjectType.sol +0 -131
  734. package/contracts/types/ReferralId.sol +0 -48
  735. package/contracts/types/RoleId.sol +0 -38
  736. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,117 @@
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
+
16
+ error ErrorComponentVerifyingServiceComponentTypeInvalid(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
17
+ error ErrorComponentVerifyingServiceComponentIsLocked(NftId componentNftId);
18
+
19
+ /// @dev based on the sender address returns the corresponding components nft id, info and instance.
20
+ /// the function reverts iff:
21
+ /// - there is no such component
22
+ /// - the component has the wrong object type
23
+ /// - the component is locked
24
+ function _getAndVerifyActiveComponent(
25
+ ObjectType expectedType // assume always of `component` type
26
+ )
27
+ internal
28
+ view
29
+ returns(
30
+ NftId componentNftId,
31
+ IRegistry.ObjectInfo memory componentInfo,
32
+ IInstance instance
33
+ )
34
+ {
35
+ componentNftId = getRegistry().getNftId(msg.sender);
36
+ (componentInfo, instance) = _getAndVerifyComponentInfo(
37
+ componentNftId,
38
+ expectedType,
39
+ true); // only active
40
+ }
41
+
42
+
43
+ /// @dev returns the component info and instance contract reference given a component nft id
44
+ /// the function reverts iff:
45
+ /// - there is no such component
46
+ /// - the component has the wrong object type
47
+ function _getAndVerifyComponentInfo(
48
+ NftId componentNftId,
49
+ ObjectType expectedType, // assume always of `component` type
50
+ bool onlyActive
51
+ )
52
+ internal
53
+ virtual
54
+ view
55
+ returns(
56
+ IRegistry.ObjectInfo memory info,
57
+ IInstance instance
58
+ )
59
+ {
60
+ IRegistry registry = getRegistry();
61
+ info = registry.getObjectInfo(componentNftId);
62
+
63
+ // if not COMPONENT require exact match
64
+ if(expectedType != COMPONENT()) {
65
+ // ensure component is of expected type
66
+ if(info.objectType != expectedType) {
67
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
68
+ componentNftId,
69
+ expectedType,
70
+ info.objectType);
71
+ }
72
+ } else {
73
+ if(!(info.objectType == PRODUCT()
74
+ || info.objectType == POOL()
75
+ || info.objectType == DISTRIBUTION()
76
+ || info.objectType == ORACLE()
77
+ ))
78
+ {
79
+ revert ErrorComponentVerifyingServiceComponentTypeInvalid(
80
+ componentNftId,
81
+ expectedType,
82
+ info.objectType);
83
+ }
84
+ }
85
+
86
+ instance = _getInstance(info.parentNftId);
87
+
88
+ // ensure component is not locked
89
+ if (onlyActive) {
90
+ if (instance.getInstanceAdmin().isTargetLocked(info.objectAddress)) {
91
+ revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
92
+ }
93
+ }
94
+ }
95
+
96
+
97
+ /// @dev returns the linked product nft id for the specified component
98
+ function _getProductNftId(
99
+ InstanceReader instanceReader,
100
+ NftId componentNftId
101
+ )
102
+ internal
103
+ virtual
104
+ view
105
+ returns (NftId productNftId)
106
+ {
107
+ return instanceReader.getComponentInfo(componentNftId).productNftId;
108
+ }
109
+
110
+
111
+ /// @dev returns an IInstance contract reference for the specified instance nft id
112
+ function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
113
+ return IInstance(
114
+ getRegistry().getObjectInfo(
115
+ instanceNftId).objectAddress);
116
+ }
117
+ }
@@ -1,21 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
6
 
6
- contract ERC165 is IERC165 {
7
+ contract ERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
7
11
  mapping(bytes4 => bool) private _isSupported;
8
12
 
9
- constructor() {
10
- // register support for ERC165
11
- _registerInterface(type(IERC165).interfaceId);
13
+ // @dev initializes with support for ERC165
14
+ function initializeERC165() public onlyInitializing() {
15
+ _isSupported[type(IERC165).interfaceId] = true;
12
16
  }
13
17
 
14
- function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
15
- return _isSupported[interfaceId];
18
+ // @dev register support for provided interfaceId
19
+ // includes initialization for ERC165_ID if not yet done
20
+ function registerInterface(bytes4 interfaceId) public onlyInitializing() {
21
+ _isSupported[interfaceId] = true;
16
22
  }
17
23
 
18
- function _registerInterface(bytes4 interfaceId) internal {
19
- _isSupported[interfaceId] = true;
24
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
25
+ return _isSupported[interfaceId];
20
26
  }
21
27
  }
@@ -0,0 +1,70 @@
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 ErrorComponentNotChainNft(address caller);
21
+
22
+ error ErrorComponentTokenAddressZero();
23
+ error ErrorComponentNameLengthZero();
24
+ error ErrorComponentWalletAddressZero();
25
+ error ErrorComponentWalletAddressIsSameAsCurrent();
26
+ error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
27
+ error ErrorComponentWalletNotComponent();
28
+
29
+ event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
30
+ event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
31
+ event LogComponentTokenHandlerApproved(address token, Amount limit);
32
+
33
+ /// @dev approves token hanlder to spend up to the specified amount of tokens
34
+ /// reverts if component wallet is not component itself
35
+ /// only component owner (nft holder) is authorizes to call this function
36
+ function approveTokenHandler(Amount spendingLimitAmount) external;
37
+
38
+ /// @dev sets the wallet address for the component
39
+ /// if the current wallet has tokens, these will be transferred
40
+ /// if the new wallet address is externally owned, an approval from the
41
+ /// owner of the external wallet for the component to move all tokens must exist
42
+ function setWallet(address walletAddress) external;
43
+
44
+ /// @dev returns the name of this component
45
+ /// to successfully register the component with an instance the name MUST be unique in the linked instance
46
+ function getName() external view returns (string memory name);
47
+
48
+ /// @dev defines which ERC20 token is used by this component
49
+ function getToken() external view returns (IERC20Metadata token);
50
+
51
+ /// @dev returns token handler for this component
52
+ function getTokenHandler() external view returns (TokenHandler tokenHandler);
53
+
54
+ /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
55
+ /// the default address is the component token address
56
+ function getWallet() external view returns (address walletAddress);
57
+
58
+ /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
59
+ function isNftInterceptor() external view returns(bool isInterceptor);
60
+
61
+ /// @dev returns true iff this component is registered with the registry
62
+ function isRegistered() external view returns (bool);
63
+
64
+ /// @dev returns the component infos for this component
65
+ /// for a non registered component the function returns getInitialComponentInfo()
66
+ function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
67
+
68
+ /// @dev returns the iniital component infos for this component
69
+ function getInitialComponentInfo() external view returns (IComponents.ComponentInfo memory info);
70
+ }
@@ -0,0 +1,112 @@
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 {Fee} from "../type/Fee.sol";
9
+ import {IComponents} from "../instance/module/IComponents.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IInstanceService} from "../instance/IInstanceService.sol";
12
+ import {InstanceStore} from "../instance/InstanceStore.sol";
13
+ import {IProductService} from "../product/IProductService.sol";
14
+ import {IRegisterable} from "../shared/IRegisterable.sol";
15
+ import {IService} from "../shared/IService.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType} from "../type/ObjectType.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+ import {UFixed} from "../type/UFixed.sol";
20
+
21
+ /// @dev component base class
22
+ /// component examples are staking, product, distribution, pool and oracle
23
+ interface IComponentService is
24
+ IService
25
+ {
26
+ error ErrorComponentServiceNewWalletAddressZero();
27
+ error ErrorComponentServiceWalletAddressZero();
28
+ error ErrorComponentServiceWalletAddressIsSameAsCurrent();
29
+
30
+ error ErrorComponentServiceWithdrawAmountIsZero();
31
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
32
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
33
+
34
+ event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
35
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
36
+ event LogComponentServiceProductFeesUpdated(NftId productNftId);
37
+ event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
38
+ event LogComponentServicePoolFeesUpdated(NftId poolNftId);
39
+ event LogComponentServiceUpdateFee(
40
+ NftId nftId,
41
+ string feeName,
42
+ UFixed previousFractionalFee,
43
+ uint256 previousFixedFee,
44
+ UFixed newFractionalFee,
45
+ uint256 newFixedFee
46
+ );
47
+
48
+ //-------- component ----------------------------------------------------//
49
+
50
+ /// @dev sets the components associated wallet address
51
+ function setWallet(address newWallet) external;
52
+
53
+ /// @dev locks the component associated with the caller
54
+ function lock() external;
55
+
56
+ /// @dev unlocks the component associated with the caller
57
+ function unlock() external;
58
+
59
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
60
+ /// @param withdrawAmount the amount to withdraw
61
+ /// @return withdrawnAmount the amount that was actually withdrawn
62
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
63
+
64
+ //-------- product ------------------------------------------------------//
65
+
66
+ /// @dev registers the sending component as a product component
67
+ function registerProduct() external;
68
+
69
+ function setProductFees(
70
+ Fee memory productFee, // product fee on net premium
71
+ Fee memory processingFee // product fee on payout amounts
72
+ ) external;
73
+
74
+ function increaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
75
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
76
+
77
+ //-------- distribution -------------------------------------------------//
78
+
79
+ /// @dev registers the sending component as a distribution component
80
+ function registerDistribution() external;
81
+
82
+ function setDistributionFees(
83
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
84
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
85
+ ) external;
86
+
87
+ function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
88
+ function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
89
+
90
+ //-------- oracle -------------------------------------------------------//
91
+
92
+ /// @dev registers the sending component as an oracle component
93
+ function registerOracle() external;
94
+
95
+ //-------- pool ---------------------------------------------------------//
96
+
97
+ /// @dev registers the sending component as a pool component
98
+ function registerPool() external;
99
+
100
+ function setPoolFees(
101
+ Fee memory poolFee, // pool fee on net premium
102
+ Fee memory stakingFee, // pool fee on staked capital from investor
103
+ Fee memory performanceFee // pool fee on profits from capital investors
104
+ ) external;
105
+
106
+ function increasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
107
+ function decreasePoolBalance(InstanceStore instanceStore, NftId poolNftId, Amount amount, Amount feeAmount) external;
108
+
109
+ //-------- bundle -------------------------------------------------------//
110
+ function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
111
+ function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
112
+ }
@@ -0,0 +1,56 @@
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 {IComponents} from "../instance/module/IComponents.sol";
11
+ import {IInstance} from "../instance/IInstance.sol";
12
+ import {IInstanceService} from "../instance/IInstanceService.sol";
13
+ import {IProductService} from "../product/IProductService.sol";
14
+ import {IRegisterable} from "../shared/IRegisterable.sol";
15
+ import {NftId} from "../type/NftId.sol";
16
+ import {ObjectType} from "../type/ObjectType.sol";
17
+ import {TokenHandler} from "../shared/TokenHandler.sol";
18
+
19
+ /// @dev component base class
20
+ /// component examples are product, distribution, pool and oracle
21
+ interface IInstanceLinkedComponent is
22
+ IComponent
23
+ {
24
+ error ErrorComponentNotProductService(address caller);
25
+ error ErrorComponentNotInstance(NftId instanceNftId);
26
+ error ErrorComponentProductNftAlreadySet();
27
+
28
+ /// @dev registers this component with the registry and instance.
29
+ /// a component may only be linked once
30
+ /// only initial component owner (nft holder) is authorizes to call this function
31
+ function register() external;
32
+
33
+ /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
34
+ /// only component owner (nft holder) is authorizes to call this function
35
+ function lock() external;
36
+
37
+ /// @dev unlocks component to (re-)enable functions that may change state related to this component
38
+ /// only component owner (nft holder) is authorizes to call this function
39
+ function unlock() external;
40
+
41
+ /// @dev defines the instance to which this component is linked to
42
+ function getInstance() external view returns (IInstance instance);
43
+
44
+ /// @dev defines the product to which this component is linked to
45
+ /// this is only relevant for pool and distribution components
46
+ function getProductNftId() external view returns (NftId productNftId);
47
+
48
+ /// @dev returns the initial component authorization specification.
49
+ function getAuthorization() external view returns (IAuthorization authorization);
50
+
51
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
52
+ /// @param amount the amount to withdraw
53
+ /// @return withdrawnAmount the amount that was actually withdrawn
54
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
55
+
56
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
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
+
10
+ import {ILifecycle} from "./ILifecycle.sol";
11
+
12
+ interface IKeyValueStore is ILifecycle {
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
+
24
+ struct Value {
25
+ Metadata metadata;
26
+ bytes data;
27
+ }
28
+
29
+ struct Metadata {
30
+ ObjectType objectType;
31
+ StateId state;
32
+ // TODO updatedBy needs concept that says what value should go here
33
+ // eg account outside gif objects that initiated the tx
34
+ // implies the caller needs to be propagated through all calls up to key values store itself
35
+ // to always have the instance address there doesn't seem to make sense
36
+ // address updatedBy;
37
+ Blocknumber updatedIn;
38
+ Blocknumber createdIn;
39
+ }
40
+
41
+ // generic state changing functions
42
+ // function create(Key32 key, bytes memory data) external;
43
+ // function update(Key32 key, bytes memory data, StateId state) external;
44
+ // function updateData(Key32 key, bytes memory data) external;
45
+ // function updateState(Key32 key, StateId state) external;
46
+
47
+ function exists(Key32 key) external view returns (bool);
48
+ function get(Key32 key) external view returns (Value memory value);
49
+ function getData(Key32 key) external view returns (bytes memory data);
50
+ function getMetadata(Key32 key) external view returns (Metadata memory metadata);
51
+ function getState(Key32 key) external view returns (StateId state);
52
+
53
+ function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32);
54
+ }
@@ -1,13 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {ObjectType} from "../../types/ObjectType.sol";
5
- import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
6
- import {NftId} from "../../types/NftId.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(ObjectType objectType);
11
10
  error ErrorInvalidStateTransition(
12
11
  ObjectType objectType,
13
12
  StateId fromStateId,
@@ -0,0 +1,23 @@
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
+
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+
9
+ interface INftOwnable is
10
+ IERC165,
11
+ IRegistryLinked
12
+ {
13
+ error ErrorNftOwnableInitialOwnerZero();
14
+ error ErrorNftOwnableNotOwner(address account);
15
+
16
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
18
+
19
+ function linkToRegisteredNftId() external returns (NftId);
20
+
21
+ function getNftId() external view returns (NftId);
22
+ function getOwner() external view returns (address);
23
+ }
@@ -0,0 +1,45 @@
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
+
13
+ /// @dev generic interface for contracts that need to hold policies and receive payouts
14
+ /// GIF will notify policy holder contracts for policy creation and payout execution
15
+ interface IPolicyHolder is
16
+ IERC165,
17
+ IERC721Receiver,
18
+ IRegistryLinked
19
+ {
20
+
21
+ /// @dev callback function that will be called after successful policy activation
22
+ /// active policies may open claims under the activated policy
23
+ function policyActivated(NftId policyNftId) external;
24
+
25
+ /// @dev callback function to indicate the specified policy has expired
26
+ /// expired policies may no longer open claims
27
+ /// it is optional for products to notifiy policy holder of expired claims
28
+ function policyExpired(NftId policyNftId) external;
29
+
30
+ /// @dev request for a payout by the requesting policy
31
+ /// the contract implements its use case specific handling for such requests.
32
+ /// eg. creation of a pending payout, a corresponding claim against one of the policies held by the IPolicyHolder
33
+ function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external;
34
+
35
+ /// @dev callback function to notify the confirmation of the specified claim
36
+ /// active policies may open claims under the activated policy
37
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
38
+
39
+ /// @dev callback function that will be called after a successful payout
40
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external;
41
+
42
+ /// @dev determines policy and claim specific beneficiary address
43
+ /// returned address will override GIF default where the policy nft holder is treated as beneficiary
44
+ function getBeneficiary(NftId policyNftId, PayoutId payoutId) external view returns (address beneficiary);
45
+ }
@@ -1,24 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
2
+ pragma solidity ^0.8.20;
5
3
 
4
+ import {INftOwnable} from "./INftOwnable.sol";
6
5
  import {IRegistry} from "../registry/IRegistry.sol";
7
- import {NftId} from "../types/NftId.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
9
-
10
- import {IOwnable} from "./IOwnable.sol";
11
-
12
- interface IRegisterable is IERC165, IOwnable {
13
- function getRegistry() external view returns (IRegistry registry);
14
-
15
- function register() external returns (NftId nftId);
16
-
17
- function getType() external pure returns (ObjectType objectType);
18
-
19
- function getNftId() external view returns (NftId nftId);
20
6
 
21
- function getParentNftId() external view returns (NftId nftId);
7
+ interface IRegisterable is
8
+ INftOwnable
9
+ {
22
10
 
23
- function getData() external view returns (bytes memory data);
24
- }
11
+ function getInitialInfo()
12
+ external
13
+ view
14
+ returns (IRegistry.ObjectInfo memory);
15
+ }
@@ -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
+ }
@@ -0,0 +1,25 @@
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
+
6
+ import {IRegisterable} from "./IRegisterable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
10
+
11
+ interface IService is
12
+ IRegisterable,
13
+ IVersionable,
14
+ IAccessManaged
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.
20
+ function getDomain() external pure returns(ObjectType serviceDomain);
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);
25
+ }