@etherisc/gif-next 0.0.2-f752d2a-551 → 0.0.2-f761c0d-394

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 +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 -1494
  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 +473 -1765
  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/Require.sol/Require.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  487. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  489. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  491. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  493. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  498. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  500. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  502. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  504. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  506. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  507. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  508. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  509. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  510. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  511. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  512. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  516. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  518. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  519. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  520. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  521. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  524. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  525. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  526. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  529. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  531. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  532. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  534. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  536. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  538. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  540. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  542. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  543. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  544. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  545. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  546. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  549. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  551. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  552. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  553. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  555. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  557. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  560. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  562. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  564. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  566. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  567. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  568. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  570. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  571. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  572. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  573. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  575. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  577. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  578. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  580. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  581. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  582. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  583. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  584. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  585. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  586. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  587. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  588. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  589. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  590. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  591. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  592. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  593. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  594. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  595. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  597. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  598. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  599. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  601. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  603. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  604. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  605. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  606. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  607. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  609. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  611. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  612. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  613. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  615. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  617. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  618. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  619. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  621. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  623. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  626. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  628. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  630. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  632. package/contracts/components/BaseComponent.sol +0 -88
  633. package/contracts/components/IBaseComponent.sol +0 -19
  634. package/contracts/components/IPoolComponent.sol +0 -57
  635. package/contracts/components/IProductComponent.sol +0 -19
  636. package/contracts/components/Pool.sol +0 -174
  637. package/contracts/components/Product.sol +0 -117
  638. package/contracts/experiment/errors/Require.sol +0 -38
  639. package/contracts/experiment/errors/Revert.sol +0 -44
  640. package/contracts/experiment/inheritance/A.sol +0 -53
  641. package/contracts/experiment/inheritance/B.sol +0 -28
  642. package/contracts/experiment/inheritance/C.sol +0 -34
  643. package/contracts/experiment/inheritance/IA.sol +0 -13
  644. package/contracts/experiment/inheritance/IB.sol +0 -10
  645. package/contracts/experiment/inheritance/IC.sol +0 -12
  646. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  647. package/contracts/experiment/statemachine/ISM.sol +0 -25
  648. package/contracts/experiment/statemachine/README.md +0 -112
  649. package/contracts/experiment/statemachine/SM.sol +0 -57
  650. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  651. package/contracts/experiment/types/TypeA.sol +0 -47
  652. package/contracts/experiment/types/TypeB.sol +0 -29
  653. package/contracts/instance/IInstanceLinked.sol +0 -8
  654. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  655. package/contracts/instance/base/IInstanceBase.sol +0 -14
  656. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  657. package/contracts/instance/base/IService.sol +0 -15
  658. package/contracts/instance/base/InstanceBase.sol +0 -80
  659. package/contracts/instance/base/KeyValueStore.sol +0 -156
  660. package/contracts/instance/base/Lifecycle.sol +0 -95
  661. package/contracts/instance/base/ModuleBase.sol +0 -52
  662. package/contracts/instance/base/ServiceBase.sol +0 -37
  663. package/contracts/instance/module/access/Access.sol +0 -149
  664. package/contracts/instance/module/access/IAccess.sol +0 -53
  665. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  666. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  667. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  668. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  669. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  670. package/contracts/instance/module/component/IComponent.sol +0 -53
  671. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  672. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  673. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  674. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  675. package/contracts/instance/module/risk/IRisk.sol +0 -10
  676. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  677. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  678. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  679. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  680. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  681. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  682. package/contracts/instance/service/IPoolService.sol +0 -30
  683. package/contracts/instance/service/IProductService.sol +0 -58
  684. package/contracts/instance/service/PoolService.sol +0 -123
  685. package/contracts/instance/service/ProductService.sol +0 -354
  686. package/contracts/registry/IChainNft.sol +0 -21
  687. package/contracts/registry/IRegistryLinked.sol +0 -8
  688. package/contracts/shared/IOwnable.sol +0 -6
  689. package/contracts/test/TestFee.sol +0 -25
  690. package/contracts/test/TestPool.sol +0 -22
  691. package/contracts/test/TestProduct.sol +0 -44
  692. package/contracts/test/TestRegisterable.sol +0 -19
  693. package/contracts/test/TestRoleId.sol +0 -14
  694. package/contracts/test/TestService.sol +0 -32
  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 -51
  700. package/contracts/types/NftIdSet.sol +0 -60
  701. package/contracts/types/ObjectType.sol +0 -115
  702. package/contracts/types/RoleId.sol +0 -38
  703. 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
+ }