@etherisc/gif-next 0.0.2-d96b9e1-825 → 0.0.2-d9e8211-569

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 (721) hide show
  1. package/README.md +309 -21
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/access → authorization}/IAccess.sol/IAccess.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -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 +1012 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1400 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +787 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +280 -1494
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +394 -1735
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1850 -0
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1048 -0
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +683 -0
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3587 -0
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  78. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/IComponents.sol/IComponents.json} +2 -2
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  82. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  86. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  87. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  99. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  101. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  105. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  107. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1362 -0
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +771 -0
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  115. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  117. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1198 -0
  118. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  119. package/artifacts/contracts/pool/Pool.sol/Pool.json +1034 -0
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  121. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1469 -0
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +695 -0
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +732 -0
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +667 -0
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  129. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  133. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1325 -0
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +775 -0
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +259 -219
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  139. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  141. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +785 -0
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  145. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  147. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IRiskService.sol/IRiskService.json} +202 -178
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1104 -0
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +715 -0
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +860 -0
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +715 -0
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  157. package/artifacts/contracts/product/Product.sol/Product.json +1054 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  159. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  161. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +242 -12
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +924 -119
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  167. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +940 -0
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  170. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/Registry.sol/Registry.json +1343 -220
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  173. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1861 -0
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  175. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1340 -0
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Component.sol/Component.json +685 -0
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1568 -0
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +753 -0
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  193. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +427 -0
  194. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  196. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  200. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  201. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +104 -141
  202. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  204. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  205. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  206. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  207. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +75 -84
  208. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  210. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  213. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +163 -143
  214. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  215. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  216. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  217. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  218. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  219. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  220. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  221. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  222. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  223. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  224. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  225. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  226. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  227. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  228. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  229. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +188 -0
  230. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  231. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +170 -27
  232. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  233. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  234. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  235. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → shared/Service.sol/Service.json} +197 -166
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  237. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  239. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  241. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  246. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  247. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  249. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +714 -0
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  261. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  262. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  264. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  266. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  268. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  270. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  272. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  274. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  276. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  278. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  279. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  280. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  282. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  284. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  286. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  288. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  290. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  292. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  294. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  296. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  298. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  300. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  302. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  304. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  306. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  308. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  310. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  312. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  313. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  314. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  315. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  316. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  318. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  320. package/contracts/authorization/AccessAdmin.sol +589 -0
  321. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  322. package/contracts/authorization/Authorization.sol +217 -0
  323. package/contracts/authorization/IAccess.sol +48 -0
  324. package/contracts/authorization/IAccessAdmin.sol +136 -0
  325. package/contracts/authorization/IAuthorization.sol +54 -0
  326. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  327. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  328. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  329. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  330. package/contracts/distribution/BasicDistribution.sol +138 -0
  331. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  332. package/contracts/distribution/Distribution.sol +295 -0
  333. package/contracts/distribution/DistributionService.sol +336 -0
  334. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  335. package/contracts/distribution/IDistributionComponent.sol +52 -0
  336. package/contracts/distribution/IDistributionService.sol +101 -0
  337. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  338. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  339. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  340. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  341. package/contracts/instance/BundleSet.sol +126 -0
  342. package/contracts/instance/IInstance.sol +57 -46
  343. package/contracts/instance/IInstanceService.sol +92 -0
  344. package/contracts/instance/Instance.sol +215 -54
  345. package/contracts/instance/InstanceAdmin.sol +285 -0
  346. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  347. package/contracts/instance/InstanceReader.sol +430 -0
  348. package/contracts/instance/InstanceService.sol +467 -0
  349. package/contracts/instance/InstanceServiceManager.sol +40 -0
  350. package/contracts/instance/InstanceStore.sol +287 -0
  351. package/contracts/instance/base/BalanceStore.sol +123 -0
  352. package/contracts/instance/base/Cloneable.sol +28 -0
  353. package/contracts/instance/base/ObjectCounter.sol +21 -0
  354. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  355. package/contracts/instance/base/ObjectSet.sol +79 -0
  356. package/contracts/instance/module/IAccess.sol +46 -0
  357. package/contracts/instance/module/IBundle.sol +20 -0
  358. package/contracts/instance/module/IComponents.sol +46 -0
  359. package/contracts/instance/module/IDistribution.sol +41 -0
  360. package/contracts/instance/module/IPolicy.sol +84 -0
  361. package/contracts/instance/module/IRisk.sol +11 -0
  362. package/contracts/{test/TestToken.sol → mock/Dip.sol} +6 -6
  363. package/contracts/oracle/BasicOracle.sol +48 -0
  364. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  365. package/contracts/oracle/IOracle.sol +36 -0
  366. package/contracts/oracle/IOracleComponent.sol +33 -0
  367. package/contracts/oracle/IOracleService.sol +65 -0
  368. package/contracts/oracle/Oracle.sol +167 -0
  369. package/contracts/oracle/OracleService.sol +279 -0
  370. package/contracts/oracle/OracleServiceManager.sol +39 -0
  371. package/contracts/pool/BasicPool.sol +166 -0
  372. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  373. package/contracts/pool/BundleService.sol +438 -0
  374. package/contracts/pool/BundleServiceManager.sol +39 -0
  375. package/contracts/pool/IBundleService.sol +134 -0
  376. package/contracts/pool/IPoolComponent.sol +58 -0
  377. package/contracts/pool/IPoolService.sol +160 -0
  378. package/contracts/pool/Pool.sol +326 -0
  379. package/contracts/pool/PoolService.sol +509 -0
  380. package/contracts/pool/PoolServiceManager.sol +39 -0
  381. package/contracts/product/ApplicationService.sol +248 -0
  382. package/contracts/product/ApplicationServiceManager.sol +38 -0
  383. package/contracts/product/BasicProduct.sol +53 -0
  384. package/contracts/product/BasicProductAuthorization.sol +43 -0
  385. package/contracts/product/ClaimService.sol +487 -0
  386. package/contracts/product/ClaimServiceManager.sol +38 -0
  387. package/contracts/product/IApplicationService.sol +63 -0
  388. package/contracts/product/IClaimService.sol +122 -0
  389. package/contracts/product/IPolicyService.sol +73 -0
  390. package/contracts/product/IPricingService.sol +39 -0
  391. package/contracts/product/IProductComponent.sol +39 -0
  392. package/contracts/product/IRiskService.sol +33 -0
  393. package/contracts/product/PolicyService.sol +573 -0
  394. package/contracts/product/PolicyServiceManager.sol +39 -0
  395. package/contracts/product/PricingService.sol +301 -0
  396. package/contracts/product/PricingServiceManager.sol +39 -0
  397. package/contracts/product/Product.sol +425 -0
  398. package/contracts/product/RiskService.sol +97 -0
  399. package/contracts/product/RiskServiceManager.sol +39 -0
  400. package/contracts/registry/ChainNft.sol +131 -40
  401. package/contracts/registry/IRegistry.sol +140 -29
  402. package/contracts/registry/IRegistryService.sol +69 -0
  403. package/contracts/registry/ITransferInterceptor.sol +7 -0
  404. package/contracts/registry/Registry.sol +603 -282
  405. package/contracts/registry/RegistryAdmin.sol +464 -0
  406. package/contracts/registry/RegistryService.sol +252 -0
  407. package/contracts/registry/RegistryServiceManager.sol +53 -0
  408. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  409. package/contracts/registry/ReleaseRegistry.sol +491 -0
  410. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  411. package/contracts/registry/TokenRegistry.sol +315 -0
  412. package/contracts/shared/Component.sol +268 -0
  413. package/contracts/shared/ComponentService.sol +641 -0
  414. package/contracts/shared/ComponentServiceManager.sol +35 -0
  415. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  416. package/contracts/shared/IComponent.sol +70 -0
  417. package/contracts/shared/IComponentService.sol +108 -0
  418. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  419. package/contracts/shared/IKeyValueStore.sol +54 -0
  420. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  421. package/contracts/shared/INftOwnable.sol +23 -0
  422. package/contracts/shared/IPolicyHolder.sol +36 -0
  423. package/contracts/shared/IRegisterable.sol +10 -19
  424. package/contracts/shared/IRegistryLinked.sol +11 -0
  425. package/contracts/shared/IService.sol +25 -0
  426. package/contracts/shared/InitializableCustom.sol +177 -0
  427. package/contracts/shared/InitializableERC165.sol +27 -0
  428. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  429. package/contracts/shared/KeyValueStore.sol +131 -0
  430. package/contracts/shared/Lifecycle.sol +77 -0
  431. package/contracts/shared/NftIdSet.sol +65 -0
  432. package/contracts/shared/NftOwnable.sol +107 -0
  433. package/contracts/shared/PolicyHolder.sol +56 -0
  434. package/contracts/shared/Registerable.sol +54 -65
  435. package/contracts/shared/RegistryLinked.sol +44 -0
  436. package/contracts/shared/Service.sol +82 -0
  437. package/contracts/shared/TokenHandler.sol +139 -0
  438. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  439. package/contracts/staking/IStaking.sol +168 -0
  440. package/contracts/staking/IStakingService.sol +160 -0
  441. package/contracts/staking/StakeManagerLib.sol +224 -0
  442. package/contracts/staking/Staking.sol +498 -0
  443. package/contracts/staking/StakingLifecycle.sol +23 -0
  444. package/contracts/staking/StakingManager.sol +50 -0
  445. package/contracts/staking/StakingReader.sol +183 -0
  446. package/contracts/staking/StakingService.sol +407 -0
  447. package/contracts/staking/StakingServiceManager.sol +44 -0
  448. package/contracts/staking/StakingStore.sol +605 -0
  449. package/contracts/staking/TargetManagerLib.sol +211 -0
  450. package/contracts/{types → type}/AddressSet.sol +1 -1
  451. package/contracts/type/Amount.sol +135 -0
  452. package/contracts/{types → type}/Blocknumber.sol +27 -3
  453. package/contracts/type/ClaimId.sol +75 -0
  454. package/contracts/type/DistributorType.sol +55 -0
  455. package/contracts/type/Fee.sol +66 -0
  456. package/contracts/{types → type}/Key32.sol +8 -3
  457. package/contracts/{types → type}/NftId.sol +21 -15
  458. package/contracts/type/NftIdSet.sol +62 -0
  459. package/contracts/type/ObjectType.sol +275 -0
  460. package/contracts/type/PayoutId.sol +82 -0
  461. package/contracts/type/Referral.sol +90 -0
  462. package/contracts/type/RequestId.sol +75 -0
  463. package/contracts/type/RiskId.sol +43 -0
  464. package/contracts/type/RoleId.sol +174 -0
  465. package/contracts/type/Seconds.sol +101 -0
  466. package/contracts/type/Selector.sol +102 -0
  467. package/contracts/{types → type}/StateId.sol +40 -5
  468. package/contracts/type/String.sol +53 -0
  469. package/contracts/{types → type}/Timestamp.sol +38 -15
  470. package/contracts/type/UFixed.sol +351 -0
  471. package/contracts/{types → type}/Version.sol +17 -2
  472. package/contracts/upgradeability/IVersionable.sol +53 -0
  473. package/contracts/upgradeability/ProxyManager.sol +198 -0
  474. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  475. package/contracts/upgradeability/Versionable.sol +59 -0
  476. package/package.json +14 -7
  477. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  478. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  479. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  480. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  481. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  482. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  483. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  484. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  485. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  486. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  487. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  489. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  491. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  493. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  495. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  496. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  497. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  499. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  501. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  503. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  505. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  507. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  509. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  510. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  512. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  514. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  516. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  518. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  520. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  521. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  522. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  524. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  526. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  530. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  531. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  532. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  533. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  534. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  535. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  538. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  539. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  540. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  541. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  543. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  545. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  547. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  548. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  549. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  550. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  552. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  554. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  556. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  557. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  558. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  559. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  560. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  561. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  563. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  564. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  565. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  567. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  569. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  570. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  571. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  572. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  573. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  574. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  575. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  576. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  578. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  579. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  580. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  581. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  582. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  583. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  584. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  585. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  586. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  587. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  588. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  589. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  591. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  593. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  594. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  595. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  596. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  597. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  598. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  599. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  600. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  601. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  602. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  603. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  604. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  605. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  606. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  607. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  608. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  609. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  610. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  611. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  612. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  613. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -82
  614. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  616. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  618. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  620. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  622. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  623. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  624. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  625. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  626. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  627. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  628. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  629. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  630. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  631. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  632. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  634. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  635. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  636. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  638. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  640. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  642. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  644. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  645. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  646. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  648. package/contracts/components/BaseComponent.sol +0 -88
  649. package/contracts/components/IBaseComponent.sol +0 -19
  650. package/contracts/components/IPoolComponent.sol +0 -57
  651. package/contracts/components/IProductComponent.sol +0 -19
  652. package/contracts/components/Pool.sol +0 -174
  653. package/contracts/components/Product.sol +0 -117
  654. package/contracts/experiment/errors/Require.sol +0 -38
  655. package/contracts/experiment/errors/Revert.sol +0 -44
  656. package/contracts/experiment/inheritance/A.sol +0 -53
  657. package/contracts/experiment/inheritance/B.sol +0 -28
  658. package/contracts/experiment/inheritance/C.sol +0 -34
  659. package/contracts/experiment/inheritance/IA.sol +0 -13
  660. package/contracts/experiment/inheritance/IB.sol +0 -10
  661. package/contracts/experiment/inheritance/IC.sol +0 -12
  662. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  663. package/contracts/experiment/statemachine/ISM.sol +0 -25
  664. package/contracts/experiment/statemachine/README.md +0 -112
  665. package/contracts/experiment/statemachine/SM.sol +0 -57
  666. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  667. package/contracts/experiment/types/TypeA.sol +0 -47
  668. package/contracts/experiment/types/TypeB.sol +0 -29
  669. package/contracts/instance/IInstanceLinked.sol +0 -8
  670. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  671. package/contracts/instance/base/IInstanceBase.sol +0 -14
  672. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  673. package/contracts/instance/base/IService.sol +0 -15
  674. package/contracts/instance/base/InstanceBase.sol +0 -80
  675. package/contracts/instance/base/KeyValueStore.sol +0 -147
  676. package/contracts/instance/base/Lifecycle.sol +0 -95
  677. package/contracts/instance/base/ModuleBase.sol +0 -52
  678. package/contracts/instance/base/ServiceBase.sol +0 -37
  679. package/contracts/instance/module/access/Access.sol +0 -149
  680. package/contracts/instance/module/access/IAccess.sol +0 -53
  681. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  682. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  683. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  684. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  685. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  686. package/contracts/instance/module/component/IComponent.sol +0 -53
  687. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  688. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  689. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  690. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  691. package/contracts/instance/module/risk/IRisk.sol +0 -10
  692. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  693. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  694. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  695. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  696. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  697. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  698. package/contracts/instance/service/IPoolService.sol +0 -30
  699. package/contracts/instance/service/IProductService.sol +0 -58
  700. package/contracts/instance/service/PoolService.sol +0 -123
  701. package/contracts/instance/service/ProductService.sol +0 -354
  702. package/contracts/registry/IChainNft.sol +0 -21
  703. package/contracts/registry/IRegistryLinked.sol +0 -8
  704. package/contracts/shared/ERC165.sol +0 -21
  705. package/contracts/shared/IOwnable.sol +0 -6
  706. package/contracts/shared/IVersionable.sol +0 -52
  707. package/contracts/shared/Versionable.sol +0 -89
  708. package/contracts/test/TestFee.sol +0 -25
  709. package/contracts/test/TestPool.sol +0 -22
  710. package/contracts/test/TestProduct.sol +0 -44
  711. package/contracts/test/TestRegisterable.sol +0 -19
  712. package/contracts/test/TestRoleId.sol +0 -14
  713. package/contracts/test/TestService.sol +0 -32
  714. package/contracts/test/TestVersion.sol +0 -44
  715. package/contracts/test/TestVersionable.sol +0 -17
  716. package/contracts/types/ChainId.sol +0 -38
  717. package/contracts/types/Fee.sol +0 -51
  718. package/contracts/types/NftIdSet.sol +0 -60
  719. package/contracts/types/ObjectType.sol +0 -115
  720. package/contracts/types/RoleId.sol +0 -36
  721. package/contracts/types/UFixed.sol +0 -206
@@ -0,0 +1,107 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
5
+ import {INftOwnable} from "./INftOwnable.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {RegistryLinked} from "./RegistryLinked.sol";
8
+
9
+ contract NftOwnable is
10
+ InitializableERC165,
11
+ RegistryLinked,
12
+ INftOwnable
13
+ {
14
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
15
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
16
+
17
+ struct NftOwnableStorage {
18
+ NftId _nftId;
19
+ address _initialOwner;
20
+ }
21
+
22
+ /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
23
+ modifier onlyOwner() {
24
+ if (msg.sender != getOwner()) {
25
+ revert ErrorNftOwnableNotOwner(msg.sender);
26
+ }
27
+ _;
28
+ }
29
+
30
+
31
+ /// @dev initialization for upgradable contracts
32
+ // used in _initializeRegisterable
33
+ function _initializeNftOwnable(
34
+ address initialOwner,
35
+ address registryAddress
36
+ )
37
+ internal
38
+ virtual
39
+ onlyInitializing()
40
+ {
41
+ _initializeRegistryLinked(registryAddress);
42
+ _initializeERC165();
43
+
44
+ if(initialOwner == address(0)) {
45
+ revert ErrorNftOwnableInitialOwnerZero();
46
+ }
47
+
48
+ _getNftOwnableStorage()._initialOwner = initialOwner;
49
+ }
50
+
51
+
52
+ /// @dev links this contract to nft after registration
53
+ // needs to be done once per registered contract and
54
+ // reduces registry calls to check ownership
55
+ // does not need any protection as function can only do the "right thing"
56
+ function linkToRegisteredNftId()
57
+ public
58
+ virtual
59
+ returns (NftId nftId)
60
+ {
61
+ return _linkToNftOwnable(address(this));
62
+ }
63
+
64
+ function getNftId() public view virtual override returns (NftId) {
65
+ return _getNftOwnableStorage()._nftId;
66
+ }
67
+
68
+ function getOwner() public view virtual override returns (address) {
69
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
70
+
71
+ if ($._nftId.gtz()) {
72
+ return getRegistry().ownerOf($._nftId);
73
+ }
74
+
75
+ return $._initialOwner;
76
+ }
77
+
78
+ /// @dev used in constructor of registry service manager
79
+ // links ownership of registry service manager ot nft owner of registry service
80
+ function _linkToNftOwnable(
81
+ address nftOwnableAddress
82
+ )
83
+ internal
84
+ returns (NftId)
85
+ {
86
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
87
+
88
+ if ($._nftId.gtz()) {
89
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
90
+ }
91
+
92
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
93
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
94
+ }
95
+
96
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
97
+
98
+ return $._nftId;
99
+ }
100
+
101
+
102
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
103
+ assembly {
104
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
105
+ }
106
+ }
107
+ }
@@ -0,0 +1,56 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {ClaimId} from "../type/ClaimId.sol";
8
+ import {InitializableERC165} from "./InitializableERC165.sol";
9
+ import {IPolicyHolder} from "./IPolicyHolder.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
12
+ import {RegistryLinked} from "./RegistryLinked.sol";
13
+
14
+ /// @dev template implementation for IPolicyHolder
15
+ contract PolicyHolder is
16
+ InitializableERC165,
17
+ RegistryLinked, // TODO need upgradeable version
18
+ IPolicyHolder
19
+ {
20
+ function _initializePolicyHolder(
21
+ address registryAddress
22
+ )
23
+ internal
24
+ virtual
25
+ onlyInitializing()
26
+ {
27
+ _initializeRegistryLinked(registryAddress);
28
+ _registerInterface(type(IPolicyHolder).interfaceId);
29
+ }
30
+
31
+ /// @dev empty default implementation
32
+ function policyActivated(NftId policyNftId) external {}
33
+
34
+ /// @dev empty default implementation
35
+ function policyExpired(NftId policyNftId) external {}
36
+
37
+ /// @dev empty default implementation
38
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external {}
39
+
40
+ /// @dev empty default implementation
41
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, address beneficiary, Amount amount) external {}
42
+
43
+ //--- IERC165 functions ---------------//
44
+ function onERC721Received(
45
+ address, // operator
46
+ address, // from
47
+ uint256, // tokenId
48
+ bytes calldata // data
49
+ )
50
+ external
51
+ virtual
52
+ returns (bytes4)
53
+ {
54
+ return IERC721Receiver.onERC721Received.selector;
55
+ }
56
+ }
@@ -1,86 +1,75 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId, zeroNftId} from "../types/NftId.sol";
5
- import {ObjectType} from "../types/ObjectType.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
+ import {NftOwnable} from "../shared/NftOwnable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
6
9
 
7
10
  import {IRegistry} from "../registry/IRegistry.sol";
8
11
  import {IRegisterable} from "./IRegisterable.sol";
9
12
 
10
- import {ERC165} from "./ERC165.sol";
11
-
12
- abstract contract Registerable is
13
- ERC165,
13
+ contract Registerable is
14
+ NftOwnable,
14
15
  IRegisterable
15
16
  {
16
- IRegistry internal immutable _registry;
17
- NftId internal immutable _parentNftId;
18
- address internal immutable _initialOwner;
19
-
20
- modifier onlyOwner() virtual {
21
- require(
22
- msg.sender == getOwner(),
23
- "ERROR:RGB-001:NOT_OWNER"
24
- );
25
- _;
17
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
18
+ bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
19
+
20
+ struct RegisterableStorage {
21
+ NftId _parentNftId;
22
+ ObjectType _objectType;
23
+ bool _isInterceptor;
24
+ bytes _data;
26
25
  }
27
26
 
28
- constructor(
27
+ function _initializeRegisterable(
29
28
  address registryAddress,
30
- NftId parentNftId
29
+ NftId parentNftId,
30
+ ObjectType objectType,
31
+ bool isInterceptor,
32
+ address initialOwner,
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
31
34
  )
32
- ERC165()
35
+ internal
36
+ virtual
37
+ onlyInitializing()
33
38
  {
34
- require(
35
- address(registryAddress) != address(0),
36
- "ERROR:RGB-010:REGISTRY_ZERO"
37
- );
38
-
39
- _registry = IRegistry(registryAddress);
40
- require(
41
- _registry.supportsInterface(type(IRegistry).interfaceId),
42
- "ERROR:RGB-011:NOT_REGISTRY"
43
- );
44
-
45
- _parentNftId = parentNftId;
46
- require(
47
- _registry.isRegistered(_parentNftId),
48
- "ERROR:RGB-012:PARENT_NOT_REGISTERED"
49
- );
50
-
51
- _initialOwner = msg.sender;
52
-
53
- // register support for IRegisterable
54
- _registerInterface(type(IRegisterable).interfaceId);
55
- }
39
+ _initializeNftOwnable(
40
+ initialOwner,
41
+ registryAddress);
56
42
 
57
- // from IRegistryLinked
58
- function register() public onlyOwner virtual override returns (NftId nftId) {
59
- return _registry.register(address(this));
60
- }
61
-
62
- function getRegistry() public view virtual override returns (IRegistry registry) {
63
- return _registry;
64
- }
65
-
66
- function getOwner() public view virtual override returns (address owner) {
67
- NftId nftId = _registry.getNftId(address(this));
68
- if(nftId == zeroNftId()) {
69
- return _initialOwner;
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
70
46
  }
71
47
 
72
- return _registry.getOwner(nftId);
48
+ $._parentNftId = parentNftId;
49
+ $._objectType = objectType;
50
+ $._isInterceptor = isInterceptor;
51
+ $._data = registryData;
73
52
  }
74
53
 
75
- function getNftId() public view override returns (NftId nftId) {
76
- return _registry.getNftId(address(this));
77
- }
78
54
 
79
- function getParentNftId() public view override returns (NftId nftId) {
80
- return _parentNftId;
81
- }
55
+ function getInitialInfo()
56
+ public
57
+ view
58
+ virtual
59
+ returns (IRegistry.ObjectInfo memory info)
60
+ {
61
+ RegisterableStorage storage $;
62
+ assembly {
63
+ $.slot := REGISTERABLE_LOCATION_V1
64
+ }
82
65
 
83
- function getData() public view virtual override returns (bytes memory data) {
84
- return "";
66
+ info = IRegistry.ObjectInfo(
67
+ NftIdLib.zero(),
68
+ $._parentNftId,
69
+ $._objectType,
70
+ $._isInterceptor,
71
+ address(this),
72
+ getOwner(),
73
+ $._data);
85
74
  }
86
- }
75
+ }
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+
8
+ contract RegistryLinked is
9
+ Initializable,
10
+ IRegistryLinked
11
+ {
12
+
13
+ // priorize simplicity and size over using standard upgradeability structs
14
+ IRegistry private _registry;
15
+
16
+ /// @dev initialization for upgradable contracts
17
+ // used in _initializeRegisterable
18
+ function _initializeRegistryLinked(
19
+ address registryAddress
20
+ )
21
+ internal
22
+ virtual
23
+ onlyInitializing()
24
+ {
25
+ if (registryAddress.code.length == 0) {
26
+ revert ErrorNotRegistry(registryAddress);
27
+ }
28
+
29
+ _registry = IRegistry(registryAddress);
30
+
31
+ try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
32
+ if (!isRegistry) {
33
+ revert ErrorNotRegistry(registryAddress);
34
+ }
35
+ } catch {
36
+ revert ErrorNotRegistry(registryAddress);
37
+ }
38
+ }
39
+
40
+
41
+ function getRegistry() public view returns (IRegistry) {
42
+ return _registry;
43
+ }
44
+ }
@@ -0,0 +1,82 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IService} from "./IService.sol";
9
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
10
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
11
+ import {Registerable} from "./Registerable.sol";
12
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
13
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
14
+ import {Versionable} from "../upgradeability/Versionable.sol";
15
+
16
+
17
+ /// @dev service base contract
18
+ abstract contract Service is
19
+ Registerable,
20
+ Versionable,
21
+ AccessManagedUpgradeable,
22
+ IService
23
+ {
24
+
25
+ uint8 private constant GIF_MAJOR_VERSION = 3;
26
+
27
+
28
+ function _initializeService(
29
+ address registry,
30
+ address authority, // real authority for registry service adress(0) for other services
31
+ address initialOwner
32
+ )
33
+ internal
34
+ virtual
35
+ onlyInitializing()
36
+ {
37
+ _initializeRegisterable(
38
+ registry,
39
+ IRegistry(registry).getNftId(),
40
+ SERVICE(),
41
+ false, // is interceptor
42
+ initialOwner,
43
+ ""); // data
44
+
45
+ // externally provided authority
46
+ if(authority != address(0)) {
47
+ __AccessManaged_init(authority);
48
+ } else {
49
+ address registryServiceAddress = _getServiceAddress(REGISTRY());
50
+
51
+ // copy authority from already registered registry services
52
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
53
+ }
54
+
55
+ _registerInterface(type(IAccessManaged).interfaceId);
56
+ _registerInterface(type(IService).interfaceId);
57
+ }
58
+
59
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
60
+ return _getDomain();
61
+ }
62
+
63
+ function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
64
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
65
+ }
66
+
67
+ // from Versionable
68
+ function getVersion()
69
+ public
70
+ pure
71
+ virtual override (IVersionable, Versionable)
72
+ returns(Version)
73
+ {
74
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
75
+ }
76
+
77
+ function _getDomain() internal virtual pure returns (ObjectType);
78
+
79
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
80
+ return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
81
+ }
82
+ }
@@ -0,0 +1,139 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
9
+
10
+ /// @dev token specific transfer helper
11
+ /// a default token contract is provided via contract constructor
12
+ /// relies internally on oz SafeERC20.safeTransferFrom
13
+ contract TokenHandler is AccessManaged {
14
+ error ErrorTokenHandlerAmountIsZero();
15
+ error ErrorTokenHandlerBalanceTooLow(address token, address from, uint256 balance, uint256 expectedBalance);
16
+ error ErrorTokenHandlerAllowanceTooSmall(address token, address from, address spender, uint256 allowance, uint256 expectedAllowance);
17
+ error ErrorTokenHandlerRecipientWalletsMustBeDistinct(address to, address to2, address to3);
18
+
19
+ event LogTokenHandlerTokenTransfer(address token, address from, address to, uint256 amountTransferred);
20
+
21
+ IERC20Metadata private _token;
22
+
23
+ constructor(address token, address initialAuthority) AccessManaged(initialAuthority) {
24
+ _token = IERC20Metadata(token);
25
+ }
26
+
27
+ /// @dev returns the default token defined for this TokenHandler
28
+ function getToken()
29
+ external
30
+ view
31
+ returns (IERC20Metadata)
32
+ {
33
+ return _token;
34
+ }
35
+
36
+ /// @dev collect tokens from outside of the gif and transfer them to one wallet within the scope of gif.
37
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
38
+ function collectTokens(
39
+ address from,
40
+ address to,
41
+ Amount amount
42
+ )
43
+ external
44
+ restricted()
45
+ {
46
+ _transfer(from, to, amount, true);
47
+ }
48
+
49
+ /// @dev collect tokens from outside of the gif and transfer them to three distinct wallets within the scope of gif
50
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
51
+ function collectTokensToThreeRecipients(
52
+ address from,
53
+ address to,
54
+ Amount amount,
55
+ address to2,
56
+ Amount amount2,
57
+ address to3,
58
+ Amount amount3
59
+ )
60
+ external
61
+ restricted()
62
+ {
63
+ if (to == to2 || to == to3 || to2 == to3) {
64
+ revert ErrorTokenHandlerRecipientWalletsMustBeDistinct(to, to2, to3);
65
+ }
66
+
67
+ _checkPreconditions(from, amount + amount2 + amount3);
68
+
69
+ if (amount.gtz()) {
70
+ _transfer(from, to, amount, false);
71
+ }
72
+ if (amount2.gtz()) {
73
+ _transfer(from, to2, amount2, false);
74
+ }
75
+ if (amount3.gtz()) {
76
+ _transfer(from, to3, amount3, false);
77
+ }
78
+ }
79
+
80
+ /// @dev distribute tokens from a wallet within the scope of gif to an external address.
81
+ /// This method also checks balance and allowance and makes sure the amount is greater than zero.
82
+ function distributeTokens(
83
+ address from,
84
+ address to,
85
+ Amount amount
86
+ )
87
+ external
88
+ restricted()
89
+ {
90
+ _transfer(from, to, amount, true);
91
+ }
92
+
93
+ function _transfer(
94
+ address from,
95
+ address to,
96
+ Amount amount,
97
+ bool checkPreconditions
98
+ )
99
+ internal
100
+ {
101
+ if (checkPreconditions) {
102
+ // check amount > 0, balance >= amount and allowance >= amount
103
+ _checkPreconditions(from, amount);
104
+ }
105
+
106
+ // transfer the tokens
107
+ emit LogTokenHandlerTokenTransfer(address(_token), from, to, amount.toInt());
108
+ SafeERC20.safeTransferFrom(
109
+ _token,
110
+ from,
111
+ to,
112
+ amount.toInt());
113
+ }
114
+
115
+ function _checkPreconditions(
116
+ address from,
117
+ Amount amount
118
+ )
119
+ internal
120
+ view
121
+ {
122
+ // amount must be greater than zero
123
+ if (amount.eqz()) {
124
+ revert ErrorTokenHandlerAmountIsZero();
125
+ }
126
+
127
+ // balance must be >= amount
128
+ uint256 balance = _token.balanceOf(from);
129
+ if (balance < amount.toInt()) {
130
+ revert ErrorTokenHandlerBalanceTooLow(address(_token), from, balance, amount.toInt());
131
+ }
132
+
133
+ // allowance must be >= amount
134
+ uint256 allowance = _token.allowance(from, address(this));
135
+ if (allowance < amount.toInt()) {
136
+ revert ErrorTokenHandlerAllowanceTooSmall(address(_token), from, address(this), allowance, amount.toInt());
137
+ }
138
+ }
139
+ }
@@ -0,0 +1,12 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {TokenHandler} from "./TokenHandler.sol";
5
+
6
+ library TokenHandlerDeployerLib {
7
+
8
+ function deployTokenHandler(address token, address authority) public returns (TokenHandler) {
9
+ return new TokenHandler(address(token), authority);
10
+ }
11
+
12
+ }