@etherisc/gif-next 0.0.2-b643f7e-850 → 0.0.2-b6a85fa-854

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 (776) hide show
  1. package/README.md +147 -23
  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 +1234 -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 +939 -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 +838 -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 +1474 -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 +2043 -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 +1429 -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 +1161 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -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 +2575 -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/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +87 -184
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/{IInstanceBase.sol/IInstanceBase.json → IBaseStore.sol/IBaseStore.json} +66 -210
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +683 -1216
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +748 -141
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +558 -2764
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1854 -757
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +768 -400
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +385 -125
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3039 -0
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  108. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  109. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  111. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  112. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  113. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +947 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +762 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +863 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  127. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1232 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  137. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  141. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +895 -0
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  144. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  145. package/artifacts/contracts/pool/Pool.sol/Pool.json +1015 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  147. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  149. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  153. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1149 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  159. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +394 -350
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  167. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  169. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +337 -413
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  173. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1006 -0
  174. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  175. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +372 -173
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  179. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  183. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  186. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  187. package/artifacts/contracts/product/Product.sol/Product.json +1107 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  191. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  193. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +689 -113
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +351 -226
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  199. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  202. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/Registry.sol/Registry.json +1027 -149
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  207. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +327 -322
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +375 -119
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  217. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  219. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  221. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +391 -80
  222. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  223. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/Component.sol/Component.json} +340 -98
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  235. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IComponent.sol/IComponent.json} +281 -201
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  239. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  241. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +697 -0
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  243. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +61 -22
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +162 -15
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  251. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  252. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  253. package/artifacts/contracts/shared/IService.sol/IService.json +161 -154
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  257. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +785 -0
  258. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  260. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  262. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +98 -28
  264. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  266. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +178 -55
  268. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  270. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  271. package/artifacts/contracts/shared/Service.sol/Service.json +177 -163
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  276. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  278. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2747 -0
  280. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  282. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  284. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.json +3175 -0
  286. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  288. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  290. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  292. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  294. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  296. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  298. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  300. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  302. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  304. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  306. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  308. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  310. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  312. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  314. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  316. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  318. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  320. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  322. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  324. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  326. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  328. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  330. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  332. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  334. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  336. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  340. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  342. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  344. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  346. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  348. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  350. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  352. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  354. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  356. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  358. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  360. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  362. package/contracts/accounting/AccountingService.sol +274 -0
  363. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  364. package/contracts/accounting/IAccountingService.sol +47 -0
  365. package/contracts/authorization/AccessAdmin.sol +780 -0
  366. package/contracts/authorization/AccessAdminLib.sol +396 -0
  367. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  368. package/contracts/authorization/Authorization.sol +169 -0
  369. package/contracts/authorization/IAccess.sol +67 -0
  370. package/contracts/authorization/IAccessAdmin.sol +144 -0
  371. package/contracts/authorization/IAuthorization.sol +26 -0
  372. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  373. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  374. package/contracts/distribution/BasicDistribution.sol +140 -0
  375. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  376. package/contracts/distribution/Distribution.sol +245 -0
  377. package/contracts/distribution/DistributionService.sol +448 -0
  378. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  379. package/contracts/distribution/IDistributionComponent.sol +45 -0
  380. package/contracts/distribution/IDistributionService.sol +115 -0
  381. package/contracts/examples/fire/DamageLevel.sol +59 -0
  382. package/contracts/examples/fire/FirePool.sol +86 -0
  383. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  384. package/contracts/examples/fire/FireProduct.sol +433 -0
  385. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  386. package/contracts/examples/fire/FireUSD.sol +26 -0
  387. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  388. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  389. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  390. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  391. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  392. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  393. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  394. package/contracts/instance/BaseStore.sol +93 -0
  395. package/contracts/instance/BundleSet.sol +130 -0
  396. package/contracts/instance/IBaseStore.sol +37 -0
  397. package/contracts/instance/IInstance.sol +138 -38
  398. package/contracts/instance/IInstanceService.sol +106 -19
  399. package/contracts/instance/Instance.sol +250 -352
  400. package/contracts/instance/InstanceAdmin.sol +379 -0
  401. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  402. package/contracts/instance/InstanceReader.sol +508 -209
  403. package/contracts/instance/InstanceService.sol +464 -183
  404. package/contracts/instance/InstanceServiceManager.sol +14 -32
  405. package/contracts/instance/InstanceStore.sol +323 -0
  406. package/contracts/instance/ProductStore.sol +290 -0
  407. package/contracts/instance/RiskSet.sol +126 -0
  408. package/contracts/instance/TargetNames.sol +10 -0
  409. package/contracts/instance/base/BalanceStore.sol +121 -0
  410. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  411. package/contracts/instance/base/ObjectCounter.sol +20 -0
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +10 -9
  416. package/contracts/instance/module/IComponents.sol +60 -0
  417. package/contracts/instance/module/IDistribution.sol +25 -10
  418. package/contracts/instance/module/IPolicy.sol +81 -21
  419. package/contracts/instance/module/IRisk.sol +6 -1
  420. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  421. package/contracts/oracle/BasicOracle.sol +44 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +41 -0
  424. package/contracts/oracle/IOracleComponent.sol +33 -0
  425. package/contracts/oracle/IOracleService.sol +66 -0
  426. package/contracts/oracle/Oracle.sol +152 -0
  427. package/contracts/oracle/OracleService.sol +310 -0
  428. package/contracts/oracle/OracleServiceManager.sol +39 -0
  429. package/contracts/pool/BasicPool.sol +161 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +386 -0
  432. package/contracts/pool/BundleServiceManager.sol +39 -0
  433. package/contracts/pool/IBundleService.sol +116 -0
  434. package/contracts/pool/IPoolComponent.sol +62 -0
  435. package/contracts/pool/IPoolService.sol +170 -0
  436. package/contracts/pool/Pool.sol +331 -0
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +614 -0
  439. package/contracts/pool/PoolServiceManager.sol +39 -0
  440. package/contracts/product/ApplicationService.sol +327 -0
  441. package/contracts/product/ApplicationServiceManager.sol +38 -0
  442. package/contracts/product/BasicProduct.sol +48 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +626 -0
  445. package/contracts/product/ClaimServiceManager.sol +38 -0
  446. package/contracts/product/IApplicationService.sol +88 -0
  447. package/contracts/product/IClaimService.sol +136 -0
  448. package/contracts/product/IPolicyService.sol +102 -0
  449. package/contracts/product/IPricingService.sol +40 -0
  450. package/contracts/product/IProductComponent.sol +62 -0
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +645 -0
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +39 -0
  455. package/contracts/product/PricingService.sol +306 -0
  456. package/contracts/product/PricingServiceManager.sol +39 -0
  457. package/contracts/product/Product.sol +491 -0
  458. package/contracts/product/RiskService.sol +189 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +82 -35
  461. package/contracts/registry/IRegistry.sol +123 -32
  462. package/contracts/registry/IRegistryService.sol +40 -28
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +1 -1
  465. package/contracts/registry/Registry.sol +561 -273
  466. package/contracts/registry/RegistryAdmin.sol +191 -0
  467. package/contracts/registry/RegistryAuthorization.sol +336 -0
  468. package/contracts/registry/RegistryService.sol +116 -233
  469. package/contracts/registry/RegistryServiceManager.sol +26 -53
  470. package/contracts/registry/ReleaseAdmin.sol +195 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  474. package/contracts/registry/TokenRegistry.sol +265 -59
  475. package/contracts/shared/Component.sol +210 -0
  476. package/contracts/shared/ComponentService.sol +691 -0
  477. package/contracts/shared/ComponentServiceManager.sol +38 -0
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +58 -0
  480. package/contracts/shared/IComponentService.sol +111 -0
  481. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  482. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  483. package/contracts/shared/INftOwnable.sol +17 -12
  484. package/contracts/shared/IPolicyHolder.sol +35 -0
  485. package/contracts/shared/IRegisterable.sol +24 -5
  486. package/contracts/shared/IRegistryLinked.sol +11 -0
  487. package/contracts/shared/IService.sol +13 -5
  488. package/contracts/shared/InitializableERC165.sol +35 -0
  489. package/contracts/shared/InstanceLinkedComponent.sol +192 -0
  490. package/contracts/shared/Lifecycle.sol +88 -0
  491. package/contracts/shared/NftIdSet.sol +65 -0
  492. package/contracts/shared/NftOwnable.sol +77 -82
  493. package/contracts/shared/PolicyHolder.sol +63 -0
  494. package/contracts/shared/Registerable.sol +54 -38
  495. package/contracts/shared/RegistryLinked.sol +38 -0
  496. package/contracts/shared/Service.sol +45 -33
  497. package/contracts/shared/TokenHandler.sol +327 -12
  498. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  499. package/contracts/staking/IStaking.sol +367 -0
  500. package/contracts/staking/IStakingService.sol +127 -0
  501. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  502. package/contracts/staking/Staking.sol +797 -0
  503. package/contracts/staking/StakingLib.sol +195 -0
  504. package/contracts/staking/StakingManager.sol +53 -0
  505. package/contracts/staking/StakingReader.sol +171 -0
  506. package/contracts/staking/StakingService.sol +321 -0
  507. package/contracts/staking/StakingServiceManager.sol +46 -0
  508. package/contracts/staking/StakingStore.sol +1368 -0
  509. package/contracts/staking/TargetHandler.sol +132 -0
  510. package/contracts/staking/TargetManagerLib.sol +234 -0
  511. package/contracts/{types → type}/AddressSet.sol +1 -1
  512. package/contracts/type/Amount.sol +154 -0
  513. package/contracts/{types → type}/Blocknumber.sol +36 -12
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/type/ClaimId.sol +80 -0
  516. package/contracts/{types → type}/DistributorType.sol +2 -2
  517. package/contracts/type/Fee.sol +66 -0
  518. package/contracts/{types → type}/Key32.sol +2 -2
  519. package/contracts/type/Key32Set.sol +62 -0
  520. package/contracts/{types → type}/NftId.sol +28 -15
  521. package/contracts/{types → type}/NftIdSet.sol +2 -2
  522. package/contracts/type/ObjectType.sol +307 -0
  523. package/contracts/type/PayoutId.sol +82 -0
  524. package/contracts/{types → type}/Referral.sol +6 -1
  525. package/contracts/type/RequestId.sol +75 -0
  526. package/contracts/type/RiskId.sol +75 -0
  527. package/contracts/type/RoleId.sol +180 -0
  528. package/contracts/type/Seconds.sol +120 -0
  529. package/contracts/type/Selector.sol +107 -0
  530. package/contracts/{types → type}/StateId.sol +48 -4
  531. package/contracts/type/String.sol +65 -0
  532. package/contracts/{types → type}/Timestamp.sol +36 -20
  533. package/contracts/type/UFixed.sol +263 -0
  534. package/contracts/{types → type}/Version.sol +59 -7
  535. package/contracts/{shared → upgradeability}/IVersionable.sol +7 -47
  536. package/contracts/upgradeability/ProxyManager.sol +246 -0
  537. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  538. package/contracts/upgradeability/Versionable.sol +62 -0
  539. package/package.json +12 -8
  540. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  542. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -744
  543. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  544. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  545. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  546. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  547. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  548. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  549. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  550. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  551. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  552. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -939
  553. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  554. package/artifacts/contracts/components/Product.sol/Product.json +0 -855
  555. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  557. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  559. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  561. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  563. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  565. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  567. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  569. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  571. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  573. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  575. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  577. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  578. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  579. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  580. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  581. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  582. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  583. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  584. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  585. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  586. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  587. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  588. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  589. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  590. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  591. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  592. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  593. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  594. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  595. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  596. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -775
  598. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  599. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  600. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  601. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  602. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  603. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -940
  604. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  605. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  606. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  607. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  608. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  609. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  610. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  611. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  612. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  613. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  614. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  615. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  616. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  617. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  618. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  619. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  620. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  622. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  623. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  624. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  625. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  627. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  628. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  629. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  630. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  631. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  632. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  633. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1049
  634. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  635. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -464
  636. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  637. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  638. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  639. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  640. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  641. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  642. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  643. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  644. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  645. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  646. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  647. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  648. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  649. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  650. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  651. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  652. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  653. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  654. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  655. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  656. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  657. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  658. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  659. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  660. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  661. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  662. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  663. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  664. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  665. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  666. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  667. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  668. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  669. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  670. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  671. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  672. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  674. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  676. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  678. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  680. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  681. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  682. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  684. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  685. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  686. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  688. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  690. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  691. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  692. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  693. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  694. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  695. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  696. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  697. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  698. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  699. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  700. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  701. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  702. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  703. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  704. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  705. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  706. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  707. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  708. package/contracts/components/BaseComponent.sol +0 -132
  709. package/contracts/components/Distribution.sol +0 -163
  710. package/contracts/components/IBaseComponent.sol +0 -31
  711. package/contracts/components/IDistributionComponent.sol +0 -44
  712. package/contracts/components/IPoolComponent.sol +0 -66
  713. package/contracts/components/IProductComponent.sol +0 -35
  714. package/contracts/components/Pool.sol +0 -267
  715. package/contracts/components/Product.sol +0 -289
  716. package/contracts/experiment/cloning/Cloner.sol +0 -47
  717. package/contracts/experiment/errors/Require.sol +0 -38
  718. package/contracts/experiment/errors/Revert.sol +0 -44
  719. package/contracts/experiment/inheritance/A.sol +0 -53
  720. package/contracts/experiment/inheritance/B.sol +0 -28
  721. package/contracts/experiment/inheritance/C.sol +0 -34
  722. package/contracts/experiment/inheritance/IA.sol +0 -13
  723. package/contracts/experiment/inheritance/IB.sol +0 -10
  724. package/contracts/experiment/inheritance/IC.sol +0 -12
  725. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  726. package/contracts/experiment/statemachine/ISM.sol +0 -25
  727. package/contracts/experiment/statemachine/SM.sol +0 -57
  728. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  729. package/contracts/experiment/types/TypeA.sol +0 -47
  730. package/contracts/experiment/types/TypeB.sol +0 -29
  731. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  732. package/contracts/instance/BundleManager.sol +0 -129
  733. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  734. package/contracts/instance/IInstanceBase.sol +0 -26
  735. package/contracts/instance/InstanceAccessManager.sol +0 -288
  736. package/contracts/instance/InstanceBase.sol +0 -41
  737. package/contracts/instance/ObjectManager.sol +0 -95
  738. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  739. package/contracts/instance/base/IInstanceBase.sol +0 -23
  740. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  741. package/contracts/instance/base/KeyValueStore.sol +0 -172
  742. package/contracts/instance/base/Lifecycle.sol +0 -100
  743. package/contracts/instance/module/IAccess.sol +0 -38
  744. package/contracts/instance/module/ISetup.sol +0 -46
  745. package/contracts/instance/module/ITreasury.sol +0 -23
  746. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  747. package/contracts/instance/service/DistributionService.sol +0 -88
  748. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  749. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  750. package/contracts/instance/service/IDistributionService.sol +0 -12
  751. package/contracts/instance/service/IPoolService.sol +0 -51
  752. package/contracts/instance/service/IProductService.sol +0 -110
  753. package/contracts/instance/service/PoolService.sol +0 -287
  754. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  755. package/contracts/instance/service/ProductService.sol +0 -570
  756. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  757. package/contracts/shared/ContractDeployerLib.sol +0 -72
  758. package/contracts/shared/ERC165.sol +0 -25
  759. package/contracts/shared/ProxyManager.sol +0 -94
  760. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  761. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  762. package/contracts/shared/Versionable.sol +0 -147
  763. package/contracts/test/TestFee.sol +0 -25
  764. package/contracts/test/TestRegisterable.sol +0 -18
  765. package/contracts/test/TestRoleId.sol +0 -14
  766. package/contracts/test/TestService.sol +0 -24
  767. package/contracts/test/TestToken.sol +0 -26
  768. package/contracts/test/TestVersion.sol +0 -44
  769. package/contracts/test/TestVersionable.sol +0 -17
  770. package/contracts/types/ChainId.sol +0 -38
  771. package/contracts/types/Fee.sol +0 -56
  772. package/contracts/types/NumberId.sol +0 -52
  773. package/contracts/types/ObjectType.sol +0 -152
  774. package/contracts/types/RiskId.sol +0 -43
  775. package/contracts/types/RoleId.sol +0 -90
  776. package/contracts/types/UFixed.sol +0 -325
@@ -1,17 +1,36 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
7
8
  import {IRegistry} from "../registry/IRegistry.sol";
8
- import {NftId} from "../types/NftId.sol";
9
- import {ObjectType} from "../types/ObjectType.sol";
10
9
 
11
- interface IRegisterable is IERC165, INftOwnable {
10
+ /// @title IRegisterable
11
+ /// @dev Marks contracts that are intended to be registered in the registry.
12
+ ///
13
+ interface IRegisterable is
14
+ IAccessManaged,
15
+ INftOwnable,
16
+ IRelease
17
+ {
18
+ // __Registerable_init
19
+ error ErrorAuthorityInvalid(address authority);
12
20
 
21
+ // onlyActive()
22
+ error ErrorRegisterableNotActive();
23
+
24
+ /// @dev Returns true iff this contract managed by its authority is active.
25
+ /// Queries the IAccessManaged.authority().
26
+ function isActive() external view returns (bool active);
27
+
28
+ /// @dev retuns the object info relevant for registering for this contract
29
+ /// IMPORTANT information returned by this function may only be used
30
+ /// before the contract is registered in the registry.
31
+ /// Once registered this information MUST only be accessed via the registry.
13
32
  function getInitialInfo()
14
33
  external
15
34
  view
16
- returns (IRegistry.ObjectInfo memory, bytes memory data);
35
+ returns (IRegistry.ObjectInfo memory);
17
36
  }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+
6
+ interface IRegistryLinked {
7
+
8
+ error ErrorNotRegistry(address registryAddress);
9
+
10
+ function getRegistry() external view returns (IRegistry);
11
+ }
@@ -1,15 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {VersionPart} from "../types/Version.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
8
10
 
9
11
  interface IService is
12
+ IAccessManaged,
10
13
  IRegisterable,
11
14
  IVersionable
12
15
  {
13
- function getName() external pure returns(string memory name);
14
- function getMajorVersion() external view returns(VersionPart majorVersion);
16
+ /// @dev returns the domain for this service.
17
+ /// In any GIF release only one service for any given domain may be deployed.
18
+ function getDomain() external pure returns(ObjectType serviceDomain);
19
+
20
+ /// @dev returns the GIF release specific role id.
21
+ /// These role ids are used to authorize service to service communication.
22
+ function getRoleId() external view returns(RoleId serviceRoleId);
15
23
  }
@@ -0,0 +1,35 @@
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
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
+
7
+ contract InitializableERC165 is
8
+ Initializable,
9
+ IERC165
10
+ {
11
+ mapping(bytes4 => bool) private _isSupported;
12
+
13
+ // @dev initializes with support for ERC165
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
19
+ _isSupported[type(IERC165).interfaceId] = true;
20
+ }
21
+
22
+ // @dev register support for provided interfaceId
23
+ // includes initialization for ERC165_ID if not yet done
24
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
29
+ _isSupported[interfaceId] = true;
30
+ }
31
+
32
+ function supportsInterface(bytes4 interfaceId) external view override returns (bool) {
33
+ return _isSupported[interfaceId];
34
+ }
35
+ }
@@ -0,0 +1,192 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+
9
+ import {Amount} from "../type/Amount.sol";
10
+ import {Component} from "./Component.sol";
11
+ import {IComponentService} from "./IComponentService.sol";
12
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
14
+ import {IComponents} from "../instance/module/IComponents.sol";
15
+ import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IInstance} from "../instance/IInstance.sol";
17
+ import {InstanceReader} from "../instance/InstanceReader.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+ import {NftId} from "../type/NftId.sol";
20
+ import {ObjectType, COMPONENT, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
23
+ import {IAccess} from "../authorization/IAccess.sol";
24
+ import {TokenHandler} from "../shared/TokenHandler.sol";
25
+ import {VersionPart} from "../type/Version.sol";
26
+
27
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
28
+ // same pattern as for Service which is also upgradeable
29
+ abstract contract InstanceLinkedComponent is
30
+ Component,
31
+ IInstanceLinkedComponent
32
+ {
33
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
34
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
35
+
36
+ struct InstanceLinkedComponentStorage {
37
+ IInstance _instance; // instance for this component
38
+ InstanceReader _instanceReader; // instance reader for this component
39
+ IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
41
+ }
42
+
43
+ /// @inheritdoc IInstanceLinkedComponent
44
+ function withdrawFees(Amount amount)
45
+ external
46
+ virtual
47
+ restricted()
48
+ onlyOwner()
49
+ returns (Amount withdrawnAmount)
50
+ {
51
+ return _withdrawFees(amount);
52
+ }
53
+
54
+ /// @inheritdoc IInstanceLinkedComponent
55
+ function getInstance() public view virtual override returns (IInstance instance) {
56
+ return _getInstanceLinkedComponentStorage()._instance;
57
+ }
58
+
59
+ /// @inheritdoc IInstanceLinkedComponent
60
+ function getAuthorization() external view virtual returns (IAuthorization authorization) {
61
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
62
+ }
63
+
64
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
65
+ assembly {
66
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
67
+ }
68
+ }
69
+
70
+ function __InstanceLinkedComponent_init(
71
+ address registry,
72
+ NftId parentNftId,
73
+ string memory name,
74
+ ObjectType componentType,
75
+ IAuthorization authorization,
76
+ bool isInterceptor,
77
+ address initialOwner
78
+ )
79
+ internal
80
+ virtual
81
+ onlyInitializing()
82
+ {
83
+ // validate registry, nft ids and get parent nft id
84
+ NftId instanceNftId = _checkAndGetInstanceNftId(
85
+ registry,
86
+ parentNftId,
87
+ componentType);
88
+
89
+ // set and check linked instance
90
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
91
+ $._instance = IInstance(
92
+ IRegistry(registry).getObjectAddress(instanceNftId));
93
+
94
+ // set component specific parameters
95
+ __Component_init(
96
+ $._instance.authority(), // instance linked components need to point to instance admin
97
+ registry,
98
+ parentNftId,
99
+ name,
100
+ componentType,
101
+ isInterceptor,
102
+ initialOwner,
103
+ ""); // registry data
104
+
105
+ // set instance linked specific parameters
106
+ $._instanceReader = $._instance.getInstanceReader();
107
+ $._initialAuthorization = authorization;
108
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
109
+
110
+ // register interfaces
111
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
112
+ }
113
+
114
+
115
+ function _checkAndGetInstanceNftId(
116
+ address registryAddress,
117
+ NftId parentNftId,
118
+ ObjectType componentType
119
+ )
120
+ internal
121
+ view
122
+ returns (NftId instanceNftId)
123
+ {
124
+ // if product, then parent is already instance
125
+ if (componentType == PRODUCT()) {
126
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
127
+ return parentNftId;
128
+ }
129
+
130
+ // if not product parent is product, and parent of product is instance
131
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
132
+ return registry.getParentNftId(parentNftId);
133
+ }
134
+
135
+ /// @dev checks the and gets registry.
136
+ /// validates registry using a provided nft id and expected object type.
137
+ function _checkAndGetRegistry(
138
+ address registryAddress,
139
+ NftId objectNftId,
140
+ ObjectType requiredType
141
+ )
142
+ internal
143
+ view
144
+ returns (IRegistry registry)
145
+ {
146
+ registry = IRegistry(registryAddress);
147
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
148
+
149
+ if (info.objectType != requiredType) {
150
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
151
+ }
152
+ }
153
+
154
+
155
+ /// @dev for instance linked components the wallet address stored in the instance store.
156
+ /// updating needs to go throug component service
157
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
158
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
159
+ }
160
+
161
+
162
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
163
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
164
+
165
+ // if registered, attempt to return component info via instance reader
166
+ if (componentNftId.gtz()) {
167
+ // component registerd with registry
168
+ info = _getInstanceReader().getComponentInfo(getNftId());
169
+
170
+ // check if also registered with instance
171
+ if (address(info.tokenHandler) != address(0)) {
172
+ return info;
173
+ }
174
+ }
175
+
176
+ // return data from component contract if not yet registered
177
+ return super._getComponentInfo();
178
+ }
179
+
180
+
181
+ /// @dev returns reader for linked instance
182
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
183
+ return _getInstanceLinkedComponentStorage()._instanceReader;
184
+ }
185
+
186
+ function _withdrawFees(Amount amount)
187
+ internal
188
+ returns (Amount withdrawnAmount)
189
+ {
190
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
191
+ }
192
+ }
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
6
+ import {ILifecycle} from "./ILifecycle.sol";
7
+
8
+ abstract contract Lifecycle is
9
+ ILifecycle
10
+ {
11
+ mapping(ObjectType objectType => StateId initialState)
12
+ private _initialState;
13
+
14
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
15
+ private _isValidTransition;
16
+
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
28
+ }
29
+
30
+ function hasLifecycle(
31
+ ObjectType objectType
32
+ )
33
+ public
34
+ view
35
+ override
36
+ returns (bool)
37
+ {
38
+ return _initialState[objectType].gtz();
39
+ }
40
+
41
+ function getInitialState(
42
+ ObjectType objectType
43
+ )
44
+ public
45
+ view
46
+ returns (StateId)
47
+ {
48
+ return _initialState[objectType];
49
+ }
50
+
51
+ function checkTransition(
52
+ StateId stateId,
53
+ ObjectType objectType,
54
+ StateId expectedFromId,
55
+ StateId toId
56
+ )
57
+ public
58
+ view
59
+ {
60
+ // revert if no life cycle support
61
+ if (_initialState[objectType].eqz()) {
62
+ revert ErrorNoLifecycle(address(this), objectType);
63
+ }
64
+
65
+ // revert if current state is not expected `from` state
66
+ if(stateId != expectedFromId) {
67
+ revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
68
+ }
69
+
70
+ // enforce valid state transition
71
+ if (!_isValidTransition[objectType][stateId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ stateId,
76
+ toId
77
+ );
78
+ }
79
+ }
80
+
81
+ function isValidTransition(
82
+ ObjectType objectType,
83
+ StateId fromId,
84
+ StateId toId
85
+ ) public view returns (bool) {
86
+ return _isValidTransition[objectType][fromId][toId];
87
+ }
88
+ }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSet {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }
@@ -1,134 +1,129 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {InitializableERC165} from "./InitializableERC165.sol";
4
5
  import {INftOwnable} from "./INftOwnable.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
-
8
- contract NftOwnable is INftOwnable {
9
-
10
- IRegistry internal _registry;
11
- NftId private _nftId;
12
- address private _initialOwner;
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {RegistryLinked} from "./RegistryLinked.sol";
9
+
10
+ contract NftOwnable is
11
+ InitializableERC165,
12
+ RegistryLinked,
13
+ INftOwnable
14
+ {
15
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
16
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
17
+
18
+ struct NftOwnableStorage {
19
+ NftId _nftId;
20
+ address _initialOwner;
21
+ }
13
22
 
14
23
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
15
24
  modifier onlyOwner() {
16
25
  if (msg.sender != getOwner()) {
17
- revert ErrorNotOwner(msg.sender);
26
+ revert ErrorNftOwnableNotOwner(msg.sender);
18
27
  }
19
28
  _;
20
29
  }
21
30
 
22
- constructor() {
23
- _initialOwner = msg.sender;
31
+ modifier onlyNftOwner(NftId nftId) {
32
+ if(!getRegistry().isOwnerOf(nftId, msg.sender)) {
33
+ revert ErrorNftOwnableNotOwner(msg.sender);
34
+ }
35
+ _;
24
36
  }
25
37
 
26
- /// @dev links this contract to nft after registration
27
- // needs to be done once per registered contract and
28
- // reduces registry calls to check ownership
29
- // does not need any protection as function can only do the "right thing"
30
- function linkToRegisteredNftId() public {
31
- if (_nftId.gtz()) {
32
- revert ErrorAlreadyLinked(address(_registry), _nftId);
33
- }
38
+ modifier onlyNftOfType(NftId nftId, ObjectType expectedObjectType) {
39
+ _checkNftType(nftId, expectedObjectType);
40
+ _;
41
+ }
34
42
 
35
- if (address(_registry) == address(0)) {
36
- revert ErrorRegistryNotInitialized();
43
+ function _checkNftType(NftId nftId, ObjectType expectedObjectType) internal view {
44
+ if(expectedObjectType.eqz() || !getRegistry().isObjectType(nftId, expectedObjectType)) {
45
+ revert ErrorNftOwnableInvalidType(nftId, expectedObjectType);
37
46
  }
47
+ }
48
+
38
49
 
39
- address contractAddress = address(this);
50
+ /// @dev Initialization for upgradable contracts.
51
+ // used in __Registerable_init, ProxyManager._preDeployChecksAndSetup
52
+ function __NftOwnable_init(
53
+ address registry,
54
+ address initialOwner
55
+ )
56
+ internal
57
+ virtual
58
+ onlyInitializing()
59
+ {
60
+ __ERC165_init();
61
+ __RegistryLinked_init(registry);
40
62
 
41
- if (!_registry.isRegistered(contractAddress)) {
42
- revert ErrorContractNotRegistered(contractAddress);
63
+ if(initialOwner == address(0)) {
64
+ revert ErrorNftOwnableInitialOwnerZero();
43
65
  }
44
66
 
45
- _nftId = _registry.getNftId(contractAddress);
67
+ _getNftOwnableStorage()._initialOwner = initialOwner;
46
68
  }
47
69
 
48
70
 
49
- function getRegistry() public view virtual override returns (IRegistry) {
50
- return _registry;
71
+ /// @dev links this contract to nft after registration
72
+ // needs to be done once per registered contract and
73
+ // reduces registry calls to check ownership
74
+ // does not need any protection as function can only do the "right thing"
75
+ function linkToRegisteredNftId()
76
+ public
77
+ virtual
78
+ returns (NftId nftId)
79
+ {
80
+ return _linkToNftOwnable(address(this));
51
81
  }
52
82
 
53
-
54
83
  function getNftId() public view virtual override returns (NftId) {
55
- return _nftId;
84
+ return _getNftOwnableStorage()._nftId;
56
85
  }
57
86
 
58
-
59
87
  function getOwner() public view virtual override returns (address) {
60
- if (_nftId.gtz()) {
61
- return _registry.ownerOf(_nftId);
62
- }
63
-
64
- return _initialOwner;
65
- }
88
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
66
89
 
90
+ if ($._nftId.gtz()) {
91
+ return getRegistry().ownerOf($._nftId);
92
+ }
67
93
 
68
- /// @dev initialization for upgradable contracts
69
- // used in _initializeRegisterable
70
- function _initializeNftOwnable(
71
- address initialOwner,
72
- address registryAddress
73
- )
74
- internal
75
- virtual
76
- {
77
- require(initialOwner > address(0), "NftOwnable: initial owner is 0");
78
- _initialOwner = initialOwner;
79
- _setRegistry(registryAddress);
94
+ return $._initialOwner;
80
95
  }
81
96
 
82
-
83
97
  /// @dev used in constructor of registry service manager
84
98
  // links ownership of registry service manager ot nft owner of registry service
85
99
  function _linkToNftOwnable(
86
- address registryAddress,
87
100
  address nftOwnableAddress
88
101
  )
89
102
  internal
90
- onlyOwner()
91
103
  returns (NftId)
92
104
  {
93
- if (_nftId.gtz()) {
94
- revert ErrorAlreadyLinked(address(_registry), _nftId);
95
- }
96
-
97
- _setRegistry(registryAddress);
105
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
98
106
 
99
- if (!_registry.isRegistered(nftOwnableAddress)) {
100
- revert ErrorContractNotRegistered(nftOwnableAddress);
107
+ if ($._nftId.gtz()) {
108
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
101
109
  }
102
110
 
103
- _nftId = _registry.getNftId(nftOwnableAddress);
104
-
105
- return _nftId;
106
- }
107
-
108
-
109
- function _setRegistry(address registryAddress)
110
- private
111
- {
112
- if (address(_registry) != address(0)) {
113
- revert ErrorRegistryAlreadyInitialized(address(_registry));
111
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
112
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
114
113
  }
115
114
 
116
- if (registryAddress == address(0)) {
117
- revert ErrorRegistryAddressZero();
118
- }
115
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
119
116
 
120
- if (registryAddress.code.length == 0) {
121
- revert ErrorNotRegistry(registryAddress);
122
- }
117
+ emit LogNftOwnableNftLinkedToAddress($._nftId, getOwner());
118
+
119
+ return $._nftId;
120
+ }
123
121
 
124
- _registry = IRegistry(registryAddress);
125
122
 
126
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
127
- if (!isRegistry) {
128
- revert ErrorNotRegistry(registryAddress);
129
- }
130
- } catch {
131
- revert ErrorNotRegistry(registryAddress);
123
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
124
+ // solhint-disable-next-line no-inline-assembly
125
+ assembly {
126
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
132
127
  }
133
128
  }
134
129
  }