@etherisc/gif-next 0.0.2-c37bcc5-708 → 0.0.2-c38863c-705

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 (580) hide show
  1. package/README.md +75 -9
  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 +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1379 -0
  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 +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1434 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +542 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +533 -596
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +350 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1322 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +589 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +144 -544
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +419 -259
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +154 -108
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +201 -261
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +256 -62
  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 +1475 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +188 -107
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +226 -117
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +208 -236
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1462 -241
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +661 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1044 -316
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +247 -275
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +105 -95
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +614 -538
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  105. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  107. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +959 -0
  109. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +569 -0
  111. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +141 -126
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +81 -10
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +127 -398
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +177 -177
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +129 -83
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1252 -0
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +589 -0
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +350 -194
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +148 -94
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -28
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +132 -379
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +476 -311
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +124 -662
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +660 -518
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -93
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +151 -172
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -90
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1161 -0
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +589 -0
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +438 -220
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +148 -110
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +106 -8
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +320 -15
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +377 -103
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +148 -82
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +260 -237
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  168. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +79 -7
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +480 -293
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +148 -94
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +239 -292
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +122 -116
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +258 -536
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -0
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +359 -55
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +84 -151
  191. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  193. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  195. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  196. package/artifacts/contracts/registry/Registry.sol/Registry.json +589 -116
  197. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1677 -156
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  200. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +132 -278
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +101 -75
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  204. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  206. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  208. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  210. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  212. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +5 -5
  213. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  214. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +583 -502
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  218. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +138 -110
  219. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +63 -104
  221. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  229. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  231. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +554 -218
  233. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +127 -123
  235. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -3
  237. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  239. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  241. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  243. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  245. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IService.sol/IService.json +67 -1
  248. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  249. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  250. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  251. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +112 -351
  252. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  253. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -88
  254. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  256. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  257. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  258. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  260. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  262. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  263. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  264. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  265. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  266. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  267. package/artifacts/contracts/shared/Service.sol/Service.json +63 -104
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  269. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  272. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  274. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  275. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
  276. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +125 -22
  278. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +97 -101
  280. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  281. package/artifacts/contracts/staking/Staking.sol/Staking.json +202 -398
  282. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  284. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  285. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +120 -109
  286. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  288. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  289. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +161 -184
  290. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -90
  292. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +241 -147
  294. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  295. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  296. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  297. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  298. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  300. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  302. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  304. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  306. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  307. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  308. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  309. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  310. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  311. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  312. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  314. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  315. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  316. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +136 -2
  318. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  320. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  322. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  324. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  326. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +283 -6
  328. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  330. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  332. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  334. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  336. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  338. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  340. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -2
  342. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  344. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -2
  346. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  347. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  348. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  349. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  350. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  351. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  352. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  353. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  354. package/contracts/accounting/AccountingService.sol +262 -0
  355. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  356. package/contracts/accounting/IAccountingService.sol +45 -0
  357. package/contracts/authorization/AccessAdmin.sol +689 -0
  358. package/contracts/authorization/AccessManagerCloneable.sol +149 -0
  359. package/contracts/authorization/Authorization.sol +337 -0
  360. package/contracts/authorization/IAccess.sol +49 -0
  361. package/contracts/authorization/IAccessAdmin.sol +143 -0
  362. package/contracts/authorization/IAuthorization.sol +74 -0
  363. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  364. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  365. package/contracts/distribution/BasicDistribution.sol +141 -0
  366. package/contracts/distribution/BasicDistributionAuthorization.sol +60 -0
  367. package/contracts/distribution/Distribution.sol +153 -125
  368. package/contracts/distribution/DistributionService.sol +175 -115
  369. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  370. package/contracts/distribution/IDistributionComponent.sol +26 -40
  371. package/contracts/distribution/IDistributionService.sol +42 -22
  372. package/contracts/examples/fire/DamageLevel.sol +59 -0
  373. package/contracts/examples/fire/FirePool.sol +90 -0
  374. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  375. package/contracts/examples/fire/FireProduct.sol +437 -0
  376. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  377. package/contracts/examples/fire/FireUSD.sol +26 -0
  378. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  379. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  380. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  381. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  382. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  383. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  384. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  385. package/contracts/instance/BundleSet.sol +130 -0
  386. package/contracts/instance/IInstance.sol +34 -46
  387. package/contracts/instance/IInstanceService.sol +31 -40
  388. package/contracts/instance/Instance.sol +143 -132
  389. package/contracts/instance/InstanceAdmin.sol +346 -240
  390. package/contracts/instance/InstanceAuthorizationV3.sol +213 -0
  391. package/contracts/instance/InstanceReader.sol +295 -48
  392. package/contracts/instance/InstanceService.sol +210 -168
  393. package/contracts/instance/InstanceServiceManager.sol +8 -13
  394. package/contracts/instance/InstanceStore.sol +35 -18
  395. package/contracts/instance/RiskSet.sol +118 -0
  396. package/contracts/instance/base/BalanceStore.sol +11 -6
  397. package/contracts/instance/base/Cloneable.sol +2 -25
  398. package/contracts/instance/base/ObjectCounter.sol +1 -2
  399. package/contracts/instance/base/ObjectLifecycle.sol +113 -0
  400. package/contracts/instance/base/ObjectSet.sol +77 -0
  401. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  402. package/contracts/instance/module/IBundle.sol +1 -1
  403. package/contracts/instance/module/IComponents.sol +14 -15
  404. package/contracts/instance/module/IDistribution.sol +2 -2
  405. package/contracts/instance/module/IPolicy.sol +26 -25
  406. package/contracts/instance/module/IRisk.sol +3 -0
  407. package/contracts/mock/Dip.sol +1 -1
  408. package/contracts/oracle/BasicOracle.sol +47 -0
  409. package/contracts/oracle/BasicOracleAuthorization.sol +37 -0
  410. package/contracts/oracle/IOracle.sol +16 -0
  411. package/contracts/oracle/IOracleComponent.sol +2 -1
  412. package/contracts/oracle/IOracleService.sol +2 -1
  413. package/contracts/oracle/Oracle.sol +64 -53
  414. package/contracts/oracle/OracleService.sol +114 -81
  415. package/contracts/oracle/OracleServiceManager.sol +8 -11
  416. package/contracts/pool/BasicPool.sol +175 -0
  417. package/contracts/pool/BasicPoolAuthorization.sol +76 -0
  418. package/contracts/pool/BundleService.sol +207 -108
  419. package/contracts/pool/BundleServiceManager.sol +8 -11
  420. package/contracts/pool/IBundleService.sol +31 -22
  421. package/contracts/pool/IPoolComponent.sol +20 -70
  422. package/contracts/pool/IPoolService.sol +90 -75
  423. package/contracts/pool/Pool.sol +209 -163
  424. package/contracts/pool/PoolLib.sol +216 -0
  425. package/contracts/pool/PoolService.sol +553 -249
  426. package/contracts/pool/PoolServiceManager.sol +6 -9
  427. package/contracts/product/ApplicationService.sol +88 -83
  428. package/contracts/product/ApplicationServiceManager.sol +6 -6
  429. package/contracts/product/BasicProduct.sol +51 -0
  430. package/contracts/product/BasicProductAuthorization.sol +56 -0
  431. package/contracts/product/ClaimService.sol +370 -180
  432. package/contracts/product/ClaimServiceManager.sol +6 -6
  433. package/contracts/product/IApplicationService.sol +6 -2
  434. package/contracts/product/IClaimService.sol +44 -8
  435. package/contracts/product/IPolicyService.sol +53 -36
  436. package/contracts/product/IPricingService.sol +10 -10
  437. package/contracts/product/IProductComponent.sol +29 -9
  438. package/contracts/product/{IProductService.sol → IRiskService.sol} +6 -9
  439. package/contracts/product/PolicyService.sol +481 -274
  440. package/contracts/product/PolicyServiceLib.sol +65 -0
  441. package/contracts/product/PolicyServiceManager.sol +6 -9
  442. package/contracts/product/PricingService.sol +69 -66
  443. package/contracts/product/PricingServiceManager.sol +6 -9
  444. package/contracts/product/Product.sol +231 -139
  445. package/contracts/product/RiskService.sol +144 -0
  446. package/contracts/product/RiskServiceManager.sol +39 -0
  447. package/contracts/registry/ChainNft.sol +72 -40
  448. package/contracts/registry/IRegistry.sol +74 -32
  449. package/contracts/registry/IRegistryService.sol +3 -10
  450. package/contracts/registry/IRelease.sol +26 -0
  451. package/contracts/registry/ITransferInterceptor.sol +1 -2
  452. package/contracts/registry/Registry.sol +368 -214
  453. package/contracts/registry/RegistryAdmin.sol +292 -175
  454. package/contracts/registry/RegistryService.sol +46 -71
  455. package/contracts/registry/RegistryServiceManager.sol +5 -10
  456. package/contracts/registry/ReleaseAdmin.sol +245 -0
  457. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  458. package/contracts/registry/ReleaseRegistry.sol +511 -0
  459. package/contracts/registry/ServiceAuthorizationV3.sol +247 -0
  460. package/contracts/registry/TokenRegistry.sol +8 -10
  461. package/contracts/shared/Component.sol +74 -128
  462. package/contracts/shared/ComponentService.sol +458 -384
  463. package/contracts/shared/ComponentServiceManager.sol +10 -7
  464. package/contracts/shared/ComponentVerifyingService.sol +29 -18
  465. package/contracts/shared/ContractLib.sol +253 -0
  466. package/contracts/shared/IComponent.sol +8 -17
  467. package/contracts/shared/IComponentService.sol +49 -39
  468. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  469. package/contracts/shared/IKeyValueStore.sol +1 -0
  470. package/contracts/shared/ILifecycle.sol +3 -2
  471. package/contracts/shared/INftOwnable.sol +2 -0
  472. package/contracts/shared/IPolicyHolder.sol +12 -22
  473. package/contracts/shared/IRegisterable.sol +23 -1
  474. package/contracts/shared/IService.sol +10 -5
  475. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  476. package/contracts/shared/InstanceLinkedComponent.sol +96 -43
  477. package/contracts/shared/KeyValueStore.sol +7 -3
  478. package/contracts/shared/Lifecycle.sol +30 -72
  479. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  480. package/contracts/shared/NftOwnable.sol +31 -11
  481. package/contracts/shared/PolicyHolder.sol +17 -57
  482. package/contracts/shared/Registerable.sol +55 -21
  483. package/contracts/shared/RegistryLinked.sol +9 -14
  484. package/contracts/shared/Service.sol +28 -40
  485. package/contracts/shared/TokenHandler.sol +309 -26
  486. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  487. package/contracts/staking/IStaking.sol +8 -11
  488. package/contracts/staking/IStakingService.sol +30 -14
  489. package/contracts/staking/StakeManagerLib.sol +70 -25
  490. package/contracts/staking/Staking.sol +122 -147
  491. package/contracts/staking/StakingLifecycle.sol +23 -0
  492. package/contracts/staking/StakingManager.sol +10 -12
  493. package/contracts/staking/StakingReader.sol +24 -21
  494. package/contracts/staking/StakingService.sol +105 -81
  495. package/contracts/staking/StakingServiceManager.sol +8 -8
  496. package/contracts/staking/StakingStore.sol +93 -60
  497. package/contracts/staking/TargetManagerLib.sol +7 -3
  498. package/contracts/type/Amount.sol +27 -5
  499. package/contracts/type/Blocknumber.sol +7 -1
  500. package/contracts/type/ClaimId.sol +6 -1
  501. package/contracts/type/Key32.sol +2 -2
  502. package/contracts/type/Key32Set.sol +62 -0
  503. package/contracts/type/NftId.sol +7 -0
  504. package/contracts/type/ObjectType.sol +196 -61
  505. package/contracts/type/PayoutId.sol +10 -10
  506. package/contracts/type/Referral.sol +1 -0
  507. package/contracts/type/RiskId.sol +38 -6
  508. package/contracts/type/RoleId.sol +117 -81
  509. package/contracts/type/Seconds.sol +21 -1
  510. package/contracts/type/Selector.sol +107 -0
  511. package/contracts/type/StateId.sol +15 -1
  512. package/contracts/type/String.sol +53 -0
  513. package/contracts/type/Timestamp.sol +10 -5
  514. package/contracts/type/UFixed.sol +40 -121
  515. package/contracts/type/Version.sol +18 -6
  516. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  517. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  518. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  519. package/package.json +9 -6
  520. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  521. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  522. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  523. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  524. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  526. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  528. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  529. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  530. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  531. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  532. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  533. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  534. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  535. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  536. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  537. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  538. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  539. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  540. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  541. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  542. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  543. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  544. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  545. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  546. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  547. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  548. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  549. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  550. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  551. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  552. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  553. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  554. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  555. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  556. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  557. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  558. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  559. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  560. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  561. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  562. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  563. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  564. package/contracts/instance/BundleManager.sol +0 -126
  565. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  566. package/contracts/instance/base/ObjectManager.sol +0 -82
  567. package/contracts/instance/module/IAccess.sol +0 -46
  568. package/contracts/product/ProductService.sol +0 -124
  569. package/contracts/product/ProductServiceManager.sol +0 -42
  570. package/contracts/registry/ReleaseManager.sol +0 -600
  571. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  572. package/contracts/shared/AccessManagerCustom.sol +0 -736
  573. package/contracts/shared/AccessManagerExtended.sol +0 -470
  574. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  575. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  576. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  577. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  578. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  579. package/contracts/shared/InitializableCustom.sol +0 -177
  580. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,247 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {
5
+ ALL, ACCOUNTING, REGISTRY, RISK, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
+ } from "../../contracts/type/ObjectType.sol";
7
+
8
+ import {IAccess} from "../authorization/IAccess.sol";
9
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
10
+ import {IBundleService} from "../pool/IBundleService.sol";
11
+ import {IClaimService} from "../product/IClaimService.sol";
12
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IPoolService} from "../pool/IPoolService.sol";
15
+ import {IStakingService} from "../staking/IStakingService.sol";
16
+ import {IRegistryService} from "./IRegistryService.sol";
17
+ import {IRiskService} from "../product/IRiskService.sol";
18
+ import {ServiceAuthorization} from "../authorization/ServiceAuthorization.sol";
19
+
20
+
21
+ contract ServiceAuthorizationV3
22
+ is ServiceAuthorization
23
+ {
24
+
25
+ constructor(string memory commitHash)
26
+ ServiceAuthorization(commitHash, 3)
27
+ {}
28
+
29
+ function _setupDomains()
30
+ internal
31
+ override
32
+ {
33
+ _authorizeDomain(REGISTRY(), address(1));
34
+ _authorizeDomain(STAKING(), address(2));
35
+ _authorizeDomain(INSTANCE(), address(3));
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));
47
+ }
48
+
49
+
50
+ function _setupDomainAuthorizations()
51
+ internal
52
+ override
53
+ {
54
+ _setupIRegistryServiceAuthorization();
55
+ _setupStakingServiceAuthorization();
56
+ _setupInstanceServiceAuthorization();
57
+ _setupInstanceServiceAuthorization();
58
+ _setupAccountingServiceAuthorization();
59
+ _setupComponentServiceAuthorization();
60
+ _setupClaimServiceAuthorization();
61
+ _setupRiskServiceAuthorization();
62
+ _setupDistributionServiceAuthorization();
63
+ _setupPoolServiceAuthorization();
64
+ _setupBundleServiceAuthorization();
65
+ }
66
+
67
+
68
+ /// @dev registry service authorization.
69
+ /// authorized functions MUST be implemented with a restricted modifier
70
+ function _setupIRegistryServiceAuthorization()
71
+ internal
72
+ {
73
+ IAccess.FunctionInfo[] storage functions;
74
+
75
+ functions = _authorizeForService(REGISTRY(), APPLICATION());
76
+ _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
77
+
78
+ functions = _authorizeForService(REGISTRY(), BUNDLE());
79
+ _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
80
+
81
+ functions = _authorizeForService(REGISTRY(), COMPONENT());
82
+ _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
83
+ _authorize(functions, IRegistryService.registerProductLinkedComponent.selector, "registerProductLinkedComponent");
84
+
85
+ functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
86
+ _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
87
+
88
+ functions = _authorizeForService(REGISTRY(), INSTANCE());
89
+ _authorize(functions, IRegistryService.registerInstance.selector, "registerInstance");
90
+
91
+ functions = _authorizeForService(REGISTRY(), STAKING());
92
+ _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
93
+ }
94
+
95
+
96
+ /// @dev staking service authorization.
97
+ /// authorized functions MUST be implemented with a restricted modifier
98
+ function _setupStakingServiceAuthorization()
99
+ internal
100
+ {
101
+ IAccess.FunctionInfo[] storage functions;
102
+
103
+ functions = _authorizeForService(STAKING(), INSTANCE());
104
+ _authorize(functions, IStakingService.createInstanceTarget.selector, "createInstanceTarget");
105
+ _authorize(functions, IStakingService.setInstanceLockingPeriod.selector, "setInstanceLockingPeriod");
106
+ _authorize(functions, IStakingService.setInstanceRewardRate.selector, "setInstanceRewardRate");
107
+ _authorize(functions, IStakingService.refillInstanceRewardReserves.selector, "refillInstanceRewardReserves");
108
+ _authorize(functions, IStakingService.withdrawInstanceRewardReserves.selector, "withdrawInstanceRewardReserves");
109
+
110
+ functions = _authorizeForService(STAKING(), ALL());
111
+ _authorize(functions, IStakingService.create.selector, "create");
112
+ _authorize(functions, IStakingService.stake.selector, "stake");
113
+ _authorize(functions, IStakingService.restakeToNewTarget.selector, "restakeToNewTarget");
114
+ _authorize(functions, IStakingService.updateRewards.selector, "updateRewards");
115
+ _authorize(functions, IStakingService.claimRewards.selector, "claimRewards");
116
+ _authorize(functions, IStakingService.unstake.selector, "unstake");
117
+ }
118
+
119
+
120
+ /// @dev Instance service function authorization.
121
+ function _setupInstanceServiceAuthorization()
122
+ internal
123
+ {
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");
166
+
167
+ }
168
+
169
+
170
+ /// @dev Component service function authorization.
171
+ function _setupComponentServiceAuthorization()
172
+ internal
173
+ {
174
+ }
175
+
176
+ /// @dev Distribution service function authorization.
177
+ function _setupRiskServiceAuthorization()
178
+ internal
179
+ {
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
+ }
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;
201
+ functions = _authorizeForService(DISTRIBUTION(), POLICY());
202
+ _authorize(functions, IDistributionService.processSale.selector, "processSale");
203
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
204
+ }
205
+
206
+
207
+ /// @dev Pool service function authorization.
208
+ function _setupPoolServiceAuthorization()
209
+ internal
210
+ {
211
+ IAccess.FunctionInfo[] storage functions;
212
+
213
+ functions = _authorizeForService(POOL(), POLICY());
214
+ _authorize(functions, IPoolService.lockCollateral.selector, "lockCollateral");
215
+ _authorize(functions, IPoolService.releaseCollateral.selector, "releaseCollateral");
216
+ _authorize(functions, IPoolService.processSale.selector, "processSale");
217
+
218
+ functions = _authorizeForService(POOL(), CLAIM());
219
+ _authorize(functions, IPoolService.processPayout.selector, "processPayout");
220
+
221
+ functions = _authorizeForService(POOL(), ALL());
222
+ _authorize(functions, IPoolService.withdrawBundleFees.selector, "withdrawBundleFees");
223
+ }
224
+
225
+
226
+ /// @dev Instance service function authorization.
227
+ function _setupBundleServiceAuthorization()
228
+ internal
229
+ {
230
+ IAccess.FunctionInfo[] storage functions;
231
+
232
+ functions = _authorizeForService(BUNDLE(), POOL());
233
+ _authorize(functions, IBundleService.stake.selector, "stake");
234
+ _authorize(functions, IBundleService.unstake.selector, "unstake");
235
+ _authorize(functions, IBundleService.close.selector, "close");
236
+ _authorize(functions, IBundleService.lockCollateral.selector, "lockCollateral");
237
+ _authorize(functions, IBundleService.releaseCollateral.selector, "releaseCollateral");
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");
245
+ }
246
+ }
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
- import {ReleaseManager} from "./ReleaseManager.sol";
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
@@ -49,7 +47,7 @@ contract TokenRegistry is
49
47
  TokenInfo [] internal _token;
50
48
 
51
49
  IRegistry internal _registry;
52
- ReleaseManager internal _releaseManager;
50
+ ReleaseRegistry internal _releaseRegistry;
53
51
  IERC20Metadata internal _dipToken;
54
52
 
55
53
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
@@ -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} 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,10 +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
- TokenHandler _tokenHandler;
30
- address _wallet;
31
32
  bool _isInterceptor;
32
33
  bytes _data;
34
+ IComponentService _componentService;
33
35
  }
34
36
 
35
37
 
@@ -47,7 +49,8 @@ abstract contract Component is
47
49
  }
48
50
  }
49
51
 
50
- function initializeComponent(
52
+
53
+ function _initializeComponent(
51
54
  address authority,
52
55
  address registry,
53
56
  NftId parentNftId,
@@ -59,122 +62,63 @@ abstract contract Component is
59
62
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
60
63
  bytes memory componentData // other component specific data
61
64
  )
62
- public
65
+ internal
63
66
  virtual
64
67
  onlyInitializing()
65
68
  {
66
- initializeRegisterable(registry, parentNftId, componentType, isInterceptor, initialOwner, registryData);
67
- __AccessManaged_init(authority);
69
+ address tokenRegistry = IRegistry(registry).getTokenRegistryAddress();
70
+ VersionPart release = IRelease(authority).getRelease();
71
+
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()) {
68
76
 
69
- if (token == address(0)) {
70
- revert ErrorComponentTokenAddressZero();
77
+ // check if provided token is whitelisted and active
78
+ if (!ContractLib.isActiveToken(tokenRegistry, token, block.chainid, release)) {
79
+ revert ErrorComponentTokenInvalid(token);
80
+ }
71
81
  }
72
82
 
73
83
  if (bytes(name).length == 0) {
74
84
  revert ErrorComponentNameLengthZero();
75
85
  }
76
86
 
87
+ __Registerable_init(
88
+ authority,
89
+ registry,
90
+ parentNftId,
91
+ componentType,
92
+ isInterceptor,
93
+ initialOwner,
94
+ registryData);
95
+
77
96
  // set component state
78
97
  ComponentStorage storage $ = _getComponentStorage();
79
98
  $._name = name;
80
99
  $._token = IERC20Metadata(token);
81
- $._tokenHandler = TokenHandler(address(0));
82
- $._wallet = address(this);
83
100
  $._isInterceptor = isInterceptor;
84
101
  $._data = componentData;
102
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
85
103
 
86
- registerInterface(type(IAccessManaged).interfaceId);
87
- registerInterface(type(IComponent).interfaceId);
88
- }
89
-
90
-
91
- function approveTokenHandler(Amount spendingLimitAmount)
92
- external
93
- virtual
94
- onlyOwner
95
- {
96
- approveTokenHandler(address(getToken()), spendingLimitAmount);
97
- }
98
-
99
- function approveTokenHandler(address token, Amount spendingLimitAmount)
100
- public
101
- virtual
102
- onlyOwner
103
- {
104
- if(getWallet() != address(this)) {
105
- revert ErrorComponentWalletNotComponent();
106
- }
107
-
108
- IERC20Metadata(token).approve(
109
- address(getTokenHandler()),
110
- spendingLimitAmount.toInt());
111
-
112
- emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
113
- }
114
-
115
- function setWallet(address newWallet)
116
- external
117
- virtual
118
- override
119
- onlyOwner
120
- {
121
- // checks
122
- address currentWallet = getWallet();
123
- IERC20Metadata token = getToken();
124
- uint256 currentBalance = token.balanceOf(currentWallet);
125
-
126
- if (currentBalance > 0) {
127
- if (currentWallet == address(this)) {
128
- // move tokens from component smart contract to external wallet
129
- } else {
130
- // move tokens from external wallet to component smart contract or another external wallet
131
- uint256 allowance = token.allowance(currentWallet, address(this));
132
- if (allowance < currentBalance) {
133
- revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
134
- }
135
- }
136
- }
137
-
138
- // effects
139
- _setWallet(newWallet);
140
-
141
- // interactions
142
- if (currentBalance > 0) {
143
- // transfer tokens from current wallet to new wallet
144
- if (currentWallet == address(this)) {
145
- // transferFrom requires self allowance too
146
- token.approve(address(this), currentBalance);
147
- }
148
-
149
- SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
150
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
151
- }
104
+ _registerInterface(type(IAccessManaged).interfaceId);
105
+ _registerInterface(type(IComponent).interfaceId);
152
106
  }
153
107
 
154
108
 
155
- /// @dev callback function for nft mints
156
- /// may only be called by chain nft contract.
157
- /// override internal function _nftMint to implement custom behaviour
158
- function nftMint(address to, uint256 tokenId)
159
- external
160
- onlyChainNft
161
- {
162
- _nftMint(to, tokenId);
163
- }
164
-
165
109
  /// @dev callback function for nft transfers
166
110
  /// may only be called by chain nft contract.
167
111
  /// override internal function _nftTransferFrom to implement custom behaviour
168
- function nftTransferFrom(address from, address to, uint256 tokenId)
112
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator)
169
113
  external
170
- onlyChainNft
114
+ onlyChainNft()
171
115
  {
172
- _nftTransferFrom(from, to, tokenId);
116
+ _nftTransferFrom(from, to, tokenId, operator);
173
117
  }
174
118
 
175
119
 
176
120
  function getWallet() public view virtual returns (address walletAddress) {
177
- return getComponentInfo().wallet;
121
+ return getTokenHandler().getWallet();
178
122
  }
179
123
 
180
124
  function getTokenHandler() public virtual view returns (TokenHandler tokenHandler) {
@@ -189,6 +133,10 @@ abstract contract Component is
189
133
  return getComponentInfo().name;
190
134
  }
191
135
 
136
+ function getVersion() public view virtual returns (Version version) {
137
+ return VersionLib.toVersion(1, 0, 0);
138
+ }
139
+
192
140
  function getComponentInfo() public virtual view returns (IComponents.ComponentInfo memory info) {
193
141
  if (isRegistered()) {
194
142
  return _getComponentInfo();
@@ -214,20 +162,26 @@ abstract contract Component is
214
162
 
215
163
 
216
164
  function isRegistered() public virtual view returns (bool) {
217
- return getRegistry().getNftId(address(this)).gtz();
165
+ return getRegistry().getNftIdForAddress(address(this)).gtz();
218
166
  }
219
167
 
220
168
 
221
- /// @dev internal function for nft transfers.
222
- /// handling logic that deals with nft transfers need to overwrite this function
223
- 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)
224
173
  internal
225
174
  virtual
226
- { }
175
+ {
176
+ _getComponentStorage()._componentService.approveTokenHandler(
177
+ token,
178
+ amount);
179
+ }
180
+
227
181
 
228
182
  /// @dev internal function for nft transfers.
229
183
  /// handling logic that deals with nft transfers need to overwrite this function
230
- function _nftTransferFrom(address from, address to, uint256 tokenId)
184
+ function _nftTransferFrom(address from, address to, uint256 tokenId, address operator)
231
185
  internal
232
186
  virtual
233
187
  { }
@@ -235,31 +189,20 @@ abstract contract Component is
235
189
 
236
190
  /// @dev depending on the source of the component information this function needs to be overwritten.
237
191
  /// eg for instance linked components that externally store this information with the instance store contract
238
- function _setWallet(address newWallet) internal virtual {
239
- ComponentStorage storage $ = _getComponentStorage();
240
- address currentWallet = $._wallet;
241
-
242
- if (newWallet == address(0)) {
243
- revert ErrorComponentWalletAddressZero();
244
- }
245
-
246
- if (newWallet == currentWallet) {
247
- revert ErrorComponentWalletAddressIsSameAsCurrent();
248
- }
249
-
250
- $._wallet = newWallet;
251
- emit LogComponentWalletAddressChanged(currentWallet, newWallet);
252
-
192
+ function _setWallet(
193
+ address newWallet
194
+ )
195
+ internal
196
+ virtual
197
+ {
198
+ _getComponentStorage()._componentService.setWallet(newWallet);
253
199
  }
254
200
 
255
-
256
- /// @dev for component contracts that hold its own component information
257
- /// this function creates and sets a token hanlder for the components tokens
258
- function _createAndSetTokenHandler()
201
+ function _setLocked(bool locked)
259
202
  internal
203
+ virtual
260
204
  {
261
- ComponentStorage storage $ = _getComponentStorage();
262
- $._tokenHandler = new TokenHandler(address($._token));
205
+ _getComponentStorage()._componentService.setLockedFromComponent(address(this), locked);
263
206
  }
264
207
 
265
208
 
@@ -267,15 +210,18 @@ abstract contract Component is
267
210
  /// eg for instance linked components that externally store this information with the instance store contract
268
211
  function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
269
212
  ComponentStorage storage $ = _getComponentStorage();
270
-
213
+
271
214
  return IComponents.ComponentInfo({
272
215
  name: $._name,
273
- productNftId: NftIdLib.zero(),
274
216
  token: $._token,
275
- tokenHandler: $._tokenHandler,
276
- wallet: $._wallet, // initial wallet address
217
+ tokenHandler: TokenHandler(address(0)),
277
218
  data: $._data // user specific component data
278
219
  });
279
220
  }
280
221
 
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());
226
+ }
281
227
  }