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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -71,7 +71,7 @@ contract PricingService is
71
71
  view
72
72
  virtual override
73
73
  returns (
74
- IPolicy.Premium memory premium
74
+ IPolicy.PremiumInfo memory premium
75
75
  )
76
76
  {
77
77
  InstanceReader reader;
@@ -131,15 +131,14 @@ contract PricingService is
131
131
  premium = _calculateTargetWalletAmounts(premium);
132
132
 
133
133
  // sanity check to validate the fee calculation
134
- if(AmountLib.toAmount(premium.premiumAmount) !=
135
- premium.productFeeAmount
134
+ if(premium.premiumAmount != premium.productFeeAmount
136
135
  + premium.distributionFeeAndCommissionAmount
137
136
  + premium.poolPremiumAndFeeAmount)
138
137
  {
139
138
  revert ErrorPricingServiceTargetWalletAmountsMismatch();
140
139
  }
141
140
 
142
- if (premium.distributionOwnerFeeFixAmount < productInfo.minDistributionOwnerFee.fixedFee) {
141
+ if (premium.distributionOwnerFeeFixAmount.toInt() < productInfo.minDistributionOwnerFee.fixedFee) {
143
142
  revert ErrorIPricingServiceFeeCalculationMismatch(
144
143
  premium.distributionFeeFixAmount,
145
144
  premium.distributionFeeVarAmount,
@@ -172,64 +171,64 @@ contract PricingService is
172
171
  internal
173
172
  pure
174
173
  returns (
175
- IPolicy.Premium memory premium
174
+ IPolicy.PremiumInfo memory premium
176
175
  )
177
176
  {
178
177
  // initial premium amount is the net premium
179
- premium.netPremiumAmount = netPremiumAmount.toInt();
180
- premium.fullPremiumAmount = netPremiumAmount.toInt();
178
+ premium.netPremiumAmount = netPremiumAmount;
179
+ premium.fullPremiumAmount = netPremiumAmount;
181
180
 
182
- uint256 t = productInfo.productFee.fixedFee;
181
+ Amount t = AmountLib.toAmount(productInfo.productFee.fixedFee);
183
182
  premium.productFeeFixAmount = t;
184
- premium.fullPremiumAmount += t;
183
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
185
184
 
186
- t = productInfo.poolFee.fixedFee;
185
+ t = AmountLib.toAmount(productInfo.poolFee.fixedFee);
187
186
  premium.poolFeeFixAmount = t;
188
- premium.fullPremiumAmount += t;
187
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
189
188
 
190
- t = bundleInfo.fee.fixedFee;
189
+ t = AmountLib.toAmount(bundleInfo.fee.fixedFee);
191
190
  premium.bundleFeeFixAmount = t;
192
- premium.fullPremiumAmount += t;
191
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
193
192
 
194
- t = productInfo.distributionFee.fixedFee;
193
+ t = AmountLib.toAmount(productInfo.distributionFee.fixedFee);
195
194
  premium.distributionFeeFixAmount = t;
196
- premium.fullPremiumAmount += t;
195
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
197
196
  }
198
197
 
199
198
  function _calculateVariableFeeAmounts(
200
- IPolicy.Premium memory premium,
199
+ IPolicy.PremiumInfo memory premium,
201
200
  IComponents.ProductInfo memory productInfo,
202
201
  IBundle.BundleInfo memory bundleInfo
203
202
  )
204
203
  internal
205
204
  pure
206
205
  returns (
207
- IPolicy.Premium memory intermadiatePremium
206
+ IPolicy.PremiumInfo memory intermadiatePremium
208
207
  )
209
208
  {
210
- UFixed netPremiumAmount = UFixedLib.toUFixed(premium.netPremiumAmount);
209
+ Amount netPremiumAmount = premium.netPremiumAmount;
211
210
 
212
- uint256 t = (netPremiumAmount * productInfo.productFee.fractionalFee).toInt();
211
+ Amount t = netPremiumAmount.multiplyWith(productInfo.productFee.fractionalFee);
213
212
  premium.productFeeVarAmount = t;
214
- premium.fullPremiumAmount += t;
213
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
215
214
 
216
- t = (netPremiumAmount * productInfo.poolFee.fractionalFee).toInt();
215
+ t = netPremiumAmount.multiplyWith(productInfo.poolFee.fractionalFee);
217
216
  premium.poolFeeVarAmount = t;
218
- premium.fullPremiumAmount += t;
217
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
219
218
 
220
- t = (netPremiumAmount * bundleInfo.fee.fractionalFee).toInt();
219
+ t = netPremiumAmount.multiplyWith(bundleInfo.fee.fractionalFee);
221
220
  premium.bundleFeeVarAmount = t;
222
- premium.fullPremiumAmount += t;
221
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
223
222
 
224
- t = (netPremiumAmount * productInfo.distributionFee.fractionalFee).toInt();
223
+ t = netPremiumAmount.multiplyWith(productInfo.distributionFee.fractionalFee);
225
224
  premium.distributionFeeVarAmount = t;
226
- premium.fullPremiumAmount += t;
225
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
227
226
 
228
227
  return premium;
229
228
  }
230
229
 
231
230
  function _calculateDistributionOwnerFeeAmount(
232
- IPolicy.Premium memory premium,
231
+ IPolicy.PremiumInfo memory premium,
233
232
  IComponents.ProductInfo memory productInfo,
234
233
  // ISetup.DistributionSetupInfo memory distInfo,
235
234
  ReferralId referralId,
@@ -237,7 +236,7 @@ contract PricingService is
237
236
  )
238
237
  internal
239
238
  view
240
- returns (IPolicy.Premium memory finalPremium)
239
+ returns (IPolicy.PremiumInfo memory finalPremium)
241
240
  {
242
241
 
243
242
  // if the referral is not valid, then the distribution owner gets everything
@@ -257,10 +256,10 @@ contract PricingService is
257
256
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
258
257
  IDistribution.DistributorTypeInfo memory distributorTypeInfo = reader.getDistributorTypeInfo(distributorInfo.distributorType);
259
258
 
260
- uint256 commissionAmount = UFixedLib.toUFixed(premium.netPremiumAmount).mul(distributorTypeInfo.commissionPercentage).toInt();
259
+ Amount commissionAmount = premium.netPremiumAmount.multiplyWith(distributorTypeInfo.commissionPercentage);
261
260
  premium.commissionAmount = commissionAmount;
262
- premium.discountAmount = UFixedLib.toUFixed(premium.fullPremiumAmount).mul(referralInfo.discountPercentage).toInt();
263
- premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
261
+ premium.discountAmount = premium.fullPremiumAmount.multiplyWith(referralInfo.discountPercentage);
262
+ premium.distributionOwnerFeeFixAmount = AmountLib.toAmount(minDistributionOwnerFee.fixedFee);
264
263
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount - commissionAmount - premium.discountAmount;
265
264
  premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
266
265
  }
@@ -270,29 +269,27 @@ contract PricingService is
270
269
 
271
270
 
272
271
  function _calculateTargetWalletAmounts(
273
- IPolicy.Premium memory premium
272
+ IPolicy.PremiumInfo memory premium
274
273
  )
275
274
  internal
276
275
  virtual
277
276
  view
278
277
  returns (
279
- IPolicy.Premium memory premiumWithTargetWalletAmounts
278
+ IPolicy.PremiumInfo memory premiumWithTargetWalletAmounts
280
279
  )
281
280
  {
282
281
  // fees for product owner
283
- premium.productFeeAmount = AmountLib.toAmount(
284
- premium.productFeeFixAmount + premium.productFeeVarAmount);
282
+ premium.productFeeAmount = premium.productFeeFixAmount + premium.productFeeVarAmount;
285
283
 
286
284
  // fees for distribution owner + distributor commission
287
- premium.distributionFeeAndCommissionAmount = AmountLib.toAmount(
285
+ premium.distributionFeeAndCommissionAmount =
288
286
  premium.distributionFeeFixAmount + premium.distributionOwnerFeeVarAmount
289
- + premium.commissionAmount);
287
+ + premium.commissionAmount;
290
288
 
291
289
  // net premium + fees for pool owner + bundle owner
292
- premium.poolPremiumAndFeeAmount = AmountLib.toAmount(
293
- premium.netPremiumAmount
290
+ premium.poolPremiumAndFeeAmount = premium.netPremiumAmount
294
291
  + premium.poolFeeFixAmount + premium.poolFeeVarAmount
295
- + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
292
+ + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
296
293
 
297
294
  premiumWithTargetWalletAmounts = premium;
298
295
  }
@@ -1,8 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
4
  import {Amount, AmountLib} from "../type/Amount.sol";
7
5
  import {ClaimId} from "../type/ClaimId.sol";
8
6
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
@@ -64,7 +62,7 @@ abstract contract Product is
64
62
  override
65
63
  returns (Amount premiumAmount)
66
64
  {
67
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
65
+ IPolicy.PremiumInfo memory premium = _getProductStorage()._pricingService.calculatePremium(
68
66
  getNftId(),
69
67
  riskId,
70
68
  sumInsuredAmount,
@@ -74,14 +72,14 @@ abstract contract Product is
74
72
  referralId
75
73
  );
76
74
 
77
- return AmountLib.toAmount(premium.premiumAmount);
75
+ return premium.premiumAmount;
78
76
  }
79
77
 
80
78
  function calculateNetPremium(
81
79
  Amount sumInsuredAmount,
82
- RiskId riskId,
83
- Seconds lifetime,
84
- bytes memory applicationData
80
+ RiskId,
81
+ Seconds,
82
+ bytes memory
85
83
  )
86
84
  external
87
85
  view
@@ -125,11 +123,11 @@ abstract contract Product is
125
123
  }
126
124
 
127
125
  function getPoolNftId() external view override returns (NftId poolNftId) {
128
- return getRegistry().getNftId(address(_getProductStorage()._pool));
126
+ return getRegistry().getNftIdForAddress(address(_getProductStorage()._pool));
129
127
  }
130
128
 
131
129
  function getDistributionNftId() external view override returns (NftId distributionNftId) {
132
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
130
+ return getRegistry().getNftIdForAddress(address(_getProductStorage()._distribution));
133
131
  }
134
132
 
135
133
  function _initializeProduct(
@@ -140,8 +138,9 @@ abstract contract Product is
140
138
  string memory name,
141
139
  address token,
142
140
  bool isInterceptor,
143
- address pool,
144
- address distribution,
141
+ address pool, // switch to pool nft id (#527)
142
+ address distribution, // switch to distribution nft id (#527)
143
+ // add NftId [] oracleNftIds (#527)
145
144
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
146
145
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
147
146
  )
@@ -163,7 +162,7 @@ abstract contract Product is
163
162
 
164
163
  ProductStorage storage $ = _getProductStorage();
165
164
  // TODO add validation
166
- // TODO refactor to go via registry ?
165
+ // TODO refactor to go via registry for all components linked to this product (#527)
167
166
  $._riskService = IRiskService(_getServiceAddress(PRODUCT()));
168
167
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
169
168
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
@@ -172,8 +171,8 @@ abstract contract Product is
172
171
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
173
172
  $._pool = Pool(pool);
174
173
  $._distribution = Distribution(distribution);
175
- $._poolNftId = getRegistry().getNftId(pool);
176
- $._distributionNftId = getRegistry().getNftId(distribution);
174
+ $._poolNftId = getRegistry().getNftIdForAddress(pool);
175
+ $._distributionNftId = getRegistry().getNftIdForAddress(distribution);
177
176
 
178
177
  registerInterface(type(IProductComponent).interfaceId);
179
178
  }
@@ -253,14 +252,12 @@ abstract contract Product is
253
252
 
254
253
  function _createPolicy(
255
254
  NftId applicationNftId,
256
- bool requirePremiumPayment,
257
255
  Timestamp activateAt
258
256
  )
259
257
  internal
260
258
  {
261
259
  _getProductStorage()._policyService.createPolicy(
262
260
  applicationNftId,
263
- requirePremiumPayment,
264
261
  activateAt);
265
262
  }
266
263
 
@@ -383,6 +380,24 @@ abstract contract Product is
383
380
  data);
384
381
  }
385
382
 
383
+ function _createPayoutForBeneficiary(
384
+ NftId policyNftId,
385
+ ClaimId claimId,
386
+ Amount amount,
387
+ address beneficiary,
388
+ bytes memory data
389
+ )
390
+ internal
391
+ returns (PayoutId)
392
+ {
393
+ return _getProductStorage()._claimService.createPayoutForBeneficiary(
394
+ policyNftId,
395
+ claimId,
396
+ amount,
397
+ beneficiary,
398
+ data);
399
+ }
400
+
386
401
  function _processPayout(
387
402
  NftId policyNftId,
388
403
  PayoutId payoutId
@@ -88,7 +88,7 @@ interface IRegistry is IERC165 {
88
88
 
89
89
  function getObjectCount() external view returns (uint256);
90
90
 
91
- function getNftId(address objectAddress) external view returns (NftId nftId);
91
+ function getNftIdForAddress(address objectAddress) external view returns (NftId nftId);
92
92
 
93
93
  function ownerOf(NftId nftId) external view returns (address);
94
94
 
@@ -247,7 +247,7 @@ contract Registry is
247
247
  return _protocolNftId;
248
248
  }
249
249
 
250
- function getNftId(address object) external view returns (NftId id) {
250
+ function getNftIdForAddress(address object) external view returns (NftId id) {
251
251
  return _nftIdByAddress[object];
252
252
  }
253
253
 
@@ -475,7 +475,7 @@ contract ReleaseRegistry is
475
475
  // TODO try catch and return false in case of revert
476
476
  // or just panic
477
477
  // check if contract returns a zero nft id for its own address
478
- if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
478
+ if (IRegistry(registryAddress).getNftIdForAddress(registryAddress).eqz()) {
479
479
  return false;
480
480
  }
481
481
 
@@ -2,14 +2,12 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {
5
- ALL, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE
5
+ ALL, REGISTRY, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKING, PRICE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
- import {ComponentService} from "../shared/ComponentService.sol";
9
8
  import {IAccess} from "../authorization/IAccess.sol";
10
9
  import {IBundleService} from "../pool/IBundleService.sol";
11
10
  import {IDistributionService} from "../distribution/IDistributionService.sol";
12
- import {InstanceService} from "../instance/InstanceService.sol";
13
11
  import {IInstanceService} from "../instance/IInstanceService.sol";
14
12
  import {IPoolService} from "../pool/IPoolService.sol";
15
13
  import {IStakingService} from "../staking/IStakingService.sol";
@@ -163,6 +161,7 @@ contract ServiceAuthorizationV3
163
161
 
164
162
  functions = _authorizeForService(DISTRIBUTION(), POLICY());
165
163
  _authorize(functions, IDistributionService.processSale.selector, "processSale");
164
+ _authorize(functions, IDistributionService.processReferral.selector, "processReferral");
166
165
  }
167
166
 
168
167
 
@@ -206,7 +206,7 @@ abstract contract Component is
206
206
 
207
207
 
208
208
  function isRegistered() public virtual view returns (bool) {
209
- return getRegistry().getNftId(address(this)).gtz();
209
+ return getRegistry().getNftIdForAddress(address(this)).gtz();
210
210
  }
211
211
 
212
212
 
@@ -622,7 +622,7 @@ contract ComponentService is
622
622
  }
623
623
 
624
624
  // check component has not already been registered
625
- if (getRegistry().getNftId(componentAddress).gtz()) {
625
+ if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
626
626
  revert ErrorComponentServiceAlreadyRegistered(componentAddress);
627
627
  }
628
628
 
@@ -32,7 +32,7 @@ abstract contract ComponentVerifyingService is
32
32
  IInstance instance
33
33
  )
34
34
  {
35
- componentNftId = getRegistry().getNftId(msg.sender);
35
+ componentNftId = getRegistry().getNftIdForAddress(msg.sender);
36
36
  (componentInfo, instance) = _getAndVerifyComponentInfo(
37
37
  componentNftId,
38
38
  expectedType,
@@ -132,7 +132,7 @@ abstract contract InstanceLinkedComponent is
132
132
 
133
133
 
134
134
  function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
135
- NftId componentNftId = getRegistry().getNftId(address(this));
135
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
136
136
 
137
137
  // if registered, attempt to return component info via instance reader
138
138
  if (componentNftId.gtz()) {
@@ -93,7 +93,7 @@ contract NftOwnable is
93
93
  revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
94
94
  }
95
95
 
96
- $._nftId = getRegistry().getNftId(nftOwnableAddress);
96
+ $._nftId = getRegistry().getNftIdForAddress(nftOwnableAddress);
97
97
 
98
98
  return $._nftId;
99
99
  }
@@ -42,8 +42,9 @@ interface IStaking is
42
42
  error ErrorStakingTargetNftIdZero();
43
43
  error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
44
  error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
- error ErrorStakingLockingPeriodZero(NftId targetNftId);
45
+ error ErrorStakingLockingPeriodTooShort(NftId targetNftId, Seconds minLockingPeriod, Seconds lockingPeriod);
46
46
  error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
47
+ error ErrorStakingStakeLocked(NftId stakeNftId, Timestamp lockedUntil);
47
48
  error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
49
  error ErrorStakingTargetNotFound(NftId targetNftId);
49
50
  error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
@@ -114,6 +114,24 @@ library StakeManagerLib {
114
114
  lockingPeriod = info.lockingPeriod;
115
115
  }
116
116
 
117
+ function checkUnstakeParameters(
118
+ StakingReader stakingReader,
119
+ NftId stakeNftId
120
+ )
121
+ public
122
+ view
123
+ returns (
124
+ UFixed rewardRate,
125
+ Seconds lockingPeriod
126
+ )
127
+ {
128
+ IStaking.StakeInfo memory stakeInfo = stakingReader.getStakeInfo(stakeNftId);
129
+
130
+ if (stakeInfo.lockedUntil > TimestampLib.blockTimestamp()) {
131
+ revert IStaking.ErrorStakingStakeLocked(stakeNftId, stakeInfo.lockedUntil);
132
+ }
133
+ }
134
+
117
135
 
118
136
  function checkTarget(
119
137
  StakingReader stakingReader,
@@ -350,9 +350,10 @@ contract Staking is
350
350
  Amount rewardsClaimedAmount
351
351
  )
352
352
  {
353
- // TODO add check that stake locking is in the past
354
353
  StakingStorage storage $ = _getStakingStorage();
355
-
354
+
355
+ StakeManagerLib.checkUnstakeParameters($._reader, stakeNftId);
356
+
356
357
  // update rewards since last update
357
358
  NftId targetNftId = _updateRewards($._reader, $._store, stakeNftId);
358
359
 
@@ -132,9 +132,9 @@ library TargetManagerLib {
132
132
  public
133
133
  pure
134
134
  {
135
- // check locking period is > 0
136
- if (lockingPeriod.eqz()) {
137
- revert IStaking.ErrorStakingLockingPeriodZero(targetNftId);
135
+ // check locking period is >= min locking period
136
+ if (lockingPeriod.lt(getMinimumLockingPeriod())) {
137
+ revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
138
138
  }
139
139
 
140
140
  // check locking period <= max locking period
@@ -190,6 +190,10 @@ library TargetManagerLib {
190
190
  return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
191
191
  }
192
192
 
193
+ /// @dev the minimum locking period is 24 hours
194
+ function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
195
+ return SecondsLib.toSeconds(24 * 3600);
196
+ }
193
197
 
194
198
  function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
195
199
  return UFixedLib.toUFixed(33, -2);
@@ -71,48 +71,52 @@ function POLICY() pure returns (ObjectType) {
71
71
  return ObjectType.wrap(21);
72
72
  }
73
73
 
74
- function CLAIM() pure returns (ObjectType) {
74
+ function PREMIUM() pure returns (ObjectType) {
75
75
  return ObjectType.wrap(22);
76
76
  }
77
77
 
78
+ function CLAIM() pure returns (ObjectType) {
79
+ return ObjectType.wrap(23);
80
+ }
81
+
78
82
  function PAYOUT() pure returns (ObjectType) {
79
- return ObjectType.wrap(23);
83
+ return ObjectType.wrap(24);
80
84
  }
81
85
 
82
86
  function RISK() pure returns (ObjectType) {
83
- return ObjectType.wrap(24);
87
+ return ObjectType.wrap(25);
84
88
  }
85
89
 
86
90
  function PRICE() pure returns (ObjectType) {
87
- return ObjectType.wrap(25);
91
+ return ObjectType.wrap(26);
88
92
  }
89
93
 
90
94
  function REQUEST() pure returns (ObjectType) {
91
- return ObjectType.wrap(26);
95
+ return ObjectType.wrap(27);
92
96
  }
93
97
 
94
98
  function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
95
- return ObjectType.wrap(27);
99
+ return ObjectType.wrap(28);
96
100
  }
97
101
 
98
102
  function DISTRIBUTOR() pure returns (ObjectType) {
99
- return ObjectType.wrap(28);
103
+ return ObjectType.wrap(29);
100
104
  }
101
105
 
102
106
  function REFERRAL() pure returns (ObjectType) {
103
- return ObjectType.wrap(29);
107
+ return ObjectType.wrap(30);
104
108
  }
105
109
 
106
110
  function BUNDLE() pure returns (ObjectType) {
107
- return ObjectType.wrap(30);
111
+ return ObjectType.wrap(31);
108
112
  }
109
113
 
110
114
  function TARGET() pure returns (ObjectType) {
111
- return ObjectType.wrap(31);
115
+ return ObjectType.wrap(32);
112
116
  }
113
117
 
114
118
  function STAKE() pure returns (ObjectType) {
115
- return ObjectType.wrap(32);
119
+ return ObjectType.wrap(33);
116
120
  }
117
121
 
118
122
  /// @dev Object type that includes any other object type.
@@ -9,6 +9,9 @@ using {
9
9
  SecondsAdd as +,
10
10
  SecondsLib.eqz,
11
11
  SecondsLib.gtz,
12
+ SecondsLib.eq,
13
+ SecondsLib.gt,
14
+ SecondsLib.lt,
12
15
  SecondsLib.toInt,
13
16
  SecondsLib.add
14
17
  } for Seconds global;
@@ -77,6 +80,11 @@ library SecondsLib {
77
80
  return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
78
81
  }
79
82
 
83
+ /// @dev return true if duration1 is smaller than duration2
84
+ function lt(Seconds duration1, Seconds duration2) public pure returns (bool) {
85
+ return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
86
+ }
87
+
80
88
  /// @dev return add duration1 and duration2
81
89
  function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
82
90
  return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
@@ -9,6 +9,7 @@ using {
9
9
  eqStateId as ==,
10
10
  neStateId as !=,
11
11
  StateIdLib.eqz,
12
+ StateIdLib.eq,
12
13
  StateIdLib.gtz,
13
14
  StateIdLib.toInt
14
15
  } for StateId global;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etherisc/gif-next",
3
- "version": "0.0.2-b8e869c-076",
3
+ "version": "0.0.2-b9366f5-670",
4
4
  "description": "This is the repository for the next version of the Generic Insurance Framework (GIF) smart contracts. ",
5
5
  "main": "index.js",
6
6
  "scripts": {