@etherisc/gif-next 0.0.2-a1053ad-624 → 0.0.2-a105567-464

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 (564) hide show
  1. package/README.md +76 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +567 -246
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +384 -155
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +431 -2918
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +692 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +719 -406
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +585 -243
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +382 -76
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +297 -358
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1050 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1417 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +233 -200
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +259 -284
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +132 -166
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +534 -59
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +438 -200
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +857 -309
  108. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +506 -352
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +339 -134
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +643 -0
  120. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  121. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → shared/AccessManagerCustom.sol/AccessManagerCustom.json} +122 -11
  122. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  124. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  126. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  130. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  131. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  132. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  133. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  134. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  136. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +225 -167
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  140. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  144. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  146. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  148. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  150. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
  152. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  154. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  156. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  158. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  160. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  162. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  163. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IService.sol/IService.json} +97 -78
  164. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  166. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  167. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  168. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  169. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  170. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  171. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  172. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  174. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  175. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  176. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  178. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  179. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  180. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +330 -62
  182. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  184. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  185. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  186. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Service.sol/Service.json} +193 -180
  188. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  189. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  190. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  192. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  194. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  195. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1441 -0
  196. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  197. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  198. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
  200. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  202. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  204. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  205. package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -0
  206. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  208. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +390 -0
  210. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
  212. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
  214. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
  216. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  218. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  219. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  220. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  221. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  222. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  224. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  226. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  227. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  228. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  230. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  232. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  234. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  235. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  236. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  238. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  240. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  242. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  244. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  246. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  248. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  250. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  252. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  254. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  255. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  256. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  258. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  260. package/contracts/distribution/Distribution.sol +261 -0
  261. package/contracts/distribution/DistributionService.sol +298 -0
  262. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  263. package/contracts/distribution/IDistributionComponent.sol +66 -0
  264. package/contracts/distribution/IDistributionService.sol +81 -0
  265. package/contracts/instance/BundleManager.sol +126 -0
  266. package/contracts/instance/IInstance.sol +67 -16
  267. package/contracts/instance/IInstanceService.sol +72 -8
  268. package/contracts/instance/Instance.sol +158 -359
  269. package/contracts/instance/InstanceAdmin.sol +331 -0
  270. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  271. package/contracts/instance/InstanceReader.sol +151 -66
  272. package/contracts/instance/InstanceService.sol +318 -58
  273. package/contracts/instance/InstanceServiceManager.sol +12 -24
  274. package/contracts/instance/InstanceStore.sol +260 -0
  275. package/contracts/instance/base/BalanceStore.sol +118 -0
  276. package/contracts/instance/base/Cloneable.sol +51 -0
  277. package/contracts/instance/base/ObjectManager.sol +82 -0
  278. package/contracts/instance/module/IAccess.sol +29 -21
  279. package/contracts/instance/module/IBundle.sol +8 -7
  280. package/contracts/instance/module/IComponents.sol +52 -0
  281. package/contracts/instance/module/IDistribution.sol +7 -4
  282. package/contracts/instance/module/IPolicy.sol +56 -17
  283. package/contracts/instance/module/IRisk.sol +1 -1
  284. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  285. package/contracts/pool/BundleService.sol +296 -0
  286. package/contracts/pool/BundleServiceManager.sol +42 -0
  287. package/contracts/pool/IBundleService.sol +106 -0
  288. package/contracts/pool/IPoolComponent.sol +112 -0
  289. package/contracts/pool/IPoolService.sol +147 -0
  290. package/contracts/pool/Pool.sol +299 -0
  291. package/contracts/pool/PoolService.sol +424 -0
  292. package/contracts/pool/PoolServiceManager.sol +42 -0
  293. package/contracts/product/ApplicationService.sol +254 -0
  294. package/contracts/product/ApplicationServiceManager.sol +38 -0
  295. package/contracts/product/ClaimService.sol +437 -0
  296. package/contracts/product/ClaimServiceManager.sol +38 -0
  297. package/contracts/product/IApplicationService.sol +62 -0
  298. package/contracts/product/IClaimService.sol +93 -0
  299. package/contracts/product/IPolicyService.sol +78 -0
  300. package/contracts/product/IPricingService.sol +39 -0
  301. package/contracts/product/IProductComponent.sol +42 -0
  302. package/contracts/product/IProductService.sol +33 -0
  303. package/contracts/product/PolicyService.sol +473 -0
  304. package/contracts/product/PolicyServiceManager.sol +42 -0
  305. package/contracts/product/PricingService.sol +301 -0
  306. package/contracts/product/PricingServiceManager.sol +42 -0
  307. package/contracts/product/Product.sol +377 -0
  308. package/contracts/product/ProductService.sol +124 -0
  309. package/contracts/product/ProductServiceManager.sol +42 -0
  310. package/contracts/registry/ChainNft.sol +14 -0
  311. package/contracts/registry/IRegistry.sol +81 -12
  312. package/contracts/registry/IRegistryService.sol +54 -20
  313. package/contracts/registry/ITransferInterceptor.sol +1 -0
  314. package/contracts/registry/Registry.sol +405 -243
  315. package/contracts/registry/RegistryAdmin.sol +237 -0
  316. package/contracts/registry/RegistryService.sol +124 -297
  317. package/contracts/registry/RegistryServiceManager.sol +26 -32
  318. package/contracts/registry/ReleaseManager.sol +599 -0
  319. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  320. package/contracts/registry/TokenRegistry.sol +358 -0
  321. package/contracts/{instance/AccessManagerSimple.sol → shared/AccessManagerCustom.sol} +277 -223
  322. package/contracts/shared/AccessManagerExtended.sol +470 -0
  323. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  324. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  325. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  326. package/contracts/shared/Component.sol +286 -0
  327. package/contracts/shared/ComponentService.sol +596 -0
  328. package/contracts/shared/ComponentServiceManager.sol +35 -0
  329. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  330. package/contracts/shared/ERC165.sol +15 -9
  331. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  332. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  333. package/contracts/shared/IComponent.sol +74 -0
  334. package/contracts/shared/IComponentService.sol +91 -0
  335. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  336. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  337. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  338. package/contracts/shared/INftOwnable.sol +13 -12
  339. package/contracts/shared/IPolicyHolder.sol +45 -0
  340. package/contracts/shared/IRegisterable.sol +4 -6
  341. package/contracts/shared/IRegistryLinked.sol +11 -0
  342. package/contracts/shared/IService.sol +18 -0
  343. package/contracts/shared/IVersionable.sol +5 -48
  344. package/contracts/shared/InitializableCustom.sol +177 -0
  345. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  346. package/contracts/shared/KeyValueStore.sol +130 -0
  347. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  348. package/contracts/shared/NftIdSetManager.sol +65 -0
  349. package/contracts/shared/NftOwnable.sol +60 -89
  350. package/contracts/shared/PolicyHolder.sol +102 -0
  351. package/contracts/shared/ProxyManager.sol +131 -26
  352. package/contracts/shared/Registerable.sol +26 -40
  353. package/contracts/shared/RegistryLinked.sol +43 -0
  354. package/contracts/shared/Service.sol +77 -0
  355. package/contracts/shared/TokenHandler.sol +37 -6
  356. package/contracts/shared/Versionable.sol +4 -92
  357. package/contracts/staking/IStaking.sol +152 -0
  358. package/contracts/staking/IStakingManager.sol +15 -0
  359. package/contracts/staking/IStakingService.sol +162 -0
  360. package/contracts/staking/IStakingStore.sol +130 -0
  361. package/contracts/staking/StakeManagerLib.sol +156 -0
  362. package/contracts/staking/Staking.sol +496 -0
  363. package/contracts/staking/StakingManager.sol +54 -0
  364. package/contracts/staking/StakingReader.sol +146 -0
  365. package/contracts/staking/StakingService.sol +376 -0
  366. package/contracts/staking/StakingServiceManager.sol +45 -0
  367. package/contracts/staking/StakingStore.sol +331 -0
  368. package/contracts/staking/TargetManagerLib.sol +179 -0
  369. package/contracts/{types → type}/AddressSet.sol +1 -1
  370. package/contracts/type/Amount.sol +114 -0
  371. package/contracts/{types → type}/Blocknumber.sol +21 -3
  372. package/contracts/type/ClaimId.sol +75 -0
  373. package/contracts/{types → type}/DistributorType.sol +2 -2
  374. package/contracts/{types → type}/Fee.sol +33 -23
  375. package/contracts/{types → type}/NftId.sol +18 -12
  376. package/contracts/type/NftIdSet.sol +62 -0
  377. package/contracts/{types → type}/ObjectType.sol +26 -9
  378. package/contracts/type/PayoutId.sol +82 -0
  379. package/contracts/{types → type}/Referral.sol +5 -1
  380. package/contracts/{types → type}/RiskId.sol +1 -1
  381. package/contracts/type/RoleId.sol +143 -0
  382. package/contracts/type/Seconds.sol +71 -0
  383. package/contracts/{types → type}/StateId.sol +28 -6
  384. package/contracts/{types → type}/Timestamp.sol +18 -13
  385. package/contracts/{types → type}/UFixed.sol +1 -0
  386. package/contracts/{types → type}/Version.sol +6 -2
  387. package/package.json +3 -3
  388. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  389. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  390. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  391. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  392. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  393. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  394. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  395. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  396. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  397. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  398. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  399. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  400. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  401. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  402. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  403. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  405. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  407. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  409. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  411. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  413. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  415. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  417. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  419. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  420. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  421. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  423. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  425. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  426. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  427. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  428. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  429. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  430. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  431. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  432. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  433. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  434. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  435. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  436. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  437. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  438. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  439. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  440. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  441. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  442. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  443. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  444. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  445. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  446. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  447. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  448. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  449. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  450. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  451. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  452. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  453. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  454. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  455. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  456. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  457. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  458. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  459. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  460. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  461. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  462. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  463. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  464. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  465. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  467. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  468. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  469. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  470. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  471. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  472. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  473. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  474. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  475. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  476. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  477. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  478. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  479. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  480. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  481. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  482. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  483. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  484. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  485. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  486. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  487. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  488. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  489. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  490. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  491. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  492. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  495. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  496. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  498. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  499. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  500. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  501. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  502. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  503. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  504. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  505. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  509. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  510. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  511. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  512. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  513. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  514. package/contracts/components/BaseComponent.sol +0 -86
  515. package/contracts/components/Distribution.sol +0 -166
  516. package/contracts/components/IBaseComponent.sol +0 -24
  517. package/contracts/components/IDistributionComponent.sol +0 -43
  518. package/contracts/components/IPoolComponent.sol +0 -62
  519. package/contracts/components/IProductComponent.sol +0 -35
  520. package/contracts/components/Pool.sol +0 -259
  521. package/contracts/components/Product.sol +0 -297
  522. package/contracts/experiment/cloning/Cloner.sol +0 -47
  523. package/contracts/experiment/errors/Require.sol +0 -38
  524. package/contracts/experiment/errors/Revert.sol +0 -44
  525. package/contracts/experiment/inheritance/A.sol +0 -53
  526. package/contracts/experiment/inheritance/B.sol +0 -28
  527. package/contracts/experiment/inheritance/C.sol +0 -34
  528. package/contracts/experiment/inheritance/IA.sol +0 -13
  529. package/contracts/experiment/inheritance/IB.sol +0 -10
  530. package/contracts/experiment/inheritance/IC.sol +0 -12
  531. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  532. package/contracts/experiment/statemachine/ISM.sol +0 -25
  533. package/contracts/experiment/statemachine/SM.sol +0 -57
  534. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  535. package/contracts/experiment/types/TypeA.sol +0 -47
  536. package/contracts/experiment/types/TypeB.sol +0 -29
  537. package/contracts/instance/AccessManagedSimple.sol +0 -114
  538. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  539. package/contracts/instance/InstanceAccessManager.sol +0 -288
  540. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  541. package/contracts/instance/base/IInstanceBase.sol +0 -23
  542. package/contracts/instance/base/IService.sol +0 -15
  543. package/contracts/instance/base/KeyValueStore.sol +0 -172
  544. package/contracts/instance/base/ServiceBase.sol +0 -44
  545. package/contracts/instance/module/ISetup.sol +0 -43
  546. package/contracts/instance/module/ITreasury.sol +0 -23
  547. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  548. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  549. package/contracts/instance/service/IDistributionService.sol +0 -12
  550. package/contracts/instance/service/IPoolService.sol +0 -37
  551. package/contracts/instance/service/IProductService.sol +0 -107
  552. package/contracts/shared/ContractDeployerLib.sol +0 -72
  553. package/contracts/test/TestFee.sol +0 -25
  554. package/contracts/test/TestRegisterable.sol +0 -18
  555. package/contracts/test/TestRoleId.sol +0 -14
  556. package/contracts/test/TestService.sol +0 -26
  557. package/contracts/test/TestToken.sol +0 -26
  558. package/contracts/test/TestVersion.sol +0 -44
  559. package/contracts/test/TestVersionable.sol +0 -17
  560. package/contracts/types/ChainId.sol +0 -38
  561. package/contracts/types/NftIdSet.sol +0 -60
  562. package/contracts/types/NumberId.sol +0 -52
  563. package/contracts/types/RoleId.sol +0 -82
  564. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,77 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
10
+
11
+ import {Versionable} from "./Versionable.sol";
12
+ import {IService} from "./IService.sol";
13
+ import {IVersionable} from "./IVersionable.sol";
14
+ import {Versionable} from "./Versionable.sol";
15
+ import {Registerable} from "./Registerable.sol";
16
+
17
+ import {IRegistry} from "../registry/IRegistry.sol";
18
+
19
+
20
+ /// @dev service base contract
21
+ abstract contract Service is
22
+ Registerable,
23
+ Versionable,
24
+ AccessManagedUpgradeable,
25
+ IService
26
+ {
27
+
28
+ uint8 private constant GIF_MAJOR_VERSION = 3;
29
+
30
+ // from Versionable
31
+ function getVersion()
32
+ public
33
+ pure
34
+ virtual override (IVersionable, Versionable)
35
+ returns(Version)
36
+ {
37
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
38
+ }
39
+
40
+ function initializeService(
41
+ address registry,
42
+ address authority, // real authority for registry service adress(0) for other services
43
+ address initialOwner
44
+ )
45
+ public
46
+ virtual
47
+ onlyInitializing()
48
+ {
49
+ initializeRegisterable(
50
+ registry,
51
+ IRegistry(registry).getNftId(),
52
+ SERVICE(),
53
+ false, // is interceptor
54
+ initialOwner,
55
+ ""); // data
56
+
57
+ // externally provided authority
58
+ if(authority != address(0)) {
59
+ __AccessManaged_init(authority);
60
+ } else {
61
+ address registryServiceAddress = getRegistry().getServiceAddress(
62
+ REGISTRY(),
63
+ VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
64
+
65
+ // copy authority from already registered registry services
66
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
67
+ }
68
+
69
+ registerInterface(type(IAccessManaged).interfaceId);
70
+ registerInterface(type(IService).interfaceId);
71
+ }
72
+
73
+
74
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
75
+ return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
76
+ }
77
+ }
@@ -4,6 +4,11 @@ pragma solidity ^0.8.20;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
8
+
9
+ /// @dev token specific transfer helper
10
+ /// a default token contract is provided via contract constructor
11
+ /// relies internally on oz SafeERC20.safeTransferFrom
7
12
  contract TokenHandler {
8
13
  IERC20Metadata private _token;
9
14
 
@@ -11,17 +16,43 @@ contract TokenHandler {
11
16
  _token = IERC20Metadata(token);
12
17
  }
13
18
 
14
- // TODO add logging
19
+ /// @dev transfer amount default tokens
15
20
  function transfer(
16
21
  address from,
17
22
  address to,
18
- uint256 amount // TODO add authz (only treasury/instance/product/pool/ service)
19
- ) external {
20
- SafeERC20.safeTransferFrom(_token, from, to, amount);
21
- // _token.transferFrom(from, to, amount);
23
+ Amount amount
24
+ )
25
+ external
26
+ {
27
+ SafeERC20.safeTransferFrom(
28
+ _token,
29
+ from,
30
+ to,
31
+ amount.toInt());
32
+ }
33
+
34
+ /// @dev transfer amount of the specified token
35
+ function safeTransferFrom(
36
+ address token,
37
+ address from,
38
+ address to,
39
+ Amount amount
40
+ )
41
+ external
42
+ {
43
+ SafeERC20.safeTransferFrom(
44
+ IERC20Metadata(token),
45
+ from,
46
+ to,
47
+ amount.toInt());
22
48
  }
23
49
 
24
- function getToken() external view returns (IERC20Metadata) {
50
+ /// @dev returns the default token defined for this TokenHandler
51
+ function getToken()
52
+ external
53
+ view
54
+ returns (IERC20Metadata)
55
+ {
25
56
  return _token;
26
57
  }
27
58
  }
@@ -3,83 +3,39 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {Blocknumber, blockNumber} from "../types/Blocknumber.sol";
7
- import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
8
- import {Version, VersionPart, VersionLib} from "../types/Version.sol";
9
-
10
6
  import {IVersionable} from "./IVersionable.sol";
11
-
7
+ import {Version, VersionLib} from "../type/Version.sol";
12
8
 
13
9
 
14
10
  abstract contract Versionable is
15
11
  Initializable,
16
12
  IVersionable
17
13
  {
18
- // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Versionable.sol")) - 1)) & ~bytes32(uint256(0xff))
19
- bytes32 private constant VERSIONABLE_LOCATION_V1 = 0x4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900;
20
-
21
-
22
- /// @custom:storage-location erc7201:gif-next.contracts.shared.Versionable.sol
23
- struct VersionableStorage {
24
- mapping(Version version => VersionInfo info) _versionHistory;
25
- Version [] _versions;
26
- Version _v1;
27
- }
28
-
29
-
30
14
  constructor() {
31
15
  _disableInitializers();
32
16
  }
33
- // TODO write test where new version of private _updateVersionHistory is added and used...
34
- function initialize(
35
- address implementation,
17
+
18
+ function initializeVersionable(
36
19
  address activatedBy,
37
20
  bytes memory data
38
21
  )
39
22
  public
40
23
  initializer
41
24
  {
42
- _updateVersionHistory(implementation, activatedBy);
43
25
  _initialize(activatedBy, data);
44
26
  }
45
27
 
46
- // TODO activatedBy MUST ALWAYS be an owner?
47
- function upgrade(
48
- address implementation,
49
- address activatedBy,
28
+ function upgradeVersionable(
50
29
  bytes memory data
51
30
  )
52
31
  external
53
32
  reinitializer(VersionLib.toUint64(getVersion()))
54
33
  {
55
- _updateVersionHistory(implementation, activatedBy);
56
34
  _upgrade(data);
57
35
  }
58
36
 
59
- function isInitialized(Version _version) public override view returns(bool) {
60
- return _getVersionableStorage()._versionHistory[_version].activatedIn.toInt() > 0;
61
- }
62
-
63
37
  function getVersion() public pure virtual returns(Version);
64
38
 
65
- function getVersionCount() public view override returns(uint256) {
66
- return _getVersionableStorage()._versions.length;
67
- }
68
-
69
- function getVersion(uint256 idx) public view override returns(Version) {
70
- return _getVersionableStorage()._versions[idx];
71
- }
72
-
73
- function getVersionInfo(Version _version) public override view returns(VersionInfo memory) {
74
- return _getVersionableStorage()._versionHistory[_version];
75
- }
76
-
77
- function getInitializedVersion() public view returns(uint64) {
78
- return _getInitializedVersion();
79
- }
80
-
81
-
82
-
83
39
  // IMPORTANT each version must implement this function
84
40
  // each implementation MUST use onlyInitialising modifier
85
41
  // each implementation MUST call intializers of all base contracts...
@@ -91,7 +47,6 @@ abstract contract Versionable is
91
47
  revert();
92
48
  }
93
49
 
94
-
95
50
  // IMPORTANT each version except version "1" must implement this function
96
51
  // each implementation MUST use onlyInitialising modifier
97
52
  function _upgrade(bytes memory data)
@@ -101,47 +56,4 @@ abstract contract Versionable is
101
56
  {
102
57
  revert();
103
58
  }
104
-
105
- function _getVersionableStorage() private pure returns (VersionableStorage storage $) {
106
- assembly {
107
- $.slot := VERSIONABLE_LOCATION_V1
108
- }
109
- }
110
-
111
- // can only be called once per contract
112
- // needs to be called inside the proxy upgrade tx
113
- // TODO run reinitializer(version().toUint64()) modifier after "version()" is checked,
114
- function _updateVersionHistory(
115
- address implementation,
116
- address activatedBy
117
- )
118
- private
119
- onlyInitializing
120
- {
121
- VersionableStorage storage $ = _getVersionableStorage();
122
-
123
- uint64 version = _getInitializedVersion();
124
-
125
- Version thisVersion = getVersion();
126
-
127
- if(version == 1) {
128
- // thisVersion is alias to version "1"
129
- $._v1 = thisVersion;
130
- }
131
- else {
132
- require(thisVersion > $._v1, "INVALID VERSION");
133
- }
134
-
135
- // update version history
136
- $._versions.push(thisVersion);
137
- $._versionHistory[thisVersion] = VersionInfo(
138
- thisVersion,
139
- implementation,
140
- activatedBy,
141
- TimestampLib.blockTimestamp(),
142
- blockNumber()
143
- );
144
-
145
- emit LogVersionableInitialized(thisVersion, implementation, activatedBy);
146
- }
147
59
  }
@@ -0,0 +1,152 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IVersionable} from "../shared/IVersionable.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {StakingReader} from "./StakingReader.sol";
12
+ import {StakingStore} from "./StakingStore.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+
16
+ interface IStaking is
17
+ IComponent,
18
+ IVersionable
19
+ {
20
+
21
+ // target parameters
22
+ event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
23
+ event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
24
+
25
+ // modifiers
26
+ error ErrorStakingNotStake(NftId stakeNftId);
27
+ error ErrorStakingNotTarget(NftId targetNftId);
28
+
29
+ error ErrorStakingNotStakingOwner();
30
+ error ErrorStakingNotNftOwner(NftId nftId);
31
+
32
+ // check dip balance and allowance
33
+ error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
34
+ error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
35
+
36
+ error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
37
+ error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
38
+ error ErrorStakingTargetNftIdZero();
39
+ error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
40
+ error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
41
+ error ErrorStakingLockingPeriodZero(NftId targetNftId);
42
+ error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
43
+ error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
44
+ error ErrorStakingTargetNotFound(NftId targetNftId);
45
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
46
+
47
+ error ErrorStakingTargetNotActive(NftId targetNftId);
48
+ error ErrorStakingStakeAmountZero(NftId targetNftId);
49
+
50
+ // info for individual stake
51
+ struct StakeInfo {
52
+ Timestamp lockedUntil;
53
+ }
54
+
55
+ struct TargetInfo {
56
+ ObjectType objectType;
57
+ uint256 chainId;
58
+ Seconds lockingPeriod;
59
+ UFixed rewardRate;
60
+ }
61
+
62
+ // rate management
63
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
64
+
65
+
66
+ // target management
67
+
68
+ function registerTarget(
69
+ NftId targetNftId,
70
+ ObjectType expectedObjectType,
71
+ uint256 chainId,
72
+ Seconds initialLockingPeriod,
73
+ UFixed initialRewardRate
74
+ ) external;
75
+
76
+ /// @dev set the stake locking period to the specified duration.
77
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
78
+
79
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
80
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external;
81
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external;
82
+
83
+ function increaseTvl(NftId targetNftId, address token, Amount amount) external;
84
+ function decreaseTvl(NftId targetNftId, address token, Amount amount) external;
85
+
86
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
87
+
88
+ // staking functions
89
+
90
+ /// @dev register a new stake info object
91
+ /// permissioned: only staking service may call this function.
92
+ function registerStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
93
+
94
+ /// @dev increase the staked dip by dipAmount for the specified stake
95
+ function stake(NftId stakeNftId, Amount dipAmount) external;
96
+
97
+ /// @dev restakes the dips to a new target.
98
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
99
+ /// permissioned: only staking service may call this function.
100
+ function restake(NftId stakeNftId) external;
101
+
102
+ /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
103
+ /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
104
+ /// permissioned: only staking service may call this function.
105
+ function unstake(NftId stakeNftId)
106
+ external
107
+ returns (
108
+ Amount unstakedAmount,
109
+ Amount rewardsClaimedAmount
110
+ );
111
+
112
+ /// @dev update stake rewards for current time.
113
+ /// may be called before an announement of a decrease of a reward rate reduction.
114
+ /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
115
+ /// unpermissioned.
116
+ function updateRewards(NftId stakeNftId) external;
117
+
118
+ /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
119
+ /// permissioned: only staking service may call this function.
120
+ function claimRewards(NftId stakeNftId)
121
+ external
122
+ returns (
123
+ Amount rewardsClaimedAmount
124
+ );
125
+
126
+ //--- helper functions --------------------------------------------------//
127
+
128
+ /// @dev transfers the specified amount of dips from the from address to the staking wallet.
129
+ function collectDipAmount(address from, Amount dipAmount) external;
130
+
131
+ /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
132
+ function transferDipAmount(address to, Amount dipAmount) external;
133
+
134
+ //--- view and pure functions -------------------------------------------//
135
+
136
+ function getStakingStore() external view returns (StakingStore stakingStore);
137
+ function getStakingReader() external view returns (StakingReader reader);
138
+
139
+ // function getStakeInfo(NftId stakeNftId) external view returns (StakeInfo memory stakeInfo);
140
+ // function getTargetInfo(NftId targetNftId) external view returns (TargetInfo memory targetInfo);
141
+
142
+ function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount);
143
+ function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount);
144
+
145
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate);
146
+
147
+ function calculateRewardIncrementAmount(
148
+ NftId targetNftId,
149
+ Timestamp rewardsLastUpdatedAt
150
+ ) external view returns (Amount rewardIncrementAmount);
151
+
152
+ }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ interface IStakingManager {
5
+
6
+ /// @dev initializes staking manager with authority of registry access manager.
7
+ function initialize(
8
+ address authority
9
+ )
10
+ external;
11
+
12
+
13
+ function getStakingAddress() external view returns (address staking);
14
+
15
+ }
@@ -0,0 +1,162 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IStaking} from "./IStaking.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+ import {TokenHandler} from "../shared/TokenHandler.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+
16
+
17
+ interface IStakingService is IService
18
+ {
19
+
20
+ event LogStakingServiceProtocolTargetRegistered(NftId protocolNftId);
21
+ event LogStakingServiceInstanceTargetRegistered(NftId instanceNftId, uint256 chainId);
22
+ event LogStakingServiceLockingPeriodSet(NftId targetNftId, Seconds oldLockingDuration, Seconds lockingDuration);
23
+ event LogStakingServiceRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
24
+
25
+ event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
26
+ event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount);
27
+ event LogStakingServiceRewardsUpdated(NftId stakeNftId);
28
+
29
+ // modifiers
30
+ error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
31
+ error ErrorStakingServiceNotStaking(address stakingAddress);
32
+ error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
33
+
34
+ // create
35
+ error ErrorStakingServiceZeroTargetNftId();
36
+ error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
37
+ error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
38
+ error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
39
+ error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
40
+
41
+ /// @dev creates/registers an on-chain instance staking target.
42
+ /// function granted to instance service
43
+ function createInstanceTarget(
44
+ NftId targetNftId,
45
+ Seconds initialLockingPeriod,
46
+ UFixed initialRewardRate
47
+ ) external;
48
+
49
+ /// @dev set the stake locking period to the specified duration.
50
+ /// permissioned: only the owner of the specified target may set the locking period
51
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
52
+
53
+ /// @dev set the reward rate to the specified value
54
+ /// permissioned: only the owner of the specified target may set the locking period
55
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
56
+
57
+ /// @dev create a new stake with amount DIP to the specified target
58
+ /// returns the id of the newly minted stake nft
59
+ /// permissionless function
60
+ function create(
61
+ NftId targetNftId,
62
+ Amount amount
63
+ )
64
+ external
65
+ returns (
66
+ NftId stakeNftId
67
+ );
68
+
69
+
70
+ /// @dev increase an existing stake by amount DIP
71
+ /// updates the staking reward amount
72
+ /// function restricted to the current stake owner
73
+ function stake(
74
+ NftId stakeNftId,
75
+ Amount amount
76
+ )
77
+ external;
78
+
79
+
80
+ /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
81
+ /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
82
+ /// function restricted to the current stake owner
83
+ function restake(
84
+ NftId stakeNftId
85
+ )
86
+ external;
87
+
88
+
89
+ /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
90
+ /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
91
+ /// function restricted to the current stake owner
92
+ function restakeToNewTarget(
93
+ NftId stakeNftId,
94
+ NftId newTargetNftId
95
+ )
96
+ external
97
+ returns (
98
+ NftId newStakeNftId
99
+ );
100
+
101
+
102
+ /// @dev decrease an existing stake by amount DIP
103
+ /// updates the staking reward amount
104
+ /// function restricted to the current stake owner
105
+ function unstake(
106
+ NftId stakeNftId,
107
+ Amount amount
108
+ )
109
+ external;
110
+
111
+ /// @dev updates the reward balance of the stake using the current reward rate.
112
+ function updateRewards(
113
+ NftId stakeNftId
114
+ )
115
+ external;
116
+
117
+
118
+ /// @dev increases the total value locked amount for the specified target by the provided token amount.
119
+ /// function is called when a new policy is collateralized
120
+ /// function restricted to the pool service
121
+ function increaseTotalValueLocked(
122
+ NftId targetNftId,
123
+ address token,
124
+ Amount amount
125
+ )
126
+ external
127
+ returns (Amount totalValueLocked);
128
+
129
+
130
+ /// @dev decreases the total value locked amount for the specified target by the provided token amount.
131
+ /// function is called when a new policy is closed or payouts are executed
132
+ /// function restricted to the pool service
133
+ function decreaseTotalValueLocked(
134
+ NftId targetNftId,
135
+ address token,
136
+ Amount amount
137
+ )
138
+ external
139
+ returns (Amount totalValueLocked);
140
+
141
+
142
+ /// @dev sets total value locked data for a target contract on a different chain.
143
+ /// this is done via CCIP (cross chain communication)
144
+ function setTotalValueLocked(
145
+ NftId targetNftId,
146
+ address token,
147
+ Amount amount
148
+ )
149
+ external;
150
+
151
+ function getDipToken()
152
+ external
153
+ returns (IERC20Metadata dip);
154
+
155
+ function getTokenHandler()
156
+ external
157
+ returns (TokenHandler tokenHandler);
158
+
159
+ function getStaking()
160
+ external
161
+ returns (IStaking staking);
162
+ }