@etherisc/gif-next 0.0.2-d408403-475 → 0.0.2-d437d8d-974

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 (747) hide show
  1. package/README.md +287 -42
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1234 -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 +1013 -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 +263 -1618
  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 +455 -2025
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1623 -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/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  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 +1341 -0
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +783 -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} +232 -345
  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 +835 -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/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +207 -171
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  149. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1186 -0
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -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 +1858 -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/{instance/service/IPoolService.sol/IPoolService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +229 -242
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  195. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  197. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  199. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  203. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +66 -52
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  209. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  212. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  213. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  214. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IService.sol/IService.json} +171 -150
  216. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  217. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  218. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  219. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  220. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  221. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +793 -0
  222. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  223. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +102 -165
  224. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  225. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  226. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  227. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  228. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  229. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +193 -0
  230. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  231. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  232. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +170 -27
  234. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  235. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  236. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +189 -170
  238. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  239. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +469 -0
  240. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  241. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  242. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  243. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  244. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  245. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  246. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  248. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  249. package/artifacts/contracts/staking/Staking.sol/Staking.json +1828 -0
  250. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  251. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  252. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  253. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +714 -0
  254. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  255. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  256. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  257. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1231 -0
  258. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  259. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  260. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  261. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  262. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  263. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  264. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  266. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  268. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  270. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  272. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  274. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  276. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  278. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  280. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  281. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  282. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  284. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  286. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  288. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  290. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  292. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  294. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  296. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  298. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  300. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  301. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  302. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  304. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  306. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  308. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  310. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  312. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  314. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  315. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  316. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  317. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  318. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  319. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  320. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  321. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  322. package/contracts/authorization/AccessAdmin.sol +592 -0
  323. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  324. package/contracts/authorization/Authorization.sol +217 -0
  325. package/contracts/authorization/IAccess.sol +48 -0
  326. package/contracts/authorization/IAccessAdmin.sol +135 -0
  327. package/contracts/authorization/IAuthorization.sol +54 -0
  328. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  329. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  330. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  331. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  332. package/contracts/distribution/BasicDistribution.sol +138 -0
  333. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  334. package/contracts/distribution/Distribution.sol +295 -0
  335. package/contracts/distribution/DistributionService.sol +336 -0
  336. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  337. package/contracts/distribution/IDistributionComponent.sol +52 -0
  338. package/contracts/distribution/IDistributionService.sol +101 -0
  339. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  340. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  341. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  342. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  343. package/contracts/instance/BundleSet.sol +126 -0
  344. package/contracts/instance/IInstance.sol +57 -47
  345. package/contracts/instance/IInstanceService.sol +92 -0
  346. package/contracts/instance/Instance.sol +216 -61
  347. package/contracts/instance/InstanceAdmin.sol +285 -0
  348. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  349. package/contracts/instance/InstanceReader.sol +430 -0
  350. package/contracts/instance/InstanceService.sol +467 -0
  351. package/contracts/instance/InstanceServiceManager.sol +40 -0
  352. package/contracts/instance/InstanceStore.sol +287 -0
  353. package/contracts/instance/base/BalanceStore.sol +123 -0
  354. package/contracts/instance/base/Cloneable.sol +28 -0
  355. package/contracts/instance/base/ObjectCounter.sol +21 -0
  356. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  357. package/contracts/instance/base/ObjectSet.sol +79 -0
  358. package/contracts/instance/module/IAccess.sol +46 -0
  359. package/contracts/instance/module/IBundle.sol +20 -0
  360. package/contracts/instance/module/IComponents.sol +46 -0
  361. package/contracts/instance/module/IDistribution.sol +41 -0
  362. package/contracts/instance/module/IPolicy.sol +84 -0
  363. package/contracts/instance/module/IRisk.sol +11 -0
  364. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  365. package/contracts/oracle/BasicOracle.sol +48 -0
  366. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  367. package/contracts/oracle/IOracle.sol +36 -0
  368. package/contracts/oracle/IOracleComponent.sol +33 -0
  369. package/contracts/oracle/IOracleService.sol +65 -0
  370. package/contracts/oracle/Oracle.sol +167 -0
  371. package/contracts/oracle/OracleService.sol +279 -0
  372. package/contracts/oracle/OracleServiceManager.sol +39 -0
  373. package/contracts/pool/BasicPool.sol +166 -0
  374. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  375. package/contracts/pool/BundleService.sol +438 -0
  376. package/contracts/pool/BundleServiceManager.sol +39 -0
  377. package/contracts/pool/IBundleService.sol +134 -0
  378. package/contracts/pool/IPoolComponent.sol +58 -0
  379. package/contracts/pool/IPoolService.sol +160 -0
  380. package/contracts/pool/Pool.sol +326 -0
  381. package/contracts/pool/PoolService.sol +509 -0
  382. package/contracts/pool/PoolServiceManager.sol +39 -0
  383. package/contracts/product/ApplicationService.sol +248 -0
  384. package/contracts/product/ApplicationServiceManager.sol +38 -0
  385. package/contracts/product/BasicProduct.sol +53 -0
  386. package/contracts/product/BasicProductAuthorization.sol +43 -0
  387. package/contracts/product/ClaimService.sol +537 -0
  388. package/contracts/product/ClaimServiceManager.sol +38 -0
  389. package/contracts/product/IApplicationService.sol +63 -0
  390. package/contracts/product/IClaimService.sol +122 -0
  391. package/contracts/product/IPolicyService.sol +75 -0
  392. package/contracts/product/IPricingService.sol +39 -0
  393. package/contracts/product/IProductComponent.sol +39 -0
  394. package/contracts/product/IRiskService.sol +33 -0
  395. package/contracts/product/PolicyService.sol +638 -0
  396. package/contracts/product/PolicyServiceManager.sol +39 -0
  397. package/contracts/product/PricingService.sol +301 -0
  398. package/contracts/product/PricingServiceManager.sol +39 -0
  399. package/contracts/product/Product.sol +425 -0
  400. package/contracts/product/RiskService.sol +97 -0
  401. package/contracts/product/RiskServiceManager.sol +39 -0
  402. package/contracts/registry/ChainNft.sol +131 -40
  403. package/contracts/registry/IRegistry.sol +140 -29
  404. package/contracts/registry/IRegistryService.sol +69 -0
  405. package/contracts/registry/ITransferInterceptor.sol +7 -0
  406. package/contracts/registry/Registry.sol +603 -283
  407. package/contracts/registry/RegistryAdmin.sol +464 -0
  408. package/contracts/registry/RegistryService.sol +252 -0
  409. package/contracts/registry/RegistryServiceManager.sol +53 -0
  410. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  411. package/contracts/registry/ReleaseRegistry.sol +491 -0
  412. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  413. package/contracts/registry/TokenRegistry.sol +315 -0
  414. package/contracts/shared/Component.sol +268 -0
  415. package/contracts/shared/ComponentService.sol +641 -0
  416. package/contracts/shared/ComponentServiceManager.sol +35 -0
  417. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  418. package/contracts/shared/ContractLib.sol +38 -0
  419. package/contracts/shared/IComponent.sol +70 -0
  420. package/contracts/shared/IComponentService.sol +108 -0
  421. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  422. package/contracts/shared/IKeyValueStore.sol +54 -0
  423. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  424. package/contracts/shared/INftOwnable.sol +23 -0
  425. package/contracts/shared/IPolicyHolder.sol +35 -0
  426. package/contracts/shared/IRegisterable.sol +10 -19
  427. package/contracts/shared/IRegistryLinked.sol +11 -0
  428. package/contracts/shared/IService.sol +25 -0
  429. package/contracts/shared/InitializableCustom.sol +177 -0
  430. package/contracts/shared/InitializableERC165.sol +27 -0
  431. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  432. package/contracts/shared/KeyValueStore.sol +131 -0
  433. package/contracts/shared/Lifecycle.sol +77 -0
  434. package/contracts/shared/NftIdSet.sol +65 -0
  435. package/contracts/shared/NftOwnable.sol +107 -0
  436. package/contracts/shared/PolicyHolder.sol +58 -0
  437. package/contracts/shared/Registerable.sol +54 -65
  438. package/contracts/shared/RegistryLinked.sol +44 -0
  439. package/contracts/shared/Service.sol +82 -0
  440. package/contracts/shared/TokenHandler.sol +139 -0
  441. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  442. package/contracts/staking/IStaking.sol +168 -0
  443. package/contracts/staking/IStakingService.sol +160 -0
  444. package/contracts/staking/StakeManagerLib.sol +224 -0
  445. package/contracts/staking/Staking.sol +498 -0
  446. package/contracts/staking/StakingLifecycle.sol +23 -0
  447. package/contracts/staking/StakingManager.sol +50 -0
  448. package/contracts/staking/StakingReader.sol +183 -0
  449. package/contracts/staking/StakingService.sol +407 -0
  450. package/contracts/staking/StakingServiceManager.sol +44 -0
  451. package/contracts/staking/StakingStore.sol +605 -0
  452. package/contracts/staking/TargetManagerLib.sol +211 -0
  453. package/contracts/{types → type}/AddressSet.sol +1 -1
  454. package/contracts/type/Amount.sol +135 -0
  455. package/contracts/{types → type}/Blocknumber.sol +27 -3
  456. package/contracts/type/ClaimId.sol +75 -0
  457. package/contracts/type/DistributorType.sol +55 -0
  458. package/contracts/type/Fee.sol +66 -0
  459. package/contracts/{types → type}/Key32.sol +8 -3
  460. package/contracts/{types → type}/NftId.sol +21 -15
  461. package/contracts/type/NftIdSet.sol +62 -0
  462. package/contracts/type/ObjectType.sol +275 -0
  463. package/contracts/type/PayoutId.sol +82 -0
  464. package/contracts/type/Referral.sol +90 -0
  465. package/contracts/type/RequestId.sol +75 -0
  466. package/contracts/{types → type}/RiskId.sol +1 -1
  467. package/contracts/type/RoleId.sol +174 -0
  468. package/contracts/type/Seconds.sol +101 -0
  469. package/contracts/type/Selector.sol +102 -0
  470. package/contracts/{types → type}/StateId.sol +40 -5
  471. package/contracts/type/String.sol +53 -0
  472. package/contracts/{types → type}/Timestamp.sol +38 -15
  473. package/contracts/type/UFixed.sol +351 -0
  474. package/contracts/{types → type}/Version.sol +17 -2
  475. package/contracts/upgradeability/IVersionable.sol +53 -0
  476. package/contracts/upgradeability/ProxyManager.sol +198 -0
  477. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +14 -0
  478. package/contracts/upgradeability/Versionable.sol +59 -0
  479. package/package.json +11 -7
  480. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  481. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  482. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  483. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -405
  484. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  485. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  486. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  487. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -340
  488. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  489. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -487
  490. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  491. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -370
  492. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  493. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -578
  494. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  495. package/artifacts/contracts/components/Product.sol/Product.json +0 -444
  496. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  498. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  500. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  502. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  504. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  506. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  508. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  510. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  512. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  514. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  515. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  516. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  517. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  518. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  519. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  520. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  521. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  522. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  523. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  524. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  525. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  526. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  527. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  528. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  529. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  530. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  531. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  532. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  533. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  534. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  535. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  539. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  540. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  541. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -710
  542. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  544. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  545. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  546. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  547. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  549. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  550. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  552. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  554. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  555. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  556. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  557. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  558. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  559. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  560. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  561. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  562. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  563. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  564. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  565. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  566. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  567. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  568. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  569. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  570. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  571. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  572. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  573. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  574. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  575. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  576. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  577. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  578. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  579. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  580. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  581. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  582. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  583. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  584. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  585. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  586. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  587. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  588. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  589. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  590. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  591. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  592. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  593. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  594. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -420
  595. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  596. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  598. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  600. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -543
  601. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  602. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -858
  603. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  604. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  605. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  606. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  607. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  608. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  609. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  610. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  611. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -164
  612. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  613. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -164
  614. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  616. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  618. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  620. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  622. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  624. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  626. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  628. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  629. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  630. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  631. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  632. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  633. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  634. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  635. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  636. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  637. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  638. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  640. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  641. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  642. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  644. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  645. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  646. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  648. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  649. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  650. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  652. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  654. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  656. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  658. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  661. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  663. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  665. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  667. package/contracts/components/BaseComponent.sol +0 -94
  668. package/contracts/components/Distribution.sol +0 -132
  669. package/contracts/components/IBaseComponent.sol +0 -19
  670. package/contracts/components/IDistributionComponent.sol +0 -48
  671. package/contracts/components/IPoolComponent.sol +0 -71
  672. package/contracts/components/IProductComponent.sol +0 -38
  673. package/contracts/components/Pool.sol +0 -235
  674. package/contracts/components/Product.sol +0 -227
  675. package/contracts/experiment/errors/Require.sol +0 -38
  676. package/contracts/experiment/errors/Revert.sol +0 -44
  677. package/contracts/experiment/inheritance/A.sol +0 -53
  678. package/contracts/experiment/inheritance/B.sol +0 -28
  679. package/contracts/experiment/inheritance/C.sol +0 -34
  680. package/contracts/experiment/inheritance/IA.sol +0 -13
  681. package/contracts/experiment/inheritance/IB.sol +0 -10
  682. package/contracts/experiment/inheritance/IC.sol +0 -12
  683. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  684. package/contracts/experiment/statemachine/ISM.sol +0 -25
  685. package/contracts/experiment/statemachine/README.md +0 -112
  686. package/contracts/experiment/statemachine/SM.sol +0 -57
  687. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  688. package/contracts/experiment/types/TypeA.sol +0 -47
  689. package/contracts/experiment/types/TypeB.sol +0 -29
  690. package/contracts/instance/IInstanceLinked.sol +0 -8
  691. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  692. package/contracts/instance/base/IInstanceBase.sol +0 -22
  693. package/contracts/instance/base/IKeyValueStore.sol +0 -50
  694. package/contracts/instance/base/IService.sol +0 -15
  695. package/contracts/instance/base/InstanceBase.sol +0 -91
  696. package/contracts/instance/base/KeyValueStore.sol +0 -161
  697. package/contracts/instance/base/Lifecycle.sol +0 -100
  698. package/contracts/instance/base/ModuleBase.sol +0 -57
  699. package/contracts/instance/base/ServiceBase.sol +0 -37
  700. package/contracts/instance/module/access/Access.sol +0 -149
  701. package/contracts/instance/module/access/IAccess.sol +0 -53
  702. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  703. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  704. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  705. package/contracts/instance/module/component/IComponent.sol +0 -28
  706. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  707. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  708. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  709. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  710. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  711. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  712. package/contracts/instance/module/risk/IRisk.sol +0 -26
  713. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  714. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  715. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  716. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  717. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  718. package/contracts/instance/service/DistributionService.sol +0 -59
  719. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  720. package/contracts/instance/service/IDistributionService.sol +0 -12
  721. package/contracts/instance/service/IPoolService.sol +0 -37
  722. package/contracts/instance/service/IProductService.sol +0 -107
  723. package/contracts/instance/service/PoolService.sol +0 -149
  724. package/contracts/instance/service/ProductService.sol +0 -509
  725. package/contracts/registry/IChainNft.sol +0 -21
  726. package/contracts/registry/IRegistryLinked.sol +0 -8
  727. package/contracts/shared/ERC165.sol +0 -21
  728. package/contracts/shared/IOwnable.sol +0 -6
  729. package/contracts/shared/IVersionable.sol +0 -52
  730. package/contracts/shared/Versionable.sol +0 -89
  731. package/contracts/test/TestDistribution.sol +0 -21
  732. package/contracts/test/TestFee.sol +0 -25
  733. package/contracts/test/TestPool.sol +0 -25
  734. package/contracts/test/TestProduct.sol +0 -72
  735. package/contracts/test/TestRegisterable.sol +0 -19
  736. package/contracts/test/TestRoleId.sol +0 -14
  737. package/contracts/test/TestService.sol +0 -32
  738. package/contracts/test/TestToken.sol +0 -26
  739. package/contracts/test/TestVersion.sol +0 -44
  740. package/contracts/test/TestVersionable.sol +0 -17
  741. package/contracts/types/ChainId.sol +0 -38
  742. package/contracts/types/Fee.sol +0 -56
  743. package/contracts/types/NftIdSet.sol +0 -60
  744. package/contracts/types/ObjectType.sol +0 -131
  745. package/contracts/types/ReferralId.sol +0 -48
  746. package/contracts/types/RoleId.sol +0 -38
  747. package/contracts/types/UFixed.sol +0 -209
@@ -0,0 +1,107 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {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,58 @@
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
+ import {Timestamp} from "../type/Timestamp.sol";
14
+
15
+ /// @dev template implementation for IPolicyHolder
16
+ contract PolicyHolder is
17
+ InitializableERC165,
18
+ RegistryLinked,
19
+ IPolicyHolder
20
+ {
21
+ function _initializePolicyHolder(
22
+ address registryAddress
23
+ )
24
+ internal
25
+ virtual
26
+ onlyInitializing()
27
+ {
28
+ _initializeRegistryLinked(registryAddress);
29
+ _initializeERC165();
30
+ _registerInterface(type(IPolicyHolder).interfaceId);
31
+ }
32
+
33
+ /// @dev empty default implementation
34
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external virtual {}
35
+
36
+ /// @dev empty default implementation
37
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external virtual {}
38
+
39
+ /// @dev empty default implementation
40
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external virtual {}
41
+
42
+ /// @dev empty default implementation
43
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external virtual {}
44
+
45
+ //--- IERC165 functions ---------------//
46
+ function onERC721Received(
47
+ address, // operator
48
+ address, // from
49
+ uint256, // tokenId
50
+ bytes calldata // data
51
+ )
52
+ external
53
+ virtual
54
+ returns (bytes4)
55
+ {
56
+ return IERC721Receiver.onERC721Received.selector;
57
+ }
58
+ }
@@ -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
+ }