@etherisc/gif-next 0.0.2-e4b632c-016 → 0.0.2-e4d7e1c-013

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 (751) hide show
  1. package/README.md +205 -21
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +949 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1037 -329
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +741 -139
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +561 -2778
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1997 -634
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +789 -216
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +413 -73
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +31 -8
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +404 -351
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +372 -173
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +931 -154
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +409 -209
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +1259 -258
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +360 -323
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +384 -115
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Component.sol/Component.json} +374 -150
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +319 -250
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +101 -20
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +61 -22
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +162 -15
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +161 -154
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +98 -28
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +178 -55
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +177 -163
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2757 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  280. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +3185 -0
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  296. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  306. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  360. package/contracts/accounting/AccountingService.sol +274 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +47 -0
  363. package/contracts/authorization/AccessAdmin.sol +780 -0
  364. package/contracts/authorization/AccessAdminLib.sol +396 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +169 -0
  367. package/contracts/authorization/IAccess.sol +67 -0
  368. package/contracts/authorization/IAccessAdmin.sol +144 -0
  369. package/contracts/authorization/IAuthorization.sol +26 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  372. package/contracts/distribution/BasicDistribution.sol +141 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  374. package/contracts/distribution/Distribution.sol +247 -0
  375. package/contracts/distribution/DistributionService.sol +448 -0
  376. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  377. package/contracts/distribution/IDistributionComponent.sol +45 -0
  378. package/contracts/distribution/IDistributionService.sol +115 -0
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BundleSet.sol +130 -0
  393. package/contracts/instance/IInstance.sol +131 -19
  394. package/contracts/instance/IInstanceService.sol +104 -17
  395. package/contracts/instance/Instance.sol +246 -341
  396. package/contracts/instance/InstanceAdmin.sol +383 -0
  397. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  398. package/contracts/instance/InstanceReader.sol +531 -189
  399. package/contracts/instance/InstanceService.sol +451 -89
  400. package/contracts/instance/InstanceServiceManager.sol +14 -31
  401. package/contracts/instance/InstanceStore.sol +298 -0
  402. package/contracts/instance/RiskSet.sol +126 -0
  403. package/contracts/instance/base/BalanceStore.sol +121 -0
  404. package/contracts/instance/base/Cloneable.sol +28 -0
  405. package/contracts/instance/base/ObjectCounter.sol +20 -0
  406. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  407. package/contracts/instance/base/ObjectSet.sol +77 -0
  408. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  409. package/contracts/instance/module/IBundle.sol +10 -8
  410. package/contracts/instance/module/IComponents.sol +62 -0
  411. package/contracts/instance/module/IDistribution.sol +25 -10
  412. package/contracts/instance/module/IPolicy.sol +81 -21
  413. package/contracts/instance/module/IRisk.sol +6 -1
  414. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  415. package/contracts/oracle/BasicOracle.sol +45 -0
  416. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  417. package/contracts/oracle/IOracle.sol +41 -0
  418. package/contracts/oracle/IOracleComponent.sol +33 -0
  419. package/contracts/oracle/IOracleService.sol +66 -0
  420. package/contracts/oracle/Oracle.sol +154 -0
  421. package/contracts/oracle/OracleService.sol +310 -0
  422. package/contracts/oracle/OracleServiceManager.sol +39 -0
  423. package/contracts/pool/BasicPool.sol +162 -0
  424. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  425. package/contracts/pool/BundleService.sol +386 -0
  426. package/contracts/pool/BundleServiceManager.sol +39 -0
  427. package/contracts/pool/IBundleService.sol +116 -0
  428. package/contracts/pool/IPoolComponent.sol +62 -0
  429. package/contracts/pool/IPoolService.sol +170 -0
  430. package/contracts/pool/Pool.sol +333 -0
  431. package/contracts/pool/PoolLib.sol +341 -0
  432. package/contracts/pool/PoolService.sol +614 -0
  433. package/contracts/pool/PoolServiceManager.sol +39 -0
  434. package/contracts/product/ApplicationService.sol +327 -0
  435. package/contracts/product/ApplicationServiceManager.sol +38 -0
  436. package/contracts/product/BasicProduct.sol +49 -0
  437. package/contracts/product/BasicProductAuthorization.sol +63 -0
  438. package/contracts/product/ClaimService.sol +630 -0
  439. package/contracts/product/ClaimServiceManager.sol +38 -0
  440. package/contracts/product/IApplicationService.sol +88 -0
  441. package/contracts/product/IClaimService.sol +136 -0
  442. package/contracts/product/IPolicyService.sol +102 -0
  443. package/contracts/product/IPricingService.sol +40 -0
  444. package/contracts/product/IProductComponent.sol +62 -0
  445. package/contracts/product/IRiskService.sol +48 -0
  446. package/contracts/product/PolicyService.sol +645 -0
  447. package/contracts/product/PolicyServiceLib.sol +139 -0
  448. package/contracts/product/PolicyServiceManager.sol +39 -0
  449. package/contracts/product/PricingService.sol +306 -0
  450. package/contracts/product/PricingServiceManager.sol +39 -0
  451. package/contracts/product/Product.sol +493 -0
  452. package/contracts/product/RiskService.sol +190 -0
  453. package/contracts/product/RiskServiceManager.sol +39 -0
  454. package/contracts/registry/ChainNft.sol +82 -35
  455. package/contracts/registry/IRegistry.sol +134 -20
  456. package/contracts/registry/IRegistryService.sol +44 -17
  457. package/contracts/registry/IRelease.sol +29 -0
  458. package/contracts/registry/ITransferInterceptor.sol +1 -1
  459. package/contracts/registry/Registry.sol +580 -267
  460. package/contracts/registry/RegistryAdmin.sol +191 -0
  461. package/contracts/registry/RegistryAuthorization.sol +336 -0
  462. package/contracts/registry/RegistryService.sol +123 -326
  463. package/contracts/registry/RegistryServiceManager.sol +27 -38
  464. package/contracts/registry/ReleaseAdmin.sol +195 -0
  465. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  466. package/contracts/registry/ReleaseRegistry.sol +525 -0
  467. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  468. package/contracts/registry/TokenRegistry.sol +317 -0
  469. package/contracts/shared/Component.sol +214 -0
  470. package/contracts/shared/ComponentService.sol +687 -0
  471. package/contracts/shared/ComponentServiceManager.sol +38 -0
  472. package/contracts/shared/ContractLib.sol +312 -0
  473. package/contracts/shared/IComponent.sol +58 -0
  474. package/contracts/shared/IComponentService.sol +111 -0
  475. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  476. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  477. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  478. package/contracts/shared/INftOwnable.sol +17 -12
  479. package/contracts/shared/IPolicyHolder.sol +35 -0
  480. package/contracts/shared/IRegisterable.sol +24 -5
  481. package/contracts/shared/IRegistryLinked.sol +11 -0
  482. package/contracts/shared/IService.sol +13 -5
  483. package/contracts/shared/InitializableERC165.sol +35 -0
  484. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  485. package/contracts/shared/KeyValueStore.sol +131 -0
  486. package/contracts/shared/Lifecycle.sol +88 -0
  487. package/contracts/shared/NftIdSet.sol +65 -0
  488. package/contracts/shared/NftOwnable.sol +77 -84
  489. package/contracts/shared/PolicyHolder.sol +63 -0
  490. package/contracts/shared/Registerable.sol +54 -37
  491. package/contracts/shared/RegistryLinked.sol +38 -0
  492. package/contracts/shared/Service.sol +46 -33
  493. package/contracts/shared/TokenHandler.sol +327 -12
  494. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  495. package/contracts/staking/IStaking.sol +367 -0
  496. package/contracts/staking/IStakingService.sol +127 -0
  497. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  498. package/contracts/staking/Staking.sol +798 -0
  499. package/contracts/staking/StakingLib.sol +195 -0
  500. package/contracts/staking/StakingManager.sol +53 -0
  501. package/contracts/staking/StakingReader.sol +171 -0
  502. package/contracts/staking/StakingService.sol +321 -0
  503. package/contracts/staking/StakingServiceManager.sol +46 -0
  504. package/contracts/staking/StakingStore.sol +1368 -0
  505. package/contracts/staking/TargetHandler.sol +132 -0
  506. package/contracts/staking/TargetManagerLib.sol +234 -0
  507. package/contracts/{types → type}/AddressSet.sol +1 -1
  508. package/contracts/type/Amount.sol +154 -0
  509. package/contracts/{types → type}/Blocknumber.sol +36 -12
  510. package/contracts/type/ChainId.sol +101 -0
  511. package/contracts/type/ClaimId.sol +80 -0
  512. package/contracts/{types → type}/DistributorType.sol +2 -2
  513. package/contracts/type/Fee.sol +66 -0
  514. package/contracts/{types → type}/Key32.sol +2 -2
  515. package/contracts/type/Key32Set.sol +62 -0
  516. package/contracts/{types → type}/NftId.sol +28 -15
  517. package/contracts/type/NftIdSet.sol +62 -0
  518. package/contracts/type/ObjectType.sol +307 -0
  519. package/contracts/type/PayoutId.sol +82 -0
  520. package/contracts/{types → type}/Referral.sol +6 -1
  521. package/contracts/type/RequestId.sol +75 -0
  522. package/contracts/type/RiskId.sol +75 -0
  523. package/contracts/type/RoleId.sol +180 -0
  524. package/contracts/type/Seconds.sol +120 -0
  525. package/contracts/type/Selector.sol +107 -0
  526. package/contracts/{types → type}/StateId.sol +48 -4
  527. package/contracts/type/String.sol +65 -0
  528. package/contracts/{types → type}/Timestamp.sol +36 -20
  529. package/contracts/type/UFixed.sol +263 -0
  530. package/contracts/{types → type}/Version.sol +61 -6
  531. package/contracts/{shared → upgradeability}/IVersionable.sol +7 -47
  532. package/contracts/upgradeability/ProxyManager.sol +246 -0
  533. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  534. package/contracts/upgradeability/Versionable.sol +62 -0
  535. package/package.json +12 -8
  536. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  537. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  538. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  539. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  540. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  542. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  544. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  545. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  546. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  547. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  548. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  549. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  550. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  551. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  552. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  554. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  556. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  558. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  560. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  562. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  564. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  566. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  568. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  570. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  572. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  575. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  577. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  578. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  579. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  580. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  581. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  582. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  583. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  584. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  585. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  586. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  587. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  588. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  589. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  591. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  592. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  593. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  594. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  595. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  596. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  598. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  599. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  600. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  601. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  602. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  603. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  604. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  605. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  606. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  607. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  608. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  609. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  610. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  613. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -604
  615. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  617. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  619. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  620. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  622. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  623. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  624. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  625. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  626. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  627. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  628. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  629. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  630. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  631. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  632. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  633. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  634. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  635. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  636. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  637. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  638. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  639. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  640. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  641. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  642. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  643. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  644. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  645. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  646. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  647. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  648. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  649. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  650. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  651. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  652. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  653. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  654. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  656. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  658. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  660. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  662. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  664. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  666. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  667. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  668. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  670. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  672. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  674. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  676. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  678. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  680. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  682. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  684. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  686. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  688. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  690. package/contracts/components/BaseComponent.sol +0 -86
  691. package/contracts/components/Distribution.sol +0 -166
  692. package/contracts/components/IBaseComponent.sol +0 -24
  693. package/contracts/components/IDistributionComponent.sol +0 -43
  694. package/contracts/components/IPoolComponent.sol +0 -62
  695. package/contracts/components/IProductComponent.sol +0 -35
  696. package/contracts/components/Pool.sol +0 -259
  697. package/contracts/components/Product.sol +0 -297
  698. package/contracts/experiment/cloning/Cloner.sol +0 -47
  699. package/contracts/experiment/errors/Require.sol +0 -38
  700. package/contracts/experiment/errors/Revert.sol +0 -44
  701. package/contracts/experiment/inheritance/A.sol +0 -53
  702. package/contracts/experiment/inheritance/B.sol +0 -28
  703. package/contracts/experiment/inheritance/C.sol +0 -34
  704. package/contracts/experiment/inheritance/IA.sol +0 -13
  705. package/contracts/experiment/inheritance/IB.sol +0 -10
  706. package/contracts/experiment/inheritance/IC.sol +0 -12
  707. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  708. package/contracts/experiment/statemachine/ISM.sol +0 -25
  709. package/contracts/experiment/statemachine/SM.sol +0 -57
  710. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  711. package/contracts/experiment/types/TypeA.sol +0 -47
  712. package/contracts/experiment/types/TypeB.sol +0 -29
  713. package/contracts/instance/AccessManagedSimple.sol +0 -122
  714. package/contracts/instance/AccessManagerSimple.sol +0 -692
  715. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  716. package/contracts/instance/InstanceAccessManager.sol +0 -288
  717. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  718. package/contracts/instance/base/IInstanceBase.sol +0 -23
  719. package/contracts/instance/base/KeyValueStore.sol +0 -172
  720. package/contracts/instance/base/Lifecycle.sol +0 -100
  721. package/contracts/instance/module/IAccess.sol +0 -38
  722. package/contracts/instance/module/ISetup.sol +0 -43
  723. package/contracts/instance/module/ITreasury.sol +0 -23
  724. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  725. package/contracts/instance/service/DistributionService.sol +0 -70
  726. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  727. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  728. package/contracts/instance/service/IDistributionService.sol +0 -12
  729. package/contracts/instance/service/IPoolService.sol +0 -37
  730. package/contracts/instance/service/IProductService.sol +0 -107
  731. package/contracts/shared/ContractDeployerLib.sol +0 -72
  732. package/contracts/shared/ERC165.sol +0 -21
  733. package/contracts/shared/ProxyManager.sol +0 -94
  734. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  735. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  736. package/contracts/shared/Versionable.sol +0 -147
  737. package/contracts/test/TestFee.sol +0 -25
  738. package/contracts/test/TestRegisterable.sol +0 -18
  739. package/contracts/test/TestRoleId.sol +0 -14
  740. package/contracts/test/TestService.sol +0 -24
  741. package/contracts/test/TestToken.sol +0 -26
  742. package/contracts/test/TestVersion.sol +0 -44
  743. package/contracts/test/TestVersionable.sol +0 -17
  744. package/contracts/types/ChainId.sol +0 -38
  745. package/contracts/types/Fee.sol +0 -56
  746. package/contracts/types/NftIdSet.sol +0 -60
  747. package/contracts/types/NumberId.sol +0 -52
  748. package/contracts/types/ObjectType.sol +0 -152
  749. package/contracts/types/RiskId.sol +0 -43
  750. package/contracts/types/RoleId.sol +0 -82
  751. package/contracts/types/UFixed.sol +0 -325
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
+
8
+ contract ComponentServiceManager is ProxyManager {
9
+
10
+ ComponentService private _componentService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address authority,
15
+ address registry,
16
+ bytes32 salt
17
+ )
18
+ {
19
+ ComponentService svc = new ComponentService();
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _componentService = ComponentService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getComponentService()
32
+ external
33
+ view
34
+ returns (ComponentService)
35
+ {
36
+ return _componentService;
37
+ }
38
+ }
@@ -0,0 +1,312 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
5
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
7
+
8
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
9
+ import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {IService} from "../shared/IService.sol";
11
+
12
+ import {ChainId} from "../type/ChainId.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {ObjectType, INSTANCE, PRODUCT, DISTRIBUTION, ORACLE, POOL} from "../type/ObjectType.sol";
15
+ import {VersionPart} from "../type/Version.sol";
16
+
17
+ interface ITargetHelper {
18
+ function isTargetLocked(address target) external view returns (bool);
19
+ }
20
+
21
+ interface IInstanceAdminHelper {
22
+ function getInstanceAdmin() external view returns (ITargetHelper);
23
+ }
24
+
25
+ interface ITokenRegistryHelper {
26
+ function isActive(ChainId chainId, address token, VersionPart release) external view returns (bool);
27
+ }
28
+
29
+ library ContractLib {
30
+
31
+ error ErrorContractLibCallerNotRegistered(address target);
32
+ error ErrorContractLibCallerNotComponent(NftId componentNftId, ObjectType objectType);
33
+ error ErrorContractLibParentNotInstance(NftId componentNftId, NftId parentNftId);
34
+ error ErrorContractLibParentNotProduct(NftId componentNftId, NftId parentNftId);
35
+ error ErrorContractLibComponentTypeMismatch(NftId componentNftId, ObjectType expectedType, ObjectType actualType);
36
+ error ErrorContractLibComponentInactive(NftId componentNftId);
37
+
38
+
39
+ function getInfoAndInstance(
40
+ IRegistry registry,
41
+ NftId componentNftId,
42
+ bool onlyActive
43
+ )
44
+ external
45
+ view
46
+ returns (
47
+ IRegistry.ObjectInfo memory info,
48
+ address instance
49
+ )
50
+ {
51
+ info = registry.getObjectInfo(componentNftId);
52
+ return _getAndVerifyComponentAndInstance(registry, info, info.objectType, onlyActive);
53
+ }
54
+
55
+
56
+ function getAndVerifyAnyComponent(
57
+ IRegistry registry,
58
+ address caller,
59
+ bool onlyActive
60
+ )
61
+ external
62
+ view
63
+ returns (
64
+ IRegistry.ObjectInfo memory callerInfo,
65
+ address instance
66
+ )
67
+ {
68
+ // check caller is component
69
+ callerInfo = _getAndVerifyObjectInfo(registry, caller);
70
+ if(!(callerInfo.objectType == PRODUCT()
71
+ || callerInfo.objectType == POOL()
72
+ || callerInfo.objectType == DISTRIBUTION()
73
+ || callerInfo.objectType == ORACLE())
74
+ ) {
75
+ revert ErrorContractLibCallerNotComponent(
76
+ callerInfo.nftId,
77
+ callerInfo.objectType);
78
+ }
79
+
80
+ return _getAndVerifyComponentAndInstance(registry, callerInfo, callerInfo.objectType, onlyActive);
81
+ }
82
+
83
+
84
+ function getAndVerifyComponent(
85
+ IRegistry registry,
86
+ address caller,
87
+ ObjectType expectedType,
88
+ bool onlyActive
89
+ )
90
+ external
91
+ view
92
+ returns (
93
+ IRegistry.ObjectInfo memory info,
94
+ address instance
95
+ )
96
+ {
97
+ info = _getAndVerifyObjectInfo(registry, caller);
98
+ return _getAndVerifyComponentAndInstance(registry, info, expectedType, onlyActive);
99
+ }
100
+
101
+
102
+ function getInstanceForComponent(
103
+ IRegistry registry,
104
+ NftId componentNftId
105
+ )
106
+ public
107
+ view
108
+ returns (address instance)
109
+ {
110
+ NftId productNftId = registry.getParentNftId(componentNftId);
111
+ NftId instanceNftId = registry.getParentNftId(productNftId);
112
+ return registry.getObjectInfo(instanceNftId).objectAddress;
113
+ }
114
+
115
+
116
+ function isActiveToken(
117
+ address tokenRegistryAddress,
118
+ ChainId chainId,
119
+ address token,
120
+ VersionPart release
121
+ )
122
+ external
123
+ view
124
+ returns (bool)
125
+ {
126
+ return ITokenRegistryHelper(
127
+ tokenRegistryAddress).isActive(
128
+ chainId, token, release);
129
+ }
130
+
131
+
132
+ function isPolicyHolder(address target) external view returns (bool) {
133
+ return ERC165Checker.supportsInterface(target, type(IPolicyHolder).interfaceId);
134
+ }
135
+
136
+
137
+ function isAuthority(address authority) public view returns (bool) {
138
+ if (!isContract(authority)) {
139
+ return false;
140
+ }
141
+
142
+ return supportsInterface(authority, type(IAccessManager).interfaceId);
143
+ }
144
+
145
+
146
+ function isAccessManaged(address target)
147
+ public
148
+ view
149
+ returns (bool)
150
+ {
151
+ if (!isContract(target)) {
152
+ return false;
153
+ }
154
+
155
+ (bool success, ) = target.staticcall(
156
+ abi.encodeWithSelector(
157
+ IAccessManaged.authority.selector));
158
+
159
+ return success;
160
+ }
161
+
162
+
163
+ function isRegistered(address registry, address caller, ObjectType expectedType) public view returns (bool) {
164
+ NftId nftId = IRegistry(registry).getNftIdForAddress(caller);
165
+ if (nftId.eqz()) {
166
+ return false;
167
+ }
168
+
169
+ return IRegistry(registry).getObjectInfo(nftId).objectType == expectedType;
170
+ }
171
+
172
+
173
+ function isService(address service) public view returns (bool) {
174
+ if (!isContract(service)) {
175
+ return false;
176
+ }
177
+
178
+ return supportsInterface(service, type(IService).interfaceId);
179
+ }
180
+
181
+
182
+ function isRegistry(address registry) public view returns (bool) {
183
+ if (!isContract(registry)) {
184
+ return false;
185
+ }
186
+
187
+ return supportsInterface(registry, type(IRegistry).interfaceId);
188
+ }
189
+
190
+
191
+ function isContract(address target) public view returns (bool) {
192
+ if (target == address(0)) {
193
+ return false;
194
+ }
195
+
196
+ uint256 size;
197
+ assembly {
198
+ size := extcodesize(target)
199
+ }
200
+ return size > 0;
201
+ }
202
+
203
+ function supportsInterface(address target, bytes4 interfaceId) public view returns (bool) {
204
+ return ERC165Checker.supportsInterface(target, interfaceId);
205
+ }
206
+
207
+
208
+ function _getAndVerifyComponentAndInstance(
209
+ IRegistry registry,
210
+ IRegistry.ObjectInfo memory info,
211
+ ObjectType expectedType,
212
+ bool onlyActive
213
+ )
214
+ internal
215
+ view
216
+ returns (
217
+ IRegistry.ObjectInfo memory,
218
+ address instance
219
+ )
220
+ {
221
+ if(info.objectType != expectedType) {
222
+ revert ErrorContractLibComponentTypeMismatch(
223
+ info.nftId,
224
+ expectedType,
225
+ info.objectType);
226
+ }
227
+
228
+ // get instance and check component is active
229
+ instance = getAndVerifyInstance(registry, info);
230
+ _checkComponentActive(instance, info.objectAddress, info.nftId, onlyActive);
231
+
232
+ return (
233
+ info,
234
+ instance
235
+ );
236
+ }
237
+
238
+
239
+ function _checkComponentActive(
240
+ address instance,
241
+ address target,
242
+ NftId componentNftId,
243
+ bool onlyActive
244
+ )
245
+ internal
246
+ view
247
+ {
248
+ if (onlyActive) {
249
+ if (IInstanceAdminHelper(
250
+ instance).getInstanceAdmin().isTargetLocked(
251
+ target)
252
+ ) {
253
+ revert ErrorContractLibComponentInactive(componentNftId);
254
+ }
255
+ }
256
+ }
257
+
258
+
259
+ /// @dev Given an object info the function returns the instance address.
260
+ /// The info may represent a product or any other component.
261
+ /// If the parent of the provided info is not registered with the correct type, the function reverts.
262
+ function getAndVerifyInstance(
263
+ IRegistry registry,
264
+ IRegistry.ObjectInfo memory info
265
+ )
266
+ public
267
+ view
268
+ returns (address instance)
269
+ {
270
+ // get instance for product case
271
+ if (info.objectType == PRODUCT()) {
272
+ // verify that parent of product is registered instance
273
+ IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(info.parentNftId);
274
+ if (instanceInfo.objectType != INSTANCE()) {
275
+ revert ErrorContractLibParentNotInstance(
276
+ info.nftId,
277
+ info.parentNftId);
278
+ }
279
+
280
+ // we have verified that parent object is a registerd instance -> we return the instance address
281
+ return instanceInfo.objectAddress;
282
+ }
283
+
284
+ // not product: verify parent is registered product
285
+ info = registry.getObjectInfo(info.parentNftId);
286
+ if (info.objectType != PRODUCT()) {
287
+ revert ErrorContractLibParentNotProduct(
288
+ info.nftId,
289
+ info.parentNftId);
290
+ }
291
+
292
+ // we have verified that parent is registerd product -> we can rely on registry that its parent is an instance
293
+ return registry.getObjectAddress(info.parentNftId);
294
+ }
295
+
296
+
297
+ function _getAndVerifyObjectInfo(
298
+ IRegistry registry,
299
+ address caller
300
+ )
301
+ internal
302
+ view
303
+ returns (IRegistry.ObjectInfo memory info)
304
+ {
305
+ NftId componentNftId = registry.getNftIdForAddress(caller);
306
+ if (componentNftId.eqz()) {
307
+ revert ErrorContractLibCallerNotRegistered(caller);
308
+ }
309
+
310
+ info = registry.getObjectInfo(componentNftId);
311
+ }
312
+ }
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IRegisterable} from "../shared/IRegisterable.sol";
9
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
10
+ import {TokenHandler} from "../shared/TokenHandler.sol";
11
+
12
+ /// @dev component base class
13
+ /// component examples are staking, product, distribution, pool and oracle
14
+ interface IComponent is
15
+ IRegisterable,
16
+ ITransferInterceptor
17
+ {
18
+ error ErrorComponentProductNftIdZero();
19
+ error ErrorComponentProductNftIdNonzero();
20
+ error ErrorComponentNameLengthZero();
21
+
22
+ error ErrorComponentNotChainNft(address caller);
23
+
24
+ error ErrorComponentWalletAddressZero();
25
+ error ErrorComponentWalletAddressIsSameAsCurrent();
26
+ error ErrorComponentWalletNotComponent();
27
+
28
+ event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
29
+ event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
30
+ event LogComponentTokenHandlerApproved(address tokenHandler, address token, Amount limit, bool isMaxAmount);
31
+
32
+ /// @dev returns the name of this component
33
+ /// to successfully register the component with an instance the name MUST be unique in the linked instance
34
+ function getName() external view returns (string memory name);
35
+
36
+ /// @dev defines which ERC20 token is used by this component
37
+ function getToken() external view returns (IERC20Metadata token);
38
+
39
+ /// @dev returns token handler for this component
40
+ function getTokenHandler() external view returns (TokenHandler tokenHandler);
41
+
42
+ /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
43
+ /// the default address is the token handler address
44
+ function getWallet() external view returns (address walletAddress);
45
+
46
+ /// @dev returns true iff this compoent intercepts nft minting and transfers for objects registered by this component
47
+ function isNftInterceptor() external view returns(bool isInterceptor);
48
+
49
+ /// @dev returns true iff this component is registered with the registry
50
+ function isRegistered() external view returns (bool);
51
+
52
+ /// @dev returns the component infos for this component
53
+ /// for a non registered component the function returns getInitialComponentInfo()
54
+ function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
55
+
56
+ /// @dev returns the iniital component infos for this component
57
+ function getInitialComponentInfo() external view returns (IComponents.ComponentInfo memory info);
58
+ }
@@ -0,0 +1,111 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {Fee} from "../type/Fee.sol";
8
+ import {IService} from "../shared/IService.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {UFixed} from "../type/UFixed.sol";
12
+ import {VersionPart} from "../type/Version.sol";
13
+
14
+ /// @dev component base class
15
+ /// component examples are staking, product, distribution, pool and oracle
16
+ interface IComponentService is
17
+ IService
18
+ {
19
+ // registerProduct
20
+ error ErrorComponentServiceCallerNotInstance(address caller);
21
+ error ErrorComponentServiceNotProduct(address product);
22
+ error ErrorComponentServiceTokenInvalid(address token);
23
+
24
+ // registerComponent
25
+ error ErrorComponentServiceCallerNotProduct(address caller);
26
+ error ErrorComponentServiceNotComponent(address component);
27
+
28
+ error ErrorComponentServiceNotInstanceLinkedComponent(address component);
29
+ error ErrorComponentServiceComponentTypeNotSupported(address component, ObjectType invalid);
30
+ error ErrorComponentServiceComponentParentInvalid(address component, NftId required, NftId actual);
31
+ error ErrorComponentServiceComponentReleaseMismatch(address component, VersionPart serviceRelease, VersionPart componentRelease);
32
+ error ErrorComponentServiceComponentAlreadyRegistered(address component);
33
+
34
+ error ErrorProductServiceNoDistributionExpected(NftId productNftId);
35
+ error ErrorProductServiceDistributionAlreadyRegistered(NftId productNftId, NftId distributionNftId);
36
+ error ErrorProductServiceNoOraclesExpected(NftId productNftId);
37
+ error ErrorProductServiceOraclesAlreadyRegistered(NftId productNftId, uint8 expectedOracles);
38
+ error ErrorProductServicePoolAlreadyRegistered(NftId productNftId, NftId poolNftId);
39
+
40
+ error ErrorComponentServiceNewWalletAddressZero();
41
+ error ErrorComponentServiceWalletAddressZero();
42
+ error ErrorComponentServiceWalletAddressIsSameAsCurrent();
43
+
44
+ error ErrorComponentServiceWithdrawAmountIsZero();
45
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
46
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
47
+
48
+ event LogComponentServiceComponentLocked(address component, bool locked);
49
+ event LogComponentServiceRegistered(NftId instanceNftId, NftId componentNftId, ObjectType componentType, address component, address token, address initialOwner);
50
+ event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
51
+ event LogComponentServiceWalletTokensTransferred(NftId componentNftId, address currentWallet, address newWallet, uint256 currentBalance);
52
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
53
+ event LogComponentServiceProductFeesUpdated(NftId productNftId);
54
+ event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
55
+ event LogComponentServicePoolFeesUpdated(NftId poolNftId);
56
+ event LogComponentServiceUpdateFee(
57
+ NftId nftId,
58
+ string feeName,
59
+ UFixed previousFractionalFee,
60
+ Amount previousFixedFee,
61
+ UFixed newFractionalFee,
62
+ Amount newFixedFee
63
+ );
64
+
65
+ //-------- component ----------------------------------------------------//
66
+
67
+ /// @dev Approves the callers token handler to spend up to the specified amount of tokens.
68
+ /// Reverts if the component's token handler wallet is not the token handler itself.
69
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external;
70
+
71
+ /// @dev Sets the components associated wallet address.
72
+ /// To set the wallet to the token handler contract, use address(0) as the new wallet adress.
73
+ function setWallet(address newWallet) external;
74
+
75
+ /// @dev Locks/Unlocks the calling component.
76
+ function setLocked(bool locked) external;
77
+
78
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
79
+ /// @param withdrawAmount the amount to withdraw
80
+ /// @return withdrawnAmount the amount that was actually withdrawn
81
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
82
+
83
+ /// @dev Registers the provided component with the product (sender)
84
+ function registerComponent(address component) external returns (NftId componentNftId);
85
+
86
+ //-------- product ------------------------------------------------------//
87
+
88
+ /// @dev Registers the specified product component for the instance (sender)
89
+ function registerProduct(address product, address token) external returns (NftId productNftId);
90
+
91
+ function setProductFees(
92
+ Fee memory productFee, // product fee on net premium
93
+ Fee memory processingFee // product fee on payout amounts
94
+ ) external;
95
+
96
+ //-------- distribution -------------------------------------------------//
97
+
98
+ function setDistributionFees(
99
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
100
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
101
+ ) external;
102
+
103
+ //-------- pool ---------------------------------------------------------//
104
+
105
+ function setPoolFees(
106
+ Fee memory poolFee, // pool fee on net premium
107
+ Fee memory stakingFee, // pool fee on staked capital from investor
108
+ Fee memory performanceFee // pool fee on profits from capital investors
109
+ ) external;
110
+
111
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+
11
+ /// @dev component base class
12
+ /// component examples are product, distribution, pool and oracle
13
+ interface IInstanceLinkedComponent is
14
+ IComponent
15
+ {
16
+ error ErrorInstanceLinkedComponentTypeMismatch(ObjectType requiredType, ObjectType objectType);
17
+ error ErrorInstanceLinkedComponentNotProduct(NftId nftId, ObjectType objectType);
18
+
19
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
20
+ /// @param amount the amount to withdraw
21
+ /// @return withdrawnAmount the amount that was actually withdrawn
22
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
23
+
24
+ /// @dev defines the instance to which this component is linked to
25
+ function getInstance() external view returns (IInstance instance);
26
+
27
+ /// @dev returns the initial component authorization specification.
28
+ function getAuthorization() external view returns (IAuthorization authorization);
29
+
30
+ }
@@ -1,17 +1,26 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
- import {Key32, KeyId} from "../../types/Key32.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
- import {ObjectType} from "../../types/ObjectType.sol";
8
- import {StateId} from "../../types/StateId.sol";
4
+ import {Blocknumber} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId} from "../type/StateId.sol";
9
9
 
10
10
  import {ILifecycle} from "./ILifecycle.sol";
11
11
 
12
- // TODO remove - internal only?
13
12
  interface IKeyValueStore is ILifecycle {
14
13
 
14
+ error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
+ error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreNoLifecycle(ObjectType objectType);
17
+ error ErrorKeyValueStoreStateZero(Key32 key);
18
+ error ErrorKeyValueStoreNotExisting(Key32 key);
19
+
20
+ event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
21
+ event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
22
+ event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
23
+
15
24
  struct Value {
16
25
  Metadata metadata;
17
26
  bytes data;
@@ -24,15 +33,11 @@ interface IKeyValueStore is ILifecycle {
24
33
  // eg account outside gif objects that initiated the tx
25
34
  // implies the caller needs to be propagated through all calls up to key values store itself
26
35
  // to always have the instance address there doesn't seem to make sense
27
- address updatedBy;
36
+ // address updatedBy;
28
37
  Blocknumber updatedIn;
29
38
  Blocknumber createdIn;
30
39
  }
31
40
 
32
- event LogInfoCreated(ObjectType objectType, KeyId keyId, StateId state, address createdBy, address txOrigin);
33
- event LogInfoUpdated(ObjectType objectType, KeyId keyId, StateId state, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
34
- event LogStateUpdated(ObjectType objectType, KeyId keyId, StateId stateOld, StateId stateNew, address updatedBy, address txOrigin, Blocknumber lastUpdatedIn);
35
-
36
41
  // generic state changing functions
37
42
  // function create(Key32 key, bytes memory data) external;
38
43
  // function update(Key32 key, bytes memory data, StateId state) external;
@@ -1,14 +1,15 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType} from "../../types/ObjectType.sol";
6
- import {StateId} from "../../types/StateId.sol";
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(address contractAddress, ObjectType objectType);
10
+ error ErrorFromStateMissmatch(address contractAddress, ObjectType objectType, StateId actual, StateId required);
11
11
  error ErrorInvalidStateTransition(
12
+ address contractAddress,
12
13
  ObjectType objectType,
13
14
  StateId fromStateId,
14
15
  StateId toStateId
@@ -1,22 +1,27 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {NftId} from "../types/NftId.sol";
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
6
5
 
7
- interface INftOwnable {
8
- error ErrorNotOwner(address account);
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
- error ErrorAlreadyLinked(address registry, NftId nftId);
11
- error ErrorRegistryAlreadyInitialized(address registry);
12
- error ErrorRegistryNotInitialized();
13
- error ErrorRegistryAddressZero();
14
- error ErrorNotRegistry(address registryAddress);
15
- error ErrorContractNotRegistered(address contractAddress);
10
+ interface INftOwnable is
11
+ IERC165,
12
+ IRegistryLinked
13
+ {
14
+ event LogNftOwnableNftLinkedToAddress(NftId nftId, address owner);
15
+
16
+ error ErrorNftOwnableInitialOwnerZero();
17
+ error ErrorNftOwnableNotOwner(address account);
18
+ error ErrorNftOwnableInvalidType(NftId nftId, ObjectType expectedObjectType);
16
19
 
17
- function linkToRegisteredNftId() external;
20
+ error ErrorNftOwnableAlreadyLinked(NftId nftId);
21
+ error ErrorNftOwnableContractNotRegistered(address contractAddress);
22
+
23
+ function linkToRegisteredNftId() external returns (NftId);
18
24
 
19
- function getRegistry() external view returns (IRegistry);
20
25
  function getNftId() external view returns (NftId);
21
26
  function getOwner() external view returns (address);
22
27
  }