@etherisc/gif-next 0.0.2-f2df3e2-873 → 0.0.2-f398177-971

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 (252) hide show
  1. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  2. package/artifacts/contracts/components/Component.sol/Component.json +37 -6
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +44 -13
  5. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.json +37 -6
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +44 -13
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +55 -24
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +52 -21
  13. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  14. package/artifacts/contracts/components/Pool.sol/Pool.json +55 -24
  15. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  16. package/artifacts/contracts/components/Product.sol/Product.json +52 -21
  17. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  19. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  20. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +252 -2210
  22. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
  24. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/Instance.sol/Instance.json +346 -2685
  26. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +67 -49
  28. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +219 -53
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +59 -220
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -117
  36. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +37 -13
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  56. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +75 -217
  58. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +33 -66
  60. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +155 -133
  62. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +35 -64
  64. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +463 -119
  66. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +109 -42
  68. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +181 -399
  70. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +81 -94
  72. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +11 -145
  74. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +79 -30
  76. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +229 -88
  78. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +23 -273
  80. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -326
  82. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +265 -32
  84. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +5 -13
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +213 -443
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +74 -75
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +439 -54
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +84 -37
  96. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  98. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +55 -31
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +22 -35
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -25
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +2 -2
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  122. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  123. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
  138. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  140. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
  142. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
  144. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  146. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
  148. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  150. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  154. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
  156. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  158. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestService.sol/TestService.json +17 -25
  160. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  163. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  164. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  165. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Amount.sol/AmountLib.json +100 -4
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +2 -2
  171. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -18
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  180. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  181. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  184. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +2 -2
  186. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  188. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  190. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  192. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  199. package/contracts/components/Component.sol +21 -2
  200. package/contracts/components/Distribution.sol +5 -4
  201. package/contracts/components/IComponent.sol +16 -2
  202. package/contracts/components/IPoolComponent.sol +7 -6
  203. package/contracts/components/IProductComponent.sol +5 -4
  204. package/contracts/components/Pool.sol +8 -8
  205. package/contracts/components/Product.sol +21 -17
  206. package/contracts/instance/IInstance.sol +28 -53
  207. package/contracts/instance/IInstanceService.sol +15 -10
  208. package/contracts/instance/Instance.sol +90 -171
  209. package/contracts/instance/InstanceAccessManager.sol +35 -21
  210. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  211. package/contracts/instance/InstanceReader.sol +56 -5
  212. package/contracts/instance/InstanceService.sol +96 -266
  213. package/contracts/instance/InstanceStore.sol +212 -0
  214. package/contracts/instance/ObjectManager.sol +1 -1
  215. package/contracts/instance/base/ComponentService.sol +47 -20
  216. package/contracts/instance/base/KeyValueStore.sol +0 -31
  217. package/contracts/instance/base/Lifecycle.sol +7 -4
  218. package/contracts/instance/module/IComponents.sol +3 -3
  219. package/contracts/instance/module/IDistribution.sol +3 -2
  220. package/contracts/instance/module/IPolicy.sol +5 -5
  221. package/contracts/instance/service/ApplicationService.sol +58 -227
  222. package/contracts/instance/service/BundleService.sol +65 -119
  223. package/contracts/instance/service/ClaimService.sol +232 -34
  224. package/contracts/instance/service/DistributionService.sol +51 -134
  225. package/contracts/instance/service/IApplicationService.sol +5 -21
  226. package/contracts/instance/service/IBundleService.sol +32 -10
  227. package/contracts/instance/service/IClaimService.sol +37 -39
  228. package/contracts/instance/service/IDistributionService.sol +10 -22
  229. package/contracts/instance/service/IPolicyService.sol +15 -72
  230. package/contracts/instance/service/IPoolService.sol +18 -3
  231. package/contracts/instance/service/IPricingService.sol +37 -0
  232. package/contracts/instance/service/PolicyService.sol +112 -277
  233. package/contracts/instance/service/PoolService.sol +121 -21
  234. package/contracts/instance/service/PricingService.sol +275 -0
  235. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  236. package/contracts/instance/service/ProductService.sol +10 -10
  237. package/contracts/registry/IRegistryService.sol +0 -2
  238. package/contracts/registry/RegistryService.sol +14 -10
  239. package/contracts/shared/IPolicyHolder.sol +23 -9
  240. package/contracts/shared/IRegistryLinked.sol +0 -1
  241. package/contracts/shared/IService.sol +2 -0
  242. package/contracts/shared/NftOwnable.sol +0 -2
  243. package/contracts/shared/PolicyHolder.sol +30 -17
  244. package/contracts/shared/Registerable.sol +10 -9
  245. package/contracts/shared/RegistryLinked.sol +0 -5
  246. package/contracts/shared/TokenHandler.sol +4 -2
  247. package/contracts/types/Amount.sol +44 -0
  248. package/contracts/types/Fee.sol +7 -6
  249. package/contracts/types/ObjectType.sol +5 -1
  250. package/package.json +1 -1
  251. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  252. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
@@ -9,7 +9,7 @@ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTA
9
9
  import {TimestampLib} from "../types/Timestamp.sol";
10
10
  import {NftId} from "../types/NftId.sol";
11
11
 
12
- import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
12
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
13
13
 
14
14
  import {IRegistry} from "../registry/IRegistry.sol";
15
15
 
@@ -73,7 +73,7 @@ contract InstanceAccessManager is
73
73
  _createRole(ADMIN_ROLE(), ADMIN_ROLE_NAME, IAccess.Type.Core);
74
74
  _createRole(PUBLIC_ROLE(), PUBLIC_ROLE_NAME, IAccess.Type.Core);
75
75
  _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
76
- _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Gif);
76
+ _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Gif);// TODO should be of core type
77
77
 
78
78
  // assume `this` is already a member of ADMIN_ROLE
79
79
  EnumerableSet.add(_roleMembers[ADMIN_ROLE()], address(this));
@@ -105,6 +105,7 @@ contract InstanceAccessManager is
105
105
  }
106
106
 
107
107
  // INSTANCE_OWNER_ROLE
108
+ // TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
108
109
  function createRole(string memory roleName, string memory adminName)
109
110
  external
110
111
  restricted()
@@ -142,6 +143,7 @@ contract InstanceAccessManager is
142
143
  _roleInfo[roleId].admin = admin;
143
144
  }
144
145
 
146
+ // TODO core role can be granted only to 1 member
145
147
  function grantRole(RoleId roleId, address member)
146
148
  public
147
149
  restrictedToRoleAdmin(roleId)
@@ -226,7 +228,7 @@ contract InstanceAccessManager is
226
228
  return _roleIds[idx];
227
229
  }
228
230
 
229
- // TODO now: for non existent name returns ADMIN_ROLE id
231
+ // TODO returns ADMIN_ROLE id for non existent name
230
232
  function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
231
233
  return _roleIdForName[ShortStrings.toShortString(name)];
232
234
  }
@@ -250,7 +252,7 @@ contract InstanceAccessManager is
250
252
  _createTarget(target, name, IAccess.Type.Core);
251
253
  }
252
254
  // INSTANCE_SERVICE_ROLE
253
- // assume gif target is registered and belongs to the same instance as instance access manager
255
+ // TODO check for instance mismatch?
254
256
  function createGifTarget(address target, string memory name) external restricted()
255
257
  {
256
258
  if(!_registry.isRegistered(target)) {
@@ -269,26 +271,22 @@ contract InstanceAccessManager is
269
271
  _createTarget(target, name, IAccess.Type.Custom);
270
272
  }
271
273
 
272
- // INSTANCE_SERVICE_ROLE
273
- // IMPORTANT: instance access manager MUST be of Core type -> otherwise will be locked forever
274
- function setTargetLocked(address target, bool locked)
274
+ // TODO instance owner locks component instead of revoking it access to the instance...
275
+ function setTargetLockedByService(address target, bool locked)
275
276
  external
276
- restricted()
277
+ restricted // INSTANCE_SERVICE_ROLE
277
278
  {
278
- IAccess.Type targetType = _targetInfo[target].ttype;
279
- if(target == address(0) || targetType == IAccess.Type.NotInitialized) {
280
- revert IAccess.ErrorIAccessTargetDoesNotExist(target);
281
- }
282
-
283
- if(targetType == IAccess.Type.Core) {
284
- revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
285
- }
279
+ _setTargetLocked(target, locked);
280
+ }
286
281
 
287
- // TODO isLocked is redundant but makes getTargetInfo() faster
288
- _targetInfo[target].isLocked = locked;
289
- _accessManager.setTargetClosed(target, locked);
282
+ function setTargetLockedByInstance(address target, bool locked)
283
+ external
284
+ restricted // INSTANCE_ROLE
285
+ {
286
+ _setTargetLocked(target, locked);
290
287
  }
291
288
 
289
+
292
290
  // allowed combinations of roles and targets:
293
291
  //1) set core role for core target
294
292
  //2) set gif role for gif target
@@ -362,7 +360,7 @@ contract InstanceAccessManager is
362
360
  }
363
361
 
364
362
  function isTargetLocked(address target) public view returns (bool locked) {
365
- return _accessManager.isTargetClosed(target);
363
+ return _targetInfo[target].isLocked;
366
364
  }
367
365
 
368
366
  function targetExists(address target) public view returns (bool exists) {
@@ -497,6 +495,22 @@ contract InstanceAccessManager is
497
495
  }
498
496
  }
499
497
 
498
+ // IMPORTANT: instance access manager MUST be of Core type -> otherwise can be locked forever
499
+ function _setTargetLocked(address target, bool locked) internal
500
+ {
501
+ IAccess.Type targetType = _targetInfo[target].ttype;
502
+ if(target == address(0) || targetType == IAccess.Type.NotInitialized) {
503
+ revert IAccess.ErrorIAccessTargetDoesNotExist(target);
504
+ }
505
+
506
+ if(targetType == IAccess.Type.Core) {
507
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
508
+ }
509
+
510
+ _targetInfo[target].isLocked = locked;
511
+ _accessManager.setTargetClosed(target, locked);
512
+ }
513
+
500
514
  function _setTargetFunctionRole(
501
515
  address target,
502
516
  ShortString name,
@@ -524,4 +538,4 @@ contract InstanceAccessManager is
524
538
  ) public view virtual returns (bool immediate, uint32 delay) {
525
539
  return _accessManager.canCall(caller, target, selector);
526
540
  }
527
- }
541
+ }
@@ -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
+ }
@@ -9,6 +9,7 @@ import {Fee, FeeLib} from "../types/Fee.sol";
9
9
  import {Key32} from "../types/Key32.sol";
10
10
  import {NftId} from "../types/NftId.sol";
11
11
  import {ObjectType, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, TREASURY, BUNDLE} from "../types/ObjectType.sol";
12
+ import {PayoutId} from "../types/PayoutId.sol";
12
13
  import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../types/Referral.sol";
13
14
  import {Registerable} from "../shared/Registerable.sol";
14
15
  import {RiskId} from "../types/RiskId.sol";
@@ -28,6 +29,8 @@ import {ISetup} from "../instance/module/ISetup.sol";
28
29
  import {ITreasury} from "../instance/module/ITreasury.sol";
29
30
  import {TimestampLib} from "../types/Timestamp.sol";
30
31
 
32
+ import {InstanceStore} from "./InstanceStore.sol";
33
+
31
34
 
32
35
  contract InstanceReader {
33
36
 
@@ -44,12 +47,12 @@ contract InstanceReader {
44
47
  revert ErrorInstanceReaderAlreadyInitialized();
45
48
  }
46
49
 
47
- if(address(instance) == address(0)) {
50
+ if(instance == address(0)) {
48
51
  revert ErrorInstanceReaderInstanceAddressZero();
49
52
  }
50
53
 
51
54
  _instance = IInstance(instance);
52
- _store = IKeyValueStore(instance);
55
+ _store = _instance.getInstanceStore();
53
56
 
54
57
  _initialized = true;
55
58
  }
@@ -73,7 +76,36 @@ contract InstanceReader {
73
76
  view
74
77
  returns (StateId state)
75
78
  {
76
- return _instance.getState(toPolicyKey(policyNftId));
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;
77
109
  }
78
110
 
79
111
  function getClaimInfo(NftId policyNftId, ClaimId claimId)
@@ -92,7 +124,26 @@ contract InstanceReader {
92
124
  view
93
125
  returns (StateId state)
94
126
  {
95
- return _instance.getState(claimId.toKey32(policyNftId));
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));
96
147
  }
97
148
 
98
149
  function getRiskInfo(RiskId riskId)
@@ -314,4 +365,4 @@ contract InstanceReader {
314
365
  function toInt(UFixed value) public pure returns (uint256) {
315
366
  return UFixedLib.toInt(value);
316
367
  }
317
- }
368
+ }