@etherisc/gif-next 0.0.2-00080dc-272

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 (441) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +495 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  4. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  6. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  8. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  10. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  12. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  14. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
  16. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +665 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  18. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
  19. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
  20. package/artifacts/contracts/instance/Instance.sol/Instance.json +965 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  22. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  24. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  26. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  28. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1220 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  30. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  32. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  34. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  36. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  38. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  40. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  46. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.json +10 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  51. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.json +10 -0
  53. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.json +10 -0
  55. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  56. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  57. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  58. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  59. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  61. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  62. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  63. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  64. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  65. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  66. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  67. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  69. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  71. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  73. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  74. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  75. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  76. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  77. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  78. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  79. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  80. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  81. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  82. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  83. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  84. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  85. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  86. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  87. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  88. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  89. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  90. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  91. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  93. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  94. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  95. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  96. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  97. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  99. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  100. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  101. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  102. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  103. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  104. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  105. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  106. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  107. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  108. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  109. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  110. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  111. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  113. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  114. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  115. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  116. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  117. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  118. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
  120. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +784 -0
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +4 -0
  122. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +906 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  124. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  125. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  127. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  128. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  129. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +4 -0
  130. package/artifacts/contracts/registry/Registry.sol/Registry.json +1230 -0
  131. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  132. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  133. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  134. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  135. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  136. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  137. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  138. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +187 -0
  139. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  140. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1234 -0
  141. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  142. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  143. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  144. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  145. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  146. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  147. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  148. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  149. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  150. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  151. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  152. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  154. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  155. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  156. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  157. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  158. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  159. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  160. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  161. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  162. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  163. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  164. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  165. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  166. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  168. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  169. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  170. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  171. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  172. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  173. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  174. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  176. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  178. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  180. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  181. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  182. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  183. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  185. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  186. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +131 -0
  187. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  188. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  189. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  190. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
  191. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  192. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  193. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  194. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  195. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  196. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  197. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  198. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  199. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  200. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  201. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  202. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +570 -0
  203. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  204. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +156 -0
  205. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  206. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  207. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  208. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  209. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  210. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  211. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  212. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  213. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  215. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  217. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  218. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  221. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  222. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  223. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  224. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +187 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2260 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  283. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  297. package/contracts/distribution/Distribution.sol +261 -0
  298. package/contracts/distribution/DistributionService.sol +297 -0
  299. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  300. package/contracts/distribution/IDistributionComponent.sol +66 -0
  301. package/contracts/distribution/IDistributionService.sol +81 -0
  302. package/contracts/instance/BundleManager.sol +126 -0
  303. package/contracts/instance/IInstance.sol +87 -0
  304. package/contracts/instance/IInstanceService.sol +97 -0
  305. package/contracts/instance/Instance.sol +263 -0
  306. package/contracts/instance/InstanceAdmin.sol +331 -0
  307. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  308. package/contracts/instance/InstanceReader.sol +392 -0
  309. package/contracts/instance/InstanceService.sol +439 -0
  310. package/contracts/instance/InstanceServiceManager.sol +44 -0
  311. package/contracts/instance/InstanceStore.sol +272 -0
  312. package/contracts/instance/base/BalanceStore.sol +123 -0
  313. package/contracts/instance/base/Cloneable.sol +28 -0
  314. package/contracts/instance/base/ObjectCounter.sol +21 -0
  315. package/contracts/instance/base/ObjectLifecycle.sol +96 -0
  316. package/contracts/instance/base/ObjectManager.sol +80 -0
  317. package/contracts/instance/module/IAccess.sol +46 -0
  318. package/contracts/instance/module/IBundle.sol +20 -0
  319. package/contracts/instance/module/IComponents.sol +52 -0
  320. package/contracts/instance/module/IDistribution.sol +42 -0
  321. package/contracts/instance/module/IPolicy.sol +84 -0
  322. package/contracts/instance/module/IRisk.sol +11 -0
  323. package/contracts/mock/Dip.sol +26 -0
  324. package/contracts/oracle/IOracle.sol +20 -0
  325. package/contracts/oracle/IOracleComponent.sol +32 -0
  326. package/contracts/oracle/IOracleService.sol +65 -0
  327. package/contracts/oracle/Oracle.sol +145 -0
  328. package/contracts/oracle/OracleService.sol +278 -0
  329. package/contracts/oracle/OracleServiceManager.sol +42 -0
  330. package/contracts/pool/BundleService.sol +296 -0
  331. package/contracts/pool/BundleServiceManager.sol +42 -0
  332. package/contracts/pool/IBundleService.sol +106 -0
  333. package/contracts/pool/IPoolComponent.sol +112 -0
  334. package/contracts/pool/IPoolService.sol +150 -0
  335. package/contracts/pool/Pool.sol +299 -0
  336. package/contracts/pool/PoolService.sol +452 -0
  337. package/contracts/pool/PoolServiceManager.sol +42 -0
  338. package/contracts/product/ApplicationService.sol +254 -0
  339. package/contracts/product/ApplicationServiceManager.sol +38 -0
  340. package/contracts/product/ClaimService.sol +442 -0
  341. package/contracts/product/ClaimServiceManager.sol +38 -0
  342. package/contracts/product/IApplicationService.sol +62 -0
  343. package/contracts/product/IClaimService.sol +99 -0
  344. package/contracts/product/IPolicyService.sol +78 -0
  345. package/contracts/product/IPricingService.sol +39 -0
  346. package/contracts/product/IProductComponent.sol +42 -0
  347. package/contracts/product/IProductService.sol +33 -0
  348. package/contracts/product/PolicyService.sol +475 -0
  349. package/contracts/product/PolicyServiceManager.sol +42 -0
  350. package/contracts/product/PricingService.sol +300 -0
  351. package/contracts/product/PricingServiceManager.sol +42 -0
  352. package/contracts/product/Product.sol +377 -0
  353. package/contracts/product/ProductService.sol +124 -0
  354. package/contracts/product/ProductServiceManager.sol +42 -0
  355. package/contracts/registry/ChainNft.sol +217 -0
  356. package/contracts/registry/IRegistry.sol +124 -0
  357. package/contracts/registry/IRegistryService.sol +69 -0
  358. package/contracts/registry/IServiceAuthorization.sol +38 -0
  359. package/contracts/registry/ITransferInterceptor.sol +7 -0
  360. package/contracts/registry/Registry.sol +582 -0
  361. package/contracts/registry/RegistryAdmin.sol +333 -0
  362. package/contracts/registry/RegistryService.sol +266 -0
  363. package/contracts/registry/RegistryServiceManager.sol +53 -0
  364. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  365. package/contracts/registry/ReleaseManager.sol +523 -0
  366. package/contracts/registry/ServiceAuthorization.sol +90 -0
  367. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  368. package/contracts/registry/TokenRegistry.sol +315 -0
  369. package/contracts/shared/AccessAdmin.sol +759 -0
  370. package/contracts/shared/AccessManagerCustom.sol +741 -0
  371. package/contracts/shared/AccessManagerExtended.sol +481 -0
  372. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  373. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  374. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  375. package/contracts/shared/Component.sol +281 -0
  376. package/contracts/shared/ComponentService.sol +620 -0
  377. package/contracts/shared/ComponentServiceManager.sol +35 -0
  378. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  379. package/contracts/shared/ERC165.sol +27 -0
  380. package/contracts/shared/IAccessAdmin.sol +168 -0
  381. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  382. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  383. package/contracts/shared/IComponent.sol +70 -0
  384. package/contracts/shared/IComponentService.sol +102 -0
  385. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  386. package/contracts/shared/IKeyValueStore.sol +54 -0
  387. package/contracts/shared/ILifecycle.sol +29 -0
  388. package/contracts/shared/INftOwnable.sol +23 -0
  389. package/contracts/shared/IPolicyHolder.sol +45 -0
  390. package/contracts/shared/IRegisterable.sol +15 -0
  391. package/contracts/shared/IRegistryLinked.sol +11 -0
  392. package/contracts/shared/IService.sol +25 -0
  393. package/contracts/shared/IVersionable.sol +53 -0
  394. package/contracts/shared/InitializableCustom.sol +177 -0
  395. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  396. package/contracts/shared/KeyValueStore.sol +131 -0
  397. package/contracts/shared/Lifecycle.sol +71 -0
  398. package/contracts/shared/NftIdSetManager.sol +65 -0
  399. package/contracts/shared/NftOwnable.sol +107 -0
  400. package/contracts/shared/PolicyHolder.sol +102 -0
  401. package/contracts/shared/ProxyManager.sol +199 -0
  402. package/contracts/shared/Registerable.sol +75 -0
  403. package/contracts/shared/RegistryLinked.sol +43 -0
  404. package/contracts/shared/Service.sol +83 -0
  405. package/contracts/shared/TokenHandler.sol +58 -0
  406. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  407. package/contracts/shared/Versionable.sol +59 -0
  408. package/contracts/staking/IStaking.sol +168 -0
  409. package/contracts/staking/IStakingService.sol +153 -0
  410. package/contracts/staking/StakeManagerLib.sol +231 -0
  411. package/contracts/staking/Staking.sol +513 -0
  412. package/contracts/staking/StakingLifecycle.sol +24 -0
  413. package/contracts/staking/StakingManager.sol +54 -0
  414. package/contracts/staking/StakingReader.sol +187 -0
  415. package/contracts/staking/StakingService.sol +411 -0
  416. package/contracts/staking/StakingServiceManager.sol +44 -0
  417. package/contracts/staking/StakingStore.sol +615 -0
  418. package/contracts/staking/TargetManagerLib.sol +207 -0
  419. package/contracts/type/AddressSet.sol +58 -0
  420. package/contracts/type/Amount.sol +128 -0
  421. package/contracts/type/Blocknumber.sol +136 -0
  422. package/contracts/type/ClaimId.sol +75 -0
  423. package/contracts/type/DistributorType.sol +55 -0
  424. package/contracts/type/Fee.sol +66 -0
  425. package/contracts/type/Key32.sol +50 -0
  426. package/contracts/type/NftId.sol +78 -0
  427. package/contracts/type/NftIdSet.sol +62 -0
  428. package/contracts/type/ObjectType.sol +241 -0
  429. package/contracts/type/PayoutId.sol +82 -0
  430. package/contracts/type/Referral.sol +89 -0
  431. package/contracts/type/RequestId.sol +75 -0
  432. package/contracts/type/RiskId.sol +43 -0
  433. package/contracts/type/RoleId.sol +201 -0
  434. package/contracts/type/Seconds.sol +81 -0
  435. package/contracts/type/Selector.sol +102 -0
  436. package/contracts/type/StateId.sol +135 -0
  437. package/contracts/type/String.sol +53 -0
  438. package/contracts/type/Timestamp.sol +136 -0
  439. package/contracts/type/UFixed.sol +326 -0
  440. package/contracts/type/Version.sol +108 -0
  441. package/package.json +55 -0
@@ -0,0 +1,217 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
+
7
+ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
+
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ // constants
12
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
+ string public constant SYMBOL = "DIPNFT";
14
+
15
+ uint256 public constant PROTOCOL_NFT_ID = 1101;
16
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
+
18
+ // TODO rename errors to error pattern: CallerNotRegistry -> ErrorCallerNotRegistry etc.
19
+ // custom errors
20
+ error CallerNotRegistry(address caller);
21
+ error RegistryAddressZero();
22
+ error NftUriEmpty();
23
+ error NftUriAlreadySet();
24
+
25
+ // contract state
26
+
27
+ // remember interceptors
28
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
29
+
30
+ // remember token uri
31
+ mapping(uint256 tokenId => string uri) private _uri;
32
+
33
+ // remember registry
34
+ address private _registry;
35
+
36
+ // only used for _getNextTokenId
37
+ uint256 internal _chainIdInt;
38
+ uint256 internal _chainIdDigits;
39
+ uint256 internal _chainIdMultiplier;
40
+ uint256 internal _idNext;
41
+ uint256 internal _totalMinted;
42
+
43
+ modifier onlyRegistry() {
44
+ if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
45
+ _;
46
+ }
47
+
48
+ constructor(address registry) ERC721(NAME, SYMBOL) {
49
+ if (registry == address(0)) { revert RegistryAddressZero(); }
50
+
51
+ _registry = registry;
52
+ _chainIdInt = block.chainid;
53
+ _chainIdDigits = 0;
54
+
55
+ // count digis
56
+ uint256 num = _chainIdInt;
57
+ while (num != 0) {
58
+ _chainIdDigits++;
59
+ num /= 10;
60
+ }
61
+
62
+ _chainIdMultiplier = 10 ** _chainIdDigits;
63
+
64
+ // the first object registered through normal registration starts with id 4
65
+ // 1 -> protocol
66
+ // 2 -> registry
67
+ // 3 -> staking
68
+ // >= 4 -> all other objects
69
+ _idNext = 4;
70
+ }
71
+
72
+ /**
73
+ * @dev mints a token for a specified token id
74
+ * not part of the IRegistry interface only needed for
75
+ * initial registry setup (protocol and global registry objects)
76
+ */
77
+ function mint(address to, uint256 tokenId) external onlyRegistry {
78
+ _totalMinted++;
79
+ _safeMint(to, tokenId);
80
+ }
81
+
82
+
83
+ /**
84
+ * @dev mints the next token to register new objects
85
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
86
+ * the contract receiving such a notification may decides to revert or record the transfer
87
+ */
88
+ function mint(
89
+ address to,
90
+ address interceptor,
91
+ string memory uri
92
+ ) public onlyRegistry returns (uint256 tokenId) {
93
+ tokenId = _getNextTokenId();
94
+
95
+ if (interceptor != address(0)) {
96
+ _interceptor[tokenId] = interceptor;
97
+ }
98
+
99
+ if (bytes(uri).length > 0) {
100
+ _uri[tokenId] = uri;
101
+ }
102
+
103
+ _totalMinted++;
104
+ _safeMint(to, tokenId);
105
+
106
+ if(interceptor != address(0)) {
107
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
108
+ }
109
+ }
110
+
111
+
112
+ /**
113
+ * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
114
+ * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
115
+ */
116
+ function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
117
+ super.transferFrom(from, to, tokenId);
118
+
119
+ if (_interceptor[tokenId] != address(0)) {
120
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
121
+ }
122
+ }
123
+
124
+
125
+ function burn(uint256 tokenId) external onlyRegistry {
126
+ _requireOwned(tokenId);
127
+ _burn(tokenId);
128
+ delete _uri[tokenId];
129
+ }
130
+
131
+ function setURI(
132
+ uint256 tokenId,
133
+ string memory uri
134
+ ) external onlyRegistry {
135
+ if (bytes(uri).length == 0) { revert NftUriEmpty(); }
136
+ if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
137
+
138
+ _requireOwned(tokenId);
139
+ _uri[tokenId] = uri;
140
+ }
141
+
142
+ function exists(uint256 tokenId) external view returns (bool) {
143
+ return _ownerOf(tokenId) != address(0);
144
+ }
145
+
146
+ function tokenURI(
147
+ uint256 tokenId
148
+ ) public view override returns (string memory) {
149
+ // gif generally does not revert for view functions
150
+ // this is an exception to keep the openzeppelin nft semantics
151
+ _requireOwned(tokenId);
152
+ return _uri[tokenId];
153
+ }
154
+
155
+ function getInterceptor(uint256 tokenId) external view returns (address) {
156
+ return _interceptor[tokenId];
157
+ }
158
+
159
+ function getRegistryAddress() external view returns (address) {
160
+ return _registry;
161
+ }
162
+
163
+ function totalMinted() external view returns (uint256) {
164
+ return _totalMinted;
165
+ }
166
+
167
+ /**
168
+ * @dev token id calculation based on an index value that is supposed
169
+ * to increase with every minted token
170
+ *
171
+ * requirement: each chain registry produces token ids that
172
+ * are guaranteed to not collide with any token id genereated
173
+ * on a different chain
174
+ *
175
+ * format concat(counter,chainid,2 digits for len-of-chain-id)
176
+ * restriction chainid up to 99 digits
177
+ * decode: from right to left:
178
+ * - 2 right most digits encode length of chainid
179
+ * - move number of digits to left as determined above (-> chainid)
180
+ * - the reminder to the left is the counter
181
+ *
182
+ * special cases
183
+ * 1101 -> decentralized insurance protocol
184
+ * 2102 -> global registry
185
+ * 2xxxxx -> chain registry, where xxxxx = <chain-part>
186
+ *
187
+ * examples
188
+ * 1101
189
+ * ^^ ^
190
+ * || +- 1-digit chain id
191
+ * |+-- chain id = 1 (mainnet)
192
+ * +-- 1st token id on mainnet
193
+ * (1 * 10 ** 1 + 1) * 100 + 1
194
+ * 42987654321010
195
+ * ^ ^ ^
196
+ * | | +- 10-digit chain id
197
+ * | +-- chain id = 9876543210 (hypothetical chainid)
198
+ * +-- 42nd token id on this chain
199
+ * (42 * 10 ** 10 + 9876543210) * 100 + 10
200
+ * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
201
+ */
202
+ function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
203
+ id =
204
+ (idIndex * _chainIdMultiplier + _chainIdInt) *
205
+ 100 +
206
+ _chainIdDigits;
207
+ }
208
+
209
+ function getNextTokenId() external view returns (uint256) {
210
+ return calculateTokenId(_idNext);
211
+ }
212
+
213
+ function _getNextTokenId() private returns (uint256 id) {
214
+ id = calculateTokenId(_idNext);
215
+ _idNext++;
216
+ }
217
+ }
@@ -0,0 +1,124 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {VersionPart} from "../type/Version.sol";
9
+ import {Timestamp} from "../type/Timestamp.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+
12
+ interface IRegistry is IERC165 {
13
+
14
+ event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
15
+ event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
16
+
17
+ // registerService()
18
+ error ErrorRegistryCallerNotReleaseManager();
19
+ error ErrorRegistryDomainZero(address service);
20
+ error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
21
+
22
+ // register()
23
+ error ErrorRegistryCallerNotRegistryService();
24
+
25
+ // registerWithCustomTypes()
26
+ error ErrorRegistryCoreTypeRegistration();
27
+
28
+ // _register()
29
+ error ErrorRegistryParentAddressZero();
30
+ error ErrorRegistryTypesCombinationInvalid(ObjectType objectType, ObjectType parentType);
31
+ error ErrorRegistryContractAlreadyRegistered(address objectAddress);
32
+
33
+ struct ObjectInfo {
34
+ NftId nftId;
35
+ NftId parentNftId;
36
+ ObjectType objectType;
37
+ bool isInterceptor;
38
+ address objectAddress;
39
+ address initialOwner;
40
+ bytes data;
41
+ }
42
+
43
+
44
+ struct ReleaseInfo {
45
+ VersionPart version;
46
+ bytes32 salt;
47
+ address[] addresses;
48
+ string[] names;
49
+ RoleId[][] serviceRoles;
50
+ string[][] serviceRoleNames;
51
+ RoleId[][] functionRoles;
52
+ string[][] functionRoleNames;
53
+ bytes4[][][] selectors;
54
+ ObjectType[] domains;
55
+ Timestamp activatedAt;
56
+ Timestamp disabledAt;
57
+ }
58
+
59
+ function registerService(
60
+ ObjectInfo memory serviceInfo,
61
+ VersionPart serviceVersion,
62
+ ObjectType serviceDomain
63
+ ) external returns(NftId nftId);
64
+
65
+ function register(ObjectInfo memory info) external returns (NftId nftId);
66
+
67
+ function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
68
+
69
+ function getInitialVersion() external view returns (VersionPart);
70
+
71
+ function getNextVersion() external view returns (VersionPart);
72
+
73
+ function getLatestVersion() external view returns (VersionPart);
74
+
75
+ function getReleaseInfo(VersionPart version) external view returns (ReleaseInfo memory);
76
+
77
+ function getObjectCount() external view returns (uint256);
78
+
79
+ function getNftId(address objectAddress) external view returns (NftId nftId);
80
+
81
+ function ownerOf(NftId nftId) external view returns (address);
82
+
83
+ function ownerOf(address contractAddress) external view returns (address);
84
+
85
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
86
+
87
+ function getObjectInfo(address object) external view returns (ObjectInfo memory info);
88
+
89
+ function isRegistered(NftId nftId) external view returns (bool);
90
+
91
+ function isRegistered(address contractAddress) external view returns (bool);
92
+
93
+ function isRegisteredService(address contractAddress) external view returns (bool);
94
+
95
+ function isRegisteredComponent(address object) external view returns (bool);
96
+
97
+ function isActiveRelease(VersionPart version) external view returns (bool);
98
+
99
+ function getServiceAddress(
100
+ ObjectType serviceDomain,
101
+ VersionPart releaseVersion
102
+ ) external view returns (address serviceAddress);
103
+
104
+ function getProtocolNftId() external view returns (NftId protocolNftId);
105
+
106
+ function getNftId() external view returns (NftId nftId);
107
+
108
+ function getOwner() external view returns (address);
109
+
110
+ // TODO refactor the address getters below to contract getters
111
+ function getChainNftAddress() external view returns (address);
112
+
113
+ function getReleaseManagerAddress() external view returns (address);
114
+
115
+ function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
116
+
117
+ function getStakingAddress() external view returns (address);
118
+
119
+ function getTokenRegistryAddress() external view returns (address);
120
+
121
+ function getRegistryAdminAddress() external view returns (address);
122
+
123
+ function getAuthority() external view returns (address);
124
+ }
@@ -0,0 +1,69 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RoleId} from "../type/RoleId.sol";
9
+ import {IService} from "../shared/IService.sol";
10
+ import {IRegistry} from "./IRegistry.sol";
11
+
12
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
+ import {IComponent} from "../shared/IComponent.sol";
14
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
15
+
16
+
17
+ interface IRegistryService is
18
+ IService
19
+ {
20
+ error ErrorRegistryServiceNotRegistryOwner();
21
+
22
+ error ErrorRegistryServiceNotService(address notService);
23
+ error ErrorRegistryServiceNotInstance(address notInstance);
24
+ error ErrorRegistryServiceNotComponent(address notComponent);
25
+ error ErrorRegistryServiceNotProduct(address notProduct);
26
+ error ErrorRegistryServiceNotPool(address notPool);
27
+ error ErrorRegistryServiceNotDistribution(address notDistribution);
28
+
29
+ error ErrorRegistryServiceRegisterableAddressInvalid(IRegisterable registerable, address found);
30
+ error ErrorRegistryServiceRegisterableTypeInvalid(IRegisterable registerable, ObjectType expected, ObjectType found);
31
+ error ErrorRegistryServiceRegisterableOwnerInvalid(IRegisterable registerable, address expected, address found);
32
+ error ErrorRegistryServiceRegisterableOwnerZero(IRegisterable registerable);
33
+ error ErrorRegistryServiceRegisterableOwnerRegistered(IRegisterable registerable, address owner);
34
+ error ErrorRegistryServiceRegisterableSelfRegistration(IRegisterable registerable);
35
+
36
+ error ErrorRegistryServiceObjectAddressNotZero(ObjectType objectType);
37
+ error ErrorRegistryServiceObjectTypeInvalid(ObjectType expected, ObjectType found);
38
+ error ErrorRegistryServiceObjectOwnerRegistered(ObjectType objectType, address owner);
39
+ error ErrorRegistryServiceObjectOwnerZero(ObjectType objectType);
40
+
41
+ error ErrorRegistryServiceInvalidInitialOwner(address initialOwner);
42
+ error ErrorRegistryServiceInvalidAddress(address registerableAddress);
43
+
44
+ function registerStake(IRegistry.ObjectInfo memory info)
45
+ external returns(NftId nftId);
46
+
47
+ function registerInstance(IRegisterable instance, address owner)
48
+ external returns(IRegistry.ObjectInfo memory info);
49
+
50
+ function registerComponent(IComponent component, ObjectType objectType, address owner)
51
+ external returns(IRegistry.ObjectInfo memory info);
52
+
53
+ function registerProduct(IComponent product, address owner)
54
+ external returns(IRegistry.ObjectInfo memory info);
55
+
56
+ function registerPool(IComponent pool, address owner)
57
+ external returns(IRegistry.ObjectInfo memory info);
58
+
59
+ function registerDistribution(IComponent distribution, address owner)
60
+ external returns(IRegistry.ObjectInfo memory info);
61
+
62
+ function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
63
+
64
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
65
+
66
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
67
+
68
+ }
69
+
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
5
+ import {ObjectType} from "../../contracts/type/ObjectType.sol";
6
+ import {VersionPart} from "../../contracts/type/Version.sol";
7
+
8
+ interface IServiceAuthorization {
9
+
10
+ /// @dev Returns the commit hash representing the deployed release
11
+ function getCommitHash()
12
+ external
13
+ view
14
+ returns(string memory commitHash);
15
+
16
+ /// @dev Returns the release (VersionPart) for which the service authorizations are defined by this contract.
17
+ function getRelease()
18
+ external
19
+ view
20
+ returns(VersionPart release, uint domainsCount);
21
+
22
+ /// @dev Returns the service domain for the provided index.
23
+ function getServiceDomain(uint idx) external view returns(ObjectType serviceDomain);
24
+
25
+ /// @dev Returns the full list of service domains for this release.
26
+ /// Services need to be registered for the release in revers order of this list.
27
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains);
28
+
29
+ /// @dev Returns the expected service address for the provided domain.
30
+ function getServiceAddress(ObjectType serviceDomain) external view returns(address service);
31
+
32
+ /// @dev Given the service domain this function returns the list of other service domains that are authorized to access this service.
33
+ function getAuthorizedDomains(ObjectType serviceDomain) external view returns(ObjectType[] memory authorizatedDomains);
34
+
35
+ /// @dev For the given service domain and authorized domain the function returns the list of authorized functions
36
+ function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccessAdmin.Function[] memory authorizatedFunctions);
37
+ }
38
+
@@ -0,0 +1,7 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ interface ITransferInterceptor {
5
+ function nftMint(address to, uint256 tokenId) external;
6
+ function nftTransferFrom(address from, address to, uint256 tokenId) external;
7
+ }