@etherisc/gif-next 0.0.2-b4fc06b-491 → 0.0.2-b51dcb9-674

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 (397) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +873 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1030 -264
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +636 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +879 -31
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +897 -51
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +720 -16
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +890 -257
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +726 -282
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +79 -3
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +548 -246
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +446 -3025
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +597 -179
  30. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +511 -225
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +464 -240
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +301 -77
  38. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  40. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  42. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  43. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +311 -122
  44. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  60. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +918 -0
  62. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  64. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1288 -0
  66. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  68. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1384 -0
  70. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +752 -0
  72. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1556 -0
  74. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  76. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +231 -204
  78. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +735 -0
  80. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  82. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +540 -146
  84. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +651 -0
  86. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +669 -153
  88. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IPricingService.sol/IPricingService.json} +245 -216
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +88 -397
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1281 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1622 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +708 -0
  100. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  102. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +864 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +245 -216
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +222 -236
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +257 -310
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +218 -329
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +291 -142
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  128. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  130. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  132. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +107 -27
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -63
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +116 -51
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +116 -51
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  169. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestService.sol/TestService.json +204 -216
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +74 -19
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  216. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  217. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  220. package/contracts/components/Component.sol +272 -0
  221. package/contracts/components/Distribution.sol +205 -86
  222. package/contracts/components/IComponent.sol +90 -0
  223. package/contracts/components/IDistributionComponent.sol +44 -16
  224. package/contracts/components/IPoolComponent.sol +90 -38
  225. package/contracts/components/IProductComponent.sol +15 -9
  226. package/contracts/components/Pool.sol +225 -182
  227. package/contracts/components/Product.sol +255 -177
  228. package/contracts/instance/BundleManager.sol +126 -0
  229. package/contracts/instance/Cloneable.sol +51 -0
  230. package/contracts/instance/IInstance.sol +62 -13
  231. package/contracts/instance/IInstanceService.sol +53 -10
  232. package/contracts/instance/Instance.sol +152 -365
  233. package/contracts/instance/InstanceAccessManager.sol +430 -177
  234. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  235. package/contracts/instance/InstanceReader.sol +116 -38
  236. package/contracts/instance/InstanceService.sol +254 -84
  237. package/contracts/instance/InstanceServiceManager.sol +11 -13
  238. package/contracts/instance/InstanceStore.sol +212 -0
  239. package/contracts/instance/ObjectManager.sol +82 -0
  240. package/contracts/instance/base/ComponentService.sol +148 -0
  241. package/contracts/instance/base/KeyValueStore.sol +13 -36
  242. package/contracts/instance/base/Lifecycle.sol +26 -6
  243. package/contracts/instance/module/IAccess.sol +36 -20
  244. package/contracts/instance/module/IBundle.sol +8 -4
  245. package/contracts/instance/module/IComponents.sol +41 -0
  246. package/contracts/instance/module/IDistribution.sol +3 -0
  247. package/contracts/instance/module/IPolicy.sol +43 -11
  248. package/contracts/instance/module/ISetup.sol +9 -19
  249. package/contracts/instance/service/ApplicationService.sol +186 -0
  250. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  251. package/contracts/instance/service/BundleService.sol +382 -0
  252. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  253. package/contracts/instance/service/ClaimService.sol +437 -0
  254. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  255. package/contracts/instance/service/DistributionService.sol +348 -0
  256. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  257. package/contracts/instance/service/IApplicationService.sol +62 -0
  258. package/contracts/instance/service/IBundleService.sol +118 -0
  259. package/contracts/instance/service/IClaimService.sol +90 -0
  260. package/contracts/instance/service/IDistributionService.sol +76 -1
  261. package/contracts/instance/service/IPolicyService.sol +80 -0
  262. package/contracts/instance/service/IPoolService.sol +94 -17
  263. package/contracts/instance/service/IPricingService.sol +37 -0
  264. package/contracts/instance/service/IProductService.sol +6 -73
  265. package/contracts/instance/service/PolicyService.sol +376 -0
  266. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  267. package/contracts/instance/service/PoolService.sol +403 -0
  268. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  269. package/contracts/instance/service/PricingService.sol +275 -0
  270. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  271. package/contracts/instance/service/ProductService.sol +210 -0
  272. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  273. package/contracts/registry/ChainNft.sol +9 -1
  274. package/contracts/registry/IRegistry.sol +42 -31
  275. package/contracts/registry/IRegistryService.sol +45 -14
  276. package/contracts/registry/ITransferInterceptor.sol +1 -0
  277. package/contracts/registry/Registry.sol +246 -247
  278. package/contracts/registry/RegistryAccessManager.sol +216 -0
  279. package/contracts/registry/RegistryService.sol +117 -275
  280. package/contracts/registry/RegistryServiceManager.sol +24 -26
  281. package/contracts/registry/ReleaseManager.sol +324 -0
  282. package/contracts/registry/TokenRegistry.sol +116 -0
  283. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  284. package/contracts/shared/ERC165.sol +14 -8
  285. package/contracts/shared/INftOwnable.sol +11 -10
  286. package/contracts/shared/IPolicyHolder.sol +40 -0
  287. package/contracts/shared/IRegisterable.sol +4 -6
  288. package/contracts/shared/IRegistryLinked.sol +11 -0
  289. package/contracts/shared/IService.sol +7 -4
  290. package/contracts/shared/IVersionable.sol +4 -47
  291. package/contracts/shared/NftOwnable.sol +65 -83
  292. package/contracts/shared/PolicyHolder.sol +94 -0
  293. package/contracts/shared/ProxyManager.sol +100 -25
  294. package/contracts/shared/Registerable.sol +24 -38
  295. package/contracts/shared/RegistryLinked.sol +43 -0
  296. package/contracts/shared/Service.sol +42 -24
  297. package/contracts/shared/TokenHandler.sol +14 -6
  298. package/contracts/shared/Versionable.sol +4 -92
  299. package/contracts/test/TestRegisterable.sol +1 -1
  300. package/contracts/test/TestService.sol +4 -3
  301. package/contracts/types/Amount.sol +109 -0
  302. package/contracts/types/Blocknumber.sol +1 -0
  303. package/contracts/types/ClaimId.sol +75 -0
  304. package/contracts/types/DistributorType.sol +2 -2
  305. package/contracts/types/Fee.sol +17 -8
  306. package/contracts/types/NftId.sol +8 -0
  307. package/contracts/types/NftIdSet.sol +26 -24
  308. package/contracts/types/ObjectType.sol +16 -7
  309. package/contracts/types/PayoutId.sol +82 -0
  310. package/contracts/types/Referral.sol +4 -0
  311. package/contracts/types/RoleId.sol +26 -11
  312. package/contracts/types/Seconds.sol +54 -0
  313. package/contracts/types/StateId.sol +11 -2
  314. package/contracts/types/Timestamp.sol +18 -13
  315. package/contracts/types/UFixed.sol +1 -0
  316. package/contracts/types/Version.sol +1 -0
  317. package/package.json +3 -3
  318. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  320. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  322. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  324. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  326. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  345. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  347. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  349. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  353. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  355. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  357. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  359. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  361. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  362. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  363. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  364. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  365. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  366. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  368. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  369. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  370. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  371. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  372. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  373. package/contracts/components/BaseComponent.sol +0 -86
  374. package/contracts/components/IBaseComponent.sol +0 -24
  375. package/contracts/experiment/cloning/Cloner.sol +0 -47
  376. package/contracts/experiment/errors/Require.sol +0 -38
  377. package/contracts/experiment/errors/Revert.sol +0 -44
  378. package/contracts/experiment/inheritance/A.sol +0 -53
  379. package/contracts/experiment/inheritance/B.sol +0 -28
  380. package/contracts/experiment/inheritance/C.sol +0 -34
  381. package/contracts/experiment/inheritance/IA.sol +0 -13
  382. package/contracts/experiment/inheritance/IB.sol +0 -10
  383. package/contracts/experiment/inheritance/IC.sol +0 -12
  384. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  385. package/contracts/experiment/statemachine/ISM.sol +0 -25
  386. package/contracts/experiment/statemachine/SM.sol +0 -57
  387. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  388. package/contracts/experiment/types/TypeA.sol +0 -47
  389. package/contracts/experiment/types/TypeB.sol +0 -29
  390. package/contracts/instance/AccessManagedSimple.sol +0 -122
  391. package/contracts/instance/AccessManagerSimple.sol +0 -692
  392. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  393. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  394. package/contracts/instance/base/IInstanceBase.sol +0 -23
  395. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  396. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  397. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -0,0 +1,308 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ 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 "../types/RoleId.sol";
5
+ import {INSTANCE, BUNDLE, APPLICATION, POLICY, CLAIM, PRODUCT, DISTRIBUTION, REGISTRY, POOL} from "../types/ObjectType.sol";
6
+ import {VersionPart} from "../types/Version.sol";
7
+
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+
10
+ import {Instance} from "./Instance.sol";
11
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
12
+ import {InstanceReader} from "./InstanceReader.sol";
13
+ import {BundleManager} from "./BundleManager.sol";
14
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
15
+ import {InstanceStore} from "./InstanceStore.sol";
16
+
17
+
18
+ library InstanceAuthorizationsLib
19
+ {
20
+ function grantInitialAuthorizations(
21
+ InstanceAccessManager clonedAccessManager,
22
+ Instance clonedInstance,
23
+ BundleManager clonedBundleManager,
24
+ InstanceStore clonedInstanceStore,
25
+ address instanceOwner,
26
+ IRegistry registry,
27
+ VersionPart majorVersion)
28
+ external
29
+ {
30
+ _createCoreAndGifRoles(clonedAccessManager);
31
+ _createCoreTargets(clonedAccessManager, clonedInstance, clonedBundleManager, clonedInstanceStore);
32
+ _grantDistributionServiceAuthorizations(clonedAccessManager, clonedInstanceStore, registry, majorVersion);
33
+ _grantPoolServiceAuthorizations(clonedAccessManager, clonedInstanceStore, registry, majorVersion);
34
+ _grantProductServiceAuthorizations(clonedAccessManager, clonedInstanceStore, registry, majorVersion);
35
+ _grantApplicationServiceAuthorizations(clonedAccessManager, clonedInstanceStore, registry, majorVersion);
36
+ _grantPolicyServiceAuthorizations(clonedAccessManager, clonedInstanceStore, registry, majorVersion);
37
+ _grantClaimServiceAuthorizations(clonedAccessManager, clonedInstanceStore, registry, majorVersion);
38
+ _grantBundleServiceAuthorizations(clonedAccessManager, clonedInstanceStore, clonedBundleManager, registry, majorVersion);
39
+ _grantInstanceServiceAuthorizations(clonedAccessManager, clonedInstance, registry, majorVersion);
40
+ _grantInstanceAuthorizations(clonedAccessManager, registry, majorVersion);
41
+ _grantInstanceOwnerAuthorizations(clonedAccessManager, clonedInstance, registry, majorVersion);
42
+ }
43
+
44
+ function _createCoreAndGifRoles(InstanceAccessManager clonedAccessManager) private {
45
+ // default roles controlled by ADMIN_ROLE -> core roles
46
+ // all set/granted only once during cloning (the only exception is INSTANCE_OWNER_ROLE, hooked to instance nft)
47
+ clonedAccessManager.createCoreRole(INSTANCE_SERVICE_ROLE(), "InstanceServiceRole");
48
+ clonedAccessManager.createCoreRole(DISTRIBUTION_SERVICE_ROLE(), "DistributionServiceRole");
49
+ clonedAccessManager.createCoreRole(POOL_SERVICE_ROLE(), "PoolServiceRole");
50
+ clonedAccessManager.createCoreRole(APPLICATION_SERVICE_ROLE(), "ApplicationServiceRole");
51
+ clonedAccessManager.createCoreRole(PRODUCT_SERVICE_ROLE(), "ProductServiceRole");
52
+ clonedAccessManager.createCoreRole(CLAIM_SERVICE_ROLE(), "ClaimServiceRole");
53
+ clonedAccessManager.createCoreRole(POLICY_SERVICE_ROLE(), "PolicyServiceRole");
54
+ clonedAccessManager.createCoreRole(BUNDLE_SERVICE_ROLE(), "BundleServiceRole");
55
+ // default roles controlled by INSTANCE_OWNER_ROLE -> gif roles
56
+ clonedAccessManager.createGifRole(DISTRIBUTION_OWNER_ROLE(), "DistributionOwnerRole", INSTANCE_OWNER_ROLE());
57
+ clonedAccessManager.createGifRole(POOL_OWNER_ROLE(), "PoolOwnerRole", INSTANCE_OWNER_ROLE());
58
+ clonedAccessManager.createGifRole(PRODUCT_OWNER_ROLE(), "ProductOwnerRole", INSTANCE_OWNER_ROLE());
59
+ }
60
+
61
+ function _createCoreTargets(
62
+ InstanceAccessManager clonedAccessManager,
63
+ Instance clonedInstance,
64
+ BundleManager clonedBundleManager,
65
+ InstanceStore clonedInstanceStore)
66
+ private
67
+ {
68
+ clonedAccessManager.createCoreTarget(address(clonedAccessManager), "InstanceAccessManager");// TODO create in instance access manager initializer?
69
+ clonedAccessManager.createCoreTarget(address(clonedInstance), "Instance");// TODO create in instance access manager initializer?
70
+ clonedAccessManager.createCoreTarget(address(clonedBundleManager), "BundleManager");
71
+ clonedAccessManager.createCoreTarget(address(clonedInstanceStore), "InstanceStore");
72
+ }
73
+
74
+ function _grantDistributionServiceAuthorizations(
75
+ InstanceAccessManager clonedAccessManager,
76
+ InstanceStore clonedInstanceStore,
77
+ IRegistry registry,
78
+ VersionPart majorVersion)
79
+ private
80
+ {
81
+ // configure authorization for distribution service on instance
82
+ address distributionServiceAddress = registry.getServiceAddress(DISTRIBUTION(), majorVersion);
83
+ clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
84
+ bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
85
+ instanceDistributionServiceSelectors[0] = clonedInstanceStore.createDistributionSetup.selector;
86
+ instanceDistributionServiceSelectors[1] = clonedInstanceStore.updateDistributionSetup.selector;
87
+ instanceDistributionServiceSelectors[2] = clonedInstanceStore.createDistributorType.selector;
88
+ instanceDistributionServiceSelectors[3] = clonedInstanceStore.updateDistributorType.selector;
89
+ instanceDistributionServiceSelectors[4] = clonedInstanceStore.updateDistributorTypeState.selector;
90
+ instanceDistributionServiceSelectors[5] = clonedInstanceStore.createDistributor.selector;
91
+ instanceDistributionServiceSelectors[6] = clonedInstanceStore.updateDistributor.selector;
92
+ instanceDistributionServiceSelectors[7] = clonedInstanceStore.updateDistributorState.selector;
93
+ instanceDistributionServiceSelectors[8] = clonedInstanceStore.createReferral.selector;
94
+ instanceDistributionServiceSelectors[9] = clonedInstanceStore.updateReferral.selector;
95
+ instanceDistributionServiceSelectors[10] = clonedInstanceStore.updateReferralState.selector;
96
+ clonedAccessManager.setCoreTargetFunctionRole(
97
+ "InstanceStore",
98
+ instanceDistributionServiceSelectors,
99
+ DISTRIBUTION_SERVICE_ROLE());
100
+ }
101
+
102
+ function _grantPoolServiceAuthorizations(
103
+ InstanceAccessManager clonedAccessManager,
104
+ InstanceStore clonedInstanceStore,
105
+ IRegistry registry,
106
+ VersionPart majorVersion)
107
+ private
108
+ {
109
+ // configure authorization for pool service on instance
110
+ address poolServiceAddress = registry.getServiceAddress(POOL(), majorVersion);
111
+ clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
112
+ bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
113
+ instancePoolServiceSelectors[0] = clonedInstanceStore.createPoolSetup.selector;
114
+ instancePoolServiceSelectors[1] = clonedInstanceStore.updatePoolSetup.selector;
115
+ clonedAccessManager.setCoreTargetFunctionRole(
116
+ "InstanceStore",
117
+ instancePoolServiceSelectors,
118
+ POOL_SERVICE_ROLE());
119
+ }
120
+
121
+ function _grantProductServiceAuthorizations(
122
+ InstanceAccessManager clonedAccessManager,
123
+ InstanceStore clonedInstanceStore,
124
+ IRegistry registry,
125
+ VersionPart majorVersion)
126
+ private
127
+ {
128
+ // configure authorization for product service on instance
129
+ address productServiceAddress = registry.getServiceAddress(PRODUCT(), majorVersion);
130
+ clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
131
+ bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
132
+ instanceProductServiceSelectors[0] = clonedInstanceStore.createProductSetup.selector;
133
+ instanceProductServiceSelectors[1] = clonedInstanceStore.updateProductSetup.selector;
134
+ instanceProductServiceSelectors[2] = clonedInstanceStore.createRisk.selector;
135
+ instanceProductServiceSelectors[3] = clonedInstanceStore.updateRisk.selector;
136
+ instanceProductServiceSelectors[4] = clonedInstanceStore.updateRiskState.selector;
137
+ clonedAccessManager.setCoreTargetFunctionRole(
138
+ "InstanceStore",
139
+ instanceProductServiceSelectors,
140
+ PRODUCT_SERVICE_ROLE());
141
+ }
142
+
143
+ function _grantApplicationServiceAuthorizations(
144
+ InstanceAccessManager clonedAccessManager,
145
+ InstanceStore clonedInstanceStore,
146
+ IRegistry registry,
147
+ VersionPart majorVersion)
148
+ private
149
+ {
150
+ // configure authorization for application services on instance
151
+ address applicationServiceAddress = registry.getServiceAddress(APPLICATION(), majorVersion);
152
+ clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
153
+ bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
154
+ instanceApplicationServiceSelectors[0] = clonedInstanceStore.createApplication.selector;
155
+ instanceApplicationServiceSelectors[1] = clonedInstanceStore.updateApplication.selector;
156
+ instanceApplicationServiceSelectors[2] = clonedInstanceStore.updateApplicationState.selector;
157
+ clonedAccessManager.setCoreTargetFunctionRole(
158
+ "InstanceStore",
159
+ instanceApplicationServiceSelectors,
160
+ APPLICATION_SERVICE_ROLE());
161
+ }
162
+
163
+ function _grantPolicyServiceAuthorizations(
164
+ InstanceAccessManager clonedAccessManager,
165
+ InstanceStore clonedInstanceStore,
166
+ IRegistry registry,
167
+ VersionPart majorVersion)
168
+ private
169
+ {
170
+ // configure authorization for policy services on instance
171
+ address policyServiceAddress = registry.getServiceAddress(POLICY(), majorVersion);
172
+ clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
173
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
174
+ instancePolicyServiceSelectors[0] = clonedInstanceStore.updatePolicy.selector;
175
+ instancePolicyServiceSelectors[1] = clonedInstanceStore.updatePolicyState.selector;
176
+ clonedAccessManager.setCoreTargetFunctionRole(
177
+ "InstanceStore",
178
+ instancePolicyServiceSelectors,
179
+ POLICY_SERVICE_ROLE());
180
+ }
181
+
182
+ function _grantClaimServiceAuthorizations(
183
+ InstanceAccessManager clonedAccessManager,
184
+ InstanceStore clonedInstanceStore,
185
+ IRegistry registry,
186
+ VersionPart majorVersion)
187
+ private
188
+ {
189
+ // configure authorization for claim/payout services on instance
190
+ address claimServiceAddress = registry.getServiceAddress(CLAIM(), majorVersion);
191
+ clonedAccessManager.grantRole(CLAIM_SERVICE_ROLE(), claimServiceAddress);
192
+
193
+ bytes4[] memory instancePolicyServiceSelectors = new bytes4[](1);
194
+ instancePolicyServiceSelectors[0] = clonedInstanceStore.updatePolicyClaims.selector;
195
+ clonedAccessManager.setCoreTargetFunctionRole(
196
+ "InstanceStore",
197
+ instancePolicyServiceSelectors,
198
+ CLAIM_SERVICE_ROLE());
199
+
200
+ bytes4[] memory instanceClaimServiceSelectors = new bytes4[](4);
201
+ instanceClaimServiceSelectors[0] = clonedInstanceStore.createClaim.selector;
202
+ instanceClaimServiceSelectors[1] = clonedInstanceStore.updateClaim.selector;
203
+ instanceClaimServiceSelectors[2] = clonedInstanceStore.createPayout.selector;
204
+ instanceClaimServiceSelectors[3] = clonedInstanceStore.updatePayout.selector;
205
+ clonedAccessManager.setCoreTargetFunctionRole(
206
+ "InstanceStore",
207
+ instanceClaimServiceSelectors,
208
+ CLAIM_SERVICE_ROLE());
209
+ }
210
+
211
+ function _grantBundleServiceAuthorizations(
212
+ InstanceAccessManager clonedAccessManager,
213
+ InstanceStore clonedInstanceStore,
214
+ BundleManager clonedBundleManager,
215
+ IRegistry registry,
216
+ VersionPart majorVersion)
217
+ private
218
+ {
219
+ // configure authorization for bundle service on instance
220
+ address bundleServiceAddress = registry.getServiceAddress(BUNDLE(), majorVersion);
221
+ clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
222
+ bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
223
+ instanceBundleServiceSelectors[0] = clonedInstanceStore.createBundle.selector;
224
+ instanceBundleServiceSelectors[1] = clonedInstanceStore.updateBundle.selector;
225
+ instanceBundleServiceSelectors[2] = clonedInstanceStore.updateBundleState.selector;
226
+ clonedAccessManager.setCoreTargetFunctionRole(
227
+ "InstanceStore",
228
+ instanceBundleServiceSelectors,
229
+ BUNDLE_SERVICE_ROLE());
230
+
231
+ // configure authorization for bundle service on bundle manager
232
+ bytes4[] memory bundleManagerBundleServiceSelectors = new bytes4[](5);
233
+ bundleManagerBundleServiceSelectors[0] = clonedBundleManager.linkPolicy.selector;
234
+ bundleManagerBundleServiceSelectors[1] = clonedBundleManager.unlinkPolicy.selector;
235
+ bundleManagerBundleServiceSelectors[2] = clonedBundleManager.add.selector;
236
+ bundleManagerBundleServiceSelectors[3] = clonedBundleManager.lock.selector;
237
+ bundleManagerBundleServiceSelectors[4] = clonedBundleManager.unlock.selector;
238
+ clonedAccessManager.setCoreTargetFunctionRole(
239
+ "BundleManager",
240
+ bundleManagerBundleServiceSelectors,
241
+ BUNDLE_SERVICE_ROLE());
242
+ }
243
+
244
+ function _grantInstanceServiceAuthorizations(
245
+ InstanceAccessManager clonedAccessManager,
246
+ Instance clonedInstance,
247
+ IRegistry registry,
248
+ VersionPart majorVersion)
249
+ private
250
+ {
251
+ // configure authorization for instance service on instance
252
+ address instanceServiceAddress = registry.getServiceAddress(INSTANCE(), majorVersion);
253
+ clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
254
+ bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
255
+ instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
256
+ clonedAccessManager.setCoreTargetFunctionRole(
257
+ "Instance",
258
+ instanceInstanceServiceSelectors,
259
+ INSTANCE_SERVICE_ROLE());
260
+
261
+ // configure authorizations for instance service on instance access manager
262
+ bytes4[] memory accessManagerInstanceServiceSelectors = new bytes4[](3);
263
+ accessManagerInstanceServiceSelectors[0] = clonedAccessManager.createGifTarget.selector;
264
+ accessManagerInstanceServiceSelectors[1] = clonedAccessManager.setTargetLockedByService.selector;
265
+ accessManagerInstanceServiceSelectors[2] = clonedAccessManager.setCoreTargetFunctionRole.selector;
266
+ clonedAccessManager.setCoreTargetFunctionRole(
267
+ "InstanceAccessManager",
268
+ accessManagerInstanceServiceSelectors,
269
+ INSTANCE_SERVICE_ROLE());
270
+ }
271
+
272
+ function _grantInstanceAuthorizations(
273
+ InstanceAccessManager clonedAccessManager,
274
+ IRegistry registry,
275
+ VersionPart majorVersion)
276
+ private
277
+ {
278
+ bytes4[] memory accessManagerInstanceSelectors = new bytes4[](4);
279
+ accessManagerInstanceSelectors[0] = clonedAccessManager.createRole.selector;
280
+ accessManagerInstanceSelectors[1] = clonedAccessManager.createTarget.selector;
281
+ accessManagerInstanceSelectors[2] = clonedAccessManager.setTargetFunctionRole.selector;
282
+ accessManagerInstanceSelectors[3] = clonedAccessManager.setTargetLockedByInstance.selector;
283
+ clonedAccessManager.setCoreTargetFunctionRole(
284
+ "InstanceAccessManager",
285
+ accessManagerInstanceSelectors,
286
+ INSTANCE_ROLE());
287
+ }
288
+
289
+ function _grantInstanceOwnerAuthorizations(
290
+ InstanceAccessManager clonedAccessManager,
291
+ Instance clonedInstance,
292
+ IRegistry registry,
293
+ VersionPart majorVersion)
294
+ private
295
+ {
296
+ // configure authorization for instance owner on instance access manager
297
+ // instance owner role is granted/revoked ONLY by INSTANCE_ROLE
298
+ bytes4[] memory instanceInstanceOwnerSelectors = new bytes4[](4);
299
+ instanceInstanceOwnerSelectors[0] = clonedInstance.createRole.selector;
300
+ instanceInstanceOwnerSelectors[1] = clonedInstance.createTarget.selector;
301
+ instanceInstanceOwnerSelectors[2] = clonedInstance.setTargetFunctionRole.selector;
302
+ instanceInstanceOwnerSelectors[3] = clonedInstance.setTargetLocked.selector;
303
+ clonedAccessManager.setCoreTargetFunctionRole(
304
+ "Instance",
305
+ instanceInstanceOwnerSelectors,
306
+ INSTANCE_OWNER_ROLE());
307
+ }
308
+ }
@@ -3,18 +3,23 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
+ import {ClaimId} from "../types/ClaimId.sol";
6
7
  import {DistributorType} from "../types/DistributorType.sol";
7
8
  import {Fee, FeeLib} from "../types/Fee.sol";
8
9
  import {Key32} from "../types/Key32.sol";
9
10
  import {NftId} from "../types/NftId.sol";
10
- import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY} from "../types/ObjectType.sol";
11
+ import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY, BUNDLE} from "../types/ObjectType.sol";
12
+ import {PayoutId} from "../types/PayoutId.sol";
11
13
  import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../types/Referral.sol";
12
14
  import {Registerable} from "../shared/Registerable.sol";
13
15
  import {RiskId} from "../types/RiskId.sol";
14
16
  import {UFixed, MathLib, UFixedLib} from "../types/UFixed.sol";
15
17
  import {Version} from "../types/Version.sol";
18
+ import {StateId} from "../types/StateId.sol";
16
19
 
17
20
  import {IRegistry} from "../registry/IRegistry.sol";
21
+ import {IBundle} from "../instance/module/IBundle.sol";
22
+ import {IComponents} from "../instance/module/IComponents.sol";
18
23
  import {IDistribution} from "../instance/module/IDistribution.sol";
19
24
  import {IInstance} from "./IInstance.sol";
20
25
  import {IKeyValueStore} from "../instance/base/IKeyValueStore.sol";
@@ -24,44 +29,30 @@ import {ISetup} from "../instance/module/ISetup.sol";
24
29
  import {ITreasury} from "../instance/module/ITreasury.sol";
25
30
  import {TimestampLib} from "../types/Timestamp.sol";
26
31
 
32
+ import {InstanceStore} from "./InstanceStore.sol";
33
+
27
34
 
28
35
  contract InstanceReader {
36
+
37
+ error ErrorInstanceReaderAlreadyInitialized();
38
+ error ErrorInstanceReaderInstanceAddressZero();
39
+
29
40
  bool private _initialized;
30
41
 
31
- IRegistry internal _registry;
32
- NftId internal _instanceNftId;
33
42
  IInstance internal _instance;
34
43
  IKeyValueStore internal _store;
35
44
 
36
- constructor(
37
- address registry,
38
- NftId instanceNftId
39
- )
40
- {
41
- initialize(registry, instanceNftId);
42
- }
43
-
44
- function initialize(address registry, NftId instanceNftId) public {
45
- require(!_initialized, "ERROR:CRD-000:ALREADY_INITIALIZED");
46
-
47
- require(
48
- address(registry) != address(0),
49
- "ERROR:CRD-001:REGISTRY_ZERO");
50
-
51
- require(
52
- instanceNftId.gtz(),
53
- "ERROR:CRD-002:NFT_ID_ZERO");
54
-
55
- _registry = IRegistry(registry);
56
- _instanceNftId = instanceNftId;
57
- IRegistry.ObjectInfo memory instanceInfo = _registry.getObjectInfo(_instanceNftId);
45
+ function initialize(address instance) public {
46
+ if(_initialized) {
47
+ revert ErrorInstanceReaderAlreadyInitialized();
48
+ }
58
49
 
59
- require(
60
- instanceInfo.objectType == INSTANCE(),
61
- "ERROR:CRD-003:PARENT_NOT_INSTANCE");
50
+ if(instance == address(0)) {
51
+ revert ErrorInstanceReaderInstanceAddressZero();
52
+ }
62
53
 
63
- _instance = IInstance(instanceInfo.objectAddress);
64
- _store = IKeyValueStore(instanceInfo.objectAddress);
54
+ _instance = IInstance(instance);
55
+ _store = _instance.getInstanceStore();
65
56
 
66
57
  _initialized = true;
67
58
  }
@@ -80,6 +71,81 @@ contract InstanceReader {
80
71
  }
81
72
  }
82
73
 
74
+ function getPolicyState(NftId policyNftId)
75
+ public
76
+ view
77
+ returns (StateId state)
78
+ {
79
+ return _store.getState(toPolicyKey(policyNftId));
80
+ }
81
+
82
+ /// @dev returns true iff policy may be closed
83
+ /// a policy can be closed all conditions below are met
84
+ /// - policy exists
85
+ /// - has been activated
86
+ /// - is not yet closed
87
+ /// - has no open claims
88
+ /// - claim amount matches sum insured amount or is expired
89
+ function policyIsCloseable(NftId policyNftId)
90
+ public
91
+ view
92
+ returns (bool isCloseable)
93
+ {
94
+ IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
95
+
96
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
97
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
98
+ if (info.closedAt.gtz()) { return false; } // not closeable: already closed
99
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
100
+
101
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
102
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
103
+
104
+ // not closeable: not yet expired
105
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
106
+
107
+ // all conditionsl to close the policy are met
108
+ return true;
109
+ }
110
+
111
+ function getClaimInfo(NftId policyNftId, ClaimId claimId)
112
+ public
113
+ view
114
+ returns (IPolicy.ClaimInfo memory info)
115
+ {
116
+ bytes memory data = _store.getData(claimId.toKey32(policyNftId));
117
+ if (data.length > 0) {
118
+ return abi.decode(data, (IPolicy.ClaimInfo));
119
+ }
120
+ }
121
+
122
+ function getClaimState(NftId policyNftId, ClaimId claimId)
123
+ public
124
+ view
125
+ returns (StateId state)
126
+ {
127
+ return _store.getState(claimId.toKey32(policyNftId));
128
+ }
129
+
130
+ function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
131
+ public
132
+ view
133
+ returns (IPolicy.PayoutInfo memory info)
134
+ {
135
+ bytes memory data = _store.getData(payoutId.toKey32(policyNftId));
136
+ if (data.length > 0) {
137
+ return abi.decode(data, (IPolicy.PayoutInfo));
138
+ }
139
+ }
140
+
141
+ function getPayoutState(NftId policyNftId, PayoutId payoutId)
142
+ public
143
+ view
144
+ returns (StateId state)
145
+ {
146
+ return _store.getState(payoutId.toKey32(policyNftId));
147
+ }
148
+
83
149
  function getRiskInfo(RiskId riskId)
84
150
  public
85
151
  view
@@ -114,6 +180,17 @@ contract InstanceReader {
114
180
  return abi.decode(data, (ITreasury.TreasuryInfo));
115
181
  }
116
182
  }
183
+
184
+ function getBundleInfo(NftId bundleNftId)
185
+ public
186
+ view
187
+ returns (IBundle.BundleInfo memory info)
188
+ {
189
+ bytes memory data = _store.getData(toBundleKey(bundleNftId));
190
+ if (data.length > 0) {
191
+ return abi.decode(data, (IBundle.BundleInfo));
192
+ }
193
+ }
117
194
 
118
195
  function getDistributorTypeInfo(DistributorType distributorType)
119
196
  public
@@ -148,14 +225,15 @@ contract InstanceReader {
148
225
  }
149
226
  }
150
227
 
151
- function getPoolSetupInfo(NftId poolNftId)
228
+ // TODO consider to replace by component type specific getXyzInfo
229
+ function getComponentInfo(NftId poolNftId)
152
230
  public
153
231
  view
154
- returns (ISetup.PoolSetupInfo memory info)
232
+ returns (IComponents.ComponentInfo memory info)
155
233
  {
156
234
  bytes memory data = _store.getData(toPoolKey(poolNftId));
157
235
  if (data.length > 0) {
158
- return abi.decode(data, (ISetup.PoolSetupInfo));
236
+ return abi.decode(data, (IComponents.ComponentInfo));
159
237
  }
160
238
  }
161
239
 
@@ -259,6 +337,10 @@ contract InstanceReader {
259
337
  return distributionNftId.toKey32(DISTRIBUTION());
260
338
  }
261
339
 
340
+ function toBundleKey(NftId poolNftId) public pure returns (Key32) {
341
+ return poolNftId.toKey32(BUNDLE());
342
+ }
343
+
262
344
  function toPoolKey(NftId poolNftId) public pure returns (Key32) {
263
345
  return poolNftId.toKey32(POOL());
264
346
  }
@@ -276,10 +358,6 @@ contract InstanceReader {
276
358
  return _store;
277
359
  }
278
360
 
279
- function getInstanceNftId() external view returns (NftId nftId) {
280
- return _instanceNftId;
281
- }
282
-
283
361
  function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
284
362
  return UFixedLib.toUFixed(value, exp);
285
363
  }
@@ -287,4 +365,4 @@ contract InstanceReader {
287
365
  function toInt(UFixed value) public pure returns (uint256) {
288
366
  return UFixedLib.toInt(value);
289
367
  }
290
- }
368
+ }