@etherisc/gif-next 0.0.2-de220d6-949 → 0.0.2-e026265-044

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 (710) hide show
  1. package/README.md +268 -15
  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 +1505 -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 +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +280 -1504
  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 +472 -1774
  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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.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/IDistribution.sol/IDistribution.json +10 -0
  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 +1155 -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 +772 -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 +1063 -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 +1477 -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/pool/IBundleService.sol/IBundleService.json +703 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -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 +1269 -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 +1299 -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/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +256 -221
  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 +966 -0
  138. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +207 -171
  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 +1257 -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 +591 -34
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  159. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -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 +821 -107
  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/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  173. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.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 +1487 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -0
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  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 +880 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +104 -141
  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/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  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/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +163 -143
  208. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  210. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  212. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  213. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -0
  214. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  215. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  216. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  217. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  218. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  219. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  220. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  221. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  222. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  223. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  224. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  226. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  227. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  228. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  229. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  230. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  231. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  232. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  233. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  234. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  235. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  236. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  264. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  292. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  296. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  298. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  300. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  302. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  304. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  306. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  308. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -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 +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +283 -0
  323. package/contracts/distribution/DistributionService.sol +302 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  325. package/contracts/distribution/IDistributionComponent.sol +48 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleManager.sol +126 -0
  328. package/contracts/instance/IInstance.sol +78 -44
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +238 -52
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  333. package/contracts/instance/InstanceReader.sol +405 -0
  334. package/contracts/instance/InstanceService.sol +443 -0
  335. package/contracts/instance/InstanceServiceManager.sol +44 -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/ObjectManager.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 +52 -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 +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +42 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +296 -0
  360. package/contracts/pool/BundleServiceManager.sol +42 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +452 -0
  366. package/contracts/pool/PoolServiceManager.sol +42 -0
  367. package/contracts/product/ApplicationService.sol +254 -0
  368. package/contracts/product/ApplicationServiceManager.sol +38 -0
  369. package/contracts/product/BasicProduct.sol +82 -0
  370. package/contracts/product/BasicProductAuthorization.sol +40 -0
  371. package/contracts/product/ClaimService.sol +442 -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 +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -0
  380. package/contracts/product/PolicyServiceManager.sol +42 -0
  381. package/contracts/product/PricingService.sol +300 -0
  382. package/contracts/product/PricingServiceManager.sol +42 -0
  383. package/contracts/product/Product.sol +392 -0
  384. package/contracts/product/ProductService.sol +124 -0
  385. package/contracts/product/ProductServiceManager.sol +42 -0
  386. package/contracts/registry/ChainNft.sol +95 -37
  387. package/contracts/registry/IRegistry.sol +93 -29
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +478 -281
  391. package/contracts/registry/RegistryAdmin.sol +365 -0
  392. package/contracts/registry/RegistryService.sol +266 -0
  393. package/contracts/registry/RegistryServiceManager.sol +53 -0
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseManager.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 +281 -0
  399. package/contracts/shared/ComponentService.sol +581 -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 +102 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -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/IVersionable.sol +38 -37
  414. package/contracts/shared/InitializableCustom.sol +177 -0
  415. package/contracts/shared/InstanceLinkedComponent.sol +151 -0
  416. package/contracts/shared/KeyValueStore.sol +131 -0
  417. package/contracts/shared/Lifecycle.sol +77 -0
  418. package/contracts/shared/NftIdSetManager.sol +65 -0
  419. package/contracts/shared/NftOwnable.sol +107 -0
  420. package/contracts/shared/PolicyHolder.sol +102 -0
  421. package/contracts/shared/ProxyManager.sol +199 -0
  422. package/contracts/shared/Registerable.sol +54 -65
  423. package/contracts/shared/RegistryLinked.sol +43 -0
  424. package/contracts/shared/Service.sol +83 -0
  425. package/contracts/shared/TokenHandler.sol +58 -0
  426. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  427. package/contracts/shared/Versionable.sol +38 -68
  428. package/contracts/staking/IStaking.sol +168 -0
  429. package/contracts/staking/IStakingService.sol +153 -0
  430. package/contracts/staking/StakeManagerLib.sol +231 -0
  431. package/contracts/staking/Staking.sol +513 -0
  432. package/contracts/staking/StakingLifecycle.sol +23 -0
  433. package/contracts/staking/StakingManager.sol +54 -0
  434. package/contracts/staking/StakingReader.sol +187 -0
  435. package/contracts/staking/StakingService.sol +411 -0
  436. package/contracts/staking/StakingServiceManager.sol +44 -0
  437. package/contracts/staking/StakingStore.sol +615 -0
  438. package/contracts/staking/TargetManagerLib.sol +207 -0
  439. package/contracts/{types → type}/AddressSet.sol +1 -1
  440. package/contracts/type/Amount.sol +128 -0
  441. package/contracts/{types → type}/Blocknumber.sol +21 -3
  442. package/contracts/type/ClaimId.sol +75 -0
  443. package/contracts/type/DistributorType.sol +55 -0
  444. package/contracts/type/Fee.sol +66 -0
  445. package/contracts/{types → type}/Key32.sol +8 -3
  446. package/contracts/{types → type}/NftId.sol +21 -15
  447. package/contracts/type/NftIdSet.sol +62 -0
  448. package/contracts/type/ObjectType.sol +275 -0
  449. package/contracts/type/PayoutId.sol +82 -0
  450. package/contracts/type/Referral.sol +89 -0
  451. package/contracts/type/RequestId.sol +75 -0
  452. package/contracts/type/RiskId.sol +43 -0
  453. package/contracts/type/RoleId.sol +174 -0
  454. package/contracts/type/Seconds.sol +81 -0
  455. package/contracts/type/Selector.sol +102 -0
  456. package/contracts/{types → type}/StateId.sol +39 -5
  457. package/contracts/type/String.sol +53 -0
  458. package/contracts/{types → type}/Timestamp.sol +27 -14
  459. package/contracts/type/UFixed.sol +332 -0
  460. package/contracts/{types → type}/Version.sol +15 -2
  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/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  467. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  468. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  469. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  470. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  471. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  472. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  473. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IIncrementRevert.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IIncrementRevert.json +0 -27
  475. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IncrementRevert.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IncrementRevert.json +0 -83
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  479. package/artifacts/contracts/experiment/errors/Revert.sol/IRevert.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/errors/Revert.sol/IRevert.json +0 -75
  481. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -137
  483. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  485. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  487. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  489. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  493. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  495. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  497. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  499. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  501. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  504. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  506. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  508. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  510. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  512. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  513. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  514. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  516. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  518. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  519. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  522. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  525. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  527. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  530. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  532. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  534. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  535. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  536. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  537. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  540. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  542. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  544. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  546. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  548. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  550. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  552. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  555. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  557. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  559. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  561. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  563. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  566. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  567. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  568. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  570. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  571. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  572. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  573. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  574. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  575. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  576. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  578. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  581. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  582. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  583. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  584. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  585. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  586. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  587. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  588. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  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/test/TestFee.sol/TestFee.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  593. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  595. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  597. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  598. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  599. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  601. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  603. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  605. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  607. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  609. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  610. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  611. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  612. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  613. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  615. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  617. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  619. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  621. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  623. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  624. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  625. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  627. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  629. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  632. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  634. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  636. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  638. package/contracts/components/BaseComponent.sol +0 -88
  639. package/contracts/components/IBaseComponent.sol +0 -19
  640. package/contracts/components/IPoolComponent.sol +0 -57
  641. package/contracts/components/IProductComponent.sol +0 -19
  642. package/contracts/components/Pool.sol +0 -174
  643. package/contracts/components/Product.sol +0 -117
  644. package/contracts/experiment/errors/IncrementRevert.sol +0 -43
  645. package/contracts/experiment/errors/Require.sol +0 -38
  646. package/contracts/experiment/errors/Revert.sol +0 -53
  647. package/contracts/experiment/inheritance/A.sol +0 -53
  648. package/contracts/experiment/inheritance/B.sol +0 -28
  649. package/contracts/experiment/inheritance/C.sol +0 -34
  650. package/contracts/experiment/inheritance/IA.sol +0 -13
  651. package/contracts/experiment/inheritance/IB.sol +0 -10
  652. package/contracts/experiment/inheritance/IC.sol +0 -12
  653. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  654. package/contracts/experiment/statemachine/ISM.sol +0 -25
  655. package/contracts/experiment/statemachine/README.md +0 -112
  656. package/contracts/experiment/statemachine/SM.sol +0 -57
  657. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  658. package/contracts/experiment/types/TypeA.sol +0 -47
  659. package/contracts/experiment/types/TypeB.sol +0 -29
  660. package/contracts/instance/IInstanceLinked.sol +0 -8
  661. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  662. package/contracts/instance/base/IInstanceBase.sol +0 -14
  663. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  664. package/contracts/instance/base/IService.sol +0 -15
  665. package/contracts/instance/base/InstanceBase.sol +0 -80
  666. package/contracts/instance/base/KeyValueStore.sol +0 -156
  667. package/contracts/instance/base/Lifecycle.sol +0 -95
  668. package/contracts/instance/base/ModuleBase.sol +0 -52
  669. package/contracts/instance/base/ServiceBase.sol +0 -37
  670. package/contracts/instance/module/access/Access.sol +0 -149
  671. package/contracts/instance/module/access/IAccess.sol +0 -53
  672. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  673. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  674. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  675. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  676. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  677. package/contracts/instance/module/component/IComponent.sol +0 -53
  678. package/contracts/instance/module/policy/IPolicy.sol +0 -61
  679. package/contracts/instance/module/policy/PolicyModule.sol +0 -77
  680. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  681. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  682. package/contracts/instance/module/risk/IRisk.sol +0 -10
  683. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  684. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  685. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  686. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  687. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  688. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  689. package/contracts/instance/service/IPoolService.sol +0 -30
  690. package/contracts/instance/service/IProductService.sol +0 -58
  691. package/contracts/instance/service/PoolService.sol +0 -123
  692. package/contracts/instance/service/ProductService.sol +0 -354
  693. package/contracts/registry/IChainNft.sol +0 -21
  694. package/contracts/registry/IRegistryLinked.sol +0 -8
  695. package/contracts/shared/IOwnable.sol +0 -6
  696. package/contracts/test/TestFee.sol +0 -25
  697. package/contracts/test/TestPool.sol +0 -22
  698. package/contracts/test/TestProduct.sol +0 -44
  699. package/contracts/test/TestRegisterable.sol +0 -19
  700. package/contracts/test/TestRoleId.sol +0 -14
  701. package/contracts/test/TestService.sol +0 -32
  702. package/contracts/test/TestToken.sol +0 -26
  703. package/contracts/test/TestVersion.sol +0 -44
  704. package/contracts/test/TestVersionable.sol +0 -17
  705. package/contracts/types/ChainId.sol +0 -38
  706. package/contracts/types/Fee.sol +0 -51
  707. package/contracts/types/NftIdSet.sol +0 -60
  708. package/contracts/types/ObjectType.sol +0 -115
  709. package/contracts/types/RoleId.sol +0 -38
  710. package/contracts/types/UFixed.sol +0 -209
@@ -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
+ }
@@ -0,0 +1,199 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
5
+
6
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
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";
12
+ import {UpgradableProxyWithAdmin} from "./UpgradableProxyWithAdmin.sol";
13
+ import {Version, VersionLib} from "../type/Version.sol";
14
+ import {NftId} from "../type/NftId.sol";
15
+
16
+ /// @dev manages proxy deployments for upgradable contracs of type IVersionable
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();
34
+
35
+ error ErrorProxyManagerZeroVersion();
36
+ error ErrorProxyManagerNextVersionNotIncreasing(Version nextVersion);
37
+
38
+ UpgradableProxyWithAdmin internal _proxy;
39
+
40
+ // state to keep version history
41
+ mapping(Version version => VersionInfo info) _versionHistory;
42
+ Version [] _versions;
43
+
44
+ /// @dev only used to capture proxy owner
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
+ }
56
+
57
+ /// @dev deploy initial contract
58
+ function deploy(address initialImplementation, bytes memory initializationData)
59
+ public
60
+ virtual
61
+ onlyOwner()
62
+ returns (IVersionable versionable)
63
+ {
64
+ if (_versions.length > 0) {
65
+ revert ErrorProxyManagerAlreadyDeployed();
66
+ }
67
+
68
+ address currentProxyOwner = getOwner(); // used by implementation
69
+ address initialProxyAdminOwner = address(this); // used by proxy
70
+
71
+ _proxy = new UpgradableProxyWithAdmin(
72
+ initialImplementation,
73
+ initialProxyAdminOwner,
74
+ getDeployData(currentProxyOwner, initializationData)
75
+ );
76
+
77
+ versionable = IVersionable(address(_proxy));
78
+ _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
79
+
80
+ emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
81
+ }
82
+
83
+ function deployDetermenistic(address initialImplementation, bytes memory initializationData, bytes32 salt)
84
+ public
85
+ virtual
86
+ onlyOwner()
87
+ returns (IVersionable versionable)
88
+ {
89
+ if (_versions.length > 0) {
90
+ revert ErrorProxyManagerAlreadyDeployed();
91
+ }
92
+
93
+ address currentProxyOwner = getOwner();
94
+ address initialProxyAdminOwner = address(this);
95
+
96
+ _proxy = new UpgradableProxyWithAdmin{salt: salt}(
97
+ initialImplementation,
98
+ initialProxyAdminOwner,
99
+ getDeployData(currentProxyOwner, initializationData)
100
+ );
101
+
102
+ versionable = IVersionable(address(_proxy));
103
+ _updateVersionHistory(versionable.getVersion(), initialImplementation, currentProxyOwner);
104
+
105
+ emit LogProxyManagerVersionableDeployed(address(_proxy), initialImplementation);
106
+ }
107
+
108
+ /// @dev upgrade existing contract
109
+ function upgrade(address newImplementation, bytes memory upgradeData)
110
+ public
111
+ virtual
112
+ onlyOwner()
113
+ returns (IVersionable versionable)
114
+ {
115
+ if (_versions.length == 0) {
116
+ revert ErrorProxyManagerNotYetDeployed();
117
+ }
118
+
119
+ address currentProxyOwner = getOwner();
120
+ ProxyAdmin proxyAdmin = getProxy().getProxyAdmin();
121
+ ITransparentUpgradeableProxy proxy = ITransparentUpgradeableProxy(address(_proxy));
122
+
123
+ proxyAdmin.upgradeAndCall(
124
+ proxy,
125
+ newImplementation,
126
+ getUpgradeData(upgradeData));
127
+
128
+ versionable = IVersionable(address(_proxy));
129
+ _updateVersionHistory(versionable.getVersion(), newImplementation, currentProxyOwner);
130
+
131
+ emit LogProxyManagerVersionableUpgraded(address(_proxy), newImplementation);
132
+
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
+ }
151
+
152
+ function getProxy() public view returns (UpgradableProxyWithAdmin) {
153
+ return _proxy;
154
+ }
155
+
156
+ function getVersion() external view virtual returns(Version) {
157
+ return IVersionable(address(_proxy)).getVersion();
158
+ }
159
+
160
+ function getVersionCount() external view returns(uint256) {
161
+ return _versions.length;
162
+ }
163
+
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
+ );
198
+ }
199
+ }
@@ -1,86 +1,75 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId, zeroNftId} from "../types/NftId.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
+ import {NftOwnable} from "../shared/NftOwnable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
6
9
 
7
10
  import {IRegistry} from "../registry/IRegistry.sol";
8
11
  import {IRegisterable} from "./IRegisterable.sol";
9
12
 
10
- import {ERC165} from "./ERC165.sol";
11
-
12
- abstract contract Registerable is
13
- ERC165,
13
+ contract Registerable is
14
+ NftOwnable,
14
15
  IRegisterable
15
16
  {
16
- IRegistry internal immutable _registry;
17
- NftId internal immutable _parentNftId;
18
- address internal immutable _initialOwner;
19
-
20
- modifier onlyOwner() virtual {
21
- require(
22
- msg.sender == getOwner(),
23
- "ERROR:RGB-001:NOT_OWNER"
24
- );
25
- _;
17
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
18
+ bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
19
+
20
+ struct RegisterableStorage {
21
+ NftId _parentNftId;
22
+ ObjectType _objectType;
23
+ bool _isInterceptor;
24
+ bytes _data;
26
25
  }
27
26
 
28
- constructor(
27
+ function initializeRegisterable(
29
28
  address registryAddress,
30
- NftId parentNftId
29
+ NftId parentNftId,
30
+ ObjectType objectType,
31
+ bool isInterceptor,
32
+ address initialOwner,
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
31
34
  )
32
- ERC165()
35
+ public
36
+ virtual
37
+ onlyInitializing
33
38
  {
34
- require(
35
- address(registryAddress) != address(0),
36
- "ERROR:RGB-010:REGISTRY_ZERO"
37
- );
38
-
39
- _registry = IRegistry(registryAddress);
40
- require(
41
- _registry.supportsInterface(type(IRegistry).interfaceId),
42
- "ERROR:RGB-011:NOT_REGISTRY"
43
- );
44
-
45
- _parentNftId = parentNftId;
46
- require(
47
- _registry.isRegistered(_parentNftId),
48
- "ERROR:RGB-012:PARENT_NOT_REGISTERED"
49
- );
50
-
51
- _initialOwner = msg.sender;
52
-
53
- // register support for IRegisterable
54
- _registerInterface(type(IRegisterable).interfaceId);
55
- }
39
+ initializeNftOwnable(
40
+ initialOwner,
41
+ registryAddress);
56
42
 
57
- // from IRegistryLinked
58
- function register() public onlyOwner virtual override returns (NftId nftId) {
59
- return _registry.register(address(this));
60
- }
61
-
62
- function getRegistry() public view virtual override returns (IRegistry registry) {
63
- return _registry;
64
- }
65
-
66
- function getOwner() public view virtual override returns (address owner) {
67
- NftId nftId = _registry.getNftId(address(this));
68
- if(nftId == zeroNftId()) {
69
- return _initialOwner;
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
70
46
  }
71
47
 
72
- return _registry.getOwner(nftId);
48
+ $._parentNftId = parentNftId;
49
+ $._objectType = objectType;
50
+ $._isInterceptor = isInterceptor;
51
+ $._data = registryData;
73
52
  }
74
53
 
75
- function getNftId() public view override returns (NftId nftId) {
76
- return _registry.getNftId(address(this));
77
- }
78
54
 
79
- function getParentNftId() public view override returns (NftId nftId) {
80
- return _parentNftId;
81
- }
55
+ function getInitialInfo()
56
+ public
57
+ view
58
+ virtual
59
+ returns (IRegistry.ObjectInfo memory info)
60
+ {
61
+ RegisterableStorage storage $;
62
+ assembly {
63
+ $.slot := REGISTERABLE_LOCATION_V1
64
+ }
82
65
 
83
- function getData() public view virtual override returns (bytes memory data) {
84
- return "";
66
+ info = IRegistry.ObjectInfo(
67
+ NftIdLib.zero(),
68
+ $._parentNftId,
69
+ $._objectType,
70
+ $._isInterceptor,
71
+ address(this),
72
+ getOwner(),
73
+ $._data);
85
74
  }
86
- }
75
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+
8
+ contract RegistryLinked is
9
+ Initializable,
10
+ IRegistryLinked
11
+ {
12
+
13
+ IRegistry private _registry;
14
+
15
+ /// @dev initialization for upgradable contracts
16
+ // used in _initializeRegisterable
17
+ function initializeRegistryLinked(
18
+ address registryAddress
19
+ )
20
+ public
21
+ virtual
22
+ onlyInitializing()
23
+ {
24
+ if (registryAddress.code.length == 0) {
25
+ revert ErrorNotRegistry(registryAddress);
26
+ }
27
+
28
+ _registry = IRegistry(registryAddress);
29
+
30
+ try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
31
+ if (!isRegistry) {
32
+ revert ErrorNotRegistry(registryAddress);
33
+ }
34
+ } catch {
35
+ revert ErrorNotRegistry(registryAddress);
36
+ }
37
+ }
38
+
39
+
40
+ function getRegistry() public view returns (IRegistry) {
41
+ return _registry;
42
+ }
43
+ }
@@ -0,0 +1,83 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IService} from "./IService.sol";
9
+ import {IVersionable} from "./IVersionable.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
+ import {Registerable} from "./Registerable.sol";
13
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
14
+ import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
15
+ import {Versionable} from "./Versionable.sol";
16
+
17
+
18
+ /// @dev service base contract
19
+ abstract contract Service is
20
+ Registerable,
21
+ Versionable,
22
+ AccessManagedUpgradeable,
23
+ IService
24
+ {
25
+
26
+ uint8 private constant GIF_MAJOR_VERSION = 3;
27
+
28
+
29
+ function initializeService(
30
+ address registry,
31
+ address authority, // real authority for registry service adress(0) for other services
32
+ address initialOwner
33
+ )
34
+ public
35
+ virtual
36
+ onlyInitializing()
37
+ {
38
+ initializeRegisterable(
39
+ registry,
40
+ IRegistry(registry).getNftId(),
41
+ SERVICE(),
42
+ false, // is interceptor
43
+ initialOwner,
44
+ ""); // data
45
+
46
+ // externally provided authority
47
+ if(authority != address(0)) {
48
+ __AccessManaged_init(authority);
49
+ } else {
50
+ address registryServiceAddress = _getServiceAddress(REGISTRY());
51
+
52
+ // copy authority from already registered registry services
53
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
54
+ }
55
+
56
+ registerInterface(type(IAccessManaged).interfaceId);
57
+ registerInterface(type(IService).interfaceId);
58
+ }
59
+
60
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
61
+ return _getDomain();
62
+ }
63
+
64
+ function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
65
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
66
+ }
67
+
68
+ // from Versionable
69
+ function getVersion()
70
+ public
71
+ pure
72
+ virtual override (IVersionable, Versionable)
73
+ returns(Version)
74
+ {
75
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
76
+ }
77
+
78
+ function _getDomain() internal virtual pure returns (ObjectType);
79
+
80
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
81
+ return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
82
+ }
83
+ }