@etherisc/gif-next 0.0.2-b3e9a44-364 → 0.0.2-b43fece-589

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 (365) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +96 -37
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -13
  9. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  11. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +138 -94
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +77 -17
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +78 -58
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +120 -86
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +64 -60
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +65 -58
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +13 -0
  31. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  33. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +119 -135
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  35. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +114 -22
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  37. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +218 -159
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +81 -25
  40. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  42. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +140 -96
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  44. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +121 -77
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  46. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +197 -145
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +508 -177
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  50. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  52. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +37 -31
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +13 -84
  55. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  56. package/artifacts/contracts/instance/Instance.sol/Instance.json +46 -40
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +148 -118
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +94 -79
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +56 -130
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -40
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +174 -103
  69. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  74. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  76. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  82. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +119 -75
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +77 -17
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +60 -53
  90. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -9
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +73 -53
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +70 -47
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +32 -36
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +73 -81
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +125 -119
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +57 -69
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +32 -15
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +60 -92
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +90 -88
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +73 -92
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +149 -158
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +40 -52
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +50 -32
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -33
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +118 -54
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +77 -17
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +106 -88
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +56 -60
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +13 -0
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +13 -0
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +13 -0
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +70 -57
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +105 -54
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +13 -0
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +80 -62
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +45 -49
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.json +133 -115
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +42 -46
  150. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  151. package/artifacts/contracts/product/Product.sol/Product.json +118 -54
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.json +44 -26
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +26 -30
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -15
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +98 -35
  162. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  163. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  164. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  165. package/artifacts/contracts/registry/Registry.sol/Registry.json +38 -53
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +193 -165
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +129 -61
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +25 -29
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +121 -223
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  179. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  180. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  181. package/artifacts/contracts/shared/Component.sol/Component.json +52 -28
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +334 -155
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +67 -63
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +26 -0
  188. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  189. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +39 -28
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +305 -19
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +60 -53
  196. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  198. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  199. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  200. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +13 -0
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  207. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  209. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +73 -53
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  211. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +50 -8
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  223. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Service.sol/Service.json +26 -0
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +39 -28
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +13 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  233. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  234. package/artifacts/contracts/staking/Staking.sol/Staking.json +122 -78
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +52 -42
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +50 -32
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +29 -33
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  256. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  258. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  264. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  266. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  271. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  277. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  278. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  279. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +12 -12
  280. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  281. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  282. package/contracts/authorization/AccessAdmin.sol +65 -61
  283. package/contracts/authorization/Authorization.sol +106 -38
  284. package/contracts/authorization/IAccess.sol +1 -0
  285. package/contracts/authorization/IAccessAdmin.sol +4 -2
  286. package/contracts/authorization/IAuthorization.sol +13 -7
  287. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  288. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  289. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  290. package/contracts/distribution/BasicDistribution.sol +0 -1
  291. package/contracts/distribution/Distribution.sol +4 -15
  292. package/contracts/distribution/DistributionService.sol +14 -7
  293. package/contracts/distribution/IDistributionComponent.sol +1 -1
  294. package/contracts/examples/fire/FirePool.sol +19 -8
  295. package/contracts/examples/fire/FireProduct.sol +32 -12
  296. package/contracts/examples/fire/FireProductAuthorization.sol +1 -2
  297. package/contracts/examples/unpermissioned/SimpleDistribution.sol +4 -4
  298. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
  299. package/contracts/examples/unpermissioned/SimplePool.sol +11 -6
  300. package/contracts/examples/unpermissioned/SimpleProduct.sol +17 -23
  301. package/contracts/instance/IInstance.sol +4 -1
  302. package/contracts/instance/IInstanceService.sol +0 -20
  303. package/contracts/instance/Instance.sol +20 -17
  304. package/contracts/instance/InstanceAdmin.sol +16 -27
  305. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  306. package/contracts/instance/InstanceService.sol +14 -68
  307. package/contracts/instance/module/IComponents.sol +7 -4
  308. package/contracts/oracle/BasicOracle.sol +0 -1
  309. package/contracts/oracle/IOracleService.sol +2 -1
  310. package/contracts/oracle/Oracle.sol +4 -15
  311. package/contracts/oracle/OracleService.sol +20 -14
  312. package/contracts/pool/BasicPool.sol +22 -12
  313. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  314. package/contracts/pool/BundleService.sol +63 -39
  315. package/contracts/pool/IBundleService.sol +2 -5
  316. package/contracts/pool/IPoolComponent.sol +1 -7
  317. package/contracts/pool/IPoolService.sol +23 -22
  318. package/contracts/pool/Pool.sol +111 -123
  319. package/contracts/pool/PoolService.sol +186 -128
  320. package/contracts/product/ApplicationService.sol +9 -1
  321. package/contracts/product/BasicProduct.sol +8 -12
  322. package/contracts/product/BasicProductAuthorization.sol +0 -1
  323. package/contracts/product/ClaimService.sol +82 -51
  324. package/contracts/product/IPricingService.sol +9 -9
  325. package/contracts/product/IProductComponent.sol +6 -0
  326. package/contracts/product/PolicyService.sol +15 -10
  327. package/contracts/product/PricingService.sol +7 -7
  328. package/contracts/product/Product.sol +51 -54
  329. package/contracts/registry/ChainNft.sol +6 -9
  330. package/contracts/registry/IRegistry.sol +0 -3
  331. package/contracts/registry/IRegistryService.sol +6 -4
  332. package/contracts/registry/ITransferInterceptor.sol +1 -2
  333. package/contracts/registry/Registry.sol +6 -4
  334. package/contracts/registry/RegistryAdmin.sol +7 -23
  335. package/contracts/registry/RegistryService.sol +37 -55
  336. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  337. package/contracts/registry/ReleaseRegistry.sol +201 -191
  338. package/contracts/registry/ServiceAuthorizationV3.sol +20 -15
  339. package/contracts/shared/Component.sol +25 -21
  340. package/contracts/shared/ComponentService.sol +235 -131
  341. package/contracts/shared/ComponentVerifyingService.sol +22 -14
  342. package/contracts/shared/IComponent.sol +6 -2
  343. package/contracts/shared/IComponentService.sol +25 -13
  344. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  345. package/contracts/shared/ILifecycle.sol +3 -1
  346. package/contracts/shared/IRegisterable.sol +11 -0
  347. package/contracts/shared/InstanceLinkedComponent.sol +67 -25
  348. package/contracts/shared/KeyValueStore.sol +1 -1
  349. package/contracts/shared/Lifecycle.sol +15 -4
  350. package/contracts/shared/NftOwnable.sol +8 -4
  351. package/contracts/shared/Registerable.sol +15 -7
  352. package/contracts/shared/Service.sol +4 -7
  353. package/contracts/staking/Staking.sol +2 -3
  354. package/contracts/staking/StakingService.sol +14 -0
  355. package/contracts/type/RiskId.sol +1 -1
  356. package/contracts/type/RoleId.sol +0 -12
  357. package/contracts/type/StateId.sol +14 -1
  358. package/contracts/upgradeability/ProxyManager.sol +2 -1
  359. package/package.json +1 -1
  360. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  361. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  362. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  363. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  364. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  365. package/contracts/authorization/ModuleAuthorization.sol +0 -78
@@ -11,60 +11,74 @@ import {TimestampLib} from "../type/Timestamp.sol";
11
11
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
12
12
 
13
13
  contract Authorization
14
- is IAuthorization
14
+ is IAuthorization
15
15
  {
16
- uint256 public constant GIF_VERSION = 3;
17
- string public constant ROLE_NAME_SUFFIX = "Role";
18
- string public constant SERVICE_ROLE_NAME_SUFFIX = "ServiceRole";
16
+ uint256 public constant GIF_RELEASE = 3;
19
17
 
20
- string internal _mainTargetName = "Component";
21
- Str[] internal _targets;
18
+ string public constant ROLE_NAME_SUFFIX = "Role";
19
+ string public constant SERVICE_ROLE_NAME_SUFFIX = "ServiceRole";
22
20
 
23
- mapping(Str target => RoleId roleid) internal _targetRole;
24
- mapping(Str target => bool exists) internal _targetExists;
21
+ ObjectType[] internal _serviceDomains;
22
+ mapping(ObjectType domain => Str target) internal _serviceTarget;
25
23
 
26
- RoleId[] internal _roles;
27
- mapping(RoleId role => RoleInfo info) internal _roleInfo;
24
+ string internal _mainTargetName = "Component";
25
+ Str[] internal _targets;
28
26
 
29
- mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
30
- mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
27
+ mapping(Str target => RoleId roleid) internal _targetRole;
28
+ mapping(Str target => bool exists) internal _targetExists;
31
29
 
30
+ RoleId[] internal _roles;
31
+ mapping(RoleId role => RoleInfo info) internal _roleInfo;
32
32
 
33
- constructor(string memory mainTargetName) {
34
- _mainTargetName = mainTargetName;
33
+ mapping(Str target => RoleId[] authorizedRoles) internal _authorizedRoles;
34
+ mapping(Str target => mapping(RoleId authorizedRole => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
35
35
 
36
- _setupRoles();
37
- _setupTargets();
38
- _setupTargetAuthorizations();
36
+
37
+ constructor(string memory mainTargetName) {
38
+ _mainTargetName = mainTargetName;
39
+
40
+ _setupServiceTargets();
41
+ _setupRoles();
42
+ _setupTargets();
43
+ _setupTargetAuthorizations();
44
+ }
45
+
46
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
47
+ return _serviceDomains;
48
+ }
49
+
50
+ function getServiceRole(ObjectType serviceDomain) public virtual pure returns (RoleId serviceRoleId) {
51
+ return RoleIdLib.roleForTypeAndVersion(
52
+ serviceDomain,
53
+ getRelease());
39
54
  }
40
55
 
41
- function getRelease() public virtual pure returns(VersionPart release) {
42
- return VersionPartLib.toVersionPart(GIF_VERSION);
56
+ function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget) {
57
+ return _serviceTarget[serviceDomain];
43
58
  }
44
59
 
45
60
  function getRoles() external view returns(RoleId[] memory roles) {
46
61
  return _roles;
47
62
  }
48
63
 
49
- function getServiceRole(ObjectType serviceDomain) public virtual pure returns (RoleId serviceRoleId) {
50
- return RoleIdLib.roleForTypeAndVersion(
51
- serviceDomain, getRelease());
64
+ function roleExists(RoleId roleId) public view returns(bool exists) {
65
+ return _roleInfo[roleId].roleType != RoleType.Undefined;
52
66
  }
53
67
 
54
68
  function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory info) {
55
69
  return _roleInfo[roleId];
56
70
  }
57
71
 
58
- function roleExists(RoleId roleId) public view returns(bool exists) {
59
- return _roleInfo[roleId].roleType != RoleType.Undefined;
72
+ function getTargetName() public virtual view returns (string memory name) {
73
+ return _mainTargetName;
60
74
  }
61
75
 
62
- function getTarget() public view returns(Str) {
63
- if (_targets.length > 0) {
64
- return _targets[0];
65
- }
76
+ function getMainTarget() public view returns(Str) {
77
+ return getTarget(_mainTargetName);
78
+ }
66
79
 
67
- return StrLib.toStr("");
80
+ function getTarget(string memory targetName) public view returns(Str target) {
81
+ return StrLib.toStr(targetName);
68
82
  }
69
83
 
70
84
  function getTargets() external view returns(Str[] memory targets) {
@@ -87,26 +101,60 @@ contract Authorization
87
101
  return _authorizedFunctions[target][roleId];
88
102
  }
89
103
 
90
- function getTargetName() public virtual view returns (string memory name) {
91
- return _mainTargetName;
92
- }
104
+ function getRelease() public virtual pure returns(VersionPart release) {
105
+ return VersionPartLib.toVersionPart(GIF_RELEASE);
106
+ }
107
+
108
+ /// @dev Sets up the relevant service targets for the component.
109
+ /// Overwrite this function for a specific component.
110
+ function _setupServiceTargets() internal virtual { }
93
111
 
94
- /// @dev Overwrite this function for a specific realease.
95
- /// The first target added represents the components/module main target.
112
+ /// @dev Sets up the relevant (non-service) targets for the component.
113
+ /// Overwrite this function for a specific component.
96
114
  function _setupTargets() internal virtual { }
97
115
 
98
- /// @dev Overwrite this function for a specific realease.
116
+ /// @dev Sets up the relevant roles for the component.
117
+ /// Overwrite this function for a specific component.
99
118
  function _setupRoles() internal virtual {}
100
119
 
101
- /// @dev Overwrite this function for a specific realease.
120
+ /// @dev Sets up the relevant target authorizations for the component.
121
+ /// Overwrite this function for a specific realease.
102
122
  function _setupTargetAuthorizations() internal virtual {}
103
123
 
124
+
125
+ /// @dev Add the service target role for the specified service domain
126
+ function _addServiceTargetWithRole(ObjectType serviceDomain) internal {
127
+ // add service domain
128
+ _serviceDomains.push(serviceDomain);
129
+
130
+ // get versioned target name
131
+ string memory serviceTargetName = ObjectTypeLib.toVersionedName(
132
+ ObjectTypeLib.toName(serviceDomain),
133
+ "Service",
134
+ getRelease().toInt());
135
+
136
+ _serviceTarget[serviceDomain] = StrLib.toStr(serviceTargetName);
137
+
138
+ RoleId serviceRoleId = getServiceRole(serviceDomain);
139
+ string memory serviceRoleName = ObjectTypeLib.toVersionedName(
140
+ ObjectTypeLib.toName(serviceDomain),
141
+ "ServiceRole",
142
+ getRelease().toInt());
143
+
144
+ _addTargetWithRole(
145
+ serviceTargetName,
146
+ serviceRoleId,
147
+ serviceRoleName);
148
+ }
149
+
150
+
104
151
  /// @dev Use this method to to add an authorized role.
105
152
  function _addRole(RoleId roleId, RoleInfo memory info) internal {
106
153
  _roles.push(roleId);
107
154
  _roleInfo[roleId] = info;
108
155
  }
109
156
 
157
+
110
158
  /// @dev Add a contract role for the provided role id and name.
111
159
  function _addContractRole(RoleId roleId, string memory name) internal {
112
160
  _addRole(
@@ -118,6 +166,7 @@ contract Authorization
118
166
  name));
119
167
  }
120
168
 
169
+
121
170
  /// @dev Add the versioned service role for the specified service domain
122
171
  function _addServiceRole(ObjectType serviceDomain) internal {
123
172
  _addContractRole(
@@ -128,10 +177,12 @@ contract Authorization
128
177
  getRelease().toInt()));
129
178
  }
130
179
 
180
+
131
181
  function _addComponentTargetWithRole(ObjectType componentType) internal {
132
182
  _addComponentTargetWithRole(componentType, 0);
133
183
  }
134
184
 
185
+
135
186
  function _addComponentTargetWithRole(ObjectType componentType, uint64 index) internal {
136
187
  _addTargetWithRole(
137
188
  getTargetName(),
@@ -140,6 +191,7 @@ contract Authorization
140
191
  getTargetName()));
141
192
  }
142
193
 
194
+
143
195
  /// @dev Add a contract role for the provided role id and name.
144
196
  function _addCustomRole(RoleId roleId, RoleId adminRoleId, uint32 maxMemberCount, string memory name) internal {
145
197
  _addRole(
@@ -177,11 +229,13 @@ contract Authorization
177
229
  }
178
230
  }
179
231
 
232
+
180
233
  /// @dev Use this method to to add an authorized target.
181
234
  function _addTarget(string memory name) internal {
182
235
  _addTargetWithRole(name, RoleIdLib.zero(), "");
183
236
  }
184
237
 
238
+
185
239
  /// @dev Use this method to authorize the specified role to access the target.
186
240
  function _authorizeForTarget(string memory target, RoleId authorizedRoleId)
187
241
  internal
@@ -192,6 +246,7 @@ contract Authorization
192
246
  return _authorizedFunctions[targetStr][authorizedRoleId];
193
247
  }
194
248
 
249
+
195
250
  /// @dev Use this method to authorize a specific function authorization
196
251
  function _authorize(IAccess.FunctionInfo[] storage functions, bytes4 selector, string memory name) internal {
197
252
  functions.push(
@@ -201,13 +256,25 @@ contract Authorization
201
256
  createdAt: TimestampLib.blockTimestamp()}));
202
257
  }
203
258
 
204
- function _toTargetRoleName(string memory targetName) internal view returns (string memory) {
259
+
260
+ /// @dev role id for targets registry, staking and instance
261
+ function _toTargetRoleId(ObjectType targetDomain)
262
+ internal
263
+ pure
264
+ returns (RoleId targetRoleId)
265
+ {
266
+ return RoleIdLib.roleForType(targetDomain);
267
+ }
268
+
269
+
270
+ function _toTargetRoleName(string memory targetName) internal pure returns (string memory) {
205
271
  return string(
206
272
  abi.encodePacked(
207
273
  targetName,
208
274
  ROLE_NAME_SUFFIX));
209
275
  }
210
276
 
277
+
211
278
  /// @dev creates a role info object from the provided parameters
212
279
  function _toRoleInfo(RoleId adminRoleId, RoleType roleType, uint32 maxMemberCount, string memory name) internal view returns (RoleInfo memory info) {
213
280
  return RoleInfo({
@@ -215,7 +282,8 @@ contract Authorization
215
282
  adminRoleId: adminRoleId,
216
283
  roleType: roleType,
217
284
  maxMemberCount: maxMemberCount,
218
- createdAt: TimestampLib.blockTimestamp()});
285
+ createdAt: TimestampLib.blockTimestamp(),
286
+ pausedAt: TimestampLib.max()});
219
287
  }
220
288
  }
221
289
 
@@ -21,6 +21,7 @@ interface IAccess {
21
21
  uint32 maxMemberCount;
22
22
  Str name;
23
23
  Timestamp createdAt;
24
+ Timestamp pausedAt;
24
25
  }
25
26
 
26
27
  struct TargetInfo {
@@ -41,9 +41,10 @@ interface IAccessAdmin is
41
41
  // grant/revoke/renounce role
42
42
  error ErrorRoleUnknown(RoleId roleId);
43
43
  error ErrorRoleIsLocked(RoleId roleId);
44
- error ErrorRoleIsDisabled(RoleId roleId);
44
+ error ErrorRoleIsPaused(RoleId roleId);
45
45
  error ErrorRoleMembersLimitReached(RoleId roleId, uint256 memberCountLimit);
46
- error ErrorRoleRemovalDisabled(RoleId roleId);
46
+ error ErrorRoleMemberNotContract(RoleId roleId, address notContract);
47
+ error ErrorRoleMemberRemovalDisabled(RoleId roleId, address expectedMember);
47
48
 
48
49
  // create target
49
50
  error ErrorTargetAlreadyCreated(address target, string name);
@@ -54,6 +55,7 @@ interface IAccessAdmin is
54
55
 
55
56
  // lock target
56
57
  error ErrorTagetNotLockable();
58
+ error ErrorTargetAlreadyLocked(address target, bool isLocked);
57
59
 
58
60
  // authorize target functions
59
61
  error ErrorAuthorizeForAdminRoleInvalid(address target);
@@ -11,16 +11,18 @@ interface IAuthorization is
11
11
  IAccess
12
12
  {
13
13
 
14
- /// @dev Returns the release (VersionPart) for which the authorizations are defined by this contract.
15
- /// Matches with the release returned by the linked service authorization.
16
- function getRelease() external view returns(VersionPart release);
17
-
18
- /// @dev Returns the list of involved roles.
19
- function getRoles() external view returns(RoleId[] memory roles);
14
+ /// @dev Returns the list of service targets.
15
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains);
20
16
 
21
17
  /// @dev Returns the service role for the specified service domain.
22
18
  function getServiceRole(ObjectType serviceDomain) external pure returns (RoleId serviceRoleId);
23
19
 
20
+ /// @dev Returns the service target for the specified domain.
21
+ function getServiceTarget(ObjectType serviceDomain) external view returns(Str serviceTarget);
22
+
23
+ /// @dev Returns the list of involved roles.
24
+ function getRoles() external view returns(RoleId[] memory roles);
25
+
24
26
  /// @dev Returns the name for the provided role id.
25
27
  function getRoleInfo(RoleId roleId) external view returns (RoleInfo memory roleInfo);
26
28
 
@@ -33,7 +35,7 @@ interface IAuthorization is
33
35
  function getTargetName() external view returns (string memory name);
34
36
 
35
37
  /// @dev Returns the main target.
36
- function getTarget() external view returns(Str target);
38
+ function getMainTarget() external view returns(Str target);
37
39
 
38
40
  /// @dev Returns the complete list of targets.
39
41
  function getTargets() external view returns(Str[] memory targets);
@@ -50,5 +52,9 @@ interface IAuthorization is
50
52
 
51
53
  /// @dev For the given target and role id the list of authorized functions is returned
52
54
  function getAuthorizedFunctions(Str target, RoleId roleId) external view returns(FunctionInfo[] memory authorizatedFunctions);
55
+
56
+ /// @dev Returns the release (VersionPart) for which the authorizations are defined by this contract.
57
+ /// Matches with the release returned by the linked service authorization.
58
+ function getRelease() external view returns(VersionPart release);
53
59
  }
54
60
 
@@ -1,11 +1,13 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
4
6
  import {IAccess} from "../authorization/IAccess.sol";
5
7
  import {ObjectType} from "../type/ObjectType.sol";
6
8
  import {VersionPart} from "../type/Version.sol";
7
9
 
8
- interface IServiceAuthorization {
10
+ interface IServiceAuthorization is IERC165 {
9
11
 
10
12
  /// @dev Returns the commit hash representing the deployed release
11
13
  function getCommitHash()
@@ -0,0 +1,38 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
+
6
+ abstract contract ReleaseAccessManager is
7
+ AccessManager
8
+ {
9
+ bool private _releaseIsLocked;
10
+
11
+ function setReleaseLocked(bool locked)
12
+ external
13
+ onlyAuthorized()
14
+ {
15
+ _releaseIsLocked = locked;
16
+ }
17
+
18
+ function isReleaseLocked()
19
+ external
20
+ view
21
+ returns (bool isLocked)
22
+ {
23
+ return _releaseIsLocked;
24
+ }
25
+
26
+ function isTargetClosed(address target)
27
+ public
28
+ virtual override
29
+ view
30
+ returns (bool)
31
+ {
32
+ if (_releaseIsLocked) {
33
+ return true;
34
+ }
35
+
36
+ return super.isTargetClosed(target);
37
+ }
38
+ }
@@ -1,6 +1,8 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
4
6
  import {IAccess} from "../authorization/IAccess.sol";
5
7
  import {ObjectType} from "../type/ObjectType.sol";
6
8
  import {IServiceAuthorization} from "./IServiceAuthorization.sol";
@@ -10,30 +12,36 @@ import {TimestampLib} from "../type/Timestamp.sol";
10
12
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
11
13
 
12
14
  /// @dev Base contract for release specific service authorization contracts.
13
- contract ServiceAuthorization
14
- is IServiceAuthorization
15
+ contract ServiceAuthorization is
16
+ IServiceAuthorization
15
17
  {
16
- uint256 public constant GIF_VERSION_3 = 3;
18
+ uint256 public constant COMMIT_HASH_LENGTH = 40;
19
+ uint256 public constant GIF_INITIAL_VERSION = 3;
17
20
 
18
- string private _commitHash;
21
+ uint256 public immutable VERSION;
22
+ string public COMMIT_HASH;
19
23
 
20
24
  ObjectType[] internal _serviceDomains;
21
25
  mapping(ObjectType domain => address service) internal _serviceAddress;
22
26
  mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
23
27
  mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccess.FunctionInfo[] functions)) internal _authorizedFunctions;
24
28
 
25
- constructor(string memory commitHash) {
26
- _commitHash = commitHash;
29
+ constructor(string memory commitHash, uint256 version) {
30
+ assert(bytes(commitHash).length == COMMIT_HASH_LENGTH);
31
+ assert(version >= GIF_INITIAL_VERSION);
32
+
33
+ COMMIT_HASH = commitHash;
34
+ VERSION = version;
27
35
  _setupDomains();
28
36
  _setupDomainAuthorizations();
29
37
  }
30
38
 
31
39
  function getCommitHash() external view returns(string memory commitHash) {
32
- return _commitHash;
40
+ return COMMIT_HASH;
33
41
  }
34
42
 
35
43
  function getRelease() external view returns(VersionPart release) {
36
- return VersionPartLib.toVersionPart(GIF_VERSION_3);
44
+ return VersionPartLib.toVersionPart(VERSION);
37
45
  }
38
46
 
39
47
  function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
@@ -56,6 +64,15 @@ contract ServiceAuthorization
56
64
  return _authorizedFunctions[serviceDomain][authorizedDomain];
57
65
  }
58
66
 
67
+ // ERC165
68
+ function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
69
+ return (
70
+ interfaceId == type(IServiceAuthorization).interfaceId ||
71
+ interfaceId == type(IERC165).interfaceId
72
+ );
73
+ }
74
+
75
+
59
76
  /// @dev Overwrite this function for a specific realease.
60
77
  function _setupDomains() internal virtual {}
61
78
 
@@ -86,5 +103,4 @@ contract ServiceAuthorization
86
103
  name: StrLib.toStr(name),
87
104
  createdAt: TimestampLib.blockTimestamp()}));
88
105
  }
89
- }
90
-
106
+ }
@@ -134,7 +134,6 @@ contract BasicDistribution is
134
134
  initialOwner,
135
135
  name,
136
136
  token,
137
- "", // registry data
138
137
  ""); // component specifc data
139
138
  }
140
139
  }
@@ -36,15 +36,6 @@ abstract contract Distribution is
36
36
  _;
37
37
  }
38
38
 
39
- function register()
40
- external
41
- virtual
42
- onlyOwner()
43
- {
44
- _getDistributionStorage()._componentService.registerDistribution();
45
- _approveTokenHandler(type(uint256).max);
46
- }
47
-
48
39
 
49
40
  function isDistributor(address candidate)
50
41
  public
@@ -137,12 +128,11 @@ abstract contract Distribution is
137
128
 
138
129
  function _initializeDistribution(
139
130
  address registry,
140
- NftId instanceNftId,
131
+ NftId productNftId,
141
132
  IAuthorization authorization,
142
133
  address initialOwner,
143
134
  string memory name,
144
135
  address token,
145
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
146
136
  bytes memory componentData // component specifidc data
147
137
  )
148
138
  internal
@@ -151,14 +141,13 @@ abstract contract Distribution is
151
141
  {
152
142
  _initializeInstanceLinkedComponent(
153
143
  registry,
154
- instanceNftId,
144
+ productNftId,
155
145
  name,
156
146
  token,
157
147
  DISTRIBUTION(),
158
148
  authorization,
159
149
  true,
160
150
  initialOwner,
161
- registryData,
162
151
  componentData);
163
152
 
164
153
  DistributionStorage storage $ = _getDistributionStorage();
@@ -280,9 +269,9 @@ abstract contract Distribution is
280
269
  return _getDistributionStorage()._distributionService.withdrawCommission(distributorNftId, amount);
281
270
  }
282
271
 
283
- function _nftTransferFrom(address from, address to, uint256 tokenId) internal virtual override {
272
+ function _nftTransferFrom(address from, address to, uint256 tokenId, address operator) internal virtual override {
284
273
  // keep track of distributor nft owner
285
- emit LogDistributorUpdated(to, msg.sender);
274
+ emit LogDistributorUpdated(to, operator);
286
275
  DistributionStorage storage $ = _getDistributionStorage();
287
276
  $._distributorNftId[from] = NftIdLib.zero();
288
277
  $._distributorNftId[to] = NftIdLib.toNftId(tokenId);
@@ -73,7 +73,7 @@ contract DistributionService is
73
73
  InstanceReader instanceReader = instance.getInstanceReader();
74
74
 
75
75
  {
76
- NftId productNftId = _getProductNftId(instanceReader, distributionNftId);
76
+ NftId productNftId = _getProductNftId(distributionNftId);
77
77
  IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
78
78
 
79
79
  UFixed variableDistributionFees = productInfo.distributionFee.fractionalFee;
@@ -171,7 +171,7 @@ contract DistributionService is
171
171
  if (bytes(code).length == 0) {
172
172
  revert ErrorIDistributionServiceInvalidReferral(code);
173
173
  }
174
- if (expiryAt.eqz()) {
174
+ if (expiryAt.eqz() || expiryAt.lte(TimestampLib.blockTimestamp())) {
175
175
  revert ErrorIDistributionServiceExpirationInvalid(expiryAt);
176
176
  }
177
177
 
@@ -217,11 +217,14 @@ contract DistributionService is
217
217
  )
218
218
  external
219
219
  virtual
220
- restricted
220
+ restricted()
221
221
  onlyNftOfType(distributionNftId, DISTRIBUTION())
222
222
  {
223
223
  if (referralIsValid(distributionNftId, referralId)) {
224
- IInstance instance = _getInstanceForDistribution(distributionNftId);
224
+ IRegistry registry = getRegistry();
225
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
226
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
227
+
225
228
  // update book keeping for referral info
226
229
  IDistribution.ReferralInfo memory referralInfo = instance.getInstanceReader().getReferralInfo(referralId);
227
230
  referralInfo.usedReferrals += 1;
@@ -236,10 +239,12 @@ contract DistributionService is
236
239
  )
237
240
  external
238
241
  virtual
239
- restricted
242
+ restricted()
240
243
  onlyNftOfType(distributionNftId, DISTRIBUTION())
241
244
  {
242
- IInstance instance = _getInstanceForDistribution(distributionNftId);
245
+ IRegistry registry = getRegistry();
246
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
247
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
243
248
  InstanceReader reader = instance.getInstanceReader();
244
249
  InstanceStore store = instance.getInstanceStore();
245
250
 
@@ -321,7 +326,9 @@ contract DistributionService is
321
326
  return false;
322
327
  }
323
328
 
324
- IInstance instance = _getInstanceForDistribution(distributionNftId);
329
+ IRegistry registry = getRegistry();
330
+ IRegistry.ObjectInfo memory distributionInfo = registry.getObjectInfo(distributionNftId);
331
+ IInstance instance = _getInstanceForComponent(registry, distributionInfo.parentNftId);
325
332
  IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
326
333
 
327
334
  if (info.distributorNftId.eqz()) {
@@ -12,7 +12,7 @@ interface IDistributionComponent is IInstanceLinkedComponent {
12
12
  error ErrorDistributionNotDistributor(address distributor);
13
13
  error ErrorDistributionAlreadyDistributor(address distributor, NftId distributorNftId);
14
14
 
15
- event LogDistributorUpdated(address to, address caller);
15
+ event LogDistributorUpdated(address to, address operator);
16
16
 
17
17
  /// @dev Returns true iff the provided address is registered as a distributor with this distribution component.
18
18
  function isDistributor(address candidate) external view returns (bool);
@@ -3,12 +3,12 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount, AmountLib} from "../../type/Amount.sol";
5
5
  import {BasicPool} from "../../pool/BasicPool.sol";
6
- import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
6
  import {Fee} from "../../type/Fee.sol";
8
7
  import {IAuthorization} from "../../authorization/IAuthorization.sol";
8
+ import {IComponents} from "../../instance/module/IComponents.sol";
9
9
  import {NftId} from "../../type/NftId.sol";
10
10
  import {Seconds} from "../../type/Timestamp.sol";
11
- import {UFixed} from "../../type/UFixed.sol";
11
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
12
12
 
13
13
  contract FirePool is
14
14
  BasicPool
@@ -16,7 +16,7 @@ contract FirePool is
16
16
 
17
17
  constructor(
18
18
  address registry,
19
- NftId instanceNftId,
19
+ NftId fireProductNftId,
20
20
  string memory componentName,
21
21
  address token,
22
22
  IAuthorization authorization
@@ -25,18 +25,28 @@ contract FirePool is
25
25
  address initialOwner = msg.sender;
26
26
  _intialize(
27
27
  registry,
28
- instanceNftId,
28
+ fireProductNftId,
29
29
  componentName,
30
30
  token,
31
+ IComponents.PoolInfo({
32
+ maxBalanceAmount: AmountLib.max(),
33
+ isInterceptingBundleTransfers: false,
34
+ isProcessingConfirmedClaims: false,
35
+ isExternallyManaged: false,
36
+ isVerifyingApplications: false,
37
+ collateralizationLevel: UFixedLib.one(),
38
+ retentionLevel: UFixedLib.one()
39
+ }),
31
40
  authorization,
32
41
  initialOwner);
33
42
  }
34
43
 
35
44
  function _intialize(
36
45
  address registry,
37
- NftId instanceNftId,
46
+ NftId fireProductNftId,
38
47
  string memory componentName,
39
48
  address token,
49
+ IComponents.PoolInfo memory poolInfo,
40
50
  IAuthorization authorization,
41
51
  address initialOwner
42
52
  )
@@ -45,10 +55,11 @@ contract FirePool is
45
55
  {
46
56
  _initializeBasicPool(
47
57
  registry,
48
- instanceNftId,
49
- authorization,
50
- token,
58
+ fireProductNftId,
51
59
  componentName,
60
+ token,
61
+ poolInfo,
62
+ authorization,
52
63
  initialOwner);
53
64
  }
54
65