@etherisc/gif-next 0.0.2-8d47fa1-080 → 0.0.2-8d9d4d6-542

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 (703) hide show
  1. package/README.md +179 -14
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1502 -0
  4. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  5. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  6. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1168 -0
  8. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +110 -0
  10. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  12. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.json +1639 -0
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +134 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  18. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  19. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  20. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  21. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  22. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  24. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  26. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  28. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  30. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  31. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +358 -1865
  32. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
  34. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  35. package/artifacts/contracts/instance/Instance.sol/Instance.json +445 -2059
  36. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  38. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +1676 -0
  40. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +289 -0
  42. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  43. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  44. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  46. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1220 -0
  48. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
  50. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  51. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  52. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  54. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  56. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  58. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  60. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  62. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  64. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  65. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  66. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  68. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  71. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  73. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  74. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  75. package/artifacts/contracts/{instance/base/ModuleBase.sol/ModuleBase.json → oracle/IOracle.sol/IOracle.json} +2 -2
  76. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  78. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  80. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  82. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  84. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  86. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  87. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  88. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  90. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +342 -313
  92. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  94. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  95. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  96. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  97. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  98. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  100. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  102. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  104. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  106. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  107. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  108. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  110. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  111. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  112. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  113. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  114. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  115. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  116. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  117. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +320 -255
  118. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  119. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  120. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  121. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +187 -176
  122. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  123. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  124. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  126. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  127. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  128. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  130. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  131. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  132. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  133. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  134. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  136. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  137. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  138. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  139. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +396 -61
  140. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  141. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +621 -166
  142. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  143. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  144. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  145. package/artifacts/contracts/registry/Registry.sol/Registry.json +630 -235
  146. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  147. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1932 -0
  148. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  149. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +863 -272
  150. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  152. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  153. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1237 -0
  154. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  155. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +195 -0
  156. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  157. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  158. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  159. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  160. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  161. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  162. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  164. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  166. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  167. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  168. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  169. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  170. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  171. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  172. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  174. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +298 -152
  176. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  178. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  179. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  180. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +77 -169
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +65 -8
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  201. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +155 -153
  202. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  212. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +369 -62
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +205 -12
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  223. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  224. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  225. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +242 -191
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  228. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  229. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  230. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  232. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  234. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  235. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  236. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  238. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -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 +2261 -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/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  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 +215 -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/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -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/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  298. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  299. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  302. package/contracts/authorization/AccessAdmin.sol +749 -0
  303. package/contracts/authorization/IAccess.sol +43 -0
  304. package/contracts/authorization/IAccessAdmin.sol +130 -0
  305. package/contracts/authorization/IModuleAuthorization.sol +27 -0
  306. package/contracts/authorization/IServiceAuthorization.sol +35 -0
  307. package/contracts/authorization/InstanceAdmin.sol +108 -0
  308. package/contracts/authorization/ModuleAuthorization.sol +116 -0
  309. package/contracts/authorization/ServiceAuthorization.sol +86 -0
  310. package/contracts/distribution/Distribution.sol +261 -0
  311. package/contracts/distribution/DistributionService.sol +297 -0
  312. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  313. package/contracts/distribution/IDistributionComponent.sol +66 -0
  314. package/contracts/distribution/IDistributionService.sol +81 -0
  315. package/contracts/instance/BundleManager.sol +126 -0
  316. package/contracts/instance/IInstance.sol +79 -46
  317. package/contracts/instance/IInstanceService.sol +97 -0
  318. package/contracts/instance/Instance.sol +243 -69
  319. package/contracts/instance/InstanceAdmin.sol +331 -0
  320. package/contracts/instance/InstanceAdminNew.sol +74 -0
  321. package/contracts/instance/InstanceAuthorizationV3.sol +176 -0
  322. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  323. package/contracts/instance/InstanceReader.sol +392 -0
  324. package/contracts/instance/InstanceService.sol +439 -0
  325. package/contracts/instance/InstanceServiceManager.sol +44 -0
  326. package/contracts/instance/InstanceStore.sol +269 -0
  327. package/contracts/instance/base/BalanceStore.sol +123 -0
  328. package/contracts/instance/base/Cloneable.sol +28 -0
  329. package/contracts/instance/base/ObjectCounter.sol +21 -0
  330. package/contracts/instance/base/ObjectManager.sol +80 -0
  331. package/contracts/instance/module/IAccess.sol +46 -0
  332. package/contracts/instance/module/IBundle.sol +20 -0
  333. package/contracts/instance/module/IComponents.sol +52 -0
  334. package/contracts/instance/module/IDistribution.sol +42 -0
  335. package/contracts/instance/module/IPolicy.sol +84 -0
  336. package/contracts/instance/module/IRisk.sol +11 -0
  337. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  338. package/contracts/oracle/IOracle.sol +20 -0
  339. package/contracts/oracle/IOracleComponent.sol +32 -0
  340. package/contracts/oracle/IOracleService.sol +65 -0
  341. package/contracts/oracle/Oracle.sol +145 -0
  342. package/contracts/oracle/OracleService.sol +278 -0
  343. package/contracts/oracle/OracleServiceManager.sol +42 -0
  344. package/contracts/pool/BundleService.sol +296 -0
  345. package/contracts/pool/BundleServiceManager.sol +42 -0
  346. package/contracts/pool/IBundleService.sol +106 -0
  347. package/contracts/pool/IPoolComponent.sol +112 -0
  348. package/contracts/pool/IPoolService.sol +150 -0
  349. package/contracts/pool/Pool.sol +299 -0
  350. package/contracts/pool/PoolService.sol +452 -0
  351. package/contracts/pool/PoolServiceManager.sol +42 -0
  352. package/contracts/product/ApplicationService.sol +254 -0
  353. package/contracts/product/ApplicationServiceManager.sol +38 -0
  354. package/contracts/product/ClaimService.sol +442 -0
  355. package/contracts/product/ClaimServiceManager.sol +38 -0
  356. package/contracts/product/IApplicationService.sol +62 -0
  357. package/contracts/product/IClaimService.sol +99 -0
  358. package/contracts/product/IPolicyService.sol +78 -0
  359. package/contracts/product/IPricingService.sol +39 -0
  360. package/contracts/product/IProductComponent.sol +42 -0
  361. package/contracts/product/IProductService.sol +33 -0
  362. package/contracts/product/PolicyService.sol +475 -0
  363. package/contracts/product/PolicyServiceManager.sol +42 -0
  364. package/contracts/product/PricingService.sol +300 -0
  365. package/contracts/product/PricingServiceManager.sol +42 -0
  366. package/contracts/product/Product.sol +377 -0
  367. package/contracts/product/ProductService.sol +124 -0
  368. package/contracts/product/ProductServiceManager.sol +42 -0
  369. package/contracts/registry/ChainNft.sol +55 -25
  370. package/contracts/registry/IRegistry.sol +84 -35
  371. package/contracts/registry/IRegistryService.sol +56 -16
  372. package/contracts/registry/ITransferInterceptor.sol +1 -0
  373. package/contracts/registry/Registry.sol +411 -334
  374. package/contracts/registry/RegistryAdmin.sol +325 -0
  375. package/contracts/registry/RegistryService.sol +157 -274
  376. package/contracts/registry/RegistryServiceManager.sol +53 -0
  377. package/contracts/registry/ReleaseManager.sol +529 -0
  378. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  379. package/contracts/registry/TokenRegistry.sol +315 -0
  380. package/contracts/shared/AccessManagerCustom.sol +741 -0
  381. package/contracts/shared/AccessManagerExtended.sol +481 -0
  382. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  383. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  384. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  385. package/contracts/shared/Component.sol +281 -0
  386. package/contracts/shared/ComponentService.sol +617 -0
  387. package/contracts/shared/ComponentServiceManager.sol +35 -0
  388. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  389. package/contracts/shared/ERC165.sol +16 -10
  390. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  391. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  392. package/contracts/shared/IComponent.sol +70 -0
  393. package/contracts/shared/IComponentService.sol +102 -0
  394. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  395. package/contracts/shared/IKeyValueStore.sol +53 -0
  396. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -4
  397. package/contracts/shared/INftOwnable.sol +23 -0
  398. package/contracts/shared/IPolicyHolder.sol +45 -0
  399. package/contracts/shared/IRegisterable.sol +5 -12
  400. package/contracts/shared/IRegistryLinked.sol +11 -0
  401. package/contracts/shared/IService.sol +25 -0
  402. package/contracts/shared/IVersionable.sol +5 -48
  403. package/contracts/shared/InitializableCustom.sol +177 -0
  404. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  405. package/contracts/shared/KeyValueStore.sol +127 -0
  406. package/contracts/{instance/base → shared}/Lifecycle.sol +38 -8
  407. package/contracts/shared/NftIdSetManager.sol +65 -0
  408. package/contracts/shared/NftOwnable.sol +107 -0
  409. package/contracts/shared/PolicyHolder.sol +102 -0
  410. package/contracts/shared/ProxyManager.sol +127 -43
  411. package/contracts/shared/Registerable.sol +33 -75
  412. package/contracts/shared/RegistryLinked.sol +43 -0
  413. package/contracts/shared/Service.sol +83 -0
  414. package/contracts/shared/TokenHandler.sol +58 -0
  415. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  416. package/contracts/shared/Versionable.sol +5 -93
  417. package/contracts/staking/IStaking.sol +168 -0
  418. package/contracts/staking/IStakingService.sol +153 -0
  419. package/contracts/staking/StakeManagerLib.sol +231 -0
  420. package/contracts/staking/Staking.sol +513 -0
  421. package/contracts/staking/StakingManager.sol +54 -0
  422. package/contracts/staking/StakingReader.sol +187 -0
  423. package/contracts/staking/StakingService.sol +411 -0
  424. package/contracts/staking/StakingServiceManager.sol +44 -0
  425. package/contracts/staking/StakingStore.sol +613 -0
  426. package/contracts/staking/TargetManagerLib.sol +207 -0
  427. package/contracts/{types → type}/AddressSet.sol +1 -1
  428. package/contracts/type/Amount.sol +128 -0
  429. package/contracts/{types → type}/Blocknumber.sol +21 -3
  430. package/contracts/type/ClaimId.sol +75 -0
  431. package/contracts/type/DistributorType.sol +55 -0
  432. package/contracts/type/Fee.sol +66 -0
  433. package/contracts/{types → type}/Key32.sol +8 -3
  434. package/contracts/{types → type}/NftId.sol +21 -15
  435. package/contracts/type/NftIdSet.sol +62 -0
  436. package/contracts/type/ObjectType.sol +264 -0
  437. package/contracts/type/PayoutId.sol +82 -0
  438. package/contracts/type/Referral.sol +89 -0
  439. package/contracts/type/RequestId.sol +75 -0
  440. package/contracts/{types → type}/RiskId.sol +1 -1
  441. package/contracts/type/RoleId.sol +201 -0
  442. package/contracts/type/Seconds.sol +81 -0
  443. package/contracts/type/Selector.sol +102 -0
  444. package/contracts/{types → type}/StateId.sol +39 -5
  445. package/contracts/type/String.sol +53 -0
  446. package/contracts/{types → type}/Timestamp.sol +27 -14
  447. package/contracts/{types → type}/UFixed.sol +129 -12
  448. package/contracts/{types → type}/Version.sol +6 -2
  449. package/package.json +8 -7
  450. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  451. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -213
  452. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  453. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -445
  454. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  455. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -177
  456. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  457. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -343
  458. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  459. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -474
  460. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -373
  462. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  463. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -602
  464. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  465. package/artifacts/contracts/components/Product.sol/Product.json +0 -502
  466. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  468. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  470. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  472. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  474. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  476. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  478. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  480. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  482. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  484. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  486. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  488. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  490. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  492. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  494. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  496. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  498. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  500. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  501. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  502. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  505. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  506. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  507. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  508. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  509. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  510. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  511. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  512. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  513. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -380
  516. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  517. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  518. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  519. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  521. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  522. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  523. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  524. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  525. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  526. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  528. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  529. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  530. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  533. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  534. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  536. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  539. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  541. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  543. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  545. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  547. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  550. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  552. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  554. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  556. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  558. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  560. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -690
  562. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  563. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -526
  564. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  565. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -369
  567. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  568. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -649
  571. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -964
  573. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  574. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  575. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  576. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.dbg.json +0 -4
  577. package/artifacts/contracts/registry/RegistryInstaller.sol/RegistryInstaller.json +0 -344
  578. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  579. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  580. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  582. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  583. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  584. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  585. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  586. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  588. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -191
  590. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  591. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  592. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  593. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -472
  594. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  595. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  596. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  597. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  598. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  599. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -270
  600. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  601. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  602. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  603. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  605. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  608. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  609. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  610. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  612. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  613. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  614. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  616. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  618. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  621. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  623. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  624. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  628. package/contracts/components/BaseComponent.sol +0 -79
  629. package/contracts/components/Distribution.sol +0 -155
  630. package/contracts/components/IBaseComponent.sol +0 -19
  631. package/contracts/components/IDistributionComponent.sol +0 -47
  632. package/contracts/components/IPoolComponent.sol +0 -65
  633. package/contracts/components/IProductComponent.sol +0 -39
  634. package/contracts/components/Pool.sol +0 -246
  635. package/contracts/components/Product.sol +0 -299
  636. package/contracts/experiment/errors/Require.sol +0 -38
  637. package/contracts/experiment/errors/Revert.sol +0 -44
  638. package/contracts/experiment/inheritance/A.sol +0 -53
  639. package/contracts/experiment/inheritance/B.sol +0 -28
  640. package/contracts/experiment/inheritance/C.sol +0 -34
  641. package/contracts/experiment/inheritance/IA.sol +0 -13
  642. package/contracts/experiment/inheritance/IB.sol +0 -10
  643. package/contracts/experiment/inheritance/IC.sol +0 -12
  644. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  645. package/contracts/experiment/statemachine/ISM.sol +0 -25
  646. package/contracts/experiment/statemachine/SM.sol +0 -57
  647. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  648. package/contracts/experiment/types/TypeA.sol +0 -47
  649. package/contracts/experiment/types/TypeB.sol +0 -29
  650. package/contracts/instance/IInstanceLinked.sol +0 -8
  651. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  652. package/contracts/instance/base/IInstanceBase.sol +0 -23
  653. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  654. package/contracts/instance/base/IService.sol +0 -15
  655. package/contracts/instance/base/InstanceBase.sol +0 -89
  656. package/contracts/instance/base/KeyValueStore.sol +0 -161
  657. package/contracts/instance/base/ModuleBase.sol +0 -57
  658. package/contracts/instance/base/ServiceBase.sol +0 -43
  659. package/contracts/instance/module/access/Access.sol +0 -149
  660. package/contracts/instance/module/access/IAccess.sol +0 -53
  661. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  662. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  663. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  664. package/contracts/instance/module/component/IComponent.sol +0 -28
  665. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  666. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  667. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  668. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  669. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  670. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  671. package/contracts/instance/module/risk/IRisk.sol +0 -26
  672. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  673. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  674. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  675. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  676. package/contracts/instance/service/ComponentOwnerService.sol +0 -272
  677. package/contracts/instance/service/DistributionService.sol +0 -54
  678. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  679. package/contracts/instance/service/IDistributionService.sol +0 -12
  680. package/contracts/instance/service/IPoolService.sol +0 -37
  681. package/contracts/instance/service/IProductService.sol +0 -107
  682. package/contracts/instance/service/PoolService.sol +0 -149
  683. package/contracts/instance/service/ProductService.sol +0 -509
  684. package/contracts/registry/IChainNft.sol +0 -22
  685. package/contracts/registry/IRegistryLinked.sol +0 -8
  686. package/contracts/registry/RegistryInstaller.sol +0 -100
  687. package/contracts/shared/IOwnable.sol +0 -6
  688. package/contracts/test/TestDistribution.sol +0 -22
  689. package/contracts/test/TestFee.sol +0 -25
  690. package/contracts/test/TestPool.sol +0 -27
  691. package/contracts/test/TestProduct.sol +0 -74
  692. package/contracts/test/TestRegisterable.sol +0 -18
  693. package/contracts/test/TestRoleId.sol +0 -14
  694. package/contracts/test/TestService.sol +0 -26
  695. package/contracts/test/TestToken.sol +0 -26
  696. package/contracts/test/TestVersion.sol +0 -44
  697. package/contracts/test/TestVersionable.sol +0 -17
  698. package/contracts/types/ChainId.sol +0 -38
  699. package/contracts/types/Fee.sol +0 -56
  700. package/contracts/types/NftIdSet.sol +0 -60
  701. package/contracts/types/ObjectType.sol +0 -131
  702. package/contracts/types/ReferralId.sol +0 -48
  703. package/contracts/types/RoleId.sol +0 -38
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSetManager {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -0,0 +1,107 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC165} from "./ERC165.sol";
5
+ import {INftOwnable} from "./INftOwnable.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {RegistryLinked} from "./RegistryLinked.sol";
8
+
9
+ contract NftOwnable is
10
+ ERC165,
11
+ RegistryLinked,
12
+ INftOwnable
13
+ {
14
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
15
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
16
+
17
+ struct NftOwnableStorage {
18
+ NftId _nftId;
19
+ address _initialOwner;
20
+ }
21
+
22
+ /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
23
+ modifier onlyOwner() {
24
+ if (msg.sender != getOwner()) {
25
+ revert ErrorNftOwnableNotOwner(msg.sender);
26
+ }
27
+ _;
28
+ }
29
+
30
+
31
+ /// @dev initialization for upgradable contracts
32
+ // used in _initializeRegisterable
33
+ function initializeNftOwnable(
34
+ address initialOwner,
35
+ address registryAddress
36
+ )
37
+ public
38
+ virtual
39
+ onlyInitializing()
40
+ {
41
+ initializeRegistryLinked(registryAddress);
42
+ initializeERC165();
43
+
44
+ if(initialOwner == address(0)) {
45
+ revert ErrorNftOwnableInitialOwnerZero();
46
+ }
47
+
48
+ _getNftOwnableStorage()._initialOwner = initialOwner;
49
+ }
50
+
51
+
52
+ /// @dev links this contract to nft after registration
53
+ // needs to be done once per registered contract and
54
+ // reduces registry calls to check ownership
55
+ // does not need any protection as function can only do the "right thing"
56
+ function linkToRegisteredNftId()
57
+ public
58
+ virtual
59
+ returns (NftId nftId)
60
+ {
61
+ return _linkToNftOwnable(address(this));
62
+ }
63
+
64
+ function getNftId() public view virtual override returns (NftId) {
65
+ return _getNftOwnableStorage()._nftId;
66
+ }
67
+
68
+ function getOwner() public view virtual override returns (address) {
69
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
70
+
71
+ if ($._nftId.gtz()) {
72
+ return getRegistry().ownerOf($._nftId);
73
+ }
74
+
75
+ return $._initialOwner;
76
+ }
77
+
78
+ /// @dev used in constructor of registry service manager
79
+ // links ownership of registry service manager ot nft owner of registry service
80
+ function _linkToNftOwnable(
81
+ address nftOwnableAddress
82
+ )
83
+ internal
84
+ returns (NftId)
85
+ {
86
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
87
+
88
+ if ($._nftId.gtz()) {
89
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
90
+ }
91
+
92
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
93
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
94
+ }
95
+
96
+ $._nftId = getRegistry().getNftId(nftOwnableAddress);
97
+
98
+ return $._nftId;
99
+ }
100
+
101
+
102
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
103
+ assembly {
104
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
105
+ }
106
+ }
107
+ }
@@ -0,0 +1,102 @@
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
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+ import {ClaimId} from "../type/ClaimId.sol";
10
+ import {ERC165} from "./ERC165.sol";
11
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
14
+ import {RegistryLinked} from "./RegistryLinked.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+
17
+ /// @dev template implementation for IPolicyHolder
18
+ contract PolicyHolder is
19
+ ERC165,
20
+ RegistryLinked, // TODO need upgradeable version
21
+ IPolicyHolder
22
+ {
23
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.PolicyHolder")) - 1)) & ~bytes32(uint256(0xff));
24
+ // TODO fix address
25
+ bytes32 public constant POLICY_HOLDER_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
26
+
27
+ struct PolicyHolderStorage {
28
+ mapping(NftId policyId => mapping(PayoutId payoutId => address beneficiary)) _beneficiary;
29
+ address _beneficiaryDefault;
30
+ }
31
+
32
+ function initializePolicyHolder(
33
+ address registryAddress,
34
+ address beneficiaryDefault
35
+ )
36
+ public
37
+ virtual
38
+ onlyInitializing()
39
+ {
40
+ initializeRegistryLinked(registryAddress);
41
+
42
+ _getPolicyHolderStorage()._beneficiaryDefault = beneficiaryDefault;
43
+
44
+ registerInterface(type(IPolicyHolder).interfaceId);
45
+ }
46
+
47
+ /// @dev empty default implementation
48
+ function requestPayout(NftId requestingPolicyNftId, Amount requestedPayoutAmount) external { }
49
+
50
+ /// @dev empty default implementation
51
+ function policyActivated(NftId policyNftId) external {}
52
+
53
+ /// @dev empty default implementation
54
+ function policyExpired(NftId policyNftId) external {}
55
+
56
+ /// @dev empty default implementation
57
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external {}
58
+
59
+ /// @dev empty default implementation
60
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
61
+
62
+ /// @dev returns payout specific beneficiary
63
+ /// when no such beneficiary is defined the policy specific beneficiary is returned
64
+ function getBeneficiary(NftId policyNftId, PayoutId payoutId) external virtual view returns (address beneficiary) {
65
+ beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId];
66
+
67
+ // fallback to claim independent beneficiary
68
+ if(beneficiary == address(0) && payoutId.gtz()) {
69
+ beneficiary = _getPolicyHolderStorage()._beneficiary[policyNftId][PayoutIdLib.zero()];
70
+ }
71
+ }
72
+
73
+ //--- IERC165 functions ---------------//
74
+ function onERC721Received(
75
+ address, // operator
76
+ address, // from
77
+ uint256, // tokenId
78
+ bytes calldata // data
79
+ )
80
+ external
81
+ virtual
82
+ returns (bytes4)
83
+ {
84
+ return IERC721Receiver.onERC721Received.selector;
85
+ }
86
+
87
+ /// @dev sets policy specific beneficiary (used when no payout specific beneficiary is defined)
88
+ function _setBeneficiary(NftId policyNftId, address beneficiary) internal {
89
+ _setBeneficiary(policyNftId, PayoutIdLib.zero(), beneficiary);
90
+ }
91
+
92
+ /// @dev sets policy and claim specific beneficiary
93
+ function _setBeneficiary(NftId policyNftId, PayoutId payoutId, address beneficiary) internal {
94
+ _getPolicyHolderStorage()._beneficiary[policyNftId][payoutId] = beneficiary;
95
+ }
96
+
97
+ function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {
98
+ assembly {
99
+ $.slot := POLICY_HOLDER_STORAGE_LOCATION_V1
100
+ }
101
+ }
102
+ }
@@ -1,79 +1,108 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Ownable} from "@openzeppelin5/contracts/access/Ownable.sol";
5
- import {ProxyAdmin} from "@openzeppelin5/contracts/proxy/transparent/ProxyAdmin.sol";
6
- import {ITransparentUpgradeableProxy} from "@openzeppelin5/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
4
+ import {ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
7
5
 
6
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
8
7
  import {IVersionable} from "./IVersionable.sol";
8
+ import {NftOwnable} from "./NftOwnable.sol";
9
+ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
10
+ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
11
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
9
12
  import {UpgradableProxyWithAdmin} from "./UpgradableProxyWithAdmin.sol";
10
- import {IVersionable} from "./IVersionable.sol";
13
+ import {Version, VersionLib} from "../type/Version.sol";
14
+ import {NftId} from "../type/NftId.sol";
11
15
 
12
16
  /// @dev manages proxy deployments for upgradable contracs of type IVersionable
13
- contract ProxyManager is Ownable {
17
+ contract ProxyManager is
18
+ NftOwnable
19
+ {
20
+
21
+ struct VersionInfo {
22
+ Version version;
23
+ address implementation;
24
+ address activatedBy;
25
+ Timestamp activatedAt;
26
+ Blocknumber activatedIn;
27
+ }
28
+
29
+ event LogProxyManagerVersionableDeployed(address indexed proxy, address initialImplementation);
30
+ event LogProxyManagerVersionableUpgraded(address indexed proxy, address upgradedImplementation);
31
+
32
+ error ErrorProxyManagerAlreadyDeployed();
33
+ error ErrorProxyManagerNotYetDeployed();
14
34
 
15
- event LogProxyDeployed(address indexed proxy, address initialImplementation);
16
- event LogProxyDeployedWithSalt(address indexed proxy, address initialImplementation);
17
- event LogProxyUpgraded(address indexed proxy, address upgradedImplementation);
35
+ error ErrorProxyManagerZeroVersion();
36
+ error ErrorProxyManagerNextVersionNotIncreasing(Version nextVersion);
18
37
 
19
- error ErrorAlreadyDeployed();
20
- error ErrorAlreadyDeployedWithSalt();
21
- error ErrorNotYetDeployed();
38
+ UpgradableProxyWithAdmin internal _proxy;
22
39
 
23
- UpgradableProxyWithAdmin private _proxy;
24
- bool private _isDeployed;
40
+ // state to keep version history
41
+ mapping(Version version => VersionInfo info) _versionHistory;
42
+ Version [] _versions;
25
43
 
26
44
  /// @dev only used to capture proxy owner
27
- constructor()
28
- Ownable(msg.sender)
29
- { }
45
+ constructor(address registry)
46
+ {
47
+ initializeProxyManager(registry);
48
+ }
49
+
50
+ function initializeProxyManager(address registry)
51
+ public
52
+ initializer()
53
+ {
54
+ initializeNftOwnable(msg.sender, registry);
55
+ }
30
56
 
31
57
  /// @dev deploy initial contract
32
58
  function deploy(address initialImplementation, bytes memory initializationData)
33
59
  public
60
+ virtual
34
61
  onlyOwner()
35
62
  returns (IVersionable versionable)
36
63
  {
37
- if (_isDeployed) { revert ErrorAlreadyDeployed(); }
64
+ if (_versions.length > 0) {
65
+ revert ErrorProxyManagerAlreadyDeployed();
66
+ }
38
67
 
39
- address currentProxyOwner = owner(); // used by implementation
68
+ address currentProxyOwner = getOwner(); // used by implementation
40
69
  address initialProxyAdminOwner = address(this); // used by proxy
41
- bytes memory data = getDeployData(initialImplementation, currentProxyOwner, initializationData);
42
70
 
43
71
  _proxy = new UpgradableProxyWithAdmin(
44
72
  initialImplementation,
45
73
  initialProxyAdminOwner,
46
- data
74
+ getDeployData(currentProxyOwner, initializationData)
47
75
  );
48
76
 
49
- _isDeployed = true;
50
77
  versionable = IVersionable(address(_proxy));
78
+ _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
51
79
 
52
- emit LogProxyDeployed(address(_proxy), initialImplementation);
80
+ emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
53
81
  }
54
82
 
55
- function deployWithSalt(address initialImplementation, bytes memory initializationData, bytes32 salt)
83
+ function deployDetermenistic(address initialImplementation, bytes memory initializationData, bytes32 salt)
56
84
  public
85
+ virtual
57
86
  onlyOwner()
58
87
  returns (IVersionable versionable)
59
88
  {
60
- if (_isDeployed) { revert ErrorAlreadyDeployedWithSalt(); }
89
+ if (_versions.length > 0) {
90
+ revert ErrorProxyManagerAlreadyDeployed();
91
+ }
61
92
 
62
- address currentProxyOwner = owner(); // used by implementation
63
- address initialProxyAdminOwner = address(this); // used by proxy
64
- bytes memory data = getDeployData(initialImplementation, currentProxyOwner, initializationData);
93
+ address currentProxyOwner = getOwner();
94
+ address initialProxyAdminOwner = address(this);
65
95
 
66
- // via create2
67
96
  _proxy = new UpgradableProxyWithAdmin{salt: salt}(
68
97
  initialImplementation,
69
98
  initialProxyAdminOwner,
70
- data
99
+ getDeployData(currentProxyOwner, initializationData)
71
100
  );
72
101
 
73
- _isDeployed = true;
74
102
  versionable = IVersionable(address(_proxy));
103
+ _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
75
104
 
76
- emit LogProxyDeployedWithSalt(address(_proxy), initialImplementation);
105
+ emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
77
106
  }
78
107
 
79
108
  /// @dev upgrade existing contract
@@ -83,33 +112,88 @@ contract ProxyManager is Ownable {
83
112
  onlyOwner()
84
113
  returns (IVersionable versionable)
85
114
  {
86
- if (!_isDeployed) { revert ErrorNotYetDeployed(); }
115
+ if (_versions.length == 0) {
116
+ revert ErrorProxyManagerNotYetDeployed();
117
+ }
87
118
 
88
- address currentProxyOwner = owner();
89
- ProxyAdmin proxyAdmin = getProxyAdmin();
119
+ address currentProxyOwner = getOwner();
120
+ ProxyAdmin proxyAdmin = getProxy().getProxyAdmin();
90
121
  ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
91
- bytes memory data = getUpgradeData(newImplementation, currentProxyOwner, upgradeData);
92
122
 
93
123
  proxyAdmin.upgradeAndCall(
94
124
  proxy,
95
125
  newImplementation,
96
- data);
126
+ getUpgradeData(upgradeData));
97
127
 
98
128
  versionable = IVersionable(address(_proxy));
129
+ _updateVersionHistory(versionable.getVersion(), newImplementation, currentProxyOwner);
130
+
131
+ emit LogProxyManagerVersionableUpgraded(address(_proxy), newImplementation);
99
132
 
100
- emit LogProxyUpgraded(address(_proxy), newImplementation);
133
+ }
134
+
135
+ function linkToProxy() public returns (NftId) {
136
+ return _linkToNftOwnable(address(_proxy));
137
+ }
138
+
139
+ function getDeployData(address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
140
+ return abi.encodeWithSelector(
141
+ IVersionable.initializeVersionable.selector,
142
+ proxyOwner,
143
+ deployData);
144
+ }
145
+
146
+ function getUpgradeData(bytes memory upgradeData) public pure returns (bytes memory data) {
147
+ return abi.encodeWithSelector(
148
+ IVersionable.upgradeVersionable.selector,
149
+ upgradeData);
150
+ }
101
151
 
152
+ function getProxy() public view returns (UpgradableProxyWithAdmin) {
153
+ return _proxy;
102
154
  }
103
155
 
104
- function getDeployData(address implementation, address proxyOwner, bytes memory deployData) public pure returns (bytes memory data) {
105
- return abi.encodeWithSelector(IVersionable.initialize.selector, implementation, proxyOwner, deployData);
156
+ function getVersion() external view virtual returns(Version) {
157
+ return IVersionable(address(_proxy)).getVersion();
106
158
  }
107
159
 
108
- function getUpgradeData(address implementation, address proxyOwner, bytes memory upgradeData) public pure returns (bytes memory data) {
109
- return abi.encodeWithSelector(IVersionable.upgrade.selector, implementation, proxyOwner, upgradeData);
160
+ function getVersionCount() external view returns(uint256) {
161
+ return _versions.length;
110
162
  }
111
163
 
112
- function getProxyAdmin() public returns (ProxyAdmin) {
113
- return _proxy.getProxyAdmin();
164
+ function getVersion(uint256 idx) external view returns(Version) {
165
+ return _versions[idx];
166
+ }
167
+
168
+ function getVersionInfo(Version _version) external view returns(VersionInfo memory) {
169
+ return _versionHistory[_version];
170
+ }
171
+
172
+ function _updateVersionHistory(
173
+ Version newVersion,
174
+ address implementation,
175
+ address activatedBy
176
+ )
177
+ private
178
+ {
179
+ if(newVersion == VersionLib.zeroVersion()) {
180
+ revert ErrorProxyManagerZeroVersion();
181
+ }
182
+
183
+ if(_versions.length > 0) {
184
+ if(newVersion.toInt() <= _versions[_versions.length-1].toInt()) {
185
+ revert ErrorProxyManagerNextVersionNotIncreasing(newVersion);
186
+ }
187
+ }
188
+
189
+ // update version history
190
+ _versions.push(newVersion);
191
+ _versionHistory[newVersion] = VersionInfo(
192
+ newVersion,
193
+ implementation,
194
+ activatedBy,
195
+ TimestampLib.blockTimestamp(),
196
+ blockNumber()
197
+ );
114
198
  }
115
199
  }
@@ -1,117 +1,75 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
- import {ObjectType} from "../types/ObjectType.sol";
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
+ import {NftOwnable} from "../shared/NftOwnable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
8
9
 
9
10
  import {IRegistry} from "../registry/IRegistry.sol";
10
11
  import {IRegisterable} from "./IRegisterable.sol";
11
- import {Versionable} from "./Versionable.sol";
12
12
 
13
- import {ERC165} from "./ERC165.sol";
14
-
15
- abstract contract Registerable is
16
- ERC165,
17
- IRegisterable,
18
- Initializable
13
+ contract Registerable is
14
+ NftOwnable,
15
+ IRegisterable
19
16
  {
20
17
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
21
18
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
22
19
 
23
20
  struct RegisterableStorage {
24
- IRegistry _registry;
25
21
  NftId _parentNftId;
26
- address _initialOwner;
27
22
  ObjectType _objectType;
28
23
  bool _isInterceptor;
29
24
  bytes _data;
30
25
  }
31
26
 
32
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
33
- assembly {
34
- $.slot := REGISTERABLE_LOCATION_V1
35
- }
36
- }
37
-
38
- modifier onlyOwner() virtual {
39
- require(
40
- msg.sender == getOwner(),
41
- "ERROR:RGB-001:NOT_OWNER"
42
- );
43
- _;
44
- }
45
-
46
- function _initializeRegisterable(
27
+ function initializeRegisterable(
47
28
  address registryAddress,
48
29
  NftId parentNftId,
49
30
  ObjectType objectType,
50
31
  bool isInterceptor,
51
32
  address initialOwner,
52
- bytes memory data
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
53
34
  )
54
- internal
55
- //onlyInitializing//TODO uncomment when "fully" upgradeable
35
+ public
56
36
  virtual
37
+ onlyInitializing
57
38
  {
58
- require(
59
- registryAddress != address(0),
60
- "ERROR:RGB-010:REGISTRY_ZERO"
61
- );
62
-
63
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
64
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
39
+ initializeNftOwnable(
40
+ initialOwner,
41
+ registryAddress);
65
42
 
66
- IRegistry registry = IRegistry(registryAddress);
67
- require(
68
- registry.supportsInterface(type(IRegistry).interfaceId),
69
- "ERROR:RGB-011:NOT_REGISTRY"
70
- );
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
46
+ }
71
47
 
72
- RegisterableStorage storage $ = _getRegisterableStorage();
73
- $._registry = registry;
74
48
  $._parentNftId = parentNftId;
75
49
  $._objectType = objectType;
76
50
  $._isInterceptor = isInterceptor;
77
- $._initialOwner = initialOwner;// not msg.sender because called in proxy constructor where msg.sender is proxy deployer
78
- $._data = data;
79
-
80
- _registerInterface(type(Registerable).interfaceId);
81
- }
82
-
83
- // from IOwnable
84
- function getOwner() public view virtual returns (address) {
85
- return _getRegisterableStorage()._registry.ownerOf(address(this));
51
+ $._data = registryData;
86
52
  }
87
53
 
88
- // from IRegisterable
89
- function getRegistry() public view virtual returns (IRegistry registry) {
90
- return _getRegisterableStorage()._registry;
91
- }
92
-
93
- function getNftId() public view virtual returns (NftId nftId) {
94
- return _getRegisterableStorage()._registry.getNftId(address(this));
95
- }
96
54
 
97
55
  function getInitialInfo()
98
56
  public
99
57
  view
100
58
  virtual
101
- returns (IRegistry.ObjectInfo memory, bytes memory data)
59
+ returns (IRegistry.ObjectInfo memory info)
102
60
  {
103
- RegisterableStorage storage $ = _getRegisterableStorage();
104
- return (
105
- IRegistry.ObjectInfo(
106
- zeroNftId(),
107
- $._parentNftId,
108
- $._objectType,
109
- $._isInterceptor,
110
- address(this),
111
- $._initialOwner,
112
- $._data
113
- ),
114
- bytes("")
115
- );
61
+ RegisterableStorage storage $;
62
+ assembly {
63
+ $.slot := REGISTERABLE_LOCATION_V1
64
+ }
65
+
66
+ info = IRegistry.ObjectInfo(
67
+ NftIdLib.zero(),
68
+ $._parentNftId,
69
+ $._objectType,
70
+ $._isInterceptor,
71
+ address(this),
72
+ getOwner(),
73
+ $._data);
116
74
  }
117
75
  }