@etherisc/gif-next 0.0.2-7d65090-351 → 0.0.2-7dc3cd3-858

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 (339) hide show
  1. package/README.md +18 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1248 -0
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  12. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  14. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +10 -10
  16. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/InstanceAdmin.sol/InstanceAdmin.json +1385 -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 +171 -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 +17 -242
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +90 -74
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +30 -30
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +71 -146
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +32 -16
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +33 -39
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1 -14
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +22 -39
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +30 -91
  44. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdminNew.sol/InstanceAdminNew.json +1616 -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 +110 -76
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +56 -121
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +18 -42
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +73 -79
  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/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +3 -9
  63. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  69. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  70. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  71. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1155 -0
  72. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  73. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  74. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  76. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +13 -0
  78. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +13 -96
  81. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +4 -4
  83. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +3 -3
  85. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  86. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1477 -0
  87. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  88. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  89. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  90. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +2 -2
  91. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  92. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +2 -2
  93. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  94. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  95. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +7 -202
  96. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  98. package/artifacts/contracts/pool/Pool.sol/Pool.json +7 -303
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +2 -2
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  104. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +4 -4
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  106. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +3 -3
  107. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  108. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1299 -0
  109. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  110. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  111. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  112. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
  113. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  114. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
  115. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  118. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  120. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +13 -42
  121. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  122. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +10 -10
  124. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +6 -6
  126. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  127. package/artifacts/contracts/product/PricingService.sol/PricingService.json +40 -40
  128. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +21 -21
  130. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  131. package/artifacts/contracts/product/Product.sol/Product.json +13 -153
  132. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  133. package/artifacts/contracts/product/ProductService.sol/ProductService.json +2 -2
  134. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
  136. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  137. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  138. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +0 -44
  139. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  141. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/Registry.sol/Registry.json +18 -62
  143. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +228 -388
  145. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  146. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  147. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  149. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +48 -126
  151. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  152. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
  153. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  154. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  155. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +56 -80
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +29 -41
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  161. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +13 -0
  166. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  168. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  175. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  176. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +13 -53
  177. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  178. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +2 -2
  179. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  180. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +2 -2
  181. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +1 -1
  182. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +2 -2
  183. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  184. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  185. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  186. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  187. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  189. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  190. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  191. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  192. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  193. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  194. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  195. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  196. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  199. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  200. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  201. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  202. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  203. package/artifacts/contracts/staking/Staking.sol/Staking.json +2 -2
  204. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  205. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +2 -2
  206. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  207. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  208. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  209. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  210. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  211. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  212. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  213. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  214. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  215. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  216. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  217. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  218. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -2
  219. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  220. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  221. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  222. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  223. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  224. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  225. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  226. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  227. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  228. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  230. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  231. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  232. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  234. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  236. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  238. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  240. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  242. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  244. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  252. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +21 -2
  254. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  256. package/contracts/{shared → authorization}/AccessAdmin.sol +131 -297
  257. package/contracts/authorization/Authorization.sol +218 -0
  258. package/contracts/authorization/IAccess.sol +48 -0
  259. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  260. package/contracts/authorization/IAuthorization.sol +54 -0
  261. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  262. package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
  263. package/contracts/authorization/InstanceAdmin.sol +108 -0
  264. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  265. package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
  266. package/contracts/distribution/BasicDistribution.sol +149 -0
  267. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  268. package/contracts/distribution/Distribution.sol +126 -104
  269. package/contracts/distribution/DistributionService.sol +10 -5
  270. package/contracts/distribution/IDistributionComponent.sol +17 -35
  271. package/contracts/distribution/IDistributionService.sol +5 -1
  272. package/contracts/instance/IInstance.sol +5 -6
  273. package/contracts/instance/IInstanceService.sol +6 -12
  274. package/contracts/instance/Instance.sol +61 -70
  275. package/contracts/instance/InstanceAdminNew.sol +261 -0
  276. package/contracts/instance/InstanceAuthorizationV3.sol +209 -0
  277. package/contracts/instance/InstanceReader.sol +22 -9
  278. package/contracts/instance/InstanceService.sol +58 -67
  279. package/contracts/instance/InstanceStore.sol +5 -1
  280. package/contracts/instance/base/ObjectManager.sol +7 -8
  281. package/contracts/oracle/BasicOracle.sol +48 -0
  282. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  283. package/contracts/oracle/IOracle.sol +16 -0
  284. package/contracts/oracle/Oracle.sol +61 -49
  285. package/contracts/pool/BasicPool.sol +164 -0
  286. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  287. package/contracts/pool/IPoolComponent.sol +0 -60
  288. package/contracts/pool/Pool.sol +143 -131
  289. package/contracts/pool/PoolService.sol +1 -1
  290. package/contracts/product/BasicProduct.sol +82 -0
  291. package/contracts/product/BasicProductAuthorization.sol +40 -0
  292. package/contracts/product/IProductComponent.sol +6 -9
  293. package/contracts/product/Product.sol +103 -88
  294. package/contracts/registry/IRegistry.sol +5 -8
  295. package/contracts/registry/Registry.sol +1 -5
  296. package/contracts/registry/RegistryAdmin.sol +101 -71
  297. package/contracts/registry/ReleaseManager.sol +32 -41
  298. package/contracts/registry/ServiceAuthorizationV3.sol +9 -9
  299. package/contracts/shared/ComponentService.sol +18 -56
  300. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  301. package/contracts/shared/IInstanceLinkedComponent.sol +4 -0
  302. package/contracts/shared/InstanceLinkedComponent.sol +26 -19
  303. package/contracts/type/ObjectType.sol +34 -0
  304. package/contracts/type/RoleId.sol +55 -82
  305. package/contracts/type/UFixed.sol +6 -0
  306. package/package.json +4 -1
  307. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +0 -4
  308. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +0 -708
  309. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  310. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  311. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  312. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  313. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  314. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  315. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  316. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  317. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  318. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  319. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  320. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  321. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  322. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  323. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  324. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  325. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  326. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  327. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  328. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  329. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  330. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  331. package/contracts/instance/InstanceAdmin.sol +0 -331
  332. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  333. package/contracts/shared/AccessManagerCustom.sol +0 -741
  334. package/contracts/shared/AccessManagerExtended.sol +0 -481
  335. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  336. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  337. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  338. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  339. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
@@ -11,13 +11,12 @@ import {NftId} from "../type/NftId.sol";
11
11
  import {RoleId} from "../type/RoleId.sol";
12
12
  import {SecondsLib} from "../type/Seconds.sol";
13
13
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
14
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
14
+ import {ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
15
15
  import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
16
16
 
17
17
  import {Service} from "../shared/Service.sol";
18
18
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
19
19
  import {IService} from "../shared/IService.sol";
20
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
21
20
 
22
21
  import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
22
  import {IPoolComponent} from "../pool/IPoolComponent.sol";
@@ -29,12 +28,13 @@ import {IStakingService} from "../staking/IStakingService.sol";
29
28
  import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
29
 
31
30
  import {Instance} from "./Instance.sol";
31
+ import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
32
32
  import {IInstance} from "./IInstance.sol";
33
- import {InstanceAdmin} from "./InstanceAdmin.sol";
33
+ import {InstanceAdminNew} from "./InstanceAdminNew.sol";
34
34
  import {IInstanceService} from "./IInstanceService.sol";
35
35
  import {InstanceReader} from "./InstanceReader.sol";
36
36
  import {InstanceStore} from "./InstanceStore.sol";
37
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
37
+ // import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
38
38
  import {Seconds} from "../type/Seconds.sol";
39
39
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
40
40
 
@@ -50,7 +50,6 @@ contract InstanceService is
50
50
  IRegistryService internal _registryService;
51
51
  IStakingService internal _stakingService;
52
52
 
53
- address internal _masterAccessManager;
54
53
  address internal _masterInstanceAdmin;
55
54
  address internal _masterInstance;
56
55
  address internal _masterInstanceReader;
@@ -101,71 +100,43 @@ contract InstanceService is
101
100
  NftId clonedInstanceNftId
102
101
  )
103
102
  {
103
+ // tx sender will become instance owner
104
104
  address instanceOwner = msg.sender;
105
- AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
- Clones.clone(_masterAccessManager));
107
105
 
108
- // initially grants ADMIN_ROLE to this (being the instance service).
109
- // This will allow the instance service to bootstrap the authorizations of the instance.
110
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
111
- clonedAccessManager.initialize(address(this));
106
+ // start with setting up the instance admin
107
+ InstanceAdminNew clonedInstanceAdmin = InstanceAdminNew(Clones.clone(_masterInstanceAdmin));
108
+ clonedInstanceAdmin.initialize(InstanceAdminNew(_masterInstanceAdmin).getInstanceAuthorization());
112
109
 
113
- clonedInstance = Instance(Clones.clone(_masterInstance));
114
- clonedInstance.initialize(
115
- address(clonedAccessManager),
116
- address(getRegistry()),
117
- instanceOwner);
118
- // initialize and set before instance reader
119
110
  InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
120
- clonedInstanceStore.initialize(address(clonedInstance));
121
- clonedInstance.setInstanceStore(clonedInstanceStore);
122
-
111
+ BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
123
112
  InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
- clonedInstanceReader.initialize(address(clonedInstance));
125
- clonedInstance.setInstanceReader(clonedInstanceReader);
126
113
 
127
- BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
- clonedBundleManager.initialize(address(clonedInstance));
129
- clonedInstance.setBundleManager(clonedBundleManager);
130
-
131
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
132
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
133
- clonedInstanceAdmin.initialize(address(clonedInstance));
134
- clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
135
-
136
- // TODO amend setters with instance specific , policy manager ...
137
-
138
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
139
- InstanceAuthorizationsLib.grantInitialAuthorizations(
140
- clonedAccessManager,
141
- clonedInstanceAdmin,
142
- clonedInstance,
143
- clonedBundleManager,
144
- clonedInstanceStore,
145
- instanceOwner,
114
+ // clone instance
115
+ clonedInstance = Instance(Clones.clone(_masterInstance));
116
+ clonedInstance.initialize(
117
+ clonedInstanceAdmin,
118
+ clonedInstanceStore,
119
+ clonedBundleManager,
120
+ clonedInstanceReader,
146
121
  getRegistry(),
147
- getVersion().toMajorPart());
148
-
149
- clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
122
+ instanceOwner);
150
123
 
151
- // register new instance with registry
152
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
153
- clonedInstanceNftId = info.nftId;
124
+ // register cloned instance with registry
125
+ clonedInstanceNftId = _registryService.registerInstance(
126
+ clonedInstance, instanceOwner).nftId;
154
127
 
155
- // create corresponding staking target
128
+ // register cloned instance as staking target
156
129
  _stakingService.createInstanceTarget(
157
130
  clonedInstanceNftId,
158
131
  TargetManagerLib.getDefaultLockingPeriod(),
159
132
  TargetManagerLib.getDefaultRewardRate());
160
133
 
134
+ // MUST be set after instance is set up and registered
135
+ clonedInstanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
136
+
161
137
  emit LogInstanceCloned(
162
- address(clonedAccessManager),
163
- address(clonedInstanceAdmin),
164
- address(clonedInstance),
165
- address(clonedInstanceStore),
166
- address(clonedBundleManager),
167
- address(clonedInstanceReader),
168
- clonedInstanceNftId);
138
+ clonedInstanceNftId,
139
+ address(clonedInstance));
169
140
  }
170
141
 
171
142
 
@@ -239,9 +210,10 @@ contract InstanceService is
239
210
  instanceNftId).objectAddress);
240
211
 
241
212
  // no revert in case already locked
242
- instance.getInstanceAdmin().setTargetLockedByService(
243
- componentAddress,
244
- locked);
213
+ // TODO refactor/implement
214
+ // instance.getInstanceAdmin().setTargetLockedByService(
215
+ // componentAddress,
216
+ // locked);
245
217
  }
246
218
 
247
219
 
@@ -255,14 +227,13 @@ contract InstanceService is
255
227
  returns(NftId masterInstanceNftId)
256
228
  {
257
229
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
258
- if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
259
230
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
260
231
  if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
261
232
 
262
233
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
263
234
 
264
235
  IInstance instance = IInstance(instanceAddress);
265
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
236
+ InstanceAdminNew instanceAdmin = instance.getInstanceAdmin();
266
237
  address instanceAdminAddress = address(instanceAdmin);
267
238
  InstanceReader instanceReader = instance.getInstanceReader();
268
239
  address instanceReaderAddress = address(instanceReader);
@@ -282,7 +253,6 @@ contract InstanceService is
282
253
  if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
283
254
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
284
255
 
285
- _masterAccessManager = instance.authority();
286
256
  _masterInstanceAdmin = instanceAdminAddress;
287
257
  _masterInstance = instanceAddress;
288
258
  _masterInstanceReader = instanceReaderAddress;
@@ -314,7 +284,7 @@ contract InstanceService is
314
284
  Instance instance = Instance(instanceInfo.objectAddress);
315
285
 
316
286
  InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
- upgradedInstanceReaderClone.initialize(address(instance));
287
+ upgradedInstanceReaderClone.initializeWithInstance(address(instance));
318
288
  instance.setInstanceReader(upgradedInstanceReaderClone);
319
289
  }
320
290
 
@@ -340,6 +310,25 @@ contract InstanceService is
340
310
  }
341
311
 
342
312
 
313
+ function initializeAuthorization(
314
+ NftId instanceNftId,
315
+ IInstanceLinkedComponent component
316
+ )
317
+ external
318
+ virtual
319
+ restricted()
320
+ {
321
+ (IInstance instance, ) = _validateInstanceAndComponent(
322
+ instanceNftId,
323
+ address(component));
324
+
325
+ InstanceAdminNew instanceAdmin = instance.getInstanceAdmin();
326
+ instanceAdmin.initializeComponentAuthorization(
327
+ address(component),
328
+ component.getAuthorization());
329
+ }
330
+
331
+
343
332
  function createComponentTarget(
344
333
  NftId instanceNftId,
345
334
  address targetAddress,
@@ -378,13 +367,15 @@ contract InstanceService is
378
367
  // or targetInfo
379
368
  ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
380
369
 
381
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
382
- instanceAdmin.createGifTarget(targetAddress, targetName);
370
+ InstanceAdminNew instanceAdmin = instance.getInstanceAdmin();
371
+
372
+ // TODO refactor/implement
373
+ // instanceAdmin.createGifTarget(targetAddress, targetName);
374
+
383
375
  // set proposed target config
384
- // TODO restriction: gif targets are set only once and only here?
385
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
386
376
  for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
387
- instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
377
+ // TODO refactor/implement
378
+ // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
388
379
  }
389
380
  }
390
381
 
@@ -34,11 +34,15 @@ contract InstanceStore is
34
34
  KeyValueStore,
35
35
  ObjectCounter
36
36
  {
37
- function initialize(address instance)
37
+
38
+ /// @dev This initializer needs to be called from the instance itself.
39
+ function initialize()
38
40
  public
39
41
  initializer()
40
42
  {
43
+ address instance = msg.sender;
41
44
  address authority = IInstance(instance).authority();
45
+
42
46
  __AccessManaged_init(authority);
43
47
 
44
48
  initializeLifecycle();
@@ -22,16 +22,15 @@ contract ObjectManager is
22
22
  mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
23
23
  IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectManager initialization
24
24
 
25
- /// @dev call to initialize MUST be made in the same transaction as cloning of the contract
26
- function initialize(address instanceAddress)
27
- initializer
28
- external
25
+ /// @dev This initializer needs to be called from the instance itself.
26
+ function initialize()
27
+ external
28
+ initializer()
29
29
  {
30
- IInstance instance = IInstance(instanceAddress);
31
- __Cloneable_init(instance.authority(), address(instance.getRegistry()));
32
- _instance = instance;
30
+ _instance = IInstance(msg.sender);
31
+ __Cloneable_init(_instance.authority(), address(_instance.getRegistry()));
33
32
 
34
- emit LogObjectManagerInitialized(instanceAddress);
33
+ emit LogObjectManagerInitialized(address(_instance));
35
34
  }
36
35
 
37
36
  function getInstance() external view returns (IInstance) {
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../../contracts/authorization/IAuthorization.sol";
5
+ import {NftId} from "../../contracts/type/NftId.sol";
6
+ import {Oracle} from "../../contracts/oracle/Oracle.sol";
7
+ import {RequestId} from "../../contracts/type/RequestId.sol";
8
+
9
+ contract BasicOracle is
10
+ Oracle
11
+ {
12
+
13
+ /// Function to provide reponse data releated to request id.
14
+ function respond(
15
+ RequestId requestId,
16
+ bytes memory responseData
17
+ )
18
+ external
19
+ virtual
20
+ restricted()
21
+ {
22
+ _respond(requestId, responseData);
23
+ }
24
+
25
+ function _initializeBasicOracle(
26
+ address registry,
27
+ NftId instanceNftId,
28
+ IAuthorization authorization,
29
+ address initialOwner,
30
+ string memory name,
31
+ address token
32
+ )
33
+ internal
34
+ virtual
35
+ onlyInitializing()
36
+ {
37
+
38
+ _initializeOracle(
39
+ registry,
40
+ instanceNftId,
41
+ authorization,
42
+ initialOwner,
43
+ name,
44
+ token,
45
+ "",
46
+ "");
47
+ }
48
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Authorization} from "../authorization/Authorization.sol";
5
+ import {BasicOracle} from "./BasicOracle.sol";
6
+ import {ORACLE} from "../type/ObjectType.sol";
7
+ import {IAccess} from "../authorization/IAccess.sol";
8
+ import {IOracle} from "./IOracle.sol";
9
+ import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
+ import {RoleId} from "../type/RoleId.sol";
11
+
12
+
13
+ contract BasicOracleAuthorization
14
+ is Authorization
15
+ {
16
+
17
+ constructor(string memory componentName)
18
+ Authorization(componentName)
19
+ {}
20
+
21
+ function _setupTargets()
22
+ internal
23
+ virtual override
24
+ {
25
+ // basic component target
26
+ _addComponentTargetWithRole(ORACLE());
27
+ }
28
+
29
+
30
+ function _setupTargetAuthorizations()
31
+ internal
32
+ virtual override
33
+ {
34
+ IAccess.FunctionInfo[] storage functions;
35
+
36
+ // authorize public role (open access to any account, only allows to lock target)
37
+ functions = _authorizeForTarget(getTargetName(), getServiceRole(ORACLE()));
38
+ _authorize(functions, IOracle.request.selector, "request");
39
+ _authorize(functions, IOracle.cancel.selector, "cancel");
40
+
41
+ // authorize public role (open access to any account, only allows to lock target)
42
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
43
+ _authorize(functions, BasicOracle.respond.selector, "respond");
44
+ }
45
+ }
46
+
@@ -2,6 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {NftId} from "../type/NftId.sol";
5
+ import {RequestId} from "../type/RequestId.sol";
5
6
  import {Timestamp} from "../type/Timestamp.sol";
6
7
 
7
8
 
@@ -17,4 +18,19 @@ interface IOracle {
17
18
  Timestamp expiredAt; // expiry timestamp
18
19
  bool isCancelled;
19
20
  }
21
+
22
+
23
+ /// @dev Callback function for oracle service to notify this oracle component to retreive some oracle data.
24
+ function request(
25
+ RequestId requestId,
26
+ NftId requesterId,
27
+ bytes calldata requestData,
28
+ Timestamp expiryAt
29
+ ) external;
30
+
31
+
32
+ /// @dev Callback function for oracle service to notify this oracle component that the specified oracle request has ben cancelled by the requestor.
33
+ function cancel(
34
+ RequestId requestId
35
+ ) external;
20
36
  }
@@ -2,16 +2,17 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
5
- import {IOracleService} from "./IOracleService.sol";
6
- import {NftId, NftIdLib} from "../type/NftId.sol";
7
- import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
5
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
6
  import {IComponentService} from "../shared/IComponentService.sol";
9
7
  import {IOracleComponent} from "./IOracleComponent.sol";
8
+ import {IOracleService} from "./IOracleService.sol";
10
9
  import {IRegistry} from "../registry/IRegistry.sol";
10
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
11
+ import {NftId, NftIdLib} from "../type/NftId.sol";
12
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
11
13
  import {InstanceReader} from "../instance/InstanceReader.sol";
12
14
  import {RequestId} from "../type/RequestId.sol";
13
15
  import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
14
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
15
16
  import {UFixed} from "../type/UFixed.sol";
16
17
 
17
18
 
@@ -28,29 +29,6 @@ abstract contract Oracle is
28
29
  }
29
30
 
30
31
 
31
- function initializeOracle(
32
- address registry,
33
- NftId instanceNftId,
34
- address initialOwner,
35
- string memory name,
36
- address token,
37
- bytes memory registryData, // writeonly data that will saved in the object info record of the registry
38
- bytes memory componentData // component specifidc data
39
- )
40
- public
41
- virtual
42
- onlyInitializing()
43
- {
44
- initializeInstanceLinkedComponent(registry, instanceNftId, name, token, ORACLE(), true, initialOwner, registryData, componentData);
45
-
46
- OracleStorage storage $ = _getOracleStorage();
47
- $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
48
- $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
49
-
50
- registerInterface(type(IOracleComponent).interfaceId);
51
- }
52
-
53
-
54
32
  function register()
55
33
  external
56
34
  virtual
@@ -60,16 +38,6 @@ abstract contract Oracle is
60
38
  }
61
39
 
62
40
 
63
- function isVerifying()
64
- external
65
- virtual
66
- view
67
- returns (bool verifying)
68
- {
69
- return false;
70
- }
71
-
72
-
73
41
  function request(
74
42
  RequestId requestId,
75
43
  NftId requesterId,
@@ -78,7 +46,7 @@ abstract contract Oracle is
78
46
  )
79
47
  external
80
48
  virtual
81
- // restricted() // TODO enable: only oracle service
49
+ restricted()
82
50
  {
83
51
  _request(requestId, requesterId, requestData, expiryAt);
84
52
  }
@@ -89,16 +57,60 @@ abstract contract Oracle is
89
57
  )
90
58
  external
91
59
  virtual
92
- // restricted() // TODO enable: only oracle service
60
+ restricted()
93
61
  {
94
62
  _cancel(requestId);
95
63
  }
96
64
 
97
65
 
98
- /// @dev internal function for handling requests.
99
- /// empty implementation.
100
- /// overwrite this function to implement use case specific handling
101
- /// for oracle calls.
66
+ /// @dev Not relevant for oracle components, always returns false.
67
+ function isVerifying()
68
+ external
69
+ virtual
70
+ view
71
+ returns (bool verifying)
72
+ {
73
+ return false;
74
+ }
75
+
76
+
77
+ function _initializeOracle(
78
+ address registry,
79
+ NftId instanceNftId,
80
+ IAuthorization authorization,
81
+ address initialOwner,
82
+ string memory name,
83
+ address token,
84
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
85
+ bytes memory componentData // component specifidc data
86
+ )
87
+ internal
88
+ virtual
89
+ onlyInitializing()
90
+ {
91
+ _initializeInstanceLinkedComponent(
92
+ registry,
93
+ instanceNftId,
94
+ name,
95
+ token,
96
+ ORACLE(),
97
+ authorization,
98
+ true,
99
+ initialOwner,
100
+ registryData,
101
+ componentData);
102
+
103
+ OracleStorage storage $ = _getOracleStorage();
104
+ $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
105
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
106
+
107
+ registerInterface(type(IOracleComponent).interfaceId);
108
+ }
109
+
110
+
111
+ /// @dev Internal function for handling requests.
112
+ /// Empty implementation.
113
+ /// Overwrite this function to implement use case specific handling for oracle calls.
102
114
  function _request(
103
115
  RequestId requestId,
104
116
  NftId requesterId,
@@ -111,9 +123,9 @@ abstract contract Oracle is
111
123
  }
112
124
 
113
125
 
114
- /// @dev internal function for cancelling requests.
115
- /// empty implementation.
116
- /// overwrite this function to implement use case specific cancelling
126
+ /// @dev Internal function for cancelling requests.
127
+ /// Empty implementation.
128
+ /// Overwrite this function to implement use case specific cancelling.
117
129
  function _cancel(
118
130
  RequestId requestId
119
131
  )
@@ -123,9 +135,9 @@ abstract contract Oracle is
123
135
  }
124
136
 
125
137
 
126
- /// @dev internal function for handling oracle responses.
127
- /// use this function in use case specific external/public functions
128
- /// to handle use case specific response handling.
138
+ /// @dev Internal function for handling oracle responses.
139
+ /// Default implementation sends response back to oracle service.
140
+ /// Use this function in use case specific external/public functions to handle use case specific response handling.
129
141
  function _respond(
130
142
  RequestId requestId,
131
143
  bytes memory responseData