@etherisc/gif-next 0.0.2-b8e869c-076 → 0.0.2-b9366f5-670

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 (300) hide show
  1. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  3. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  4. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  6. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  13. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  15. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  19. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +129 -119
  22. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +41 -45
  24. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -31
  27. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  28. package/artifacts/contracts/example_components/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1558 -0
  29. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  30. package/artifacts/contracts/example_components/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1318 -0
  31. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  32. package/artifacts/contracts/example_components/unpermissioned/SimplePool.sol/SimplePool.json +1664 -0
  33. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  34. package/artifacts/contracts/example_components/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2125 -0
  35. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  37. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  38. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  39. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
  41. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  42. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2 -2
  43. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  44. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  45. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +225 -68
  47. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
  49. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
  51. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +220 -102
  53. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  55. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  56. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  58. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  60. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  62. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  68. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  69. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  70. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +2 -2
  71. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  72. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  73. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  75. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  79. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  81. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  82. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -5
  83. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  84. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  85. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  86. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +36 -28
  87. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  88. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +19 -15
  89. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  90. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  91. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -5
  92. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +31 -51
  94. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  95. package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -5
  96. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +65 -109
  98. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +18 -30
  100. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  101. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +8 -16
  102. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +5 -9
  104. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  105. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -3
  106. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  107. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  108. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +178 -72
  110. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +41 -37
  112. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  113. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  114. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +98 -0
  115. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1 -16
  117. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  118. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  119. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  120. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  121. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  122. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +61 -108
  123. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +31 -47
  125. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PricingService.sol/PricingService.json +107 -152
  127. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +40 -60
  129. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  130. package/artifacts/contracts/product/Product.sol/Product.json +3 -3
  131. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  132. package/artifacts/contracts/product/RiskService.sol/RiskService.json +2 -2
  133. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +2 -2
  135. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  136. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +1 -1
  138. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  139. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  140. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  141. package/artifacts/contracts/registry/Registry.sol/Registry.json +15 -15
  142. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  143. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2 -2
  144. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  145. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  146. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  148. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  149. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  150. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
  152. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  153. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  154. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  155. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  156. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  158. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +2 -2
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +2 -2
  161. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  162. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  164. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  167. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  168. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  173. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  174. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  178. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  179. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  181. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  183. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  184. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  185. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  186. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  187. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  188. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  189. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  190. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  191. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -1
  192. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  193. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  194. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
  195. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  196. package/artifacts/contracts/staking/Staking.sol/Staking.json +53 -19
  197. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  198. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  199. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  200. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +14 -10
  201. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  202. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  203. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
  205. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
  207. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +84 -84
  209. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  210. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  211. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  212. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  213. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  214. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  215. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  216. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  217. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  218. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  219. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  220. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  221. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  222. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  223. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  224. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  225. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  227. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  229. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  231. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  233. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  235. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  237. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  239. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  243. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  246. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  250. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  251. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  252. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
  253. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  254. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  255. package/contracts/distribution/DistributionService.sol +20 -6
  256. package/contracts/distribution/IDistributionService.sol +8 -2
  257. package/contracts/example_components/unpermissioned/SimpleDistribution.sol +50 -0
  258. package/contracts/example_components/unpermissioned/SimpleOracle.sol +137 -0
  259. package/contracts/example_components/unpermissioned/SimplePool.sol +76 -0
  260. package/contracts/example_components/unpermissioned/SimpleProduct.sol +351 -0
  261. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  262. package/contracts/instance/InstanceReader.sol +23 -1
  263. package/contracts/instance/InstanceService.sol +5 -5
  264. package/contracts/instance/InstanceStore.sol +11 -1
  265. package/contracts/instance/base/ObjectLifecycle.sol +7 -1
  266. package/contracts/instance/module/IComponents.sol +1 -1
  267. package/contracts/instance/module/IPolicy.sol +21 -21
  268. package/contracts/oracle/Oracle.sol +1 -0
  269. package/contracts/oracle/OracleService.sol +1 -0
  270. package/contracts/pool/BundleService.sol +8 -6
  271. package/contracts/pool/IPoolService.sol +3 -6
  272. package/contracts/pool/Pool.sol +14 -16
  273. package/contracts/pool/PoolService.sol +7 -39
  274. package/contracts/product/ApplicationService.sol +2 -4
  275. package/contracts/product/BasicProduct.sol +1 -0
  276. package/contracts/product/ClaimService.sol +107 -36
  277. package/contracts/product/IClaimService.sol +27 -5
  278. package/contracts/product/IPolicyService.sol +6 -17
  279. package/contracts/product/IPricingService.sol +7 -7
  280. package/contracts/product/IProductComponent.sol +0 -1
  281. package/contracts/product/PolicyService.sol +58 -69
  282. package/contracts/product/PricingService.sol +37 -40
  283. package/contracts/product/Product.sol +31 -16
  284. package/contracts/registry/IRegistry.sol +1 -1
  285. package/contracts/registry/Registry.sol +1 -1
  286. package/contracts/registry/ReleaseRegistry.sol +1 -1
  287. package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
  288. package/contracts/shared/Component.sol +1 -1
  289. package/contracts/shared/ComponentService.sol +1 -1
  290. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  291. package/contracts/shared/InstanceLinkedComponent.sol +1 -1
  292. package/contracts/shared/NftOwnable.sol +1 -1
  293. package/contracts/staking/IStaking.sol +2 -1
  294. package/contracts/staking/StakeManagerLib.sol +18 -0
  295. package/contracts/staking/Staking.sol +3 -2
  296. package/contracts/staking/TargetManagerLib.sol +7 -3
  297. package/contracts/type/ObjectType.sol +15 -11
  298. package/contracts/type/Seconds.sol +8 -0
  299. package/contracts/type/StateId.sol +1 -0
  300. package/package.json +1 -1
@@ -6,7 +6,7 @@ import {
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
8
  import {
9
- ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
9
+ DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
10
10
  } from "../../contracts/type/RoleId.sol";
11
11
 
12
12
  import {BundleSet} from "../instance/BundleSet.sol";
@@ -15,8 +15,6 @@ import {Instance} from "../instance/Instance.sol";
15
15
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
16
  import {InstanceStore} from "../instance/InstanceStore.sol";
17
17
  import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
18
- import {RoleId} from "../type/RoleId.sol";
19
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
20
18
 
21
19
 
22
20
  contract InstanceAuthorizationV3
@@ -191,6 +189,8 @@ contract InstanceAuthorizationV3
191
189
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
192
190
  _authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
193
191
  _authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
192
+ _authorize(functions, InstanceStore.createPremium.selector, "createPremium");
193
+ _authorize(functions, InstanceStore.updatePremiumState.selector, "updatePremiumState");
194
194
 
195
195
  // authorize claim service role
196
196
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
@@ -6,7 +6,7 @@ import {ClaimId} from "../type/ClaimId.sol";
6
6
  import {DistributorType} from "../type/DistributorType.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
- import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
9
+ import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
10
10
  import {PayoutId} from "../type/PayoutId.sol";
11
11
  import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
12
12
  import {RequestId} from "../type/RequestId.sol";
@@ -80,6 +80,25 @@ contract InstanceReader {
80
80
  return _store.getState(toPolicyKey(policyNftId));
81
81
  }
82
82
 
83
+ function getPremiumInfo(NftId policyNftId)
84
+ public
85
+ view
86
+ returns (IPolicy.PremiumInfo memory info)
87
+ {
88
+ bytes memory data = _store.getData(toPremiumKey(policyNftId));
89
+ if (data.length > 0) {
90
+ return abi.decode(data, (IPolicy.PremiumInfo));
91
+ }
92
+ }
93
+
94
+ function getPremiumInfoState(NftId policyNftId)
95
+ public
96
+ view
97
+ returns (StateId state)
98
+ {
99
+ return _store.getState(toPremiumKey(policyNftId));
100
+ }
101
+
83
102
  function getBundleState(NftId bundleNftId)
84
103
  public
85
104
  view
@@ -364,6 +383,9 @@ contract InstanceReader {
364
383
  return policyNftId.toKey32(POLICY());
365
384
  }
366
385
 
386
+ function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
387
+ return policyNftId.toKey32(PREMIUM());
388
+ }
367
389
 
368
390
  function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
369
391
  return distributorNftId.toKey32(DISTRIBUTOR());
@@ -60,7 +60,7 @@ contract InstanceService is
60
60
 
61
61
  modifier onlyInstance() {
62
62
  address instanceAddress = msg.sender;
63
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
63
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
64
64
  if (instanceNftId.eqz()) {
65
65
  revert ErrorInstanceServiceNotRegistered(instanceAddress);
66
66
  }
@@ -132,7 +132,7 @@ contract InstanceService is
132
132
  virtual
133
133
  onlyInstance()
134
134
  {
135
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
135
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
136
136
  _stakingService.setInstanceLockingPeriod(
137
137
  instanceNftId,
138
138
  stakeLockingPeriod);
@@ -144,7 +144,7 @@ contract InstanceService is
144
144
  virtual
145
145
  onlyInstance()
146
146
  {
147
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
147
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
148
148
  _stakingService.setInstanceRewardRate(
149
149
  instanceNftId,
150
150
  rewardRate);
@@ -156,7 +156,7 @@ contract InstanceService is
156
156
  virtual
157
157
  onlyInstance()
158
158
  {
159
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
159
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
160
160
  _stakingService.refillInstanceRewardReserves(
161
161
  instanceNftId,
162
162
  rewardProvider,
@@ -170,7 +170,7 @@ contract InstanceService is
170
170
  onlyInstance()
171
171
  returns (Amount newBalance)
172
172
  {
173
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
173
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
174
174
  _stakingService.withdrawInstanceRewardReserves(
175
175
  instanceNftId,
176
176
  dipAmount);
@@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
12
  import {RiskId} from "../type/RiskId.sol";
13
13
  import {StateId} from "../type/StateId.sol";
@@ -195,6 +195,16 @@ contract InstanceStore is
195
195
  _updateState(_toNftKey32(policyNftId, POLICY()), newState);
196
196
  }
197
197
 
198
+
199
+ //--- Premium (Policy) ----------------------------------------------//
200
+ function createPremium(NftId policyNftId, IPolicy.PremiumInfo memory premium) external restricted() {
201
+ _create(_toNftKey32(policyNftId, PREMIUM()), abi.encode(premium));
202
+ }
203
+
204
+ function updatePremiumState(NftId policyNftId, StateId newState) external restricted() {
205
+ _updateState(_toNftKey32(policyNftId, PREMIUM()), newState);
206
+ }
207
+
198
208
  //--- Claim -------------------------------------------------------------//
199
209
  function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
200
210
  _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
6
+ import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
7
7
  import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
8
8
  import {Lifecycle} from "../../shared/Lifecycle.sol";
9
9
 
@@ -23,6 +23,7 @@ contract ObjectLifecycle is
23
23
  _setupBundleLifecycle();
24
24
  _setupComponentLifecycle();
25
25
  _setupPolicyLifecycle();
26
+ _setupPremiumLifecycle();
26
27
  _setupClaimLifecycle();
27
28
  _setupPayoutLifecycle();
28
29
  _setupRiskLifecycle();
@@ -57,6 +58,11 @@ contract ObjectLifecycle is
57
58
  setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
58
59
  }
59
60
 
61
+ function _setupPremiumLifecycle() private {
62
+ setInitialState(PREMIUM(), EXPECTED());
63
+ setStateTransition(PREMIUM(), EXPECTED(), PAID());
64
+ }
65
+
60
66
  function _setupClaimLifecycle() private {
61
67
  setInitialState(CLAIM(), SUBMITTED());
62
68
  setStateTransition(CLAIM(), SUBMITTED(), CONFIRMED());
@@ -35,8 +35,8 @@ interface IComponents {
35
35
 
36
36
 
37
37
  struct PoolInfo {
38
- RoleId bundleOwnerRole; // the required role for bundle owners
39
38
  Amount maxBalanceAmount; // max balance amount allowed for pool
39
+ RoleId bundleOwnerRole; // the required role for bundle owners
40
40
  bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
41
41
  bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
42
42
  bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
@@ -11,7 +11,7 @@ import {Timestamp} from "../../type/Timestamp.sol";
11
11
 
12
12
  interface IPolicy {
13
13
 
14
- struct Premium {
14
+ struct PremiumInfo {
15
15
  // premium splitting per target wallet
16
16
  Amount productFeeAmount;
17
17
  Amount distributionFeeAndCommissionAmount;
@@ -19,26 +19,26 @@ interface IPolicy {
19
19
 
20
20
  // detailed positions
21
21
  // this is the net premium calculated by the product
22
- uint256 netPremiumAmount;
22
+ Amount netPremiumAmount;
23
23
  // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
24
- uint256 fullPremiumAmount;
24
+ Amount fullPremiumAmount;
25
25
  // effective premium = fullPremium - discount
26
- uint256 premiumAmount;
27
- uint256 productFeeFixAmount;
28
- uint256 poolFeeFixAmount;
29
- uint256 bundleFeeFixAmount;
30
- uint256 distributionFeeFixAmount;
31
- uint256 productFeeVarAmount;
32
- uint256 poolFeeVarAmount;
33
- uint256 bundleFeeVarAmount;
34
- uint256 distributionFeeVarAmount;
35
- uint256 distributionOwnerFeeFixAmount;
26
+ Amount premiumAmount;
27
+ Amount productFeeFixAmount;
28
+ Amount poolFeeFixAmount;
29
+ Amount bundleFeeFixAmount;
30
+ Amount distributionFeeFixAmount;
31
+ Amount productFeeVarAmount;
32
+ Amount poolFeeVarAmount;
33
+ Amount bundleFeeVarAmount;
34
+ Amount distributionFeeVarAmount;
35
+ Amount distributionOwnerFeeFixAmount;
36
36
  // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
37
- uint256 distributionOwnerFeeVarAmount;
37
+ Amount distributionOwnerFeeVarAmount;
38
38
  // this value is based on distributor type referenced in the referral
39
- uint256 commissionAmount;
39
+ Amount commissionAmount;
40
40
  // this is based on referral used
41
- uint256 discountAmount;
41
+ Amount discountAmount;
42
42
  }
43
43
 
44
44
  /// @dev policy data for the full policy lifecycle
@@ -49,7 +49,6 @@ interface IPolicy {
49
49
  RiskId riskId;
50
50
  Amount sumInsuredAmount;
51
51
  Amount premiumAmount; // expected premium at application time
52
- Amount premiumPaidAmount; // actual paid premium
53
52
  Seconds lifetime;
54
53
  // policy application data, no changes after applying for a policy
55
54
  bytes applicationData;
@@ -69,8 +68,8 @@ interface IPolicy {
69
68
  Amount paidAmount;
70
69
  uint8 payoutsCount;
71
70
  uint8 openPayoutsCount;
72
- bytes submissionData; // claim submission data, no changes after submitting the claim
73
- bytes processData; // data that may include information supporting confirm or decline
71
+ bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
72
+ bytes processData; // use case specific data that may include information supporting confirm or decline
74
73
  Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
75
74
  }
76
75
 
@@ -78,7 +77,8 @@ interface IPolicy {
78
77
  struct PayoutInfo {
79
78
  ClaimId claimId;
80
79
  Amount amount;
81
- bytes data;
82
- Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
80
+ address beneficiary; // for address(0) beneficiary is policy nft owner
81
+ bytes data; // use case specific supporting data
82
+ Timestamp paidAt; // timestamp for actual payout
83
83
  }
84
84
  }
@@ -71,6 +71,7 @@ abstract contract Oracle is
71
71
  return false;
72
72
  }
73
73
 
74
+ /// @dev Not relevant for oracle components
74
75
  function withdrawFees(Amount amount)
75
76
  external
76
77
  virtual
@@ -64,6 +64,7 @@ contract OracleService is
64
64
  ORACLE(),
65
65
  true); // only active
66
66
 
67
+ // TODO move to stronger validation, requester and oracle need to belong to same product cluster
67
68
  // check that requester and oracle share same instance
68
69
  if (componentInfo.parentNftId != oracleInfo.parentNftId) {
69
70
  revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
@@ -121,12 +121,14 @@ contract BundleService is
121
121
  })
122
122
  );
123
123
 
124
- // bundle book keeping
125
- _componentService.increaseBundleBalance(
126
- instanceStore,
127
- bundleNftId,
128
- stakingAmount,
129
- AmountLib.zero()); // fee amount
124
+ if (stakingAmount.gtz()) {
125
+ // bundle book keeping
126
+ _componentService.increaseBundleBalance(
127
+ instanceStore,
128
+ bundleNftId,
129
+ stakingAmount,
130
+ AmountLib.zero()); // fee amount
131
+ }
130
132
 
131
133
  // put bundle under bundle managemet
132
134
  BundleSet bundleManager = instance.getBundleSet();
@@ -80,19 +80,16 @@ interface IPoolService is IService {
80
80
  ) external;
81
81
 
82
82
 
83
- /// @dev create a new bundle for the provided parameters
84
- /// staking fees will be deducted by the pool service from the staking amount
83
+ /// @dev create a new empty bundle with the provided parameters
85
84
  /// may only be called by registered and unlocked pool components.
86
- /// The pool balance is equal to the pool fees plus the capital of all bundles.
87
85
  function createBundle(
88
86
  address owner, // initial bundle owner
89
87
  Fee memory fee, // fees deducted from premium that go to bundle owner
90
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
91
88
  Seconds lifetime, // initial duration for which new policies are covered
92
89
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
93
90
  )
94
91
  external
95
- returns(NftId bundleNftId, Amount netStakedAmount); // the nft id of the newly created bundle
92
+ returns(NftId bundleNftId); // the nft id of the newly created bundle
96
93
 
97
94
 
98
95
  /// @dev increase stakes for bundle
@@ -130,7 +127,7 @@ interface IPoolService is IService {
130
127
 
131
128
 
132
129
  /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
133
- function processSale(NftId bundleNftId, IPolicy.Premium memory premium) external;
130
+ function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
134
131
 
135
132
 
136
133
  /// @dev calulate required collateral for the provided parameters
@@ -113,15 +113,15 @@ abstract contract Pool is
113
113
  view
114
114
  returns (IComponents.PoolInfo memory poolInfo)
115
115
  {
116
- return IComponents.PoolInfo(
117
- PUBLIC_ROLE(), // bundleOwnerRole
118
- AmountLib.max(), // maxCapitalAmount,
119
- isNftInterceptor(), // isInterceptingBundleTransfers
120
- false, // isExternallyManaged,
121
- false, // isVerifyingApplications,
122
- UFixedLib.toUFixed(1), // collateralizationLevel,
123
- UFixedLib.toUFixed(1) // retentionLevel,
124
- );
116
+ return IComponents.PoolInfo({
117
+ maxBalanceAmount: AmountLib.max(),
118
+ bundleOwnerRole: PUBLIC_ROLE(),
119
+ isInterceptingBundleTransfers: isNftInterceptor(),
120
+ isExternallyManaged: false,
121
+ isVerifyingApplications: false,
122
+ collateralizationLevel: UFixedLib.toUFixed(1),
123
+ retentionLevel: UFixedLib.toUFixed(1)
124
+ });
125
125
  }
126
126
 
127
127
  // Internals
@@ -169,9 +169,9 @@ abstract contract Pool is
169
169
  )
170
170
  internal
171
171
  virtual
172
- returns(Amount netAmount)
172
+ returns(Amount)
173
173
  {
174
- _getPoolStorage()._poolService.stake(bundleNftId, amount);
174
+ return _getPoolStorage()._poolService.stake(bundleNftId, amount);
175
175
  }
176
176
 
177
177
 
@@ -287,21 +287,19 @@ abstract contract Pool is
287
287
  _getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
288
288
  }
289
289
 
290
- /// @dev Creates a new bundle using the provided parameter values.
290
+ /// @dev Creates a new empty bundle using the provided parameter values.
291
291
  function _createBundle(
292
292
  address bundleOwner,
293
293
  Fee memory fee,
294
- Amount amount,
295
294
  Seconds lifetime,
296
295
  bytes memory filter
297
296
  )
298
297
  internal
299
- returns(NftId bundleNftId, Amount netStakedAmount)
298
+ returns(NftId bundleNftId)
300
299
  {
301
- (bundleNftId, netStakedAmount) = _getPoolStorage()._poolService.createBundle(
300
+ bundleNftId = _getPoolStorage()._poolService.createBundle(
302
301
  bundleOwner,
303
302
  fee,
304
- amount,
305
303
  lifetime,
306
304
  filter);
307
305
 
@@ -21,7 +21,6 @@ import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
21
21
  import {Fee, FeeLib} from "../type/Fee.sol";
22
22
  import {KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Seconds} from "../type/Seconds.sol";
24
- import {TokenHandler} from "../shared/TokenHandler.sol";
25
24
  import {UFixed} from "../type/UFixed.sol";
26
25
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
27
26
  import {InstanceReader} from "../instance/InstanceReader.sol";
@@ -107,56 +106,25 @@ contract PoolService is
107
106
  function createBundle(
108
107
  address bundleOwner, // initial bundle owner
109
108
  Fee memory fee, // fees deducted from premium that go to bundle owner
110
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
111
109
  Seconds lifetime, // initial duration for which new policies are covered
112
110
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
113
111
  )
114
112
  external
115
113
  virtual
116
- returns(NftId bundleNftId, Amount netStakedAmount)
114
+ returns(NftId bundleNftId)
117
115
  {
118
116
  (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
119
117
 
120
- {
121
- InstanceReader instanceReader = instance.getInstanceReader();
122
- IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
123
- Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
124
- if (currentPoolBalance + stakingAmount > poolInfo.maxBalanceAmount) {
125
- revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, stakingAmount);
126
- }
127
- }
128
-
129
-
130
- Amount stakingFeeAmount;
131
- (stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
132
- _getStakingFee(instance.getInstanceReader(), poolNftId),
133
- stakingAmount);
134
-
135
-
118
+ // create the empty bundle
136
119
  bundleNftId = _bundleService.create(
137
120
  instance,
138
121
  poolNftId,
139
122
  bundleOwner,
140
123
  fee,
141
- netStakedAmount,
124
+ AmountLib.zero(),
142
125
  lifetime,
143
126
  filter);
144
127
 
145
- // pool book keeping
146
- _componentService.increasePoolBalance(
147
- instance.getInstanceStore(),
148
- poolNftId,
149
- netStakedAmount,
150
- stakingFeeAmount);
151
-
152
- // TODO only collect staking token when pool is not externally managed
153
- // pool bookkeeping and collect tokens from bundle owner
154
- _collectStakingAmount(
155
- instance.getInstanceReader(),
156
- poolNftId,
157
- bundleOwner,
158
- stakingAmount);
159
-
160
128
  emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
161
129
  }
162
130
 
@@ -316,7 +284,7 @@ contract PoolService is
316
284
 
317
285
  function processSale(
318
286
  NftId bundleNftId,
319
- IPolicy.Premium memory premium
287
+ IPolicy.PremiumInfo memory premium
320
288
  )
321
289
  external
322
290
  virtual
@@ -328,9 +296,9 @@ contract PoolService is
328
296
  IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
329
297
  IInstance instance = IInstance(instanceObjectInfo.objectAddress);
330
298
 
331
- Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
332
- Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
333
- Amount bundleNetAmount = AmountLib.toAmount(premium.netPremiumAmount);
299
+ Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
300
+ Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
301
+ Amount bundleNetAmount = premium.netPremiumAmount;
334
302
 
335
303
  InstanceStore instanceStore = instance.getInstanceStore();
336
304
  _componentService.increasePoolBalance(
@@ -111,8 +111,7 @@ contract ApplicationService is
111
111
  view
112
112
  returns (Amount premiumAmount)
113
113
  {
114
- return AmountLib.toAmount(
115
- _pricingService.calculatePremium(
114
+ return _pricingService.calculatePremium(
116
115
  info.productNftId,
117
116
  info.riskId,
118
117
  info.sumInsuredAmount,
@@ -120,7 +119,7 @@ contract ApplicationService is
120
119
  info.applicationData,
121
120
  info.bundleNftId,
122
121
  info.referralId
123
- ).premiumAmount);
122
+ ).premiumAmount;
124
123
  }
125
124
 
126
125
 
@@ -192,7 +191,6 @@ contract ApplicationService is
192
191
  riskId: riskId,
193
192
  sumInsuredAmount: sumInsuredAmount,
194
193
  premiumAmount: premiumAmount,
195
- premiumPaidAmount: AmountLib.zero(),
196
194
  lifetime: lifetime,
197
195
  applicationData: applicationData,
198
196
  processData: "",
@@ -21,6 +21,7 @@ abstract contract BasicProduct is
21
21
  {
22
22
  _setFees(productFee, processingFee);
23
23
  }
24
+
24
25
  function _initializeBasicProduct(
25
26
  address registry,
26
27
  NftId instanceNftId,