@etherisc/gif-next 0.0.2-7f39e38-904 → 0.0.2-804cdbf-724

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/README.md +32 -3
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1505 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +36 -255
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +147 -96
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +86 -59
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +82 -151
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -17
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +149 -52
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +91 -132
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +230 -65
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +216 -119
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +70 -51
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +260 -137
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  73. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  75. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  77. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  79. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  81. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  83. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  85. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1063 -0
  87. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  89. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  91. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  93. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  95. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +102 -59
  97. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +74 -43
  99. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +20 -1
  101. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +18 -207
  103. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +35 -1
  105. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  106. package/artifacts/contracts/pool/Pool.sol/Pool.json +25 -315
  107. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +84 -42
  109. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +63 -40
  111. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +79 -36
  113. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -37
  115. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  117. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  119. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +119 -68
  121. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -53
  123. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +20 -1
  125. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +20 -1
  127. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +20 -1
  129. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +20 -1
  131. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +24 -47
  133. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.json +20 -1
  135. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +97 -46
  137. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +77 -42
  139. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.json +105 -62
  141. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +81 -50
  143. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  144. package/artifacts/contracts/product/Product.sol/Product.json +31 -165
  145. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.json +61 -26
  147. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +59 -32
  149. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  151. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +86 -74
  153. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -184
  155. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  156. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/Registry.sol/Registry.json +255 -112
  158. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  160. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -15
  162. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +51 -35
  164. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  166. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  168. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  170. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +19 -11
  172. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Component.sol/Component.json +18 -12
  174. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +96 -70
  176. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +73 -54
  178. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +20 -1
  180. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -5
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +27 -1
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +24 -5
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  191. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -1
  197. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IService.sol/IService.json +20 -1
  200. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +31 -65
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  207. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  215. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  216. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +35 -16
  217. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +14 -8
  219. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  221. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Service.sol/Service.json +20 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  225. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  226. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  227. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +121 -118
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +222 -71
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +102 -44
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +186 -183
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +71 -58
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +263 -39
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +271 -135
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +67 -47
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +734 -187
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +95 -18
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +68 -4
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +17 -4
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  300. package/contracts/authorization/AccessAdmin.sol +591 -0
  301. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  302. package/contracts/authorization/Authorization.sol +218 -0
  303. package/contracts/authorization/IAccess.sol +48 -0
  304. package/contracts/authorization/IAccessAdmin.sol +136 -0
  305. package/contracts/authorization/IAuthorization.sol +54 -0
  306. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  307. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  308. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  309. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  310. package/contracts/distribution/BasicDistribution.sol +149 -0
  311. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  312. package/contracts/distribution/Distribution.sol +126 -106
  313. package/contracts/distribution/DistributionService.sol +13 -9
  314. package/contracts/distribution/DistributionServiceManager.sol +0 -12
  315. package/contracts/distribution/IDistributionComponent.sol +17 -35
  316. package/contracts/distribution/IDistributionService.sol +5 -1
  317. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  318. package/contracts/instance/IInstance.sol +25 -16
  319. package/contracts/instance/IInstanceService.sol +36 -27
  320. package/contracts/instance/Instance.sol +113 -87
  321. package/contracts/instance/InstanceAdmin.sol +266 -0
  322. package/contracts/instance/InstanceAuthorizationV3.sol +202 -0
  323. package/contracts/instance/InstanceReader.sol +52 -13
  324. package/contracts/instance/InstanceService.sol +175 -99
  325. package/contracts/instance/InstanceStore.sol +38 -22
  326. package/contracts/instance/base/BalanceStore.sol +11 -6
  327. package/contracts/instance/base/Cloneable.sol +2 -25
  328. package/contracts/instance/base/ObjectCounter.sol +21 -0
  329. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  330. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  331. package/contracts/instance/module/IAccess.sol +2 -10
  332. package/contracts/oracle/BasicOracle.sol +48 -0
  333. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  334. package/contracts/oracle/IOracle.sol +36 -0
  335. package/contracts/oracle/IOracleComponent.sol +32 -0
  336. package/contracts/oracle/IOracleService.sol +65 -0
  337. package/contracts/oracle/Oracle.sol +157 -0
  338. package/contracts/oracle/OracleService.sol +278 -0
  339. package/contracts/oracle/OracleServiceManager.sol +42 -0
  340. package/contracts/pool/BasicPool.sol +164 -0
  341. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  342. package/contracts/pool/BundleService.sol +26 -26
  343. package/contracts/pool/IPoolComponent.sol +0 -60
  344. package/contracts/pool/IPoolService.sol +3 -0
  345. package/contracts/pool/Pool.sol +143 -131
  346. package/contracts/pool/PoolService.sol +38 -11
  347. package/contracts/product/ApplicationService.sol +5 -5
  348. package/contracts/product/BasicProduct.sol +82 -0
  349. package/contracts/product/BasicProductAuthorization.sol +40 -0
  350. package/contracts/product/ClaimService.sol +11 -6
  351. package/contracts/product/IClaimService.sol +6 -0
  352. package/contracts/product/IProductComponent.sol +6 -9
  353. package/contracts/product/PolicyService.sol +8 -6
  354. package/contracts/product/PricingService.sol +7 -8
  355. package/contracts/product/Product.sol +103 -88
  356. package/contracts/product/ProductService.sol +5 -5
  357. package/contracts/registry/ChainNft.sol +1 -0
  358. package/contracts/registry/IRegistry.sol +33 -24
  359. package/contracts/registry/IRegistryService.sol +7 -6
  360. package/contracts/registry/Registry.sol +146 -148
  361. package/contracts/registry/RegistryAdmin.sol +365 -0
  362. package/contracts/registry/RegistryService.sol +8 -8
  363. package/contracts/registry/RegistryServiceManager.sol +0 -19
  364. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  365. package/contracts/registry/ReleaseRegistry.sol +487 -0
  366. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  367. package/contracts/registry/TokenRegistry.sol +22 -61
  368. package/contracts/shared/Component.sol +8 -13
  369. package/contracts/shared/ComponentService.sol +50 -64
  370. package/contracts/shared/ComponentVerifyingService.sol +13 -7
  371. package/contracts/shared/IComponent.sol +3 -7
  372. package/contracts/shared/IComponentService.sol +11 -0
  373. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  374. package/contracts/shared/IKeyValueStore.sol +2 -1
  375. package/contracts/shared/ILifecycle.sol +1 -2
  376. package/contracts/shared/INftOwnable.sol +1 -1
  377. package/contracts/shared/IService.sol +7 -0
  378. package/contracts/shared/InitializableCustom.sol +177 -0
  379. package/contracts/shared/InstanceLinkedComponent.sol +26 -20
  380. package/contracts/shared/KeyValueStore.sol +7 -6
  381. package/contracts/shared/Lifecycle.sol +16 -60
  382. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  383. package/contracts/shared/NftOwnable.sol +2 -13
  384. package/contracts/shared/PolicyHolder.sol +2 -1
  385. package/contracts/shared/ProxyManager.sol +6 -3
  386. package/contracts/shared/Service.sol +27 -21
  387. package/contracts/shared/UpgradableProxyWithAdmin.sol +1 -3
  388. package/contracts/staking/IStaking.sol +40 -25
  389. package/contracts/staking/IStakingService.sol +42 -44
  390. package/contracts/staking/StakeManagerLib.sol +101 -26
  391. package/contracts/staking/Staking.sol +136 -127
  392. package/contracts/staking/StakingLifecycle.sol +23 -0
  393. package/contracts/staking/StakingManager.sol +10 -22
  394. package/contracts/staking/StakingReader.sol +75 -36
  395. package/contracts/staking/StakingService.sol +124 -88
  396. package/contracts/staking/StakingServiceManager.sol +2 -2
  397. package/contracts/staking/StakingStore.sol +401 -115
  398. package/contracts/staking/TargetManagerLib.sol +28 -0
  399. package/contracts/type/Amount.sol +15 -1
  400. package/contracts/type/NftId.sol +8 -8
  401. package/contracts/type/ObjectType.sol +171 -69
  402. package/contracts/type/RequestId.sol +75 -0
  403. package/contracts/type/RoleId.sol +103 -72
  404. package/contracts/type/Seconds.sol +10 -0
  405. package/contracts/type/Selector.sol +102 -0
  406. package/contracts/type/StateId.sol +12 -0
  407. package/contracts/type/String.sol +53 -0
  408. package/contracts/type/Timestamp.sol +6 -2
  409. package/contracts/type/UFixed.sol +6 -0
  410. package/contracts/type/Version.sol +3 -1
  411. package/package.json +8 -5
  412. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  413. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  414. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  415. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  416. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  417. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
  418. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  419. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  420. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  421. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -322
  422. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  423. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1151
  424. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  425. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  426. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  427. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  428. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  429. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  430. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  431. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  432. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  433. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  434. package/contracts/instance/InstanceAccessManager.sol +0 -543
  435. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
  436. package/contracts/registry/RegistryAccessManager.sol +0 -196
  437. package/contracts/registry/ReleaseManager.sol +0 -563
  438. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  439. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  440. package/contracts/staking/IStakingManager.sol +0 -15
  441. package/contracts/staking/IStakingStore.sol +0 -130
@@ -5,12 +5,16 @@ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManage
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
  import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
7
7
 
8
+ import {REGISTRY} from "../type/ObjectType.sol";
9
+ import {VersionPart} from "../type/Version.sol";
10
+
8
11
  import {IRegisterable} from "../shared/IRegisterable.sol";
12
+
9
13
  import {IRegistry} from "./IRegistry.sol";
10
14
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
11
- import {ReleaseManager} from "./ReleaseManager.sol";
12
- import {REGISTRY} from "../type/ObjectType.sol";
13
- import {VersionPart} from "../type/Version.sol";
15
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
16
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
17
+
14
18
 
15
19
  /// @title contract to register token per GIF major release.
16
20
  contract TokenRegistry is
@@ -45,7 +49,7 @@ contract TokenRegistry is
45
49
  TokenInfo [] internal _token;
46
50
 
47
51
  IRegistry internal _registry;
48
- ReleaseManager internal _releaseManager;
52
+ ReleaseRegistry internal _releaseRegistry;
49
53
  IERC20Metadata internal _dipToken;
50
54
 
51
55
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
@@ -56,16 +60,15 @@ contract TokenRegistry is
56
60
  _;
57
61
  }
58
62
 
59
- constructor(
60
- address initialAuthority,
61
- address registry,
62
- address dipToken
63
- )
64
- AccessManaged(initialAuthority)
65
- {
66
- // set dip token
67
- _registry = IRegistry(registry);
68
- _dipToken = IERC20Metadata(dipToken);
63
+ constructor(IRegistry registry, IERC20Metadata dipToken)
64
+ AccessManaged(msg.sender)
65
+ {
66
+ // set authority
67
+ address authority = RegistryAdmin(registry.getRegistryAdminAddress()).authority();
68
+ setAuthority(authority);
69
+
70
+ _registry = registry;
71
+ _dipToken = dipToken;
69
72
 
70
73
  // register dip token
71
74
  uint256 chainId = block.chainid;
@@ -76,52 +79,6 @@ contract TokenRegistry is
76
79
  _dipToken.symbol());
77
80
  }
78
81
 
79
- // TODO cleanup
80
- // function initialize(
81
- // address initialOwner
82
- // )
83
- // public
84
- // initializer()
85
- // {
86
- // initializeNftOwnable(initialOwner, _registryAddress);
87
-
88
- // // initialize release manager
89
- // _releaseManager = ReleaseManager(msg.sender);
90
-
91
-
92
- // // register dip token
93
- // uint256 chainId = block.chainid;
94
- // _registerToken(
95
- // chainId,
96
- // address(_dipToken),
97
- // _dipToken.decimals(),
98
- // _dipToken.symbol());
99
- // }
100
-
101
-
102
- // /// @dev link token registry ownership to nft owner of registry service and register dip token.
103
- // function linkToRegistryService()
104
- // external
105
- // {
106
- // // link token registry ownership to registry service
107
- // address registryService = getRegistry().getServiceAddress(
108
- // REGISTRY(),
109
- // _releaseManager.getInitialVersion());
110
-
111
- // _linkToNftOwnable(registryService);
112
-
113
- // // activate dip for initial gif version
114
- // // as token registry is created in constructor of release manager
115
- // // release manager can not yet be called in constructor of token registry
116
- // uint256 chainId = block.chainid;
117
- // address dipToken = address(_dipToken);
118
- // VersionPart majorVersion = _releaseManager.getInitialVersion();
119
- // bool active = true;
120
- // _active[chainId][dipToken][majorVersion] = active;
121
-
122
- // emit LogTokenRegistryTokenStateSet(chainId, dipToken, majorVersion, active);
123
- // }
124
-
125
82
 
126
83
  /// @dev register an onchain token.
127
84
  /// this function verifies that the provided token address is a contract that implements
@@ -220,7 +177,7 @@ contract TokenRegistry is
220
177
  // verify valid major version
221
178
  if(enforceVersionCheck) {
222
179
  uint256 version = majorVersion.toInt();
223
- if (!getRegistry().isValidRelease(majorVersion)) {
180
+ if (!getRegistry().isActiveRelease(majorVersion)) {
224
181
  revert ErrorTokenRegistryMajorVersionInvalid(majorVersion);
225
182
  }
226
183
  }
@@ -264,6 +221,10 @@ contract TokenRegistry is
264
221
  return _active[chainId][token][majorVersion];
265
222
  }
266
223
 
224
+ function getDipTokenAddress() external view returns (address) {
225
+ return address(_dipToken);
226
+ }
227
+
267
228
  //--- IRegistryLinked --------------------------------------------------//
268
229
 
269
230
  /// @dev returns the dip token for this chain
@@ -6,21 +6,14 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {IComponent} from "./IComponent.sol";
10
11
  import {IComponents} from "../instance/module/IComponents.sol";
11
- import {IInstanceService} from "../instance/IInstanceService.sol";
12
- import {IInstance} from "../instance/IInstance.sol";
13
- import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
14
- import {InstanceReader} from "../instance/InstanceReader.sol";
15
- import {IRegistry} from "../registry/IRegistry.sol";
16
12
  import {NftId, NftIdLib} from "../type/NftId.sol";
17
- import {ObjectType, INSTANCE, PRODUCT} from "../type/ObjectType.sol";
18
- import {VersionPart} from "../type/Version.sol";
13
+ import {ObjectType} from "../type/ObjectType.sol";
19
14
  import {Registerable} from "../shared/Registerable.sol";
20
- import {RoleId, RoleIdLib} from "../type/RoleId.sol";
21
- import {IAccess} from "../instance/module/IAccess.sol";
22
15
  import {TokenHandler} from "../shared/TokenHandler.sol";
23
- import {VersionPart} from "../type/Version.sol";
16
+ import {VersionPartLib} from "../type/Version.sol";
24
17
 
25
18
  abstract contract Component is
26
19
  AccessManagedUpgradeable,
@@ -95,7 +88,7 @@ abstract contract Component is
95
88
  }
96
89
 
97
90
 
98
- function approveTokenHandler(uint256 spendingLimitAmount)
91
+ function approveTokenHandler(Amount spendingLimitAmount)
99
92
  external
100
93
  virtual
101
94
  onlyOwner
@@ -103,7 +96,7 @@ abstract contract Component is
103
96
  approveTokenHandler(address(getToken()), spendingLimitAmount);
104
97
  }
105
98
 
106
- function approveTokenHandler(address token, uint256 spendingLimitAmount)
99
+ function approveTokenHandler(address token, Amount spendingLimitAmount)
107
100
  public
108
101
  virtual
109
102
  onlyOwner
@@ -114,7 +107,7 @@ abstract contract Component is
114
107
 
115
108
  IERC20Metadata(token).approve(
116
109
  address(getTokenHandler()),
117
- spendingLimitAmount);
110
+ spendingLimitAmount.toInt());
118
111
 
119
112
  emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
120
113
  }
@@ -259,6 +252,7 @@ abstract contract Component is
259
252
 
260
253
  }
261
254
 
255
+
262
256
  /// @dev for component contracts that hold its own component information
263
257
  /// this function creates and sets a token hanlder for the components tokens
264
258
  function _createAndSetTokenHandler()
@@ -268,6 +262,7 @@ abstract contract Component is
268
262
  $._tokenHandler = new TokenHandler(address($._token));
269
263
  }
270
264
 
265
+
271
266
  /// @dev depending on the source of the component information this function needs to be overwritten.
272
267
  /// eg for instance linked components that externally store this information with the instance store contract
273
268
  function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
@@ -10,8 +10,8 @@ import {IRegistryService} from "../registry/IRegistryService.sol";
10
10
  import {IInstance} from "../instance/IInstance.sol";
11
11
  import {IAccess} from "../instance/module/IAccess.sol";
12
12
  import {NftId} from "../type/NftId.sol";
13
- import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, POOL, PRODUCT} from "../type/ObjectType.sol";
14
- import {RoleId, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
13
+ import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
14
+ import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
15
15
  import {KEEP_STATE} from "../type/StateId.sol";
16
16
  import {IComponents} from "../instance/module/IComponents.sol";
17
17
  import {IComponentService} from "./IComponentService.sol";
@@ -64,11 +64,6 @@ contract ComponentService is
64
64
  registerInterface(type(IComponentService).interfaceId);
65
65
  }
66
66
 
67
-
68
- function getDomain() public pure virtual override returns(ObjectType) {
69
- return COMPONENT();
70
- }
71
-
72
67
  //-------- component ----------------------------------------------------//
73
68
 
74
69
  function setWallet(address newWallet) external virtual {
@@ -107,12 +102,6 @@ contract ComponentService is
107
102
  virtual
108
103
  {
109
104
  address contractAddress = msg.sender;
110
- RoleId[] memory roles = new RoleId[](1);
111
- bytes4[][] memory selectors = new bytes4[][](1);
112
-
113
- // authorizaion for distribution owner
114
- roles[0] = PRODUCT_OWNER_ROLE();
115
- selectors[0] = _createSelectors(IProductComponent.setFees.selector);
116
105
 
117
106
  // register/create component setup
118
107
  (
@@ -122,9 +111,7 @@ contract ComponentService is
122
111
  ) = _register(
123
112
  contractAddress,
124
113
  PRODUCT(),
125
- PRODUCT_OWNER_ROLE(),
126
- roles,
127
- selectors);
114
+ PRODUCT_OWNER_ROLE());
128
115
 
129
116
  // create product info
130
117
  IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
@@ -198,24 +185,12 @@ contract ComponentService is
198
185
  virtual
199
186
  {
200
187
  address contractAddress = msg.sender;
201
- RoleId[] memory roles = new RoleId[](2);
202
- bytes4[][] memory selectors = new bytes4[][](2);
203
-
204
- // authorizaion for distribution owner
205
- roles[0] = DISTRIBUTION_OWNER_ROLE();
206
- selectors[0] = _createSelectors(IDistributionComponent.setFees.selector);
207
-
208
- // authorizaion for product service
209
- roles[1] = PRODUCT_SERVICE_ROLE();
210
- selectors[1] = _createSelectors(IDistributionComponent.processRenewal.selector);
211
188
 
212
189
  // register/create component info
213
190
  _register(
214
191
  contractAddress,
215
192
  DISTRIBUTION(),
216
- DISTRIBUTION_OWNER_ROLE(),
217
- roles,
218
- selectors);
193
+ DISTRIBUTION_OWNER_ROLE());
219
194
  }
220
195
 
221
196
 
@@ -280,24 +255,32 @@ contract ComponentService is
280
255
  _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
281
256
  }
282
257
 
283
- //-------- pool ---------------------------------------------------------//
258
+ //-------- oracle -------------------------------------------------------//
284
259
 
285
- /// @dev registers the sending component as a distribution component
286
- function registerPool()
260
+ function registerOracle()
287
261
  external
288
262
  virtual
289
263
  {
290
264
  address contractAddress = msg.sender;
291
- RoleId[] memory roles = new RoleId[](2);
292
- bytes4[][] memory selectors = new bytes4[][](2);
293
265
 
294
- // authorizaion for distribution owner
295
- roles[0] = POOL_OWNER_ROLE();
296
- selectors[0] = _createSelectors(IPoolComponent.setFees.selector);
266
+ // register/create component setup
267
+ (
268
+ , // instance reader
269
+ InstanceStore instanceStore,
270
+ NftId componentNftId
271
+ ) = _register(
272
+ contractAddress,
273
+ ORACLE(),
274
+ ORACLE_OWNER_ROLE());
275
+ }
297
276
 
298
- // authorizaion for product service
299
- roles[1] = POLICY_SERVICE_ROLE();
300
- selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
277
+ //-------- pool ---------------------------------------------------------//
278
+
279
+ function registerPool()
280
+ external
281
+ virtual
282
+ {
283
+ address contractAddress = msg.sender;
301
284
 
302
285
  // register/create component setup
303
286
  (
@@ -307,14 +290,13 @@ contract ComponentService is
307
290
  ) = _register(
308
291
  contractAddress,
309
292
  POOL(),
310
- POOL_OWNER_ROLE(),
311
- roles,
312
- selectors);
293
+ POOL_OWNER_ROLE());
313
294
 
314
295
  // create info
315
296
  instanceStore.createPool(
316
297
  componentNftId,
317
- IPoolComponent(contractAddress).getInitialPoolInfo());
298
+ IPoolComponent(
299
+ contractAddress).getInitialPoolInfo());
318
300
  }
319
301
 
320
302
 
@@ -444,9 +426,7 @@ contract ComponentService is
444
426
  function _register(
445
427
  address componentAddress, // address of component to register
446
428
  ObjectType requiredType, // required type for component for registration
447
- RoleId requiredRole, // role required for comonent owner for registration
448
- RoleId[] memory roles, // roles with write access to component
449
- bytes4[][] memory selectors // authorized functions per role with write access
429
+ RoleId requiredRole // role required for comonent owner for registration
450
430
  )
451
431
  internal
452
432
  virtual
@@ -473,21 +453,23 @@ contract ComponentService is
473
453
 
474
454
  component.linkToRegisteredNftId();
475
455
 
456
+ // setup initial component authorization
457
+ _instanceService.initializeAuthorization(
458
+ instance.getNftId(),
459
+ component);
460
+
476
461
  // save amended component info with instance
477
462
  instanceReader = instance.getInstanceReader();
478
463
  instanceStore = instance.getInstanceStore();
479
464
 
480
465
  IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
481
466
  componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
482
- instanceStore.createComponent(component.getNftId(), componentInfo);
483
-
484
- // configure instance authorization
485
- _instanceService.createComponentTarget(
486
- instance.getNftId(),
487
- componentAddress,
488
- component.getName(),
489
- selectors,
490
- roles);
467
+
468
+ instanceStore.createComponent(
469
+ component.getNftId(),
470
+ componentInfo);
471
+
472
+ // TODO add logging
491
473
  }
492
474
 
493
475
 
@@ -526,7 +508,7 @@ contract ComponentService is
526
508
  }
527
509
 
528
510
 
529
- function _createSelectors(bytes4 selector) internal view returns (bytes4[] memory selectors) {
511
+ function _createSelectors(bytes4 selector) internal pure returns (bytes4[] memory selectors) {
530
512
  selectors = new bytes4[](1);
531
513
  selectors[0] = selector;
532
514
  }
@@ -560,18 +542,13 @@ contract ComponentService is
560
542
  RoleId requiredRole
561
543
  )
562
544
  internal
563
- // view
545
+ view
564
546
  returns (
565
547
  IInstance instance,
566
548
  IInstanceLinkedComponent component,
567
549
  address owner
568
550
  )
569
551
  {
570
- // check component has not already been registered
571
- if (getRegistry().getNftId(componentAddress).gtz()) {
572
- revert ErrorComponentServiceAlreadyRegistered(componentAddress);
573
- }
574
-
575
552
  // check this is a component
576
553
  component = IInstanceLinkedComponent(componentAddress);
577
554
  if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
@@ -584,12 +561,21 @@ contract ComponentService is
584
561
  revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
585
562
  }
586
563
 
564
+ // check component has not already been registered
565
+ if (getRegistry().getNftId(componentAddress).gtz()) {
566
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
567
+ }
568
+
587
569
  // check instance has assigned required role to inital owner
588
570
  instance = _getInstance(info.parentNftId);
589
571
  owner = info.initialOwner;
590
572
 
591
- if(!instance.getInstanceAccessManager().hasRole(requiredRole, owner)) {
573
+ if(!instance.getInstanceAdmin().hasRole(owner, requiredRole)) {
592
574
  revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
593
575
  }
594
576
  }
577
+
578
+ function _getDomain() internal pure virtual override returns(ObjectType) {
579
+ return COMPONENT();
580
+ }
595
581
  }
@@ -33,12 +33,10 @@ abstract contract ComponentVerifyingService is
33
33
  )
34
34
  {
35
35
  componentNftId = getRegistry().getNftId(msg.sender);
36
- (componentInfo, instance) = _getAndVerifyComponentInfo(componentNftId, expectedType);
37
-
38
- // ensure component is not locked
39
- if (instance.getInstanceAccessManager().isTargetLocked(componentInfo.objectAddress)) {
40
- revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
41
- }
36
+ (componentInfo, instance) = _getAndVerifyComponentInfo(
37
+ componentNftId,
38
+ expectedType,
39
+ true); // only active
42
40
  }
43
41
 
44
42
 
@@ -48,7 +46,8 @@ abstract contract ComponentVerifyingService is
48
46
  /// - the component has the wrong object type
49
47
  function _getAndVerifyComponentInfo(
50
48
  NftId componentNftId,
51
- ObjectType expectedType // assume always of `component` type
49
+ ObjectType expectedType, // assume always of `component` type
50
+ bool onlyActive
52
51
  )
53
52
  internal
54
53
  virtual
@@ -85,6 +84,13 @@ abstract contract ComponentVerifyingService is
85
84
  }
86
85
 
87
86
  instance = _getInstance(info.parentNftId);
87
+
88
+ // ensure component is not locked
89
+ if (onlyActive) {
90
+ if (instance.getInstanceAdmin().isTargetLocked(info.objectAddress)) {
91
+ revert ErrorComponentVerifyingServiceComponentIsLocked(componentNftId);
92
+ }
93
+ }
88
94
  }
89
95
 
90
96
 
@@ -4,14 +4,10 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
7
8
  import {IComponents} from "../instance/module/IComponents.sol";
8
- import {IInstance} from "../instance/IInstance.sol";
9
- import {IInstanceService} from "../instance/IInstanceService.sol";
10
- import {IProductService} from "../product/IProductService.sol";
11
9
  import {IRegisterable} from "../shared/IRegisterable.sol";
12
10
  import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
13
- import {NftId} from "../type/NftId.sol";
14
- import {ObjectType} from "../type/ObjectType.sol";
15
11
  import {TokenHandler} from "../shared/TokenHandler.sol";
16
12
 
17
13
  /// @dev component base class
@@ -32,12 +28,12 @@ interface IComponent is
32
28
 
33
29
  event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
34
30
  event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
35
- event LogComponentTokenHandlerApproved(address token, uint256 limit);
31
+ event LogComponentTokenHandlerApproved(address token, Amount limit);
36
32
 
37
33
  /// @dev approves token hanlder to spend up to the specified amount of tokens
38
34
  /// reverts if component wallet is not component itself
39
35
  /// only component owner (nft holder) is authorizes to call this function
40
- function approveTokenHandler(uint256 spendingLimitAmount) external;
36
+ function approveTokenHandler(Amount spendingLimitAmount) external;
41
37
 
42
38
  /// @dev sets the wallet address for the component
43
39
  /// if the current wallet has tokens, these will be transferred
@@ -52,6 +52,8 @@ interface IComponentService is
52
52
  function unlock() external;
53
53
 
54
54
  //-------- product ------------------------------------------------------//
55
+
56
+ /// @dev registers the sending component as a product component
55
57
  function registerProduct() external;
56
58
 
57
59
  function setProductFees(
@@ -63,6 +65,8 @@ interface IComponentService is
63
65
  function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount) external;
64
66
 
65
67
  //-------- distribution -------------------------------------------------//
68
+
69
+ /// @dev registers the sending component as a distribution component
66
70
  function registerDistribution() external;
67
71
 
68
72
  function setDistributionFees(
@@ -73,7 +77,14 @@ interface IComponentService is
73
77
  function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
74
78
  function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
75
79
 
80
+ //-------- oracle -------------------------------------------------------//
81
+
82
+ /// @dev registers the sending component as an oracle component
83
+ function registerOracle() external;
84
+
76
85
  //-------- pool ---------------------------------------------------------//
86
+
87
+ /// @dev registers the sending component as a pool component
77
88
  function registerPool() external;
78
89
 
79
90
  function setPoolFees(
@@ -5,6 +5,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
7
  import {IComponent} from "../shared/IComponent.sol";
8
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
9
  import {IComponents} from "../instance/module/IComponents.sol";
9
10
  import {IInstance} from "../instance/IInstance.sol";
10
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
@@ -43,4 +44,7 @@ interface IInstanceLinkedComponent is
43
44
  /// this is only relevant for pool and distribution components
44
45
  function getProductNftId() external view returns (NftId productNftId);
45
46
 
47
+ /// @dev returns the initial component authorization specification.
48
+ function getAuthorization() external view returns (IAuthorization authorization);
49
+
46
50
  }
@@ -13,6 +13,7 @@ interface IKeyValueStore is ILifecycle {
13
13
 
14
14
  error ErrorKeyValueStoreTypeUndefined(ObjectType objectType);
15
15
  error ErrorKeyValueStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorKeyValueStoreNoLifecycle(ObjectType objectType);
16
17
  error ErrorKeyValueStoreStateZero(Key32 key);
17
18
  error ErrorKeyValueStoreNotExisting(Key32 key);
18
19
 
@@ -32,7 +33,7 @@ interface IKeyValueStore is ILifecycle {
32
33
  // eg account outside gif objects that initiated the tx
33
34
  // implies the caller needs to be propagated through all calls up to key values store itself
34
35
  // to always have the instance address there doesn't seem to make sense
35
- address updatedBy;
36
+ // address updatedBy;
36
37
  Blocknumber updatedIn;
37
38
  Blocknumber createdIn;
38
39
  }
@@ -1,13 +1,12 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../type/NftId.sol";
5
4
  import {ObjectType} from "../type/ObjectType.sol";
6
5
  import {StateId} from "../type/StateId.sol";
7
6
 
8
7
  interface ILifecycle {
9
8
 
10
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
9
+ error ErrorNoLifecycle(ObjectType objectType);
11
10
  error ErrorInvalidStateTransition(
12
11
  ObjectType objectType,
13
12
  StateId fromStateId,
@@ -16,7 +16,7 @@ interface INftOwnable is
16
16
  error ErrorNftOwnableAlreadyLinked(NftId nftId);
17
17
  error ErrorNftOwnableContractNotRegistered(address contractAddress);
18
18
 
19
- function linkToRegisteredNftId() external;
19
+ function linkToRegisteredNftId() external returns (NftId);
20
20
 
21
21
  function getNftId() external view returns (NftId);
22
22
  function getOwner() external view returns (address);
@@ -6,6 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
7
  import {IVersionable} from "./IVersionable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
9
10
 
10
11
  interface IService is
11
12
  IRegisterable,
@@ -14,5 +15,11 @@ interface IService is
14
15
  {
15
16
  error ErrorServiceNotImplemented();
16
17
 
18
+ /// @dev returns the domain for this service.
19
+ /// In any GIF release only one service for any given domain may be deployed.
17
20
  function getDomain() external pure returns(ObjectType serviceDomain);
21
+
22
+ /// @dev returns the GIF release specific role id.
23
+ /// These role ids are used to authorize service to service communication.
24
+ function getRoleId() external pure returns(RoleId serviceRoleId);
18
25
  }