@etherisc/gif-next 0.0.2-9b434da-265 → 0.0.2-9b58b75-869

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 (606) hide show
  1. package/README.md +209 -16
  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/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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1234 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1571 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +858 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +956 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +652 -0
  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 +416 -3032
  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 +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1073 -30
  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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1496 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +978 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1288 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1276 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +404 -58
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +389 -194
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -150
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +698 -259
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +368 -123
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1640 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  182. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  184. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +977 -0
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  194. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  201. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +134 -29
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +78 -87
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  218. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  219. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +203 -164
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  222. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  224. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  226. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  228. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  230. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  234. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  236. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  238. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  242. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  244. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  248. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  274. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  280. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  282. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  290. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  294. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  300. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  302. package/contracts/authorization/AccessAdmin.sol +591 -0
  303. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  304. package/contracts/authorization/Authorization.sol +218 -0
  305. package/contracts/authorization/IAccess.sol +48 -0
  306. package/contracts/authorization/IAccessAdmin.sol +136 -0
  307. package/contracts/authorization/IAuthorization.sol +54 -0
  308. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  309. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  310. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  311. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  312. package/contracts/distribution/BasicDistribution.sol +138 -0
  313. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  314. package/contracts/distribution/Distribution.sol +295 -0
  315. package/contracts/distribution/DistributionService.sol +352 -0
  316. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  317. package/contracts/distribution/IDistributionComponent.sol +52 -0
  318. package/contracts/distribution/IDistributionService.sol +98 -0
  319. package/contracts/instance/BundleSet.sol +126 -0
  320. package/contracts/instance/IInstance.sol +86 -0
  321. package/contracts/instance/IInstanceService.sol +92 -0
  322. package/contracts/instance/Instance.sol +185 -321
  323. package/contracts/instance/InstanceAdmin.sol +266 -0
  324. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  325. package/contracts/instance/InstanceReader.sol +405 -0
  326. package/contracts/instance/InstanceService.sol +422 -24
  327. package/contracts/instance/InstanceServiceManager.sol +40 -0
  328. package/contracts/instance/InstanceStore.sol +276 -0
  329. package/contracts/instance/base/BalanceStore.sol +123 -0
  330. package/contracts/instance/base/Cloneable.sol +28 -0
  331. package/contracts/instance/base/ObjectCounter.sol +21 -0
  332. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  333. package/contracts/instance/base/ObjectSet.sol +79 -0
  334. package/contracts/instance/module/IAccess.sol +30 -22
  335. package/contracts/instance/module/IBundle.sol +8 -7
  336. package/contracts/instance/module/IComponents.sol +51 -0
  337. package/contracts/instance/module/IDistribution.sol +7 -4
  338. package/contracts/instance/module/IPolicy.sol +56 -17
  339. package/contracts/instance/module/IRisk.sol +1 -1
  340. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  341. package/contracts/oracle/BasicOracle.sol +48 -0
  342. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  343. package/contracts/oracle/IOracle.sol +36 -0
  344. package/contracts/oracle/IOracleComponent.sol +33 -0
  345. package/contracts/oracle/IOracleService.sol +65 -0
  346. package/contracts/oracle/Oracle.sol +166 -0
  347. package/contracts/oracle/OracleService.sol +278 -0
  348. package/contracts/oracle/OracleServiceManager.sol +39 -0
  349. package/contracts/pool/BasicPool.sol +164 -0
  350. package/contracts/pool/BasicPoolAuthorization.sol +52 -0
  351. package/contracts/pool/BundleService.sol +284 -0
  352. package/contracts/pool/BundleServiceManager.sol +39 -0
  353. package/contracts/pool/IBundleService.sol +106 -0
  354. package/contracts/pool/IPoolComponent.sol +51 -0
  355. package/contracts/pool/IPoolService.sol +150 -0
  356. package/contracts/pool/Pool.sol +311 -0
  357. package/contracts/pool/PoolService.sol +436 -0
  358. package/contracts/pool/PoolServiceManager.sol +39 -0
  359. package/contracts/product/ApplicationService.sol +230 -0
  360. package/contracts/product/ApplicationServiceManager.sol +38 -0
  361. package/contracts/product/BasicProduct.sol +82 -0
  362. package/contracts/product/BasicProductAuthorization.sol +43 -0
  363. package/contracts/product/ClaimService.sol +416 -0
  364. package/contracts/product/ClaimServiceManager.sol +38 -0
  365. package/contracts/product/IApplicationService.sol +62 -0
  366. package/contracts/product/IClaimService.sol +99 -0
  367. package/contracts/product/IPolicyService.sol +78 -0
  368. package/contracts/product/IPricingService.sol +39 -0
  369. package/contracts/product/IProductComponent.sol +40 -0
  370. package/contracts/product/IProductService.sol +33 -0
  371. package/contracts/product/PolicyService.sol +475 -0
  372. package/contracts/product/PolicyServiceManager.sol +39 -0
  373. package/contracts/product/PricingService.sol +300 -0
  374. package/contracts/product/PricingServiceManager.sol +39 -0
  375. package/contracts/product/Product.sol +392 -0
  376. package/contracts/product/ProductService.sol +99 -0
  377. package/contracts/product/ProductServiceManager.sol +39 -0
  378. package/contracts/registry/ChainNft.sol +55 -25
  379. package/contracts/registry/IRegistry.sol +91 -30
  380. package/contracts/registry/IRegistryService.sol +56 -16
  381. package/contracts/registry/ITransferInterceptor.sol +1 -0
  382. package/contracts/registry/Registry.sol +411 -326
  383. package/contracts/registry/RegistryAdmin.sol +365 -0
  384. package/contracts/registry/RegistryService.sol +155 -272
  385. package/contracts/registry/RegistryServiceManager.sol +29 -19
  386. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  387. package/contracts/registry/ReleaseRegistry.sol +485 -0
  388. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  389. package/contracts/registry/TokenRegistry.sol +315 -0
  390. package/contracts/shared/Component.sol +280 -0
  391. package/contracts/shared/ComponentService.sol +622 -0
  392. package/contracts/shared/ComponentServiceManager.sol +35 -0
  393. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  394. package/contracts/shared/ERC165.sol +16 -10
  395. package/contracts/shared/IComponent.sol +70 -0
  396. package/contracts/shared/IComponentService.sol +112 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +20 -14
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +13 -12
  401. package/contracts/shared/IRegisterable.sol +4 -6
  402. package/contracts/shared/IRegistryLinked.sol +11 -0
  403. package/contracts/shared/IService.sol +25 -0
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  406. package/contracts/shared/KeyValueStore.sol +131 -0
  407. package/contracts/shared/Lifecycle.sol +77 -0
  408. package/contracts/shared/NftIdSet.sol +65 -0
  409. package/contracts/shared/NftOwnable.sol +60 -89
  410. package/contracts/shared/Registerable.sol +27 -41
  411. package/contracts/shared/RegistryLinked.sol +43 -0
  412. package/contracts/shared/Service.sol +82 -0
  413. package/contracts/shared/TokenHandler.sol +39 -8
  414. package/contracts/staking/IStaking.sol +167 -0
  415. package/contracts/staking/IStakingService.sol +160 -0
  416. package/contracts/staking/StakeManagerLib.sol +231 -0
  417. package/contracts/staking/Staking.sol +514 -0
  418. package/contracts/staking/StakingLifecycle.sol +23 -0
  419. package/contracts/staking/StakingManager.sol +50 -0
  420. package/contracts/staking/StakingReader.sol +183 -0
  421. package/contracts/staking/StakingService.sol +411 -0
  422. package/contracts/staking/StakingServiceManager.sol +44 -0
  423. package/contracts/staking/StakingStore.sol +605 -0
  424. package/contracts/staking/TargetManagerLib.sol +207 -0
  425. package/contracts/{types → type}/AddressSet.sol +1 -1
  426. package/contracts/type/Amount.sol +128 -0
  427. package/contracts/{types → type}/Blocknumber.sol +21 -3
  428. package/contracts/type/ClaimId.sol +75 -0
  429. package/contracts/{types → type}/DistributorType.sol +2 -2
  430. package/contracts/type/Fee.sol +66 -0
  431. package/contracts/{types → type}/NftId.sol +21 -15
  432. package/contracts/type/NftIdSet.sol +62 -0
  433. package/contracts/type/ObjectType.sol +271 -0
  434. package/contracts/type/PayoutId.sol +82 -0
  435. package/contracts/{types → type}/Referral.sol +5 -1
  436. package/contracts/type/RequestId.sol +75 -0
  437. package/contracts/{types → type}/RiskId.sol +1 -1
  438. package/contracts/type/RoleId.sol +174 -0
  439. package/contracts/type/Seconds.sol +81 -0
  440. package/contracts/type/Selector.sol +102 -0
  441. package/contracts/{types → type}/StateId.sol +38 -4
  442. package/contracts/type/String.sol +53 -0
  443. package/contracts/{types → type}/Timestamp.sol +23 -14
  444. package/contracts/type/UFixed.sol +332 -0
  445. package/contracts/{types → type}/Version.sol +8 -2
  446. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  447. package/contracts/upgradeability/ProxyManager.sol +198 -0
  448. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +2 -4
  449. package/contracts/upgradeability/Versionable.sol +59 -0
  450. package/package.json +11 -7
  451. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  452. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  454. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  456. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  458. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  460. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  462. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  464. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  466. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  469. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  471. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  473. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  476. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  478. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  480. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  482. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  484. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  485. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  486. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  487. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  488. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  489. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  490. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  491. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  494. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -736
  495. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  497. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  498. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  499. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  500. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  501. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  502. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  503. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  504. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  505. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  506. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  507. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  508. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  509. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  510. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  511. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  512. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  513. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  514. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  515. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  516. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -10
  518. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  520. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  522. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  524. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  526. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  527. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  528. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  529. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  530. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  531. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  532. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  533. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  534. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  535. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  536. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  538. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  539. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  540. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  541. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  542. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  543. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  544. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  546. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  548. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  550. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  552. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  554. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  557. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  559. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  561. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  563. package/contracts/components/IBaseComponent.sol +0 -19
  564. package/contracts/experiment/errors/Require.sol +0 -38
  565. package/contracts/experiment/errors/Revert.sol +0 -44
  566. package/contracts/experiment/inheritance/A.sol +0 -53
  567. package/contracts/experiment/inheritance/B.sol +0 -28
  568. package/contracts/experiment/inheritance/C.sol +0 -34
  569. package/contracts/experiment/inheritance/IA.sol +0 -13
  570. package/contracts/experiment/inheritance/IB.sol +0 -10
  571. package/contracts/experiment/inheritance/IC.sol +0 -12
  572. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  573. package/contracts/experiment/statemachine/ISM.sol +0 -25
  574. package/contracts/experiment/statemachine/SM.sol +0 -57
  575. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  576. package/contracts/experiment/types/TypeA.sol +0 -47
  577. package/contracts/experiment/types/TypeB.sol +0 -29
  578. package/contracts/instance/AccessManagedSimple.sol +0 -114
  579. package/contracts/instance/AccessManagerSimple.sol +0 -682
  580. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  581. package/contracts/instance/InstanceAccessManager.sol +0 -288
  582. package/contracts/instance/base/IService.sol +0 -15
  583. package/contracts/instance/base/KeyValueStore.sol +0 -188
  584. package/contracts/instance/base/Lifecycle.sol +0 -100
  585. package/contracts/instance/base/ServiceBase.sol +0 -44
  586. package/contracts/instance/module/ISetup.sol +0 -41
  587. package/contracts/instance/module/ITreasury.sol +0 -23
  588. package/contracts/registry/IChainNft.sol +0 -22
  589. package/contracts/shared/ContractDeployerLib.sol +0 -72
  590. package/contracts/shared/ProxyManager.sol +0 -94
  591. package/contracts/shared/Versionable.sol +0 -147
  592. package/contracts/test/TestFee.sol +0 -25
  593. package/contracts/test/TestRegisterable.sol +0 -18
  594. package/contracts/test/TestRoleId.sol +0 -14
  595. package/contracts/test/TestService.sol +0 -26
  596. package/contracts/test/TestVersion.sol +0 -44
  597. package/contracts/test/TestVersionable.sol +0 -17
  598. package/contracts/test/Usdc.sol +0 -26
  599. package/contracts/types/ChainId.sol +0 -38
  600. package/contracts/types/Fee.sol +0 -56
  601. package/contracts/types/NftIdSet.sol +0 -60
  602. package/contracts/types/NumberId.sol +0 -52
  603. package/contracts/types/ObjectType.sol +0 -152
  604. package/contracts/types/RoleId.sol +0 -75
  605. package/contracts/types/UFixed.sol +0 -209
  606. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,392 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount, AmountLib} from "../type/Amount.sol";
7
+ import {ClaimId} from "../type/ClaimId.sol";
8
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
+ import {Fee, FeeLib} from "../type/Fee.sol";
10
+ import {IRisk} from "../instance/module/IRisk.sol";
11
+ import {IApplicationService} from "./IApplicationService.sol";
12
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
13
+ import {IComponentService} from "../shared/IComponentService.sol";
14
+ import {IPolicyService} from "./IPolicyService.sol";
15
+ import {IProductService} from "./IProductService.sol";
16
+ import {IClaimService} from "./IClaimService.sol";
17
+ import {IPricingService} from "./IPricingService.sol";
18
+ import {IProductComponent} from "./IProductComponent.sol";
19
+ import {NftId, NftIdLib} from "../type/NftId.sol";
20
+ import {PayoutId} from "../type/PayoutId.sol";
21
+ import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
22
+ import {ReferralId} from "../type/Referral.sol";
23
+ import {RiskId, RiskIdLib} from "../type/RiskId.sol";
24
+ import {Seconds} from "../type/Seconds.sol";
25
+ import {StateId} from "../type/StateId.sol";
26
+ import {Timestamp} from "../type/Timestamp.sol";
27
+
28
+ import {TokenHandler} from "../shared/TokenHandler.sol";
29
+
30
+ import {InstanceReader} from "../instance/InstanceReader.sol";
31
+ import {IPolicy} from "../instance/module/IPolicy.sol";
32
+ import {IComponents} from "../instance/module/IComponents.sol";
33
+ import {Pool} from "../pool/Pool.sol";
34
+ import {Distribution} from "../distribution/Distribution.sol";
35
+
36
+ abstract contract Product is
37
+ InstanceLinkedComponent,
38
+ IProductComponent
39
+ {
40
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
41
+ bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
42
+
43
+ struct ProductStorage {
44
+ IProductService _productService;
45
+ IApplicationService _applicationService;
46
+ IPolicyService _policyService;
47
+ IClaimService _claimService;
48
+ IPricingService _pricingService;
49
+ IComponentService _componentService;
50
+ NftId _poolNftId;
51
+ NftId _distributionNftId;
52
+ Pool _pool;
53
+ Distribution _distribution;
54
+ }
55
+
56
+
57
+ function calculatePremium(
58
+ Amount sumInsuredAmount,
59
+ RiskId riskId,
60
+ Seconds lifetime,
61
+ bytes memory applicationData,
62
+ NftId bundleNftId,
63
+ ReferralId referralId
64
+ )
65
+ external
66
+ view
67
+ override
68
+ returns (Amount premiumAmount)
69
+ {
70
+ IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
71
+ getNftId(),
72
+ riskId,
73
+ sumInsuredAmount,
74
+ lifetime,
75
+ applicationData,
76
+ bundleNftId,
77
+ referralId
78
+ );
79
+
80
+ return AmountLib.toAmount(premium.premiumAmount);
81
+ }
82
+
83
+ function calculateNetPremium(
84
+ Amount sumInsuredAmount,
85
+ RiskId riskId,
86
+ Seconds lifetime,
87
+ bytes memory applicationData
88
+ )
89
+ external
90
+ view
91
+ virtual override
92
+ returns (Amount netPremiumAmount)
93
+ {
94
+ // default 10% of sum insured
95
+ return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
96
+ }
97
+
98
+
99
+ function register()
100
+ external
101
+ virtual
102
+ onlyOwner()
103
+ {
104
+ _getProductStorage()._componentService.registerProduct();
105
+ _approveTokenHandler(type(uint256).max);
106
+ }
107
+
108
+
109
+ function getInitialProductInfo()
110
+ public
111
+ virtual
112
+ view
113
+ returns (IComponents.ProductInfo memory poolInfo)
114
+ {
115
+ ProductStorage storage $ = _getProductStorage();
116
+
117
+ return IComponents.ProductInfo({
118
+ distributionNftId: $._distributionNftId,
119
+ poolNftId: $._poolNftId,
120
+ productFee: FeeLib.zero(),
121
+ processingFee: FeeLib.zero(),
122
+ distributionFee: FeeLib.zero(),
123
+ minDistributionOwnerFee: FeeLib.zero(),
124
+ poolFee: FeeLib.zero(),
125
+ stakingFee: FeeLib.zero(),
126
+ performanceFee: FeeLib.zero()
127
+ });
128
+ }
129
+
130
+ function getPoolNftId() external view override returns (NftId poolNftId) {
131
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
132
+ }
133
+
134
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
135
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
136
+ }
137
+
138
+ function _initializeProduct(
139
+ address registry,
140
+ NftId instanceNftId,
141
+ IAuthorization authorization,
142
+ address initialOwner,
143
+ string memory name,
144
+ address token,
145
+ bool isInterceptor,
146
+ address pool,
147
+ address distribution,
148
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
149
+ bytes memory componentData // writeonly data that will saved in the object info record of the registry
150
+ )
151
+ internal
152
+ virtual
153
+ onlyInitializing()
154
+ {
155
+ _initializeInstanceLinkedComponent(
156
+ registry,
157
+ instanceNftId,
158
+ name,
159
+ token,
160
+ PRODUCT(),
161
+ authorization,
162
+ isInterceptor,
163
+ initialOwner,
164
+ registryData,
165
+ componentData);
166
+
167
+ ProductStorage storage $ = _getProductStorage();
168
+ // TODO add validation
169
+ // TODO refactor to go via registry ?
170
+ $._productService = IProductService(_getServiceAddress(PRODUCT()));
171
+ $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
172
+ $._policyService = IPolicyService(_getServiceAddress(POLICY()));
173
+ $._claimService = IClaimService(_getServiceAddress(CLAIM()));
174
+ $._pricingService = IPricingService(_getServiceAddress(PRICE()));
175
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
176
+ $._pool = Pool(pool);
177
+ $._distribution = Distribution(distribution);
178
+ $._poolNftId = getRegistry().getNftId(pool);
179
+ $._distributionNftId = getRegistry().getNftId(distribution);
180
+
181
+ registerInterface(type(IProductComponent).interfaceId);
182
+ }
183
+
184
+
185
+ function _setFees(
186
+ Fee memory productFee,
187
+ Fee memory processingFee
188
+ )
189
+ internal
190
+ virtual
191
+ {
192
+ _getProductStorage()._componentService.setProductFees(productFee, processingFee);
193
+ }
194
+
195
+
196
+ function _createRisk(
197
+ RiskId id,
198
+ bytes memory data
199
+ ) internal {
200
+ _getProductService().createRisk(
201
+ id,
202
+ data
203
+ );
204
+ }
205
+
206
+ function _updateRisk(
207
+ RiskId id,
208
+ bytes memory data
209
+ ) internal {
210
+ _getProductService().updateRisk(
211
+ id,
212
+ data
213
+ );
214
+ }
215
+
216
+ function _updateRiskState(
217
+ RiskId id,
218
+ StateId state
219
+ ) internal {
220
+ _getProductService().updateRiskState(
221
+ id,
222
+ state
223
+ );
224
+ }
225
+
226
+
227
+ function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
228
+ return getInstance().getInstanceReader().getRiskInfo(id);
229
+ }
230
+
231
+
232
+ function _createApplication(
233
+ address applicationOwner,
234
+ RiskId riskId,
235
+ Amount sumInsuredAmount,
236
+ Seconds lifetime,
237
+ NftId bundleNftId,
238
+ ReferralId referralId,
239
+ bytes memory applicationData
240
+ )
241
+ internal
242
+ returns (NftId applicationNftId)
243
+ {
244
+ return _getProductStorage()._applicationService.create(
245
+ applicationOwner,
246
+ riskId,
247
+ sumInsuredAmount,
248
+ lifetime,
249
+ bundleNftId,
250
+ referralId,
251
+ applicationData
252
+ );
253
+ }
254
+
255
+ function _collateralize(
256
+ NftId policyNftId,
257
+ bool requirePremiumPayment,
258
+ Timestamp activateAt
259
+ )
260
+ internal
261
+ {
262
+ _getProductStorage()._policyService.collateralize(
263
+ policyNftId,
264
+ requirePremiumPayment,
265
+ activateAt);
266
+ }
267
+
268
+ function _collectPremium(
269
+ NftId policyNftId,
270
+ Timestamp activateAt
271
+ )
272
+ internal
273
+ {
274
+ _getProductStorage()._policyService.collectPremium(
275
+ policyNftId,
276
+ activateAt);
277
+ }
278
+
279
+ function _activate(
280
+ NftId policyNftId,
281
+ Timestamp activateAt
282
+ )
283
+ internal
284
+ {
285
+ _getProductStorage()._policyService.activate(
286
+ policyNftId,
287
+ activateAt);
288
+ }
289
+
290
+ function _close(
291
+ NftId policyNftId
292
+ )
293
+ internal
294
+ {
295
+ _getProductStorage()._policyService.close(
296
+ policyNftId);
297
+ }
298
+
299
+ function _submitClaim(
300
+ NftId policyNftId,
301
+ Amount claimAmount,
302
+ bytes memory claimData
303
+ )
304
+ internal
305
+ returns(ClaimId)
306
+ {
307
+ return _getProductStorage()._claimService.submit(
308
+ policyNftId,
309
+ claimAmount,
310
+ claimData);
311
+ }
312
+
313
+ function _confirmClaim(
314
+ NftId policyNftId,
315
+ ClaimId claimId,
316
+ Amount confirmedAmount,
317
+ bytes memory data
318
+ )
319
+ internal
320
+ {
321
+ _getProductStorage()._claimService.confirm(
322
+ policyNftId,
323
+ claimId,
324
+ confirmedAmount,
325
+ data);
326
+ }
327
+
328
+ function _declineClaim(
329
+ NftId policyNftId,
330
+ ClaimId claimId,
331
+ bytes memory data
332
+ )
333
+ internal
334
+ {
335
+ _getProductStorage()._claimService.decline(
336
+ policyNftId,
337
+ claimId,
338
+ data);
339
+ }
340
+
341
+ function _closeClaim(
342
+ NftId policyNftId,
343
+ ClaimId claimId
344
+ )
345
+ internal
346
+ {
347
+ _getProductStorage()._claimService.close(
348
+ policyNftId,
349
+ claimId);
350
+ }
351
+
352
+ function _createPayout(
353
+ NftId policyNftId,
354
+ ClaimId claimId,
355
+ Amount amount,
356
+ bytes memory data
357
+ )
358
+ internal
359
+ returns (PayoutId)
360
+ {
361
+ return _getProductStorage()._claimService.createPayout(
362
+ policyNftId,
363
+ claimId,
364
+ amount,
365
+ data);
366
+ }
367
+
368
+ function _processPayout(
369
+ NftId policyNftId,
370
+ PayoutId payoutId
371
+ )
372
+ internal
373
+ {
374
+ _getProductStorage()._claimService.processPayout(
375
+ policyNftId,
376
+ payoutId);
377
+ }
378
+
379
+ function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
380
+ return RiskIdLib.toRiskId(riskName);
381
+ }
382
+
383
+ function _getProductStorage() private pure returns (ProductStorage storage $) {
384
+ assembly {
385
+ $.slot := PRODUCT_STORAGE_LOCATION_V1
386
+ }
387
+ }
388
+
389
+ function _getProductService() internal view returns (IProductService) {
390
+ return _getProductStorage()._productService;
391
+ }
392
+ }
@@ -0,0 +1,99 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IInstance} from "../instance/IInstance.sol";
5
+ import {IInstanceService} from "../instance/IInstanceService.sol";
6
+ import {IPoolService} from "../pool/PoolService.sol";
7
+ import {IProductService} from "./IProductService.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {IRisk} from "../instance/module/IRisk.sol";
10
+
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
13
+ import {KEEP_STATE} from "../type/StateId.sol";
14
+ import {NftId} from "../type/NftId.sol";
15
+ import {RiskId} from "../type/RiskId.sol";
16
+ import {StateId} from "../type/StateId.sol";
17
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
18
+
19
+ contract ProductService is
20
+ ComponentVerifyingService,
21
+ IProductService
22
+ {
23
+ IInstanceService private _instanceService;
24
+ IPoolService internal _poolService;
25
+ IRegistryService private _registryService;
26
+
27
+ event LogProductServiceSender(address sender);
28
+
29
+ function _initialize(
30
+ address owner,
31
+ bytes memory data
32
+ )
33
+ internal
34
+ initializer
35
+ virtual override
36
+ {
37
+ (
38
+ address registryAddress,,
39
+ //address managerAddress
40
+ address authority
41
+ ) = abi.decode(data, (address, address, address));
42
+
43
+ initializeService(registryAddress, authority, owner);
44
+
45
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
46
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
47
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
48
+
49
+ registerInterface(type(IProductService).interfaceId);
50
+ }
51
+
52
+
53
+ function createRisk(
54
+ RiskId riskId,
55
+ bytes memory data
56
+ )
57
+ external
58
+ override
59
+ {
60
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
61
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
62
+
63
+ instance.getInstanceStore().createRisk(
64
+ riskId,
65
+ riskInfo
66
+ );
67
+ }
68
+
69
+
70
+ function updateRisk(
71
+ RiskId riskId,
72
+ bytes memory data
73
+ )
74
+ external
75
+ {
76
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
77
+ InstanceReader instanceReader = instance.getInstanceReader();
78
+
79
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
80
+ riskInfo.data = data;
81
+ instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
82
+ }
83
+
84
+
85
+ function updateRiskState(
86
+ RiskId riskId,
87
+ StateId state
88
+ )
89
+ external
90
+ {
91
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
92
+ instance.getInstanceStore().updateRiskState(riskId, state);
93
+ }
94
+
95
+
96
+ function _getDomain() internal pure override returns(ObjectType) {
97
+ return PRODUCT();
98
+ }
99
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+
8
+ contract ProductServiceManager is ProxyManager {
9
+
10
+ ProductService private _productService;
11
+
12
+ /// @dev initializes proxy manager with product service implementation
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ ProductService svc = new ProductService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _productService = ProductService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getProductService()
32
+ external
33
+ view
34
+ returns (ProductService productService)
35
+ {
36
+ return _productService;
37
+ }
38
+
39
+ }
@@ -1,19 +1,29 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {ERC721, ERC721Enumerable} from "@openzeppelin5/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
- import {IERC721} from "@openzeppelin5/contracts/token/ERC721/IERC721.sol";
4
+ import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
6
 
7
- import {IChainNft} from "./IChainNft.sol";
8
7
  import {ITransferInterceptor} from "./ITransferInterceptor.sol";
9
8
 
10
- contract ChainNft is ERC721Enumerable, IChainNft {
11
- string public constant NAME = "Dezentralized Insurance Protocol Registry";
12
- string public constant SYMBOL = "DIPR";
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ // constants
12
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
+ string public constant SYMBOL = "DIPNFT";
13
14
 
14
15
  uint256 public constant PROTOCOL_NFT_ID = 1101;
15
16
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
16
17
 
18
+ // TODO rename errors to error pattern: CallerNotRegistry -> ErrorCallerNotRegistry etc.
19
+ // custom errors
20
+ error CallerNotRegistry(address caller);
21
+ error RegistryAddressZero();
22
+ error NftUriEmpty();
23
+ error NftUriAlreadySet();
24
+
25
+ // contract state
26
+
17
27
  // remember interceptors
18
28
  mapping(uint256 tokenId => address interceptor) private _interceptor;
19
29
 
@@ -31,18 +41,31 @@ contract ChainNft is ERC721Enumerable, IChainNft {
31
41
  uint256 internal _totalMinted;
32
42
 
33
43
  modifier onlyRegistry() {
34
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
44
+ if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
35
45
  _;
36
46
  }
37
47
 
38
48
  constructor(address registry) ERC721(NAME, SYMBOL) {
39
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
49
+ if (registry == address(0)) { revert RegistryAddressZero(); }
40
50
 
41
51
  _registry = registry;
42
-
43
52
  _chainIdInt = block.chainid;
44
- _chainIdDigits = _countDigits(_chainIdInt);
53
+ _chainIdDigits = 0;
54
+
55
+ // count digis
56
+ uint256 num = _chainIdInt;
57
+ while (num != 0) {
58
+ _chainIdDigits++;
59
+ num /= 10;
60
+ }
61
+
45
62
  _chainIdMultiplier = 10 ** _chainIdDigits;
63
+
64
+ // the first object registered through normal registration starts with id 4
65
+ // 1 -> protocol
66
+ // 2 -> registry
67
+ // 3 -> staking
68
+ // >= 4 -> all other objects
46
69
  _idNext = 4;
47
70
  }
48
71
 
@@ -77,8 +100,12 @@ contract ChainNft is ERC721Enumerable, IChainNft {
77
100
  _uri[tokenId] = uri;
78
101
  }
79
102
 
80
- _safeMint(to, tokenId);
81
103
  _totalMinted++;
104
+ _safeMint(to, tokenId);
105
+
106
+ if(interceptor != address(0)) {
107
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
108
+ }
82
109
  }
83
110
 
84
111
 
@@ -95,7 +122,7 @@ contract ChainNft is ERC721Enumerable, IChainNft {
95
122
  }
96
123
 
97
124
 
98
- function burn(uint256 tokenId) external override onlyRegistry {
125
+ function burn(uint256 tokenId) external onlyRegistry {
99
126
  _requireOwned(tokenId);
100
127
  _burn(tokenId);
101
128
  delete _uri[tokenId];
@@ -104,29 +131,36 @@ contract ChainNft is ERC721Enumerable, IChainNft {
104
131
  function setURI(
105
132
  uint256 tokenId,
106
133
  string memory uri
107
- ) external override onlyRegistry {
108
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
134
+ ) external onlyRegistry {
135
+ if (bytes(uri).length == 0) { revert NftUriEmpty(); }
136
+ if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
109
137
 
110
138
  _requireOwned(tokenId);
111
139
  _uri[tokenId] = uri;
112
140
  }
113
141
 
114
- function exists(uint256 tokenId) external view override returns (bool) {
142
+ function exists(uint256 tokenId) external view returns (bool) {
115
143
  return _ownerOf(tokenId) != address(0);
116
144
  }
117
145
 
118
146
  function tokenURI(
119
147
  uint256 tokenId
120
148
  ) public view override returns (string memory) {
149
+ // gif generally does not revert for view functions
150
+ // this is an exception to keep the openzeppelin nft semantics
121
151
  _requireOwned(tokenId);
122
152
  return _uri[tokenId];
123
153
  }
124
154
 
125
- function getRegistryAddress() external view override returns (address) {
155
+ function getInterceptor(uint256 tokenId) external view returns (address) {
156
+ return _interceptor[tokenId];
157
+ }
158
+
159
+ function getRegistryAddress() external view returns (address) {
126
160
  return _registry;
127
161
  }
128
162
 
129
- function totalMinted() external view override returns (uint256) {
163
+ function totalMinted() external view returns (uint256) {
130
164
  return _totalMinted;
131
165
  }
132
166
 
@@ -172,16 +206,12 @@ contract ChainNft is ERC721Enumerable, IChainNft {
172
206
  _chainIdDigits;
173
207
  }
174
208
 
209
+ function getNextTokenId() external view returns (uint256) {
210
+ return calculateTokenId(_idNext);
211
+ }
212
+
175
213
  function _getNextTokenId() private returns (uint256 id) {
176
214
  id = calculateTokenId(_idNext);
177
215
  _idNext++;
178
216
  }
179
-
180
- function _countDigits(uint256 num) private pure returns (uint256 count) {
181
- count = 0;
182
- while (num != 0) {
183
- count++;
184
- num /= 10;
185
- }
186
- }
187
217
  }