@etherisc/gif-next 0.0.2-91b514c-961 → 0.0.2-9272c43-568

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 (351) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +34 -18
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +18 -10
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +267 -97
  9. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +652 -36
  11. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  13. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +222 -47
  15. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +175 -27
  18. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +85 -12
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +23 -7
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +221 -60
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +203 -118
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +88 -44
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +20 -4
  40. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +220 -59
  42. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +34 -18
  44. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +220 -59
  46. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +27 -11
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +220 -59
  51. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +2 -2
  53. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +24 -8
  55. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +220 -59
  57. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +24 -8
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +220 -59
  61. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  62. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  63. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -32
  65. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +182 -0
  67. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/Instance.sol/Instance.json +322 -72
  69. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  70. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +608 -295
  71. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +242 -56
  73. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +477 -289
  75. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +208 -26
  77. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +14 -14
  79. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +68 -12
  81. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  82. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +2 -2
  83. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  85. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  87. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  88. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  94. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  95. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  96. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  99. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  101. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  102. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +234 -56
  104. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +54 -38
  110. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +28 -20
  112. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  114. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +220 -59
  115. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +122 -90
  117. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +62 -30
  119. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  121. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  123. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  124. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +104 -22
  125. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +98 -66
  127. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +50 -34
  129. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  130. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +50 -58
  131. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +26 -14
  133. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  134. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  135. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +220 -59
  136. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  137. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +92 -76
  138. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  139. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +47 -39
  140. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  141. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  146. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +94 -86
  148. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  149. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  151. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +48 -44
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  153. package/artifacts/contracts/product/PricingService.sol/PricingService.json +64 -72
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +33 -21
  156. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  165. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  166. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  167. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  168. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +378 -249
  170. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  171. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +243 -68
  172. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  174. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +10 -10
  176. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +384 -186
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  179. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  181. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +128 -76
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  186. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +54 -54
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +28 -28
  191. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +16 -45
  193. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  194. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  200. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  205. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  206. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  215. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  219. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
  224. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +3 -3
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +22 -6
  231. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -2
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +12 -4
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -15
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +15 -7
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +3 -3
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  257. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  258. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +6 -6
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  284. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  285. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  286. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  287. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  288. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  289. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  290. package/contracts/accounting/AccountingService.sol +2 -3
  291. package/contracts/authorization/AccessAdmin.sol +261 -185
  292. package/contracts/authorization/AccessAdminLib.sol +220 -7
  293. package/contracts/authorization/Authorization.sol +38 -229
  294. package/contracts/authorization/IAccess.sol +14 -4
  295. package/contracts/authorization/IAccessAdmin.sol +19 -45
  296. package/contracts/authorization/IAuthorization.sol +3 -56
  297. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  298. package/contracts/authorization/ServiceAuthorization.sol +247 -33
  299. package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
  300. package/contracts/distribution/Distribution.sol +2 -1
  301. package/contracts/distribution/DistributionService.sol +76 -28
  302. package/contracts/distribution/IDistributionComponent.sol +3 -1
  303. package/contracts/distribution/IDistributionService.sol +10 -4
  304. package/contracts/instance/IInstance.sol +43 -4
  305. package/contracts/instance/IInstanceService.sol +28 -3
  306. package/contracts/instance/Instance.sol +80 -39
  307. package/contracts/instance/InstanceAdmin.sol +162 -229
  308. package/contracts/instance/InstanceAuthorizationV3.sol +58 -28
  309. package/contracts/instance/InstanceReader.sol +371 -389
  310. package/contracts/instance/InstanceService.sol +105 -53
  311. package/contracts/instance/base/BalanceStore.sol +3 -5
  312. package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
  313. package/contracts/oracle/OracleService.sol +4 -4
  314. package/contracts/pool/BasicPoolAuthorization.sol +9 -3
  315. package/contracts/pool/BundleService.sol +9 -10
  316. package/contracts/pool/PoolLib.sol +138 -1
  317. package/contracts/pool/PoolService.sol +13 -186
  318. package/contracts/product/ApplicationService.sol +30 -5
  319. package/contracts/product/BasicProductAuthorization.sol +9 -4
  320. package/contracts/product/ClaimService.sol +19 -20
  321. package/contracts/product/IPolicyService.sol +0 -1
  322. package/contracts/product/PolicyService.sol +18 -45
  323. package/contracts/product/PolicyServiceLib.sol +75 -1
  324. package/contracts/product/PricingService.sol +22 -25
  325. package/contracts/registry/RegistryAdmin.sol +27 -97
  326. package/contracts/registry/RegistryAuthorization.sol +35 -25
  327. package/contracts/registry/ReleaseAdmin.sol +42 -100
  328. package/contracts/registry/ReleaseRegistry.sol +12 -9
  329. package/contracts/registry/ServiceAuthorizationV3.sol +33 -20
  330. package/contracts/registry/TokenRegistry.sol +2 -4
  331. package/contracts/shared/ComponentService.sol +29 -5
  332. package/contracts/shared/ContractLib.sol +9 -45
  333. package/contracts/shared/IRegisterable.sol +0 -1
  334. package/contracts/shared/NftOwnable.sol +1 -1
  335. package/contracts/shared/PolicyHolder.sol +3 -2
  336. package/contracts/shared/Service.sol +6 -4
  337. package/contracts/staking/IStakingService.sol +3 -0
  338. package/contracts/staking/Staking.sol +4 -5
  339. package/contracts/staking/StakingService.sol +3 -0
  340. package/contracts/staking/TargetManagerLib.sol +1 -1
  341. package/contracts/type/ObjectType.sol +16 -3
  342. package/contracts/type/RoleId.sol +57 -59
  343. package/contracts/type/String.sol +12 -0
  344. package/contracts/upgradeability/ProxyManager.sol +2 -2
  345. package/contracts/upgradeability/Versionable.sol +4 -1
  346. package/package.json +1 -1
  347. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  348. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  349. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  350. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  351. package/contracts/shared/ComponentVerifyingService.sol +0 -128
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
5
 
6
+ import {IAccess} from "../authorization/IAccess.sol";
6
7
  import {IAuthorization} from "../authorization/IAuthorization.sol";
7
8
  import {IComponentService} from "../shared/IComponentService.sol";
8
9
  import {IInstance} from "./IInstance.sol";
@@ -56,35 +57,100 @@ contract InstanceService is
56
57
  }
57
58
 
58
59
 
59
- modifier onlyInstanceOwner(NftId instanceNftId) {
60
- if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
61
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
62
- }
63
- _;
60
+ /// @inheritdoc IInstanceService
61
+ function createRole(
62
+ string memory roleName,
63
+ RoleId adminRoleId,
64
+ uint32 maxMemberCount
65
+ )
66
+ external
67
+ restricted()
68
+ onlyInstance()
69
+ returns (RoleId roleId)
70
+ {
71
+ IInstance instance = IInstance(msg.sender);
72
+ roleId = instance.getInstanceAdmin().createRole(
73
+ roleName,
74
+ adminRoleId,
75
+ maxMemberCount);
64
76
  }
65
77
 
66
78
 
67
- // TODO check component - service - instance version match
68
- modifier onlyComponent() {
69
- if (! getRegistry().isRegisteredComponent(msg.sender)) {
70
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
71
- }
72
- _;
79
+ /// @inheritdoc IInstanceService
80
+ function setRoleActive(RoleId roleId, bool active)
81
+ external
82
+ restricted()
83
+ onlyInstance()
84
+ {
85
+ IInstance instance = IInstance(msg.sender);
86
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
73
87
  }
74
88
 
89
+
75
90
  /// @inheritdoc IInstanceService
76
- function setInstanceLocked(bool locked)
91
+ function grantRole(RoleId roleId, address account)
77
92
  external
78
- virtual
79
93
  restricted()
80
94
  onlyInstance()
81
95
  {
82
- address instanceAddress = msg.sender;
83
- IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
96
+ IInstance instance = IInstance(msg.sender);
97
+ instance.getInstanceAdmin().grantRole(roleId, account);
84
98
  }
85
99
 
86
100
 
87
- /// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
101
+ /// @inheritdoc IInstanceService
102
+ function revokeRole(RoleId roleId, address account)
103
+ external
104
+ restricted()
105
+ onlyInstance()
106
+ {
107
+ IInstance instance = IInstance(msg.sender);
108
+ instance.getInstanceAdmin().revokeRole(roleId, account);
109
+ }
110
+
111
+
112
+ /// @inheritdoc IInstanceService
113
+ function createTarget(address target, string memory name)
114
+ external
115
+ restricted()
116
+ onlyInstance()
117
+ returns (RoleId contractRoleId)
118
+ {
119
+ IInstance instance = IInstance(msg.sender);
120
+ return instance.getInstanceAdmin().createTarget(target, name);
121
+ }
122
+
123
+
124
+ /// @inheritdoc IInstanceService
125
+ function authorizeFunctions(
126
+ address target,
127
+ RoleId roleId,
128
+ IAccess.FunctionInfo[] memory functions
129
+ )
130
+ external
131
+ restricted()
132
+ onlyInstance()
133
+ {
134
+ IInstance instance = IInstance(msg.sender);
135
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
136
+ }
137
+
138
+
139
+ /// @inheritdoc IInstanceService
140
+ function unauthorizeFunctions(
141
+ address target,
142
+ IAccess.FunctionInfo[] memory functions
143
+ )
144
+ external
145
+ restricted()
146
+ onlyInstance()
147
+ {
148
+ IInstance instance = IInstance(msg.sender);
149
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
150
+ }
151
+
152
+
153
+ /// @inheritdoc IInstanceService
88
154
  function setTargetLocked(address target, bool locked)
89
155
  external
90
156
  virtual
@@ -95,6 +161,19 @@ contract InstanceService is
95
161
  IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
96
162
  }
97
163
 
164
+
165
+ /// @inheritdoc IInstanceService
166
+ function setInstanceLocked(bool locked)
167
+ external
168
+ virtual
169
+ restricted()
170
+ onlyInstance()
171
+ {
172
+ address instanceAddress = msg.sender;
173
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
174
+ }
175
+
176
+
98
177
  /// @inheritdoc IInstanceService
99
178
  function createInstance(bool allowAnyToken)
100
179
  external
@@ -120,9 +199,9 @@ contract InstanceService is
120
199
  IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
121
200
  instanceAdmin.completeSetup(
122
201
  address(getRegistry()),
123
- address(instance),
124
202
  address(instanceAuthorization),
125
- getRelease());
203
+ getRelease(),
204
+ address(instance));
126
205
 
127
206
  // hard checks for newly cloned instance
128
207
  assert(address(instance.getRegistry()) == address(getRegistry()));
@@ -200,7 +279,7 @@ contract InstanceService is
200
279
  returns (Amount newBalance)
201
280
  {
202
281
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
203
- _stakingService.withdrawInstanceRewardReserves(
282
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
204
283
  instanceNftId,
205
284
  dipAmount);
206
285
  }
@@ -274,6 +353,7 @@ contract InstanceService is
274
353
  masterInstanceNftId = info.nftId;
275
354
  }
276
355
 
356
+
277
357
  function upgradeMasterInstanceReader(address instanceReaderAddress)
278
358
  external
279
359
  onlyOwner
@@ -288,10 +368,14 @@ contract InstanceService is
288
368
  _masterInstanceReader = instanceReaderAddress;
289
369
  }
290
370
 
371
+ //--- view functions ------------------------------------------------------------//
372
+
291
373
  function getMasterInstanceReader() external view returns (address) {
292
374
  return _masterInstanceReader;
293
375
  }
294
376
 
377
+ //--- internal functions --------------------------------------------------------//
378
+
295
379
  /// @dev create new cloned instance admin
296
380
  /// function used to setup a new instance
297
381
  function _cloneNewInstanceAdmin()
@@ -342,36 +426,7 @@ contract InstanceService is
342
426
  }
343
427
 
344
428
 
345
- /// all gif targets MUST be children of instanceNftId
346
- function _createGifTarget(
347
- NftId instanceNftId,
348
- address targetAddress,
349
- string memory targetName,
350
- RoleId[] memory roles,
351
- bytes4[][] memory selectors
352
- )
353
- internal
354
- virtual
355
- {
356
- // TODO instanceAdmin will check target instance match anyway
357
- (
358
- IInstance instance, // or instanceInfo
359
- // or targetInfo
360
- ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
361
-
362
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
363
-
364
- // TODO refactor/implement
365
- // instanceAdmin.createGifTarget(targetAddress, targetName);
366
-
367
- // set proposed target config
368
- for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
369
- // TODO refactor/implement
370
- // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
371
- }
372
- }
373
-
374
- /// @dev top level initializer
429
+ /// @dev top level initializer (upgradable contract)
375
430
  function _initialize(
376
431
  address owner,
377
432
  bytes memory data
@@ -414,12 +469,9 @@ contract InstanceService is
414
469
  }
415
470
 
416
471
  componentNftId = componentInfo.nftId;
417
- } else {
418
-
419
472
  }
420
473
 
421
- instance = Instance(instanceInfo.objectAddress);
422
-
474
+ instance = Instance(instanceInfo.objectAddress);
423
475
  }
424
476
 
425
477
 
@@ -24,13 +24,12 @@ contract BalanceStore {
24
24
  mapping(NftId nftId => Amount balance) private _balanceAmount;
25
25
  mapping(NftId nftId => Amount locked) private _lockedAmount;
26
26
  mapping(NftId nftId => Amount fees) private _feeAmount;
27
- mapping(NftId nftId => bool isRegistered) private _isRegistered;
28
27
 
29
- // TODO check if this is made redundant by *Info struct updates
28
+ // used to indicate if the target has been registered as well as when it was last updated (not used externally atm)
30
29
  mapping(NftId nftId => Blocknumber lastUpdatedIn) private _lastUpdatedIn;
31
30
 
32
31
  modifier onlyRegisteredTarget(NftId targetNftId) {
33
- if (!_isRegistered[targetNftId]) {
32
+ if (!_lastUpdatedIn[targetNftId].gtz()) {
34
33
  revert ErrorBalanceStoreTargetNotRegistered(targetNftId);
35
34
  }
36
35
  _;
@@ -55,11 +54,10 @@ contract BalanceStore {
55
54
  }
56
55
 
57
56
  function _registerBalanceTarget(NftId targetNftId) internal {
58
- if (_isRegistered[targetNftId]) {
57
+ if (_lastUpdatedIn[targetNftId].gtz()) {
59
58
  revert ErrorBalanceStoreTargetAlreadyRegistered(targetNftId);
60
59
  }
61
60
 
62
- _isRegistered[targetNftId] = true;
63
61
  _setLastUpdatedIn(targetNftId);
64
62
 
65
63
  emit LogBalanceStoreTargetRegistered(targetNftId);
@@ -14,10 +14,26 @@ contract BasicOracleAuthorization
14
14
  is Authorization
15
15
  {
16
16
 
17
- constructor(string memory componentName)
18
- Authorization(componentName, ORACLE(), true, false)
17
+ constructor(
18
+ string memory componentName,
19
+ string memory commitHash
20
+ )
21
+ Authorization(
22
+ componentName,
23
+ ORACLE(),
24
+ 3,
25
+ commitHash,
26
+ true,
27
+ false)
19
28
  {}
20
29
 
30
+ function _setupServiceTargets()
31
+ internal
32
+ virtual override
33
+ {
34
+ _authorizeServiceDomain(ORACLE(), address(15));
35
+ }
36
+
21
37
  function _setupTargetAuthorizations()
22
38
  internal
23
39
  virtual override
@@ -48,7 +48,7 @@ contract OracleService is
48
48
  )
49
49
  external
50
50
  virtual
51
- // restricted() // add authz
51
+ restricted()
52
52
  onlyNftOfType(oracleNftId, ORACLE())
53
53
  returns (RequestId requestId)
54
54
  {
@@ -104,7 +104,7 @@ contract OracleService is
104
104
  )
105
105
  external
106
106
  virtual
107
- // restricted() // add authz
107
+ restricted()
108
108
  returns (bool success)
109
109
  {
110
110
  (
@@ -153,7 +153,7 @@ contract OracleService is
153
153
  function resend(RequestId requestId)
154
154
  external
155
155
  virtual
156
- // restricted() // add authz
156
+ restricted()
157
157
  {
158
158
  (
159
159
  IRegistry.ObjectInfo memory info,
@@ -192,7 +192,7 @@ contract OracleService is
192
192
  function cancel(RequestId requestId)
193
193
  external
194
194
  virtual
195
- // restricted() // add authz
195
+ restricted()
196
196
  {
197
197
  (
198
198
  IRegistry.ObjectInfo memory info,
@@ -18,15 +18,21 @@ contract BasicPoolAuthorization
18
18
  {
19
19
 
20
20
  constructor(string memory poolName)
21
- Authorization(poolName, POOL(), true, true)
21
+ Authorization(
22
+ poolName,
23
+ POOL(),
24
+ 3,
25
+ COMMIT_HASH,
26
+ true,
27
+ true)
22
28
  {}
23
29
 
24
30
  function _setupServiceTargets()
25
31
  internal
26
32
  virtual override
27
33
  {
28
- _addServiceTargetWithRole(COMPONENT());
29
- _addServiceTargetWithRole(POOL());
34
+ _authorizeServiceDomain(COMPONENT(), address(11));
35
+ _authorizeServiceDomain(POOL(), address(12));
30
36
  }
31
37
 
32
38
  function _setupTokenHandlerAuthorizations() internal virtual override {
@@ -4,7 +4,6 @@ pragma solidity ^0.8.20;
4
4
  import {IAccountingService} from "../accounting/IAccountingService.sol";
5
5
  import {IBundle} from "../instance/module/IBundle.sol";
6
6
  import {IBundleService} from "./IBundleService.sol";
7
- import {IComponents} from "../instance/module/IComponents.sol";
8
7
  import {IComponentService} from "../shared/IComponentService.sol";
9
8
  import {IRegistry} from "../registry/IRegistry.sol";
10
9
  import {IRegistryService} from "../registry/IRegistryService.sol";
@@ -13,19 +12,19 @@ import {InstanceStore} from "../instance/InstanceStore.sol";
13
12
 
14
13
  import {Amount, AmountLib} from "../type/Amount.sol";
15
14
  import {BundleSet} from "../instance/BundleSet.sol";
16
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
15
  import {Fee} from "../type/Fee.sol";
18
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
17
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
18
  import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
21
- import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
19
+ import {PoolLib} from "./PoolLib.sol";
22
20
  import {Seconds} from "../type/Seconds.sol";
21
+ import {Service} from "../shared/Service.sol";
22
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
24
24
 
25
- string constant BUNDLE_SERVICE_NAME = "BundleService";
26
25
 
27
26
  contract BundleService is
28
- ComponentVerifyingService,
27
+ Service,
29
28
  IBundleService
30
29
  {
31
30
 
@@ -69,7 +68,7 @@ contract BundleService is
69
68
  {
70
69
  _checkNftType(bundleNftId, BUNDLE());
71
70
 
72
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
71
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
73
72
  InstanceReader instanceReader = instance.getInstanceReader();
74
73
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
75
74
  if(bundleInfo.poolNftId.eqz()) {
@@ -96,7 +95,7 @@ contract BundleService is
96
95
  restricted()
97
96
  returns(NftId bundleNftId)
98
97
  {
99
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
98
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
100
99
 
101
100
  // register bundle with registry
102
101
  bundleNftId = _registryService.registerBundle(
@@ -190,7 +189,7 @@ contract BundleService is
190
189
  // checks
191
190
  _checkNftType(bundleNftId, BUNDLE());
192
191
 
193
- (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
192
+ (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
194
193
 
195
194
  // udpate bundle state
196
195
  instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
@@ -212,7 +211,7 @@ contract BundleService is
212
211
  // checks
213
212
  _checkNftType(bundleNftId, BUNDLE());
214
213
 
215
- (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
214
+ (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
216
215
 
217
216
  // effects
218
217
  // udpate bundle state
@@ -344,7 +343,7 @@ contract BundleService is
344
343
  // checks
345
344
  _checkNftType(bundleNftId, BUNDLE());
346
345
 
347
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
346
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
348
347
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
349
348
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
350
349
 
@@ -15,6 +15,8 @@ import {InstanceReader} from "../instance/InstanceReader.sol";
15
15
  import {InstanceStore} from "../instance/InstanceStore.sol";
16
16
  import {NftId} from "../type/NftId.sol";
17
17
  import {ObjectType, BUNDLE, POOL} from "../type/ObjectType.sol";
18
+ import {PayoutId} from "../type/PayoutId.sol";
19
+ import {TokenHandler} from "../shared/TokenHandler.sol";
18
20
  import {UFixed} from "../type/UFixed.sol";
19
21
 
20
22
  library PoolLib {
@@ -105,7 +107,7 @@ library PoolLib {
105
107
  Amount payoutAmount,
106
108
  address payoutBeneficiary
107
109
  )
108
- external
110
+ public
109
111
  view
110
112
  returns (
111
113
  Amount netPayoutAmount,
@@ -204,6 +206,50 @@ library PoolLib {
204
206
  instance = IInstance(instanceAddress);
205
207
  }
206
208
 
209
+
210
+ function getAndVerifyActiveComponent(
211
+ IRegistry registry,
212
+ address sender,
213
+ ObjectType expectedComponentType
214
+ )
215
+ public
216
+ view
217
+ returns (
218
+ NftId componentNftId,
219
+ IInstance instance
220
+ )
221
+ {
222
+ (
223
+ IRegistry.ObjectInfo memory info,
224
+ address instanceAddress
225
+ ) = ContractLib.getAndVerifyComponent(
226
+ registry,
227
+ sender,
228
+ expectedComponentType,
229
+ true); // only active components
230
+
231
+ componentNftId = info.nftId;
232
+ instance = IInstance(instanceAddress);
233
+ }
234
+
235
+
236
+ function getInstanceForComponent(
237
+ IRegistry registry,
238
+ NftId componentNftId
239
+ )
240
+ public
241
+ view
242
+ returns (
243
+ IInstance instance
244
+ )
245
+ {
246
+ NftId productNftId = registry.getParentNftId(componentNftId);
247
+ NftId instanceNftId = registry.getParentNftId(productNftId);
248
+ address instanceAddress = registry.getObjectAddress(instanceNftId);
249
+ return IInstance(instanceAddress);
250
+ }
251
+
252
+
207
253
  function checkNftType(
208
254
  IRegistry registry,
209
255
  NftId nftId,
@@ -213,4 +259,95 @@ library PoolLib {
213
259
  revert INftOwnable.ErrorNftOwnableInvalidType(nftId, expectedObjectType);
214
260
  }
215
261
  }
262
+
263
+ function transferTokenAndNotifyPolicyHolder(
264
+ IRegistry registry,
265
+ InstanceReader instanceReader,
266
+ TokenHandler poolTokenHandler,
267
+ NftId productNftId,
268
+ NftId policyNftId,
269
+ PayoutId payoutId,
270
+ Amount payoutAmount,
271
+ address payoutBeneficiary
272
+ )
273
+ external
274
+ {
275
+ (
276
+ Amount netPayoutAmount,
277
+ Amount processingFeeAmount,
278
+ address beneficiary
279
+ ) = calculatePayoutAmounts(
280
+ registry,
281
+ instanceReader,
282
+ productNftId,
283
+ policyNftId,
284
+ payoutAmount,
285
+ payoutBeneficiary);
286
+
287
+ // 1st token tx to payout to beneficiary
288
+ poolTokenHandler.pushToken(
289
+ beneficiary,
290
+ netPayoutAmount);
291
+
292
+ // 2nd token tx to transfer processing fees to product wallet
293
+ // if processingFeeAmount > 0
294
+ if (processingFeeAmount.gtz()) {
295
+ poolTokenHandler.pushToken(
296
+ instanceReader.getWallet(productNftId),
297
+ processingFeeAmount);
298
+ }
299
+
300
+ // callback to policy holder if applicable
301
+ policyHolderPayoutExecuted(
302
+ registry,
303
+ policyNftId,
304
+ payoutId,
305
+ beneficiary,
306
+ netPayoutAmount);
307
+ }
308
+
309
+ function policyHolderPayoutExecuted(
310
+ IRegistry registry,
311
+ NftId policyNftId,
312
+ PayoutId payoutId,
313
+ address beneficiary,
314
+ Amount payoutAmount
315
+ )
316
+ private
317
+ {
318
+ IPolicyHolder policyHolder = getPolicyHolder(registry, policyNftId);
319
+ if(address(policyHolder) != address(0)) {
320
+ policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
321
+ }
322
+ }
323
+
324
+ /// @dev Transfers the specified amount from the "from account" to the pool's wallet
325
+ function pullStakingAmount(
326
+ InstanceReader reader,
327
+ NftId poolNftId,
328
+ address from,
329
+ Amount amount
330
+ )
331
+ external
332
+ {
333
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
334
+ info.tokenHandler.pullToken(
335
+ from,
336
+ amount);
337
+ }
338
+
339
+ /// @dev Transfers the specified amount from the pool's wallet to the "to account"
340
+ function pushUnstakingAmount(
341
+ InstanceReader reader,
342
+ NftId poolNftId,
343
+ address to,
344
+ Amount amount
345
+ )
346
+ external
347
+ {
348
+ IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
349
+ info.tokenHandler.pushToken(
350
+ to,
351
+ amount);
352
+ }
216
353
  }