@etherisc/gif-next 0.0.2-b3a9c97-695 → 0.0.2-b3b68b6-318

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 (519) hide show
  1. package/README.md +32 -8
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +203 -77
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +142 -44
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +177 -373
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +115 -295
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +320 -368
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +129 -119
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +115 -143
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +197 -103
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2426 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +988 -252
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +689 -440
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -323
  106. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  108. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +102 -130
  111. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  113. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -283
  115. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  117. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  119. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +121 -301
  121. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  123. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +155 -415
  125. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -136
  127. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -111
  129. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +123 -162
  131. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +317 -269
  133. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  134. package/artifacts/contracts/pool/Pool.sol/Pool.json +121 -312
  135. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  137. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +465 -535
  139. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +143 -105
  141. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +131 -170
  143. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -90
  145. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +238 -357
  147. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  149. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +400 -290
  151. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +132 -118
  153. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
  155. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +293 -17
  157. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +245 -64
  159. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
  161. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
  163. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  164. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
  165. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +327 -349
  167. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  169. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -117
  171. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.json +227 -314
  173. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
  175. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  176. package/artifacts/contracts/product/Product.sol/Product.json +236 -355
  177. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
  179. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
  181. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  183. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +334 -34
  185. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
  187. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  189. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  191. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.json +540 -95
  193. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +349 -167
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +420 -246
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  209. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  210. package/artifacts/contracts/shared/Component.sol/Component.json +89 -240
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +473 -653
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +132 -136
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
  231. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  233. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  235. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  237. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  239. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  241. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  244. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  246. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +102 -282
  248. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  250. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  252. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  254. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  256. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  258. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  260. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  262. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +544 -18
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  268. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  270. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +137 -139
  272. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
  274. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +86 -89
  276. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/Staking.sol/Staking.json +223 -368
  278. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  280. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -103
  282. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -63
  284. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +183 -164
  286. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +103 -85
  288. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +149 -108
  290. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
  292. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +118 -5
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  333. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
  335. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  337. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
  339. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  340. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  342. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  344. package/contracts/accounting/AccountingService.sol +262 -0
  345. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  346. package/contracts/accounting/IAccountingService.sol +45 -0
  347. package/contracts/authorization/AccessAdmin.sol +232 -134
  348. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  349. package/contracts/authorization/Authorization.sol +321 -202
  350. package/contracts/authorization/IAccess.sol +1 -0
  351. package/contracts/authorization/IAccessAdmin.sol +17 -10
  352. package/contracts/authorization/IAuthorization.sol +27 -7
  353. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  354. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  355. package/contracts/distribution/BasicDistribution.sol +15 -12
  356. package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
  357. package/contracts/distribution/Distribution.sol +42 -48
  358. package/contracts/distribution/DistributionService.sol +124 -89
  359. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  360. package/contracts/distribution/IDistributionComponent.sol +1 -1
  361. package/contracts/distribution/IDistributionService.sol +27 -21
  362. package/contracts/examples/fire/DamageLevel.sol +59 -0
  363. package/contracts/examples/fire/FirePool.sol +90 -0
  364. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  365. package/contracts/examples/fire/FireProduct.sol +438 -0
  366. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  367. package/contracts/examples/fire/FireUSD.sol +26 -0
  368. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  369. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  370. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  371. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  372. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  373. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  374. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  375. package/contracts/instance/BundleSet.sol +42 -38
  376. package/contracts/instance/IInstance.sol +21 -37
  377. package/contracts/instance/IInstanceService.sol +9 -29
  378. package/contracts/instance/Instance.sol +59 -66
  379. package/contracts/instance/InstanceAdmin.sol +256 -85
  380. package/contracts/instance/InstanceAuthorizationV3.sol +56 -47
  381. package/contracts/instance/InstanceReader.sol +268 -39
  382. package/contracts/instance/InstanceService.sol +93 -156
  383. package/contracts/instance/InstanceServiceManager.sol +6 -7
  384. package/contracts/instance/InstanceStore.sol +23 -2
  385. package/contracts/instance/RiskSet.sol +118 -0
  386. package/contracts/instance/base/ObjectCounter.sol +1 -2
  387. package/contracts/instance/base/ObjectLifecycle.sol +10 -2
  388. package/contracts/instance/base/ObjectSet.sol +31 -33
  389. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  390. package/contracts/instance/module/IComponents.sol +13 -8
  391. package/contracts/instance/module/IDistribution.sol +2 -1
  392. package/contracts/instance/module/IPolicy.sol +25 -24
  393. package/contracts/instance/module/IRisk.sol +3 -0
  394. package/contracts/oracle/BasicOracle.sol +0 -1
  395. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  396. package/contracts/oracle/IOracleService.sol +2 -1
  397. package/contracts/oracle/Oracle.sol +7 -17
  398. package/contracts/oracle/OracleService.sol +113 -81
  399. package/contracts/oracle/OracleServiceManager.sol +6 -6
  400. package/contracts/pool/BasicPool.sol +33 -24
  401. package/contracts/pool/BasicPoolAuthorization.sol +27 -9
  402. package/contracts/pool/BundleService.sol +93 -135
  403. package/contracts/pool/BundleServiceManager.sol +6 -6
  404. package/contracts/pool/IBundleService.sol +15 -33
  405. package/contracts/pool/IPoolComponent.sol +19 -15
  406. package/contracts/pool/IPoolService.sol +86 -68
  407. package/contracts/pool/Pool.sol +139 -122
  408. package/contracts/pool/PoolLib.sol +216 -0
  409. package/contracts/pool/PoolService.sol +502 -269
  410. package/contracts/pool/PoolServiceManager.sol +4 -4
  411. package/contracts/product/ApplicationService.sol +35 -26
  412. package/contracts/product/ApplicationServiceManager.sol +4 -4
  413. package/contracts/product/BasicProduct.sol +11 -12
  414. package/contracts/product/BasicProductAuthorization.sol +24 -11
  415. package/contracts/product/ClaimService.sol +365 -150
  416. package/contracts/product/ClaimServiceManager.sol +4 -4
  417. package/contracts/product/IApplicationService.sol +5 -2
  418. package/contracts/product/IClaimService.sol +43 -8
  419. package/contracts/product/IPolicyService.sol +39 -28
  420. package/contracts/product/IPricingService.sol +10 -10
  421. package/contracts/product/IProductComponent.sol +27 -5
  422. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  423. package/contracts/product/PolicyService.sol +374 -287
  424. package/contracts/product/PolicyServiceLib.sol +65 -0
  425. package/contracts/product/PolicyServiceManager.sol +4 -4
  426. package/contracts/product/PricingService.sol +61 -61
  427. package/contracts/product/PricingServiceManager.sol +4 -4
  428. package/contracts/product/Product.sol +150 -85
  429. package/contracts/product/RiskService.sol +145 -0
  430. package/contracts/product/RiskServiceManager.sol +39 -0
  431. package/contracts/registry/ChainNft.sol +72 -40
  432. package/contracts/registry/IRegistry.sol +60 -28
  433. package/contracts/registry/IRegistryService.sol +5 -12
  434. package/contracts/registry/IRelease.sol +26 -0
  435. package/contracts/registry/ITransferInterceptor.sol +1 -2
  436. package/contracts/registry/Registry.sol +357 -203
  437. package/contracts/registry/RegistryAdmin.sol +171 -182
  438. package/contracts/registry/RegistryService.sol +37 -48
  439. package/contracts/registry/RegistryServiceManager.sol +3 -3
  440. package/contracts/registry/ReleaseAdmin.sol +245 -0
  441. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  442. package/contracts/registry/ReleaseRegistry.sol +258 -232
  443. package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
  444. package/contracts/registry/TokenRegistry.sol +6 -8
  445. package/contracts/shared/Component.sol +74 -128
  446. package/contracts/shared/ComponentService.sol +428 -376
  447. package/contracts/shared/ComponentServiceManager.sol +8 -5
  448. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  449. package/contracts/shared/ContractLib.sol +253 -0
  450. package/contracts/shared/IComponent.sol +8 -18
  451. package/contracts/shared/IComponentService.sol +41 -37
  452. package/contracts/shared/IInstanceLinkedComponent.sol +2 -28
  453. package/contracts/shared/ILifecycle.sol +3 -1
  454. package/contracts/shared/INftOwnable.sol +2 -0
  455. package/contracts/shared/IPolicyHolder.sol +12 -22
  456. package/contracts/shared/IRegisterable.sol +23 -1
  457. package/contracts/shared/IService.sol +3 -5
  458. package/contracts/shared/InitializableERC165.sol +2 -2
  459. package/contracts/shared/InstanceLinkedComponent.sol +73 -48
  460. package/contracts/shared/KeyValueStore.sol +1 -1
  461. package/contracts/shared/Lifecycle.sol +15 -4
  462. package/contracts/shared/NftOwnable.sol +29 -9
  463. package/contracts/shared/PolicyHolder.sol +15 -52
  464. package/contracts/shared/Registerable.sol +55 -21
  465. package/contracts/shared/RegistryLinked.sol +9 -14
  466. package/contracts/shared/Service.sol +15 -32
  467. package/contracts/shared/TokenHandler.sol +308 -29
  468. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  469. package/contracts/staking/IStaking.sol +8 -11
  470. package/contracts/staking/IStakingService.sol +12 -4
  471. package/contracts/staking/StakeManagerLib.sol +87 -42
  472. package/contracts/staking/Staking.sol +81 -67
  473. package/contracts/staking/StakingManager.sol +8 -6
  474. package/contracts/staking/StakingReader.sol +13 -21
  475. package/contracts/staking/StakingService.sol +71 -25
  476. package/contracts/staking/StakingServiceManager.sol +6 -5
  477. package/contracts/staking/TargetManagerLib.sol +7 -3
  478. package/contracts/type/Amount.sol +15 -0
  479. package/contracts/type/ClaimId.sol +6 -1
  480. package/contracts/type/Key32.sol +2 -2
  481. package/contracts/type/Key32Set.sol +62 -0
  482. package/contracts/type/NftId.sol +7 -0
  483. package/contracts/type/ObjectType.sol +52 -20
  484. package/contracts/type/PayoutId.sol +10 -10
  485. package/contracts/type/RiskId.sol +35 -4
  486. package/contracts/type/RoleId.sol +23 -15
  487. package/contracts/type/Seconds.sol +8 -0
  488. package/contracts/type/Selector.sol +5 -0
  489. package/contracts/type/StateId.sol +15 -1
  490. package/contracts/type/Timestamp.sol +0 -5
  491. package/contracts/type/UFixed.sol +13 -119
  492. package/contracts/type/Version.sol +15 -5
  493. package/contracts/upgradeability/ProxyManager.sol +68 -34
  494. package/contracts/upgradeability/Versionable.sol +2 -2
  495. package/package.json +4 -3
  496. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  497. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  498. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  499. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  500. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  501. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  502. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  503. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  504. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  505. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  506. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  507. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  508. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  509. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.dbg.json +0 -4
  510. package/artifacts/contracts/shared/TokenTransferLib.sol/TokenTransferLib.json +0 -42
  511. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  512. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  513. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  514. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  515. package/contracts/instance/module/IAccess.sol +0 -46
  516. package/contracts/product/ProductService.sol +0 -99
  517. package/contracts/product/ProductServiceManager.sol +0 -39
  518. package/contracts/shared/InitializableCustom.sol +0 -177
  519. package/contracts/shared/TokenTransferLib.sol +0 -60
@@ -2,18 +2,19 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
5
+ ALL, ACCOUNTING, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
- import {ComponentService} from "../shared/ComponentService.sol";
9
8
  import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
10
10
  import {IBundleService} from "../pool/IBundleService.sol";
11
+ import {IClaimService} from "../product/IClaimService.sol";
11
12
  import {IDistributionService} from "../distribution/IDistributionService.sol";
12
- import {InstanceService} from "../instance/InstanceService.sol";
13
13
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
14
  import {IPoolService} from "../pool/IPoolService.sol";
15
15
  import {IStakingService} from "../staking/IStakingService.sol";
16
16
  import {IRegistryService} from "./IRegistryService.sol";
17
+ import {IRiskService} from "../product/IRiskService.sol";
17
18
  import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
18
19
 
19
20
 
@@ -22,7 +23,7 @@ contract ServiceAuthorizationV3
22
23
  {
23
24
 
24
25
  constructor(string memory commitHash)
25
- ServiceAuthorization(commitHash)
26
+ ServiceAuthorization(commitHash, 3)
26
27
  {}
27
28
 
28
29
  function _setupDomains()
@@ -32,16 +33,17 @@ contract ServiceAuthorizationV3
32
33
  _authorizeDomain(REGISTRY(), address(1));
33
34
  _authorizeDomain(STAKING(), address(2));
34
35
  _authorizeDomain(INSTANCE(), address(3));
35
- _authorizeDomain(COMPONENT(), address(4));
36
- _authorizeDomain(DISTRIBUTION(), address(5));
37
- _authorizeDomain(PRICE(), address(6));
38
- _authorizeDomain(BUNDLE(), address(7));
39
- _authorizeDomain(POOL(), address(8));
40
- _authorizeDomain(ORACLE(), address(9));
41
- _authorizeDomain(PRODUCT(), address(10));
42
- _authorizeDomain(CLAIM(), address(11));
43
- _authorizeDomain(APPLICATION(), address(12));
44
- _authorizeDomain(POLICY(), address(13));
36
+ _authorizeDomain(ACCOUNTING(), address(4));
37
+ _authorizeDomain(COMPONENT(), address(5));
38
+ _authorizeDomain(DISTRIBUTION(), address(6));
39
+ _authorizeDomain(PRICE(), address(7));
40
+ _authorizeDomain(BUNDLE(), address(8));
41
+ _authorizeDomain(POOL(), address(9));
42
+ _authorizeDomain(ORACLE(), address(10));
43
+ _authorizeDomain(RISK(), address(11));
44
+ _authorizeDomain(POLICY(), address(12));
45
+ _authorizeDomain(CLAIM(), address(13));
46
+ _authorizeDomain(APPLICATION(), address(14));
45
47
  }
46
48
 
47
49
 
@@ -52,7 +54,11 @@ contract ServiceAuthorizationV3
52
54
  _setupIRegistryServiceAuthorization();
53
55
  _setupStakingServiceAuthorization();
54
56
  _setupInstanceServiceAuthorization();
57
+ _setupInstanceServiceAuthorization();
58
+ _setupAccountingServiceAuthorization();
55
59
  _setupComponentServiceAuthorization();
60
+ _setupClaimServiceAuthorization();
61
+ _setupRiskServiceAuthorization();
56
62
  _setupDistributionServiceAuthorization();
57
63
  _setupPoolServiceAuthorization();
58
64
  _setupBundleServiceAuthorization();
@@ -69,27 +75,21 @@ contract ServiceAuthorizationV3
69
75
  functions = _authorizeForService(REGISTRY(), APPLICATION());
70
76
  _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
71
77
 
72
- // functions = _authorizeForService(REGISTRY(), POOL());
73
- // _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
74
-
75
78
  functions = _authorizeForService(REGISTRY(), BUNDLE());
76
79
  _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
77
80
 
81
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
82
+ _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
83
+ _authorize(functions, IRegistryService.registerProductLinkedComponent.selector, "registerProductLinkedComponent");
84
+
78
85
  functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
- // _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
80
86
  _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
81
87
 
82
- functions = _authorizeForService(REGISTRY(), COMPONENT());
83
- _authorize(functions, IRegistryService.registerComponent.selector, "registerComponent");
84
-
85
88
  functions = _authorizeForService(REGISTRY(), INSTANCE());
86
89
  _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
87
90
 
88
91
  functions = _authorizeForService(REGISTRY(), STAKING());
89
92
  _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
90
-
91
- // functions = _authorizeForService(REGISTRY(), PRODUCT());
92
- // _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
93
93
  }
94
94
 
95
95
 
@@ -122,9 +122,48 @@ contract ServiceAuthorizationV3
122
122
  internal
123
123
  {
124
124
  IAccess.FunctionInfo[] storage functions;
125
+ functions = _authorizeForService(INSTANCE(), ALL());
126
+ _authorize(functions, IInstanceService.createInstance.selector, "createInstance");
127
+ _authorize(functions, IInstanceService.upgradeInstanceReader.selector, "upgradeInstanceReader");
128
+ _authorize(functions, IInstanceService.upgradeMasterInstanceReader.selector, "upgradeMasterInstanceReader");
129
+
130
+ _authorize(functions, IInstanceService.setStakingLockingPeriod.selector, "setStakingLockingPeriod");
131
+ _authorize(functions, IInstanceService.setStakingRewardRate.selector, "setStakingRewardRate");
132
+ _authorize(functions, IInstanceService.refillStakingRewardReserves.selector, "refillStakingRewardReserves");
133
+ _authorize(functions, IInstanceService.withdrawStakingRewardReserves.selector, "withdrawStakingRewardReserves");
134
+ }
135
+
136
+ /// @dev Accounting service function authorization.
137
+ function _setupAccountingServiceAuthorization()
138
+ internal
139
+ {
140
+ IAccess.FunctionInfo[] storage functions;
141
+
142
+ functions = _authorizeForService(ACCOUNTING(), BUNDLE());
143
+ _authorize(functions, IAccountingService.increaseBundleBalance.selector, "increaseBundleBalance");
144
+ _authorize(functions, IAccountingService.decreaseBundleBalance.selector, "decreaseBundleBalance");
145
+
146
+ functions = _authorizeForService(ACCOUNTING(), POOL());
147
+ _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
148
+
149
+ functions = _authorizeForService(ACCOUNTING(), COMPONENT());
150
+ _authorize(functions, IAccountingService.decreaseComponentFees.selector, "decreaseComponentFees");
151
+
152
+ functions = _authorizeForService(ACCOUNTING(), DISTRIBUTION());
153
+ _authorize(functions, IAccountingService.increaseDistributionBalance.selector, "increaseDistributionBalance");
154
+ _authorize(functions, IAccountingService.decreaseDistributionBalance.selector, "decreaseDistributionBalance");
155
+ _authorize(functions, IAccountingService.increaseDistributorBalance.selector, "increaseDistributorBalance");
156
+ _authorize(functions, IAccountingService.decreaseDistributorBalance.selector, "decreaseDistributorBalance");
157
+
158
+ functions = _authorizeForService(ACCOUNTING(), POLICY());
159
+ _authorize(functions, IAccountingService.increaseProductFees.selector, "increaseProductFees");
160
+
161
+ functions = _authorizeForService(ACCOUNTING(), POOL());
162
+ _authorize(functions, IAccountingService.increasePoolBalance.selector, "increasePoolBalance");
163
+ _authorize(functions, IAccountingService.decreasePoolBalance.selector, "decreasePoolBalance");
164
+ _authorize(functions, IAccountingService.increaseBundleBalanceForPool.selector, "increaseBundleBalanceForPool");
165
+ _authorize(functions, IAccountingService.decreaseBundleBalanceForPool.selector, "decreaseBundleBalanceForPool");
125
166
 
126
- functions = _authorizeForService(INSTANCE(), COMPONENT());
127
- _authorize(functions, IInstanceService.initializeAuthorization.selector, "initializeAuthorization");
128
167
  }
129
168
 
130
169
 
@@ -132,37 +171,36 @@ contract ServiceAuthorizationV3
132
171
  function _setupComponentServiceAuthorization()
133
172
  internal
134
173
  {
135
- // authz.authorizations = new DomainAuthorization[](4);
136
-
137
- // authz.authorizations[0].domain = POLICY();
138
- // _functions = new IAccessAdmin.Function[](1);
139
- // __authorize(ComponentService.increaseProductFees.selector, "increaseProductFees"));
140
- // authz.authorizations[0].functions = _functions;
141
-
142
- // authz.authorizations[1].domain = DISTRIBUTION();
143
- // _functions = new IAccessAdmin.Function[](1);
144
- // __authorize(ComponentService.increaseDistributionBalance.selector, "increaseDistributionBalance"));
145
- // authz.authorizations[1].functions = _functions;
146
-
147
- // authz.authorizations[2].domain = POOL();
148
- // _functions = new IAccessAdmin.Function[](1);
149
- // __authorize(ComponentService.increasePoolBalance.selector, "increasePoolBalance"));
150
- // authz.authorizations[2].functions = _functions;
151
-
152
- // authz.authorizations[3].domain = BUNDLE();
153
- // _functions = new IAccessAdmin.Function[](1);
154
- // __authorize(ComponentService.increaseBundleBalance.selector, "increaseBundleBalance"));
155
- // authz.authorizations[3].functions = _functions;
156
174
  }
157
175
 
158
176
  /// @dev Distribution service function authorization.
159
- function _setupDistributionServiceAuthorization()
177
+ function _setupRiskServiceAuthorization()
160
178
  internal
161
179
  {
162
180
  IAccess.FunctionInfo[] storage functions;
181
+ functions = _authorizeForService(RISK(), ALL());
182
+ _authorize(functions, IRiskService.createRisk.selector, "createRisk");
183
+ _authorize(functions, IRiskService.updateRisk.selector, "updateRisk");
184
+ _authorize(functions, IRiskService.updateRiskState.selector, "updateRiskState");
185
+ }
163
186
 
187
+ /// @dev Distribution service function authorization.
188
+ function _setupClaimServiceAuthorization()
189
+ internal
190
+ {
191
+ IAccess.FunctionInfo[] storage functions;
192
+ functions = _authorizeForService(CLAIM(), ALL());
193
+ _authorize(functions, IClaimService.submit.selector, "submit");
194
+ }
195
+
196
+ /// @dev Distribution service function authorization.
197
+ function _setupDistributionServiceAuthorization()
198
+ internal
199
+ {
200
+ IAccess.FunctionInfo[] storage functions;
164
201
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
202
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
203
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
166
204
  }
167
205
 
168
206
 
@@ -175,11 +213,13 @@ contract ServiceAuthorizationV3
175
213
  functions = _authorizeForService(POOL(), POLICY());
176
214
  _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
177
215
  _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
178
- _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
179
216
  _authorize(functions, IPoolService.processSale.selector, "processSale");
180
217
 
181
218
  functions = _authorizeForService(POOL(), CLAIM());
182
- _authorize(functions, IPoolService.reduceCollateral.selector, "reduceCollateral");
219
+ _authorize(functions, IPoolService.processPayout.selector, "processPayout");
220
+
221
+ functions = _authorizeForService(POOL(), ALL());
222
+ _authorize(functions, IPoolService.withdrawBundleFees.selector, "withdrawBundleFees");
183
223
  }
184
224
 
185
225
 
@@ -190,11 +230,18 @@ contract ServiceAuthorizationV3
190
230
  IAccess.FunctionInfo[] storage functions;
191
231
 
192
232
  functions = _authorizeForService(BUNDLE(), POOL());
193
- _authorize(functions, IBundleService.create.selector, "create");
233
+ _authorize(functions, IBundleService.stake.selector, "stake");
234
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
194
235
  _authorize(functions, IBundleService.close.selector, "close");
195
236
  _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
196
237
  _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
197
- _authorize(functions, IBundleService.unlinkPolicy.selector, "unlinkPolicy");
238
+
239
+ functions = _authorizeForService(BUNDLE(), ALL());
240
+ _authorize(functions, IBundleService.create.selector, "create");
241
+ _authorize(functions, IBundleService.extend.selector, "extend");
242
+ _authorize(functions, IBundleService.lock.selector, "lock");
243
+ _authorize(functions, IBundleService.unlock.selector, "unlock");
244
+ _authorize(functions, IBundleService.setFee.selector, "setFee");
198
245
  }
199
246
  }
200
247
 
@@ -8,15 +8,13 @@ import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165C
8
8
  import {REGISTRY} from "../type/ObjectType.sol";
9
9
  import {VersionPart} from "../type/Version.sol";
10
10
 
11
- import {IRegisterable} from "../shared/IRegisterable.sol";
12
-
13
11
  import {IRegistry} from "./IRegistry.sol";
14
12
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
15
13
  import {ReleaseRegistry} from "./ReleaseRegistry.sol";
16
14
  import {RegistryAdmin} from "./RegistryAdmin.sol";
17
15
 
18
-
19
- /// @title contract to register token per GIF major release.
16
+ /// @dev The TokenRegistry contract is used to whitelist/manage ERC-20 of tokens per major release.
17
+ /// Only whitelisted tokens can be used as default tokens for products, distribution and pools components.
20
18
  contract TokenRegistry is
21
19
  AccessManaged,
22
20
  IRegistryLinked
@@ -68,7 +66,7 @@ contract TokenRegistry is
68
66
  setAuthority(authority);
69
67
 
70
68
  _registry = registry;
71
- _dipToken = dipToken;
69
+ _dipToken = _verifyOnchainToken(address(dipToken));
72
70
 
73
71
  // register dip token
74
72
  uint256 chainId = block.chainid;
@@ -212,13 +210,13 @@ contract TokenRegistry is
212
210
  return _tokenInfo[chainId][token].chainId > 0;
213
211
  }
214
212
 
215
- /// @dev returns true iff both the token is active for the specfied version and the global token state is active
216
- function isActive(uint256 chainId, address token, VersionPart majorVersion) external view returns (bool) {
213
+ /// @dev returns true iff both the token is active for the specfied release and the global token state is active
214
+ function isActive(uint256 chainId, address token, VersionPart release) external view returns (bool) {
217
215
  if(!_tokenInfo[chainId][token].active) {
218
216
  return false;
219
217
  }
220
218
 
221
- return _active[chainId][token][majorVersion];
219
+ return _active[chainId][token][release];
222
220
  }
223
221
 
224
222
  function getDipTokenAddress() external view returns (address) {
@@ -1,22 +1,25 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
- import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
6
 
9
- import {Amount, AmountLib} from "../type/Amount.sol";
10
7
  import {IComponent} from "./IComponent.sol";
11
8
  import {IComponents} from "../instance/module/IComponents.sol";
12
- import {NftId, NftIdLib} from "../type/NftId.sol";
13
- import {ObjectType} from "../type/ObjectType.sol";
9
+ import {IComponentService} from "./IComponentService.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRelease} from "../registry/IRelease.sol";
12
+
13
+ import {Amount, AmountLib} from "../type/Amount.sol";
14
+ import {ContractLib} from "./ContractLib.sol";
15
+ import {NftId} from "../type/NftId.sol";
16
+ import {ObjectType, COMPONENT, STAKING} from "../type/ObjectType.sol";
14
17
  import {Registerable} from "../shared/Registerable.sol";
15
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
- import {VersionPartLib} from "../type/Version.sol";
19
+ import {Version, VersionLib, VersionPart} from "../type/Version.sol";
20
+
17
21
 
18
22
  abstract contract Component is
19
- AccessManagedUpgradeable,
20
23
  Registerable,
21
24
  IComponent
22
25
  {
@@ -26,9 +29,9 @@ abstract contract Component is
26
29
  struct ComponentStorage {
27
30
  string _name; // unique (per instance) component name
28
31
  IERC20Metadata _token; // token for this component
29
- address _wallet;
30
32
  bool _isInterceptor;
31
33
  bytes _data;
34
+ IComponentService _componentService;
32
35
  }
33
36
 
34
37
 
@@ -39,12 +42,6 @@ abstract contract Component is
39
42
  _;
40
43
  }
41
44
 
42
- modifier onlyNftOwner(NftId nftId) {
43
- if(msg.sender != getRegistry().ownerOf(nftId)) {
44
- revert ErrorNftOwnableNotOwner(msg.sender);
45
- }
46
- _;
47
- }
48
45
 
49
46
  function _getComponentStorage() private pure returns (ComponentStorage storage $) {
50
47
  assembly {
@@ -52,7 +49,8 @@ abstract contract Component is
52
49
  }
53
50
  }
54
51
 
55
- function initializeComponent(
52
+
53
+ function _initializeComponent(
56
54
  address authority,
57
55
  address registry,
58
56
  NftId parentNftId,
@@ -64,122 +62,63 @@ abstract contract Component is
64
62
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
65
63
  bytes memory componentData // other component specific data
66
64
  )
67
- public
65
+ internal
68
66
  virtual
69
67
  onlyInitializing()
70
68
  {
71
- initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
72
- __AccessManaged_init(authority);
69
+ address tokenRegistry = IRegistry(registry).getTokenRegistryAddress();
70
+ VersionPart release = IRelease(authority).getRelease();
73
71
 
74
- if (token == address(0)) {
75
- revert ErrorComponentTokenAddressZero();
72
+ // special case for staking: component intitialization happens before
73
+ // GIF core contract setup is complete. at that time token registry
74
+ // is not yet available. therefore we skip the check for staking.
75
+ if (componentType != STAKING()) {
76
+
77
+ // check if provided token is whitelisted and active
78
+ if (!ContractLib.isActiveToken(tokenRegistry, token, block.chainid, release)) {
79
+ revert ErrorComponentTokenInvalid(token);
80
+ }
76
81
  }
77
82
 
78
83
  if (bytes(name).length == 0) {
79
84
  revert ErrorComponentNameLengthZero();
80
85
  }
81
86
 
87
+ __Registerable_init(
88
+ authority,
89
+ registry,
90
+ parentNftId,
91
+ componentType,
92
+ isInterceptor,
93
+ initialOwner,
94
+ registryData);
95
+
82
96
  // set component state
83
97
  ComponentStorage storage $ = _getComponentStorage();
84
98
  $._name = name;
85
99
  $._token = IERC20Metadata(token);
86
- $._wallet = address(this);
87
100
  $._isInterceptor = isInterceptor;
88
101
  $._data = componentData;
102
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
89
103
 
90
- registerInterface(type(IAccessManaged).interfaceId);
91
- registerInterface(type(IComponent).interfaceId);
104
+ _registerInterface(type(IAccessManaged).interfaceId);
105
+ _registerInterface(type(IComponent).interfaceId);
92
106
  }
93
107
 
94
108
 
95
- function approveTokenHandler(Amount spendingLimitAmount)
96
- external
97
- virtual
98
- onlyOwner
99
- {
100
- approveTokenHandler(address(getToken()), spendingLimitAmount);
101
- }
102
-
103
- function approveTokenHandler(address token, Amount spendingLimitAmount)
104
- public
105
- virtual
106
- onlyOwner
107
- {
108
- if(getWallet() != address(this)) {
109
- revert ErrorComponentWalletNotComponent();
110
- }
111
-
112
- emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
113
-
114
- IERC20Metadata(token).approve(
115
- address(getTokenHandler()),
116
- spendingLimitAmount.toInt());
117
- }
118
-
119
- function setWallet(address newWallet)
120
- external
121
- virtual
122
- override
123
- onlyOwner
124
- {
125
- // checks
126
- address currentWallet = getWallet();
127
- IERC20Metadata token = getToken();
128
- uint256 currentBalance = token.balanceOf(currentWallet);
129
-
130
- if (currentBalance > 0) {
131
- if (currentWallet == address(this)) {
132
- // move tokens from component smart contract to external wallet
133
- } else {
134
- // move tokens from external wallet to component smart contract or another external wallet
135
- uint256 allowance = token.allowance(currentWallet, address(getTokenHandler()));
136
- if (allowance < currentBalance) {
137
- revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
138
- }
139
- }
140
- }
141
-
142
- // effects
143
- _setWallet(newWallet);
144
-
145
- // interactions
146
- if (currentBalance > 0) {
147
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
148
-
149
- // transfer tokens from current wallet to new wallet
150
- if (currentWallet == address(this)) {
151
- // transferFrom requires self allowance too
152
- token.approve(address(getTokenHandler()), currentBalance);
153
- }
154
-
155
- getTokenHandler().transfer(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
156
- }
157
- }
158
-
159
-
160
- /// @dev callback function for nft mints
161
- /// may only be called by chain nft contract.
162
- /// override internal function _nftMint to implement custom behaviour
163
- function nftMint(address to, uint256 tokenId)
164
- external
165
- onlyChainNft
166
- {
167
- _nftMint(to, tokenId);
168
- }
169
-
170
109
  /// @dev callback function for nft transfers
171
110
  /// may only be called by chain nft contract.
172
111
  /// override internal function _nftTransferFrom to implement custom behaviour
173
- function nftTransferFrom(address from, address to, uint256 tokenId)
112
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator)
174
113
  external
175
- onlyChainNft
114
+ onlyChainNft()
176
115
  {
177
- _nftTransferFrom(from, to, tokenId);
116
+ _nftTransferFrom(from, to, tokenId, operator);
178
117
  }
179
118
 
180
119
 
181
120
  function getWallet() public view virtual returns (address walletAddress) {
182
- return getComponentInfo().wallet;
121
+ return getTokenHandler().getWallet();
183
122
  }
184
123
 
185
124
  function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
@@ -194,6 +133,10 @@ abstract contract Component is
194
133
  return getComponentInfo().name;
195
134
  }
196
135
 
136
+ function getVersion() public view virtual returns (Version version) {
137
+ return VersionLib.toVersion(1, 0, 0);
138
+ }
139
+
197
140
  function getComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
198
141
  if (isRegistered()) {
199
142
  return _getComponentInfo();
@@ -219,20 +162,26 @@ abstract contract Component is
219
162
 
220
163
 
221
164
  function isRegistered() public virtual view returns (bool) {
222
- return getRegistry().getNftId(address(this)).gtz();
165
+ return getRegistry().getNftIdForAddress(address(this)).gtz();
223
166
  }
224
167
 
225
168
 
226
- /// @dev internal function for nft transfers.
227
- /// handling logic that deals with nft transfers need to overwrite this function
228
- function _nftMint(address to, uint256 tokenId)
169
+ /// @dev Approves token hanlder to spend up to the specified amount of tokens.
170
+ /// Reverts if component wallet is not token handler itself.
171
+ /// Only component owner (nft holder) is authorizes to call this function.
172
+ function _approveTokenHandler(IERC20Metadata token, Amount amount)
229
173
  internal
230
174
  virtual
231
- { }
175
+ {
176
+ _getComponentStorage()._componentService.approveTokenHandler(
177
+ token,
178
+ amount);
179
+ }
180
+
232
181
 
233
182
  /// @dev internal function for nft transfers.
234
183
  /// handling logic that deals with nft transfers need to overwrite this function
235
- function _nftTransferFrom(address from, address to, uint256 tokenId)
184
+ function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
236
185
  internal
237
186
  virtual
238
187
  { }
@@ -240,21 +189,20 @@ abstract contract Component is
240
189
 
241
190
  /// @dev depending on the source of the component information this function needs to be overwritten.
242
191
  /// eg for instance linked components that externally store this information with the instance store contract
243
- function _setWallet(address newWallet) internal virtual {
244
- ComponentStorage storage $ = _getComponentStorage();
245
- address currentWallet = $._wallet;
246
-
247
- if (newWallet == address(0)) {
248
- revert ErrorComponentWalletAddressZero();
249
- }
250
-
251
- if (newWallet == currentWallet) {
252
- revert ErrorComponentWalletAddressIsSameAsCurrent();
253
- }
254
-
255
- $._wallet = newWallet;
256
- emit LogComponentWalletAddressChanged(currentWallet, newWallet);
192
+ function _setWallet(
193
+ address newWallet
194
+ )
195
+ internal
196
+ virtual
197
+ {
198
+ _getComponentStorage()._componentService.setWallet(newWallet);
199
+ }
257
200
 
201
+ function _setLocked(bool locked)
202
+ internal
203
+ virtual
204
+ {
205
+ _getComponentStorage()._componentService.setLockedFromComponent(address(this), locked);
258
206
  }
259
207
 
260
208
 
@@ -265,17 +213,15 @@ abstract contract Component is
265
213
 
266
214
  return IComponents.ComponentInfo({
267
215
  name: $._name,
268
- productNftId: NftIdLib.zero(),
269
216
  token: $._token,
270
217
  tokenHandler: TokenHandler(address(0)),
271
- wallet: $._wallet, // initial wallet address
272
218
  data: $._data // user specific component data
273
219
  });
274
220
  }
275
221
 
276
- function _approveTokenHandler(uint256 amount) internal {
277
- ComponentStorage storage $ = _getComponentStorage();
278
- $._token.approve(address(getComponentInfo().tokenHandler), amount);
222
+ /// @dev returns the service address for the specified domain
223
+ /// gets address via lookup from registry using the major version form the linked instance
224
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
225
+ return getRegistry().getServiceAddress(domain, getRelease());
279
226
  }
280
-
281
227
  }