@etherisc/gif-next 0.0.2-a84aad4-747 → 0.0.2-a8814be-836

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 (671) hide show
  1. package/README.md +57 -88
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1271 -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/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1050 -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 +167 -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 +253 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1358 -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/{components → distribution}/Distribution.sol/Distribution.json +242 -533
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1421 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +834 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +280 -227
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +270 -335
  36. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1507 -0
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1978 -0
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1427 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1187 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1561 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1996 -0
  56. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  57. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  58. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +286 -1965
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +285 -79
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +358 -2796
  64. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1660 -0
  66. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1068 -304
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +340 -304
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +148 -119
  74. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3648 -0
  76. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  78. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  80. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  82. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  84. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  86. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  87. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +10 -118
  88. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  90. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  91. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  92. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  93. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  94. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  95. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  96. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +995 -0
  97. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  98. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  99. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  100. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  101. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  102. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +781 -0
  103. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  104. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +318 -167
  105. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  106. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +887 -0
  107. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +943 -0
  109. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +726 -0
  111. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  112. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +315 -379
  113. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  115. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1447 -0
  117. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +838 -0
  119. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  120. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +451 -134
  121. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  122. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +315 -316
  123. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  124. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1283 -0
  125. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  126. package/artifacts/contracts/pool/Pool.sol/Pool.json +1078 -0
  127. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  128. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1628 -0
  129. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  130. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  131. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  132. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +753 -0
  133. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  134. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +714 -0
  135. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  136. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +355 -398
  137. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  138. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  139. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  140. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1413 -0
  141. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  142. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +842 -0
  143. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  144. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +145 -168
  145. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  146. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +929 -0
  147. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  148. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +912 -0
  149. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  150. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → product/IPricingService.sol/IPricingService.json} +230 -217
  151. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  152. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +966 -0
  153. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  154. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +97 -65
  155. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  156. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1284 -0
  157. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  158. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +786 -0
  159. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  160. package/artifacts/contracts/product/PricingService.sol/PricingService.json +889 -0
  161. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  162. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +766 -0
  163. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  164. package/artifacts/contracts/product/Product.sol/Product.json +1072 -0
  165. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  166. package/artifacts/contracts/product/RiskService.sol/RiskService.json +604 -0
  167. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  168. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +698 -0
  169. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  170. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  171. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  172. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +435 -29
  173. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +215 -149
  175. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  176. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -68
  178. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  179. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1864 -0
  180. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  181. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +280 -279
  182. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +142 -95
  184. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  185. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  186. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  187. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1048 -0
  188. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  189. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  190. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  191. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  192. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  193. package/artifacts/contracts/shared/Component.sol/Component.json +701 -0
  194. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1589 -0
  196. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +810 -0
  198. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  199. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +162 -142
  200. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  201. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  202. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  203. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +193 -77
  204. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  205. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1049 -0
  206. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +213 -227
  208. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  210. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  212. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -10
  214. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  216. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -10
  218. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  219. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  220. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  221. package/artifacts/contracts/shared/IService.sol/IService.json +112 -19
  222. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  223. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  224. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  225. package/artifacts/contracts/{components/Component.sol/Component.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +195 -218
  226. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  227. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  228. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  229. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  230. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  231. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  232. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -70
  234. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  236. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +34 -106
  238. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  240. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  241. package/artifacts/contracts/shared/Service.sol/Service.json +104 -113
  242. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  243. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  244. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  245. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  246. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  247. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1454 -0
  248. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  249. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1030 -0
  250. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  252. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  253. package/artifacts/contracts/staking/Staking.sol/Staking.json +1844 -0
  254. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  256. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +766 -0
  258. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  260. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  262. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  263. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +714 -0
  264. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  265. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  266. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  267. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  268. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  269. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  270. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  272. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  274. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  276. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  278. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  280. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  282. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  284. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  285. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  286. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  288. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  290. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  292. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  294. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +142 -0
  296. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  298. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  300. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  302. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  304. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  306. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  308. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  310. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  312. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  314. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  316. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  318. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  319. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  320. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +602 -0
  322. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  323. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  324. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  325. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  326. package/contracts/authorization/AccessAdmin.sol +598 -0
  327. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  328. package/contracts/authorization/Authorization.sol +221 -0
  329. package/contracts/authorization/IAccess.sol +48 -0
  330. package/contracts/authorization/IAccessAdmin.sol +137 -0
  331. package/contracts/authorization/IAuthorization.sol +54 -0
  332. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  333. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  334. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  335. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  336. package/contracts/distribution/BasicDistribution.sol +140 -0
  337. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  338. package/contracts/{components → distribution}/Distribution.sol +179 -163
  339. package/contracts/distribution/DistributionService.sol +348 -0
  340. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  341. package/contracts/distribution/IDistributionComponent.sol +52 -0
  342. package/contracts/{instance/service → distribution}/IDistributionService.sol +41 -38
  343. package/contracts/examples/fire/DamageLevel.sol +59 -0
  344. package/contracts/examples/fire/FirePool.sol +75 -0
  345. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  346. package/contracts/examples/fire/FireProduct.sol +411 -0
  347. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  348. package/contracts/examples/fire/FireUSD.sol +26 -0
  349. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  350. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  351. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  352. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  353. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +30 -31
  354. package/contracts/instance/IInstance.sol +38 -73
  355. package/contracts/instance/IInstanceService.sol +50 -30
  356. package/contracts/instance/Instance.sol +147 -245
  357. package/contracts/instance/InstanceAdmin.sol +288 -0
  358. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  359. package/contracts/instance/InstanceReader.sol +264 -59
  360. package/contracts/instance/InstanceService.sol +305 -335
  361. package/contracts/instance/InstanceServiceManager.sol +14 -29
  362. package/contracts/instance/InstanceStore.sol +287 -0
  363. package/contracts/instance/base/BalanceStore.sol +123 -0
  364. package/contracts/instance/base/Cloneable.sol +28 -0
  365. package/contracts/instance/base/ObjectCounter.sol +21 -0
  366. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  367. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
  368. package/contracts/instance/module/IAccess.sol +5 -13
  369. package/contracts/instance/module/IBundle.sol +8 -9
  370. package/contracts/instance/module/IComponents.sol +23 -10
  371. package/contracts/instance/module/IDistribution.sol +6 -6
  372. package/contracts/instance/module/IPolicy.sol +47 -35
  373. package/contracts/instance/module/IRisk.sol +1 -1
  374. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  375. package/contracts/oracle/BasicOracle.sol +48 -0
  376. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  377. package/contracts/oracle/IOracle.sol +36 -0
  378. package/contracts/oracle/IOracleComponent.sol +33 -0
  379. package/contracts/oracle/IOracleService.sol +65 -0
  380. package/contracts/oracle/Oracle.sol +167 -0
  381. package/contracts/oracle/OracleService.sol +286 -0
  382. package/contracts/oracle/OracleServiceManager.sol +39 -0
  383. package/contracts/pool/BasicPool.sol +165 -0
  384. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  385. package/contracts/pool/BundleService.sol +461 -0
  386. package/contracts/pool/BundleServiceManager.sol +39 -0
  387. package/contracts/pool/IBundleService.sol +143 -0
  388. package/contracts/pool/IPoolComponent.sol +68 -0
  389. package/contracts/pool/IPoolService.sol +171 -0
  390. package/contracts/pool/Pool.sol +357 -0
  391. package/contracts/pool/PoolService.sol +563 -0
  392. package/contracts/pool/PoolServiceManager.sol +39 -0
  393. package/contracts/product/ApplicationService.sol +251 -0
  394. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  395. package/contracts/product/BasicProduct.sol +53 -0
  396. package/contracts/product/BasicProductAuthorization.sol +43 -0
  397. package/contracts/product/ClaimService.sol +581 -0
  398. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  399. package/contracts/{instance/service → product}/IApplicationService.sol +16 -35
  400. package/contracts/product/IClaimService.sol +123 -0
  401. package/contracts/product/IPolicyService.sol +80 -0
  402. package/contracts/product/IPricingService.sol +39 -0
  403. package/contracts/product/IProductComponent.sol +53 -0
  404. package/contracts/product/IRiskService.sol +33 -0
  405. package/contracts/product/PolicyService.sol +686 -0
  406. package/contracts/product/PolicyServiceManager.sol +39 -0
  407. package/contracts/product/PricingService.sol +300 -0
  408. package/contracts/product/PricingServiceManager.sol +39 -0
  409. package/contracts/product/Product.sol +434 -0
  410. package/contracts/product/RiskService.sol +96 -0
  411. package/contracts/product/RiskServiceManager.sol +39 -0
  412. package/contracts/registry/ChainNft.sol +72 -32
  413. package/contracts/registry/IRegistry.sol +96 -26
  414. package/contracts/registry/IRegistryService.sol +37 -44
  415. package/contracts/registry/Registry.sol +440 -192
  416. package/contracts/registry/RegistryAdmin.sol +448 -0
  417. package/contracts/registry/RegistryService.sol +108 -132
  418. package/contracts/registry/RegistryServiceManager.sol +23 -32
  419. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  420. package/contracts/registry/ReleaseRegistry.sol +493 -0
  421. package/contracts/registry/ServiceAuthorizationV3.sol +198 -0
  422. package/contracts/registry/TokenRegistry.sol +261 -62
  423. package/contracts/shared/Component.sol +261 -0
  424. package/contracts/shared/ComponentService.sol +641 -0
  425. package/contracts/shared/ComponentServiceManager.sol +38 -0
  426. package/contracts/shared/ComponentVerifyingService.sol +116 -0
  427. package/contracts/shared/ContractLib.sol +38 -0
  428. package/contracts/shared/IComponent.sol +70 -0
  429. package/contracts/shared/IComponentService.sol +108 -0
  430. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  431. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  432. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  433. package/contracts/shared/INftOwnable.sol +4 -2
  434. package/contracts/shared/IPolicyHolder.sol +23 -14
  435. package/contracts/shared/IRegistryLinked.sol +0 -1
  436. package/contracts/shared/IService.sol +15 -8
  437. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  438. package/contracts/shared/InstanceLinkedComponent.sol +171 -0
  439. package/contracts/shared/KeyValueStore.sol +131 -0
  440. package/contracts/shared/Lifecycle.sol +88 -0
  441. package/contracts/shared/NftIdSet.sol +65 -0
  442. package/contracts/shared/NftOwnable.sol +26 -23
  443. package/contracts/shared/PolicyHolder.sol +22 -41
  444. package/contracts/shared/Registerable.sol +17 -16
  445. package/contracts/shared/RegistryLinked.sol +3 -7
  446. package/contracts/shared/Service.sol +56 -27
  447. package/contracts/shared/TokenHandler.sol +115 -9
  448. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  449. package/contracts/staking/IStaking.sol +168 -0
  450. package/contracts/staking/IStakingService.sol +157 -0
  451. package/contracts/staking/StakeManagerLib.sol +224 -0
  452. package/contracts/staking/Staking.sol +498 -0
  453. package/contracts/staking/StakingLifecycle.sol +23 -0
  454. package/contracts/staking/StakingManager.sol +52 -0
  455. package/contracts/staking/StakingReader.sol +190 -0
  456. package/contracts/staking/StakingService.sol +393 -0
  457. package/contracts/staking/StakingServiceManager.sol +44 -0
  458. package/contracts/staking/StakingStore.sol +605 -0
  459. package/contracts/staking/TargetManagerLib.sol +211 -0
  460. package/contracts/{types → type}/AddressSet.sol +1 -1
  461. package/contracts/type/Amount.sol +150 -0
  462. package/contracts/{types → type}/Blocknumber.sol +26 -3
  463. package/contracts/{types → type}/ClaimId.sol +31 -3
  464. package/contracts/{types → type}/Fee.sol +33 -24
  465. package/contracts/{types → type}/NftId.sol +15 -16
  466. package/contracts/{types → type}/NftIdSet.sol +2 -2
  467. package/contracts/type/ObjectType.sol +276 -0
  468. package/contracts/type/PayoutId.sol +82 -0
  469. package/contracts/{types → type}/Referral.sol +2 -1
  470. package/contracts/type/RequestId.sol +75 -0
  471. package/contracts/{types → type}/RiskId.sol +16 -2
  472. package/contracts/type/RoleId.sol +174 -0
  473. package/contracts/type/Seconds.sol +101 -0
  474. package/contracts/type/Selector.sol +102 -0
  475. package/contracts/{types → type}/StateId.sol +47 -4
  476. package/contracts/type/String.sol +53 -0
  477. package/contracts/{types → type}/Timestamp.sol +21 -2
  478. package/contracts/{types → type}/UFixed.sol +38 -9
  479. package/contracts/{types → type}/Version.sol +4 -2
  480. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  481. package/contracts/{shared → upgradeability}/ProxyManager.sol +92 -30
  482. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  483. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  484. package/package.json +9 -5
  485. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  486. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  487. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  488. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  489. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  490. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  492. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  493. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  494. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  495. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  496. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  497. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  498. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  499. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
  500. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  501. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  502. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  504. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  505. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  506. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  507. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  508. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  509. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  510. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  512. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  513. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  514. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  515. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  516. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  518. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  520. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  522. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  528. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  532. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  538. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  540. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  542. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  544. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  545. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  546. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  547. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  548. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  549. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  550. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  551. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  552. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  554. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  555. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  556. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  558. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  568. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  576. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  577. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  579. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  584. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  585. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  586. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  588. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  590. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  592. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  594. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  596. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  598. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  600. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  602. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  604. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  606. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  608. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  610. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  612. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  614. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  616. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  618. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  620. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  621. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  622. package/contracts/components/Component.sol +0 -251
  623. package/contracts/components/IComponent.sol +0 -74
  624. package/contracts/components/IDistributionComponent.sol +0 -71
  625. package/contracts/components/IPoolComponent.sol +0 -113
  626. package/contracts/components/IProductComponent.sol +0 -40
  627. package/contracts/components/Pool.sol +0 -299
  628. package/contracts/components/Product.sol +0 -293
  629. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  630. package/contracts/instance/Cloneable.sol +0 -51
  631. package/contracts/instance/InstanceAccessManager.sol +0 -522
  632. package/contracts/instance/base/ComponentService.sol +0 -134
  633. package/contracts/instance/base/KeyValueStore.sol +0 -175
  634. package/contracts/instance/base/Lifecycle.sol +0 -109
  635. package/contracts/instance/module/ISetup.sol +0 -33
  636. package/contracts/instance/module/ITreasury.sol +0 -23
  637. package/contracts/instance/service/ApplicationService.sol +0 -350
  638. package/contracts/instance/service/BundleService.sol +0 -336
  639. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  640. package/contracts/instance/service/ClaimService.sol +0 -151
  641. package/contracts/instance/service/DistributionService.sol +0 -467
  642. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  643. package/contracts/instance/service/IBundleService.sol +0 -62
  644. package/contracts/instance/service/IClaimService.sol +0 -61
  645. package/contracts/instance/service/IPolicyService.sol +0 -72
  646. package/contracts/instance/service/IPoolService.sol +0 -35
  647. package/contracts/instance/service/IProductService.sol +0 -40
  648. package/contracts/instance/service/PolicyService.sol +0 -403
  649. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  650. package/contracts/instance/service/PoolService.sol +0 -220
  651. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  652. package/contracts/instance/service/ProductService.sol +0 -241
  653. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  654. package/contracts/registry/RegistryAccessManager.sol +0 -216
  655. package/contracts/registry/ReleaseManager.sol +0 -322
  656. package/contracts/shared/ContractDeployerLib.sol +0 -72
  657. package/contracts/test/TestFee.sol +0 -25
  658. package/contracts/test/TestRegisterable.sol +0 -18
  659. package/contracts/test/TestRoleId.sol +0 -14
  660. package/contracts/test/TestService.sol +0 -25
  661. package/contracts/test/TestToken.sol +0 -26
  662. package/contracts/test/TestVersion.sol +0 -44
  663. package/contracts/test/TestVersionable.sol +0 -17
  664. package/contracts/types/ChainId.sol +0 -38
  665. package/contracts/types/NumberId.sol +0 -52
  666. package/contracts/types/ObjectType.sol +0 -157
  667. package/contracts/types/PayoutId.sol +0 -54
  668. package/contracts/types/RoleId.sol +0 -97
  669. package/contracts/types/Seconds.sol +0 -54
  670. /package/contracts/{types → type}/DistributorType.sol +0 -0
  671. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,171 @@
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
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
10
+ import {Component} from "./Component.sol";
11
+ import {IComponentService} from "./IComponentService.sol";
12
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
14
+ import {IComponents} from "../instance/module/IComponents.sol";
15
+ import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IInstance} from "../instance/IInstance.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, INSTANCE} from "../type/ObjectType.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
+ import {IAccess} from "../instance/module/IAccess.sol";
24
+ import {TokenHandler} from "../shared/TokenHandler.sol";
25
+ import {VersionPart} from "../type/Version.sol";
26
+
27
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
28
+ // same pattern as for Service which is also upgradeable
29
+ abstract contract InstanceLinkedComponent is
30
+ Component,
31
+ IInstanceLinkedComponent
32
+ {
33
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
34
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
35
+
36
+ struct InstanceLinkedComponentStorage {
37
+ IInstance _instance; // instance for this component
38
+ InstanceReader _instanceReader; // instance reader for this component
39
+ IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
41
+ }
42
+
43
+ function lock() external onlyOwner {
44
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(true);
45
+ }
46
+
47
+ function unlock() external onlyOwner {
48
+ IInstanceService(_getServiceAddress(INSTANCE())).setComponentLocked(false);
49
+ }
50
+
51
+ function getInstance() public view override returns (IInstance instance) {
52
+ return _getInstanceLinkedComponentStorage()._instance;
53
+ }
54
+
55
+ function getProductNftId() public view override returns (NftId productNftId) {
56
+ return getComponentInfo().productNftId;
57
+ }
58
+
59
+ function getAuthorization() external view returns (IAuthorization authorization) {
60
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
61
+ }
62
+
63
+ /// @inheritdoc IInstanceLinkedComponent
64
+ function withdrawFees(Amount amount)
65
+ external
66
+ virtual
67
+ onlyOwner()
68
+ restricted()
69
+ returns (Amount withdrawnAmount)
70
+ {
71
+ return _withdrawFees(amount);
72
+ }
73
+
74
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
75
+ assembly {
76
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
77
+ }
78
+ }
79
+
80
+ function _initializeInstanceLinkedComponent(
81
+ address registry,
82
+ NftId instanceNftId,
83
+ string memory name,
84
+ address token,
85
+ ObjectType componentType,
86
+ IAuthorization authorization,
87
+ bool isInterceptor,
88
+ address initialOwner,
89
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
90
+ bytes memory componentData // data that will saved with the component info in the instance store
91
+ )
92
+ internal
93
+ virtual
94
+ onlyInitializing()
95
+ {
96
+ // set and check linked instance
97
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
98
+ $._instance = IInstance(
99
+ IRegistry(registry).getObjectAddress(instanceNftId));
100
+
101
+ if(!$._instance.supportsInterface(type(IInstance).interfaceId)) {
102
+ revert ErrorComponentNotInstance(instanceNftId);
103
+ }
104
+
105
+ _initializeComponent(
106
+ $._instance.authority(),
107
+ registry,
108
+ instanceNftId,
109
+ name,
110
+ token,
111
+ componentType,
112
+ isInterceptor,
113
+ initialOwner,
114
+ registryData,
115
+ componentData);
116
+
117
+ // set component state
118
+ $._instanceReader = $._instance.getInstanceReader();
119
+ $._initialAuthorization = authorization;
120
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
121
+
122
+ _registerInterface(type(IAccessManaged).interfaceId);
123
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
124
+ }
125
+
126
+ /// @dev for instance linked components the wallet address stored in the instance store.
127
+ /// updating needs to go throug component service
128
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
129
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
130
+ }
131
+
132
+
133
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
134
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
135
+
136
+ // if registered, attempt to return component info via instance reader
137
+ if (componentNftId.gtz()) {
138
+ // component registerd with registry
139
+ info = _getInstanceReader().getComponentInfo(getNftId());
140
+
141
+ // check if also registered with instance
142
+ if (info.wallet != address(0)) {
143
+ return info;
144
+ }
145
+ }
146
+
147
+ // return data from component contract if not yet registered
148
+ return super._getComponentInfo();
149
+ }
150
+
151
+
152
+ /// @dev returns reader for linked instance
153
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
154
+ return _getInstanceLinkedComponentStorage()._instanceReader;
155
+ }
156
+
157
+ function _withdrawFees(Amount amount)
158
+ internal
159
+ returns (Amount withdrawnAmount)
160
+ {
161
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
162
+ }
163
+
164
+
165
+ /// @dev returns the service address for the specified domain
166
+ /// gets address via lookup from registry using the major version form the linked instance
167
+ function _getServiceAddress(ObjectType domain) internal view returns (address service) {
168
+ VersionPart majorVersion = _getInstanceLinkedComponentStorage()._instance.getMajorVersion();
169
+ return getRegistry().getServiceAddress(domain, majorVersion);
170
+ }
171
+ }
@@ -0,0 +1,131 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ abstract contract KeyValueStore is
15
+ Lifecycle,
16
+ IKeyValueStore
17
+ {
18
+
19
+ mapping(Key32 key32 => Value value) private _value;
20
+
21
+ function _create(
22
+ Key32 key32,
23
+ bytes memory data
24
+ )
25
+ internal
26
+ {
27
+ ObjectType objectType = key32.toObjectType();
28
+ if (objectType.eqz()) {
29
+ revert ErrorKeyValueStoreTypeUndefined(objectType);
30
+ }
31
+
32
+ Metadata storage metadata = _value[key32].metadata;
33
+ if (metadata.state.gtz()) {
34
+ revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
+ }
36
+
37
+ if(!hasLifecycle(objectType)) {
38
+ revert ErrorKeyValueStoreNoLifecycle(objectType);
39
+ }
40
+
41
+ Blocknumber blocknumber = blockBlocknumber();
42
+ StateId initialState = getInitialState(objectType);
43
+
44
+ // set metadata
45
+ metadata.objectType = objectType;
46
+ metadata.state = initialState;
47
+ metadata.updatedIn = blocknumber;
48
+ metadata.createdIn = blocknumber;
49
+
50
+ // set data
51
+ _value[key32].data = data;
52
+
53
+ // solhint-disable-next-line avoid-tx-origin
54
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, msg.sender, tx.origin);
55
+ }
56
+
57
+
58
+ function _update(
59
+ Key32 key32,
60
+ bytes memory data,
61
+ StateId state
62
+ )
63
+ internal
64
+ {
65
+ // update state
66
+ Blocknumber lastUpdatedIn = _updateState(key32, state);
67
+
68
+ // update data
69
+ _value[key32].data = data;
70
+
71
+ // solhint-disable-next-line avoid-tx-origin
72
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, msg.sender, tx.origin, lastUpdatedIn);
73
+ }
74
+
75
+
76
+ function _updateState(
77
+ Key32 key32,
78
+ StateId state
79
+ )
80
+ internal
81
+ returns (Blocknumber lastUpdatedIn)
82
+ {
83
+ if (state.eqz()) {
84
+ revert ErrorKeyValueStoreStateZero(key32);
85
+ }
86
+
87
+ Metadata storage metadata = _value[key32].metadata;
88
+ StateId stateOld = metadata.state;
89
+ lastUpdatedIn = metadata.updatedIn;
90
+
91
+ if (stateOld.eqz()) {
92
+ revert ErrorKeyValueStoreNotExisting(key32);
93
+ }
94
+
95
+ // update state
96
+ if(state != KEEP_STATE()) {
97
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
98
+ metadata.state = state;
99
+
100
+ // solhint-disable-next-line avoid-tx-origin
101
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, msg.sender, tx.origin, lastUpdatedIn);
102
+ }
103
+
104
+ // update metadata
105
+ metadata.updatedIn = blockBlocknumber();
106
+ }
107
+
108
+ function exists(Key32 key32) public view returns (bool) {
109
+ return _value[key32].metadata.state.gtz();
110
+ }
111
+
112
+ function get(Key32 key32) public view returns (Value memory value) {
113
+ return _value[key32];
114
+ }
115
+
116
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
117
+ return _value[key32].metadata;
118
+ }
119
+
120
+ function getData(Key32 key32) public view returns (bytes memory data) {
121
+ return _value[key32].data;
122
+ }
123
+
124
+ function getState(Key32 key32) public view returns (StateId state) {
125
+ return _value[key32].metadata.state;
126
+ }
127
+
128
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
129
+ return Key32Lib.toKey32(objectType, id);
130
+ }
131
+ }
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
6
+ import {ILifecycle} from "./ILifecycle.sol";
7
+
8
+ abstract contract Lifecycle is
9
+ ILifecycle
10
+ {
11
+ mapping(ObjectType objectType => StateId initialState)
12
+ private _initialState;
13
+
14
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
15
+ private _isValidTransition;
16
+
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
28
+ }
29
+
30
+ function hasLifecycle(
31
+ ObjectType objectType
32
+ )
33
+ public
34
+ view
35
+ override
36
+ returns (bool)
37
+ {
38
+ return _initialState[objectType].gtz();
39
+ }
40
+
41
+ function getInitialState(
42
+ ObjectType objectType
43
+ )
44
+ public
45
+ view
46
+ returns (StateId)
47
+ {
48
+ return _initialState[objectType];
49
+ }
50
+
51
+ function checkTransition(
52
+ StateId stateId,
53
+ ObjectType objectType,
54
+ StateId fromId,
55
+ StateId toId
56
+ )
57
+ public
58
+ view
59
+ {
60
+ // revert if no life cycle support
61
+ if (_initialState[objectType].eqz()) {
62
+ revert ErrorNoLifecycle(address(this), objectType);
63
+ }
64
+
65
+ // revert if current state is not `from` state
66
+ if(stateId != fromId) {
67
+ revert ErrorFromStateMissmatch(address(this), objectType, stateId, fromId);
68
+ }
69
+ // TODO consider assert instead of error -> each child must check only for valid transitions
70
+ // enforce valid state transition
71
+ if (!_isValidTransition[objectType][fromId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ fromId,
76
+ toId
77
+ );
78
+ }
79
+ }
80
+
81
+ function isValidTransition(
82
+ ObjectType objectType,
83
+ StateId fromId,
84
+ StateId toId
85
+ ) public view returns (bool) {
86
+ return _isValidTransition[objectType][fromId][toId];
87
+ }
88
+ }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSet {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -1,15 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- // import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
-
6
- import {ERC165} from "./ERC165.sol";
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
7
5
  import {INftOwnable} from "./INftOwnable.sol";
8
- import {NftId} from "../types/NftId.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
9
8
  import {RegistryLinked} from "./RegistryLinked.sol";
10
9
 
11
10
  contract NftOwnable is
12
- ERC165,
11
+ InitializableERC165,
13
12
  RegistryLinked,
14
13
  INftOwnable
15
14
  {
@@ -29,19 +28,33 @@ contract NftOwnable is
29
28
  _;
30
29
  }
31
30
 
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
34
+ }
35
+ _;
36
+ }
37
+
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ if(!getRegistry().isObjectType(nftId, expectedObjectType)) {
40
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
41
+ }
42
+ _;
43
+ }
44
+
32
45
 
33
46
  /// @dev initialization for upgradable contracts
34
47
  // used in _initializeRegisterable
35
- function initializeNftOwnable(
48
+ function _initializeNftOwnable(
36
49
  address initialOwner,
37
50
  address registryAddress
38
51
  )
39
- public
52
+ internal
40
53
  virtual
41
54
  onlyInitializing()
42
55
  {
43
- initializeRegistryLinked(registryAddress);
44
- initializeERC165();
56
+ _initializeRegistryLinked(registryAddress);
57
+ _initializeERC165();
45
58
 
46
59
  if(initialOwner == address(0)) {
47
60
  revert ErrorNftOwnableInitialOwnerZero();
@@ -58,20 +71,9 @@ contract NftOwnable is
58
71
  function linkToRegisteredNftId()
59
72
  public
60
73
  virtual
74
+ returns (NftId nftId)
61
75
  {
62
- NftOwnableStorage storage $ = _getNftOwnableStorage();
63
-
64
- if ($._nftId.gtz()) {
65
- revert ErrorNftOwnableAlreadyLinked($._nftId);
66
- }
67
-
68
- address contractAddress = address(this);
69
-
70
- if (!getRegistry().isRegistered(contractAddress)) {
71
- revert ErrorNftOwnableContractNotRegistered(contractAddress);
72
- }
73
-
74
- $._nftId = getRegistry().getNftId(contractAddress);
76
+ return _linkToNftOwnable(address(this));
75
77
  }
76
78
 
77
79
  function getNftId() public view virtual override returns (NftId) {
@@ -106,13 +108,14 @@ contract NftOwnable is
106
108
  revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
107
109
  }
108
110
 
109
- $._nftId = getRegistry().getNftId(nftOwnableAddress);
111
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
110
112
 
111
113
  return $._nftId;
112
114
  }
113
115
 
114
116
 
115
117
  function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
118
+ // solhint-disable-next-line no-inline-assembly
116
119
  assembly {
117
120
  $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
118
121
  }
@@ -1,55 +1,50 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
4
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
- import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
7
5
 
8
- import {ERC165} from "./ERC165.sol";
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {ClaimId} from "../type/ClaimId.sol";
8
+ import {InitializableERC165} from "./InitializableERC165.sol";
9
9
  import {IPolicyHolder} from "./IPolicyHolder.sol";
10
- import {IRegistry} from "../registry/IRegistry.sol";
11
- import {NftId} from "../types/NftId.sol";
12
- import {NumberId} from "../types/NumberId.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
13
12
  import {RegistryLinked} from "./RegistryLinked.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
14
 
15
15
  /// @dev template implementation for IPolicyHolder
16
16
  contract PolicyHolder is
17
- ERC165,
17
+ InitializableERC165,
18
18
  RegistryLinked,
19
19
  IPolicyHolder
20
20
  {
21
- // keccak256(abi.encode(uint256(keccak256("etherisc.storage.PolicyHolder")) - 1)) & ~bytes32(uint256(0xff));
22
- // TODO fix address
23
- bytes32 public constant POLICY_HOLDER_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
21
+ // TODO add modifier to protect callback functions from unauthorized access
22
+ // callbacks must only be allowed from the policy and claim services
23
+ // will need a release parameter to fetch the right service addresses for the modifiers
24
24
 
25
- // TODO uncomment/fix/refactor
26
- struct PolicyHolderStorage {
27
- // mapping(NftId policyId => mapping(NumberId claimId => address beneficiary)) private _claimBeneficiary;
28
- // mapping(NftId policyId => address beneficiary) private _beneficiary;
29
- bool dummy;
30
- }
31
-
32
- function initializePolicyHolder(
25
+ function _initializePolicyHolder(
33
26
  address registryAddress
34
27
  )
35
- public
28
+ internal
36
29
  virtual
37
30
  onlyInitializing()
38
31
  {
39
- initializeRegistryLinked(registryAddress);
32
+ _initializeRegistryLinked(registryAddress);
33
+ _initializeERC165();
34
+ _registerInterface(type(IPolicyHolder).interfaceId);
40
35
  }
41
36
 
42
37
  /// @dev empty default implementation
43
- function policyCreatedCallback(NftId policyNftId) external virtual { }
38
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
44
39
 
45
40
  /// @dev empty default implementation
46
- function payoutExecutedCallback(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external virtual { }
41
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
47
42
 
48
- /// @dev determines beneficiary address that will be used in payouts targeting this contract
49
- /// returned address will override GIF default where the policy nft holder is treated as beneficiary
50
- function getBeneficiary(NftId policyId, NumberId claimId) external virtual view returns (address beneficiary) {
51
- // TODO add implementation
52
- }
43
+ /// @dev empty default implementation
44
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
45
+
46
+ /// @dev empty default implementation
47
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
53
48
 
54
49
  //--- IERC165 functions ---------------//
55
50
  function onERC721Received(
@@ -64,18 +59,4 @@ contract PolicyHolder is
64
59
  {
65
60
  return IERC721Receiver.onERC721Received.selector;
66
61
  }
67
-
68
- function _setBeneficiary(address beneficiary) internal {
69
-
70
- }
71
-
72
- function _setBeneficiary(NftId policyId, address beneficiary) internal {
73
-
74
- }
75
-
76
- function _getPolicyHolderStorage() private pure returns (PolicyHolderStorage storage $) {
77
- assembly {
78
- $.slot := POLICY_HOLDER_STORAGE_LOCATION_V1
79
- }
80
- }
81
62
  }