@etherisc/gif-next 0.0.2-a0d749a → 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 (514) hide show
  1. package/README.md +348 -20
  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 +294 -514
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -585
  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 +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1570 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1045 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +730 -0
  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/base/Cloneable.sol/Cloneable.json +190 -0
  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 +4 -0
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  42. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  46. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  48. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  50. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  51. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  52. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1097 -0
  54. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +742 -0
  56. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  58. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  60. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1050 -0
  62. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  64. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1417 -0
  66. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  68. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +826 -0
  70. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +718 -0
  72. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1270 -0
  74. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +806 -0
  76. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +499 -0
  78. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  80. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  82. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  84. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  86. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.json +387 -0
  88. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1138 -0
  90. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +750 -0
  92. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.json +975 -0
  94. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +774 -0
  96. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  97. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  98. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  100. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  102. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  104. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +707 -67
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +1028 -114
  112. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  120. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +643 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  134. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  136. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  138. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  140. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  142. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  143. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  146. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  148. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  150. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  152. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  154. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +478 -0
  156. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +115 -0
  158. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  160. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  164. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  166. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IService.sol/IService.json +333 -0
  168. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  170. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  171. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  172. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  173. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  174. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  175. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  176. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  178. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  180. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  182. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  184. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  185. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  186. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  187. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  188. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  189. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  190. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  191. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  192. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  194. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  196. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  197. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  198. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1441 -0
  200. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  201. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  202. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  203. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +890 -0
  204. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  205. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  206. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  208. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  209. package/artifacts/contracts/staking/Staking.sol/Staking.json +2008 -0
  210. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  211. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  212. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +390 -0
  214. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1213 -0
  216. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +722 -0
  218. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1682 -0
  220. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  221. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  222. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  223. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  224. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  226. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  228. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  230. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  232. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  234. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  236. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  238. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  239. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  240. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +92 -0
  242. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  244. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  246. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  248. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  250. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  252. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  254. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  256. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  258. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  260. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  262. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  264. package/contracts/distribution/Distribution.sol +261 -0
  265. package/contracts/distribution/DistributionService.sol +298 -0
  266. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  267. package/contracts/distribution/IDistributionComponent.sol +66 -0
  268. package/contracts/distribution/IDistributionService.sol +81 -0
  269. package/contracts/instance/BundleManager.sol +126 -0
  270. package/contracts/instance/IInstance.sol +78 -17
  271. package/contracts/instance/IInstanceService.sol +81 -0
  272. package/contracts/instance/Instance.sol +227 -56
  273. package/contracts/instance/InstanceAdmin.sol +331 -0
  274. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  275. package/contracts/instance/InstanceReader.sol +365 -0
  276. package/contracts/instance/InstanceService.sol +362 -0
  277. package/contracts/instance/InstanceServiceManager.sol +44 -0
  278. package/contracts/instance/InstanceStore.sol +260 -0
  279. package/contracts/instance/base/BalanceStore.sol +118 -0
  280. package/contracts/instance/base/Cloneable.sol +51 -0
  281. package/contracts/instance/base/ObjectManager.sol +82 -0
  282. package/contracts/instance/module/IAccess.sol +46 -0
  283. package/contracts/instance/module/IBundle.sol +20 -0
  284. package/contracts/instance/module/IComponents.sol +52 -0
  285. package/contracts/instance/module/IDistribution.sol +42 -0
  286. package/contracts/instance/module/IPolicy.sol +84 -0
  287. package/contracts/instance/module/IRisk.sol +11 -0
  288. package/contracts/mock/Dip.sol +26 -0
  289. package/contracts/pool/BundleService.sol +296 -0
  290. package/contracts/pool/BundleServiceManager.sol +42 -0
  291. package/contracts/pool/IBundleService.sol +106 -0
  292. package/contracts/pool/IPoolComponent.sol +112 -0
  293. package/contracts/pool/IPoolService.sol +147 -0
  294. package/contracts/pool/Pool.sol +299 -0
  295. package/contracts/pool/PoolService.sol +424 -0
  296. package/contracts/pool/PoolServiceManager.sol +42 -0
  297. package/contracts/product/ApplicationService.sol +254 -0
  298. package/contracts/product/ApplicationServiceManager.sol +38 -0
  299. package/contracts/product/ClaimService.sol +437 -0
  300. package/contracts/product/ClaimServiceManager.sol +38 -0
  301. package/contracts/product/IApplicationService.sol +62 -0
  302. package/contracts/product/IClaimService.sol +93 -0
  303. package/contracts/product/IPolicyService.sol +78 -0
  304. package/contracts/product/IPricingService.sol +39 -0
  305. package/contracts/product/IProductComponent.sol +42 -0
  306. package/contracts/product/IProductService.sol +33 -0
  307. package/contracts/product/PolicyService.sol +473 -0
  308. package/contracts/product/PolicyServiceManager.sol +42 -0
  309. package/contracts/product/PricingService.sol +301 -0
  310. package/contracts/product/PricingServiceManager.sol +42 -0
  311. package/contracts/product/Product.sol +377 -0
  312. package/contracts/product/ProductService.sol +124 -0
  313. package/contracts/product/ProductServiceManager.sol +42 -0
  314. package/contracts/registry/ChainNft.sol +143 -62
  315. package/contracts/registry/IRegistry.sol +95 -49
  316. package/contracts/registry/IRegistryService.sol +69 -0
  317. package/contracts/registry/ITransferInterceptor.sol +7 -0
  318. package/contracts/registry/Registry.sol +518 -142
  319. package/contracts/registry/RegistryAdmin.sol +237 -0
  320. package/contracts/registry/RegistryService.sol +266 -0
  321. package/contracts/registry/RegistryServiceManager.sol +58 -0
  322. package/contracts/registry/ReleaseManager.sol +599 -0
  323. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  324. package/contracts/registry/TokenRegistry.sol +358 -0
  325. package/contracts/shared/AccessManagerCustom.sol +736 -0
  326. package/contracts/shared/AccessManagerExtended.sol +470 -0
  327. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  328. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  329. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  330. package/contracts/shared/Component.sol +286 -0
  331. package/contracts/shared/ComponentService.sol +596 -0
  332. package/contracts/shared/ComponentServiceManager.sol +35 -0
  333. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  334. package/contracts/shared/ERC165.sol +27 -0
  335. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  336. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  337. package/contracts/shared/IComponent.sol +74 -0
  338. package/contracts/shared/IComponentService.sol +91 -0
  339. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  340. package/contracts/shared/IKeyValueStore.sol +53 -0
  341. package/contracts/shared/ILifecycle.sol +30 -0
  342. package/contracts/shared/INftOwnable.sol +23 -0
  343. package/contracts/shared/IPolicyHolder.sol +45 -0
  344. package/contracts/shared/IRegisterable.sol +15 -0
  345. package/contracts/shared/IRegistryLinked.sol +11 -0
  346. package/contracts/shared/IService.sol +18 -0
  347. package/contracts/shared/IVersionable.sol +53 -0
  348. package/contracts/shared/InitializableCustom.sol +177 -0
  349. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  350. package/contracts/shared/KeyValueStore.sol +130 -0
  351. package/contracts/shared/Lifecycle.sol +121 -0
  352. package/contracts/shared/NftIdSetManager.sol +65 -0
  353. package/contracts/shared/NftOwnable.sol +107 -0
  354. package/contracts/shared/PolicyHolder.sol +102 -0
  355. package/contracts/shared/ProxyManager.sol +199 -0
  356. package/contracts/shared/Registerable.sol +75 -0
  357. package/contracts/shared/RegistryLinked.sol +43 -0
  358. package/contracts/shared/Service.sol +77 -0
  359. package/contracts/shared/TokenHandler.sol +58 -0
  360. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  361. package/contracts/shared/Versionable.sol +59 -0
  362. package/contracts/staking/IStaking.sol +152 -0
  363. package/contracts/staking/IStakingManager.sol +15 -0
  364. package/contracts/staking/IStakingService.sol +162 -0
  365. package/contracts/staking/IStakingStore.sol +130 -0
  366. package/contracts/staking/StakeManagerLib.sol +156 -0
  367. package/contracts/staking/Staking.sol +496 -0
  368. package/contracts/staking/StakingManager.sol +54 -0
  369. package/contracts/staking/StakingReader.sol +146 -0
  370. package/contracts/staking/StakingService.sol +376 -0
  371. package/contracts/staking/StakingServiceManager.sol +45 -0
  372. package/contracts/staking/StakingStore.sol +331 -0
  373. package/contracts/staking/TargetManagerLib.sol +179 -0
  374. package/contracts/type/AddressSet.sol +58 -0
  375. package/contracts/type/Amount.sol +114 -0
  376. package/contracts/{types → type}/Blocknumber.sol +21 -3
  377. package/contracts/type/ClaimId.sol +75 -0
  378. package/contracts/type/DistributorType.sol +55 -0
  379. package/contracts/type/Fee.sol +66 -0
  380. package/contracts/type/Key32.sol +50 -0
  381. package/contracts/{types → type}/NftId.sol +40 -13
  382. package/contracts/type/NftIdSet.sol +62 -0
  383. package/contracts/type/ObjectType.sol +169 -0
  384. package/contracts/type/PayoutId.sol +82 -0
  385. package/contracts/type/Referral.sol +89 -0
  386. package/contracts/type/RiskId.sol +43 -0
  387. package/contracts/type/RoleId.sol +143 -0
  388. package/contracts/type/Seconds.sol +71 -0
  389. package/contracts/type/StateId.sol +123 -0
  390. package/contracts/{types → type}/Timestamp.sol +36 -6
  391. package/contracts/type/UFixed.sol +326 -0
  392. package/contracts/type/Version.sol +108 -0
  393. package/package.json +16 -6
  394. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  395. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  396. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  397. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  398. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  399. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  400. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  401. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  402. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  403. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  404. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  405. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  406. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  407. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  408. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  409. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  410. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  411. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  412. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  413. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  414. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  415. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  416. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  417. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  418. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  419. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  420. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  421. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  422. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  423. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  425. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  427. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  429. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  430. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  431. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  432. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  433. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  434. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  435. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  436. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  437. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  438. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  439. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  440. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  441. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  442. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  443. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  444. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  445. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  446. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  448. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  449. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  450. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  451. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  452. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  453. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  454. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  455. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  456. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  457. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  458. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  459. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  460. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  461. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  462. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  463. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  464. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  465. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  467. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  468. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  469. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  470. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  471. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  472. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  473. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  474. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  475. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  476. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  477. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  479. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  481. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  483. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  485. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  487. package/contracts/components/Component.sol +0 -60
  488. package/contracts/components/IPool.sol +0 -9
  489. package/contracts/components/IProduct.sol +0 -9
  490. package/contracts/components/Pool.sol +0 -22
  491. package/contracts/components/Product.sol +0 -55
  492. package/contracts/experiment/errors/Require.sol +0 -38
  493. package/contracts/experiment/errors/Revert.sol +0 -44
  494. package/contracts/experiment/inheritance/A.sol +0 -53
  495. package/contracts/experiment/inheritance/B.sol +0 -28
  496. package/contracts/experiment/inheritance/C.sol +0 -34
  497. package/contracts/experiment/inheritance/IA.sol +0 -13
  498. package/contracts/experiment/inheritance/IB.sol +0 -10
  499. package/contracts/experiment/inheritance/IC.sol +0 -12
  500. package/contracts/experiment/types/TypeA.sol +0 -47
  501. package/contracts/experiment/types/TypeB.sol +0 -29
  502. package/contracts/instance/access/Access.sol +0 -165
  503. package/contracts/instance/access/IAccess.sol +0 -63
  504. package/contracts/instance/component/ComponentModule.sol +0 -213
  505. package/contracts/instance/component/IComponent.sol +0 -73
  506. package/contracts/instance/policy/IPolicy.sol +0 -51
  507. package/contracts/instance/policy/PolicyModule.sol +0 -91
  508. package/contracts/instance/pool/IPoolModule.sol +0 -29
  509. package/contracts/instance/pool/PoolModule.sol +0 -73
  510. package/contracts/instance/product/IProductService.sol +0 -36
  511. package/contracts/instance/product/ProductService.sol +0 -112
  512. package/contracts/registry/IChainNft.sol +0 -21
  513. package/contracts/types/ChainId.sol +0 -38
  514. package/contracts/types/UFixed.sol +0 -205
@@ -0,0 +1,376 @@
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 {ChainNft} from "../registry/ChainNft.sol";
8
+ import {IPoolService} from "../pool/IPoolService.sol";
9
+ import {IRegisterable} from "../shared/IRegisterable.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {RegistryService} from "../registry/RegistryService.sol";
12
+ import {IStaking} from "./IStaking.sol";
13
+ import {IStakingService} from "./IStakingService.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {ObjectType, INSTANCE, PROTOCOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {Service} from "../shared/Service.sol";
18
+ import {StakeManagerLib} from "./StakeManagerLib.sol";
19
+ import {StakingReader} from "./StakingReader.sol";
20
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
21
+ import {Timestamp} from "../type/Timestamp.sol";
22
+ import {TokenHandler} from "../shared/TokenHandler.sol";
23
+ import {UFixed} from "../type/UFixed.sol";
24
+
25
+
26
+ contract StakingService is
27
+ Service,
28
+ IStakingService
29
+ {
30
+ // TODO decide and implement string spec for location calculation
31
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
32
+ bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
33
+
34
+ struct StakingServiceStorage {
35
+ RegistryService _registryService;
36
+ IStaking _staking;
37
+ IERC20Metadata _dip;
38
+ TokenHandler _tokenHandler;
39
+ }
40
+
41
+ modifier onlyNftOwner(NftId nftId) {
42
+ if(msg.sender != getRegistry().ownerOf(nftId)) {
43
+ revert ErrorStakingServiceNotNftOwner(nftId, getRegistry().ownerOf(nftId), msg.sender);
44
+ }
45
+ _;
46
+ }
47
+
48
+ function getDomain() public pure override returns(ObjectType) {
49
+ return STAKING();
50
+ }
51
+
52
+
53
+ function registerProtocolTarget()
54
+ external
55
+ virtual
56
+ {
57
+ uint256 protocolId = ChainNft(
58
+ getRegistry().getChainNftAddress()).PROTOCOL_NFT_ID();
59
+
60
+ NftId protocolNftId = NftIdLib.toNftId(protocolId);
61
+ _getStakingServiceStorage()._staking.registerTarget(
62
+ protocolNftId,
63
+ PROTOCOL(),
64
+ 1, // protocol is registered on mainnet
65
+ TargetManagerLib.getDefaultLockingPeriod(),
66
+ TargetManagerLib.getDefaultRewardRate());
67
+
68
+ emit LogStakingServiceProtocolTargetRegistered(protocolNftId);
69
+ }
70
+
71
+
72
+ function createInstanceTarget(
73
+ NftId targetNftId,
74
+ Seconds initialLockingPeriod,
75
+ UFixed initialRewardRate
76
+ )
77
+ external
78
+ virtual
79
+ // restricted // TODO re-enable once services have stable roles
80
+ {
81
+ uint256 chainId = block.chainid;
82
+ _getStakingServiceStorage()._staking.registerTarget(
83
+ targetNftId,
84
+ INSTANCE(),
85
+ chainId,
86
+ initialLockingPeriod,
87
+ initialRewardRate);
88
+
89
+ emit LogStakingServiceInstanceTargetRegistered(targetNftId, chainId);
90
+ }
91
+
92
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod)
93
+ external
94
+ virtual
95
+ onlyNftOwner(targetNftId)
96
+ {
97
+ _getStakingServiceStorage()._staking.setLockingPeriod(
98
+ targetNftId, lockingPeriod);
99
+ }
100
+
101
+ function setRewardRate(NftId targetNftId, UFixed rewardRate)
102
+ external
103
+ virtual
104
+ onlyNftOwner(targetNftId)
105
+ {
106
+ _getStakingServiceStorage()._staking.setRewardRate(
107
+ targetNftId, rewardRate);
108
+
109
+ }
110
+
111
+
112
+ /// @dev creates a new stake to the specified target nft id with the provided dip amount
113
+ /// the target nft id must have been registered as an active staking target prior to this call
114
+ /// the sender of this transaction becomes the stake owner via the minted nft.
115
+ /// to create the new stake balance and allowance of the staker need to cover the dip amount
116
+ /// the allowance needs to be on the token handler of the staking contract (getTokenHandler())
117
+ /// this is a permissionless function.
118
+ function create(
119
+ NftId targetNftId,
120
+ Amount dipAmount
121
+ )
122
+ external
123
+ virtual
124
+ // restricted // TODO re-enable once services have stable roles
125
+ returns (
126
+ NftId stakeNftId
127
+ )
128
+ {
129
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
130
+ StakingReader stakingReader = $._staking.getStakingReader();
131
+ address stakeOwner = msg.sender;
132
+
133
+ StakeManagerLib.checkActiveTarget(
134
+ stakingReader,
135
+ targetNftId);
136
+
137
+ // register new stake object with registry
138
+ stakeNftId = $._registryService.registerStake(
139
+ IRegistry.ObjectInfo({
140
+ nftId: NftIdLib.zero(),
141
+ parentNftId: targetNftId,
142
+ objectType: STAKE(),
143
+ isInterceptor: false,
144
+ objectAddress: address(0),
145
+ initialOwner: stakeOwner,
146
+ data: ""
147
+ }));
148
+
149
+ // create stake info with staking
150
+ $._staking.registerStake(
151
+ stakeNftId,
152
+ targetNftId,
153
+ dipAmount);
154
+
155
+ // collect staked dip by staking
156
+ $._staking.collectDipAmount(
157
+ stakeOwner,
158
+ dipAmount);
159
+
160
+ emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
161
+ }
162
+
163
+
164
+ function stake(
165
+ NftId stakeNftId,
166
+ Amount dipAmount
167
+ )
168
+ external
169
+ virtual
170
+ // restricted // TODO re-enable once services have stable roles
171
+ onlyNftOwner(stakeNftId)
172
+ {
173
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
174
+ StakingReader stakingReader = $._staking.getStakingReader();
175
+ address stakeOwner = msg.sender;
176
+
177
+ // add additional staked dips by staking
178
+ $._staking.stake(
179
+ stakeNftId,
180
+ dipAmount);
181
+
182
+ // collect staked dip by staking
183
+ $._staking.collectDipAmount(
184
+ stakeOwner,
185
+ dipAmount);
186
+
187
+ emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount);
188
+ }
189
+
190
+
191
+ function restake(
192
+ NftId stakeNftId
193
+ )
194
+ external
195
+ virtual
196
+ // restricted // TODO re-enable once services have stable roles
197
+ onlyNftOwner(stakeNftId)
198
+ {
199
+ // restake all rewards as additional stakes
200
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
201
+ $._staking.restake(stakeNftId);
202
+ }
203
+
204
+
205
+ function restakeToNewTarget(
206
+ NftId stakeNftId,
207
+ NftId newTargetNftId
208
+ )
209
+ external
210
+ virtual
211
+ // restricted // TODO re-enable once services have stable roles
212
+ onlyNftOwner(stakeNftId)
213
+ returns (
214
+ NftId newStakeNftId
215
+ )
216
+ {
217
+ // TODO implement
218
+ }
219
+
220
+
221
+ function unstake(
222
+ NftId stakeNftId,
223
+ Amount amount
224
+ )
225
+ external
226
+ virtual
227
+ {
228
+
229
+ }
230
+
231
+
232
+ function updateRewards(
233
+ NftId stakeNftId
234
+ )
235
+ external
236
+ // unpermissioned, anybody may call this function
237
+ // TODO consider to add restricted (just to be able to disable function when target is disabled)
238
+ {
239
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
240
+ $._staking.updateRewards(stakeNftId);
241
+
242
+ emit LogStakingServiceRewardsUpdated(stakeNftId);
243
+ }
244
+
245
+
246
+
247
+ function increaseTotalValueLocked(
248
+ NftId targetNftId,
249
+ address token,
250
+ Amount amount
251
+ )
252
+ external
253
+ virtual
254
+ returns (Amount totalValueLocked)
255
+ {
256
+
257
+ }
258
+
259
+
260
+ function decreaseTotalValueLocked(
261
+ NftId targetNftId,
262
+ address token,
263
+ Amount amount
264
+ )
265
+ external
266
+ virtual
267
+ returns (Amount totalValueLocked)
268
+ {
269
+
270
+ }
271
+
272
+
273
+ function setTotalValueLocked(
274
+ NftId targetNftId,
275
+ address token,
276
+ Amount amount
277
+ )
278
+ external
279
+ virtual
280
+ {
281
+
282
+ }
283
+
284
+
285
+ function getDipToken()
286
+ external
287
+ virtual
288
+ returns (IERC20Metadata dip)
289
+ {
290
+ return _getStakingServiceStorage()._dip;
291
+ }
292
+
293
+
294
+ function getTokenHandler()
295
+ external
296
+ virtual
297
+ returns (TokenHandler tokenHandler)
298
+ {
299
+ return _getStakingServiceStorage()._tokenHandler;
300
+ }
301
+
302
+
303
+ function getStaking()
304
+ external
305
+ virtual
306
+ returns (IStaking staking)
307
+ {
308
+ return _getStakingServiceStorage()._staking;
309
+ }
310
+
311
+
312
+ function _initialize(
313
+ address owner,
314
+ bytes memory data
315
+ )
316
+ internal
317
+ virtual override
318
+ initializer()
319
+ {
320
+ (
321
+ address authority,
322
+ address registryAddress,
323
+ address stakingAddress
324
+ ) = abi.decode(data, (address, address, address));
325
+
326
+ initializeService(registryAddress, authority, owner);
327
+
328
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
329
+ $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
330
+ $._staking = _registerStaking(stakingAddress);
331
+ $._dip = $._staking.getToken();
332
+ $._tokenHandler = $._staking.getTokenHandler();
333
+
334
+ registerInterface(type(IStakingService).interfaceId);
335
+ }
336
+
337
+
338
+ function _registerStaking(
339
+ address stakingAddress
340
+ )
341
+ internal
342
+ returns (IStaking staking)
343
+ {
344
+ // check if provided staking contract is already registred
345
+ // staking contract may have been already registered by a previous major relase
346
+ IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
347
+ if (stakingInfo.nftId.gtz()) {
348
+ // registered object but wrong type
349
+ if (stakingInfo.objectType != STAKING()) {
350
+ revert ErrorStakingServiceNotStaking(stakingAddress);
351
+ }
352
+
353
+ // return correctly registered staking contract
354
+ return IStaking(stakingAddress);
355
+ }
356
+
357
+ // check that contract implements IStaking
358
+ if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
359
+ revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
360
+ }
361
+
362
+ address owner = msg.sender;
363
+ _getStakingServiceStorage()._registryService.registerStaking(
364
+ IRegisterable(stakingAddress),
365
+ owner);
366
+
367
+ return IStaking(stakingAddress);
368
+ }
369
+
370
+
371
+ function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
372
+ assembly {
373
+ $.slot := STAKING_SERVICE_LOCATION_V1
374
+ }
375
+ }
376
+ }
@@ -0,0 +1,45 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IVersionable} from "../shared/IVersionable.sol";
6
+ import {ProxyManager} from "../shared/ProxyManager.sol";
7
+ import {StakingService} from "./StakingService.sol";
8
+
9
+ contract StakingServiceManager is
10
+ ProxyManager
11
+ {
12
+
13
+ StakingService private _stakingService;
14
+
15
+ /// @dev initializes proxy manager with service implementation
16
+ constructor(
17
+ address authority,
18
+ address registryAddress,
19
+ bytes32 salt
20
+ )
21
+ ProxyManager(registryAddress)
22
+ {
23
+ StakingService svc = new StakingService();
24
+ bytes memory data = abi.encode(
25
+ authority,
26
+ registryAddress,
27
+ IRegistry(registryAddress).getStakingAddress());
28
+ IVersionable versionable = deployDetermenistic(
29
+ address(svc),
30
+ data,
31
+ salt);
32
+
33
+ _stakingService = StakingService(address(versionable));
34
+ _stakingService.registerProtocolTarget();
35
+ }
36
+
37
+ //--- view functions ----------------------------------------------------//
38
+ function getStakingService()
39
+ external
40
+ view
41
+ returns (StakingService)
42
+ {
43
+ return _stakingService;
44
+ }
45
+ }