@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed1536c-164

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 (557) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -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 +415 -776
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3065
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +504 -322
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +510 -378
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -123
  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 +71 -45
  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 +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -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} +294 -349
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -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} +231 -204
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -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} +257 -288
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -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 +389 -117
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +368 -222
  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 +488 -182
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +438 -333
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -132
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -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 +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -109
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +196 -216
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +625 -0
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  182. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  184. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  185. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
  186. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  187. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  188. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  190. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  191. package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
  192. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
  194. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  195. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
  196. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
  198. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  200. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
  202. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  204. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  206. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  208. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  210. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  212. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  218. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  220. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  221. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  222. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  224. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  226. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  228. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  230. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  234. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  236. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  238. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  240. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  242. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  244. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  246. package/contracts/distribution/Distribution.sol +263 -0
  247. package/contracts/distribution/DistributionService.sol +298 -0
  248. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
  249. package/contracts/distribution/IDistributionComponent.sol +66 -0
  250. package/contracts/distribution/IDistributionService.sol +81 -0
  251. package/contracts/instance/BundleManager.sol +126 -0
  252. package/contracts/instance/IInstance.sol +60 -31
  253. package/contracts/instance/IInstanceService.sol +66 -13
  254. package/contracts/instance/Instance.sol +149 -364
  255. package/contracts/instance/InstanceAccessManager.sol +432 -177
  256. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  257. package/contracts/instance/InstanceReader.sol +143 -83
  258. package/contracts/instance/InstanceService.sol +313 -141
  259. package/contracts/instance/InstanceServiceManager.sol +12 -25
  260. package/contracts/instance/InstanceStore.sol +260 -0
  261. package/contracts/instance/base/BalanceStore.sol +118 -0
  262. package/contracts/instance/base/Cloneable.sol +51 -0
  263. package/contracts/instance/base/ObjectManager.sol +82 -0
  264. package/contracts/instance/module/IAccess.sol +37 -21
  265. package/contracts/instance/module/IBundle.sol +8 -8
  266. package/contracts/instance/module/IComponents.sol +52 -0
  267. package/contracts/instance/module/IDistribution.sol +7 -4
  268. package/contracts/instance/module/IPolicy.sol +56 -17
  269. package/contracts/instance/module/IRisk.sol +1 -1
  270. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  271. package/contracts/pool/BundleService.sol +296 -0
  272. package/contracts/pool/BundleServiceManager.sol +42 -0
  273. package/contracts/pool/IBundleService.sol +106 -0
  274. package/contracts/pool/IPoolComponent.sol +112 -0
  275. package/contracts/pool/IPoolService.sol +147 -0
  276. package/contracts/pool/Pool.sol +299 -0
  277. package/contracts/pool/PoolService.sol +424 -0
  278. package/contracts/pool/PoolServiceManager.sol +42 -0
  279. package/contracts/product/ApplicationService.sol +254 -0
  280. package/contracts/product/ApplicationServiceManager.sol +38 -0
  281. package/contracts/product/ClaimService.sol +437 -0
  282. package/contracts/product/ClaimServiceManager.sol +38 -0
  283. package/contracts/product/IApplicationService.sol +62 -0
  284. package/contracts/product/IClaimService.sol +93 -0
  285. package/contracts/product/IPolicyService.sol +78 -0
  286. package/contracts/product/IPricingService.sol +39 -0
  287. package/contracts/product/IProductComponent.sol +42 -0
  288. package/contracts/product/IProductService.sol +33 -0
  289. package/contracts/product/PolicyService.sol +473 -0
  290. package/contracts/product/PolicyServiceManager.sol +42 -0
  291. package/contracts/product/PricingService.sol +301 -0
  292. package/contracts/product/PricingServiceManager.sol +42 -0
  293. package/contracts/product/Product.sol +377 -0
  294. package/contracts/product/ProductService.sol +124 -0
  295. package/contracts/product/ProductServiceManager.sol +42 -0
  296. package/contracts/registry/ChainNft.sol +14 -0
  297. package/contracts/registry/IRegistry.sol +76 -30
  298. package/contracts/registry/IRegistryService.sol +46 -28
  299. package/contracts/registry/ITransferInterceptor.sol +1 -0
  300. package/contracts/registry/Registry.sol +369 -235
  301. package/contracts/registry/RegistryAccessManager.sol +196 -0
  302. package/contracts/registry/RegistryService.sol +113 -205
  303. package/contracts/registry/RegistryServiceManager.sol +34 -42
  304. package/contracts/registry/ReleaseManager.sol +563 -0
  305. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  306. package/contracts/registry/TokenRegistry.sol +300 -57
  307. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  308. package/contracts/shared/Component.sol +286 -0
  309. package/contracts/shared/ComponentService.sol +595 -0
  310. package/contracts/shared/ComponentServiceManager.sol +35 -0
  311. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  312. package/contracts/shared/ERC165.sol +14 -12
  313. package/contracts/shared/IComponent.sol +74 -0
  314. package/contracts/shared/IComponentService.sol +91 -0
  315. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  316. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  317. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  318. package/contracts/shared/INftOwnable.sol +12 -11
  319. package/contracts/shared/IPolicyHolder.sol +45 -0
  320. package/contracts/shared/IRegisterable.sol +4 -6
  321. package/contracts/shared/IRegistryLinked.sol +11 -0
  322. package/contracts/shared/IService.sol +7 -4
  323. package/contracts/shared/IVersionable.sol +5 -48
  324. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  325. package/contracts/shared/KeyValueStore.sol +130 -0
  326. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  327. package/contracts/shared/NftIdSetManager.sol +65 -0
  328. package/contracts/shared/NftOwnable.sol +64 -80
  329. package/contracts/shared/PolicyHolder.sol +101 -0
  330. package/contracts/shared/ProxyManager.sol +126 -25
  331. package/contracts/shared/Registerable.sol +26 -41
  332. package/contracts/shared/RegistryLinked.sol +43 -0
  333. package/contracts/shared/Service.sol +45 -23
  334. package/contracts/shared/TokenHandler.sol +37 -6
  335. package/contracts/shared/Versionable.sol +4 -92
  336. package/contracts/staking/IStaking.sol +152 -0
  337. package/contracts/staking/IStakingManager.sol +15 -0
  338. package/contracts/staking/IStakingService.sol +162 -0
  339. package/contracts/staking/IStakingStore.sol +130 -0
  340. package/contracts/staking/StakeManagerLib.sol +156 -0
  341. package/contracts/staking/Staking.sol +502 -0
  342. package/contracts/staking/StakingManager.sol +65 -0
  343. package/contracts/staking/StakingReader.sol +147 -0
  344. package/contracts/staking/StakingService.sol +375 -0
  345. package/contracts/staking/StakingServiceManager.sol +44 -0
  346. package/contracts/staking/StakingStore.sol +329 -0
  347. package/contracts/staking/TargetManagerLib.sol +179 -0
  348. package/contracts/type/Amount.sol +114 -0
  349. package/contracts/{types → type}/Blocknumber.sol +20 -2
  350. package/contracts/type/ClaimId.sol +75 -0
  351. package/contracts/{types → type}/DistributorType.sol +2 -2
  352. package/contracts/{types → type}/Fee.sol +32 -22
  353. package/contracts/{types → type}/NftId.sol +17 -11
  354. package/contracts/type/NftIdSet.sol +62 -0
  355. package/contracts/{types → type}/ObjectType.sol +26 -9
  356. package/contracts/type/PayoutId.sol +82 -0
  357. package/contracts/{types → type}/Referral.sol +4 -0
  358. package/contracts/type/RoleId.sol +143 -0
  359. package/contracts/type/Seconds.sol +71 -0
  360. package/contracts/{types → type}/StateId.sol +24 -6
  361. package/contracts/{types → type}/Timestamp.sol +18 -13
  362. package/contracts/{types → type}/UFixed.sol +1 -0
  363. package/contracts/{types → type}/Version.sol +1 -0
  364. package/package.json +3 -3
  365. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  366. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  367. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  368. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  370. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  371. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  372. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  373. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  374. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  375. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  376. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  377. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  378. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  379. package/artifacts/contracts/components/Product.sol/Product.json +0 -719
  380. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  382. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  384. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  386. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  387. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  388. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  389. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  390. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  391. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  392. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  394. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  395. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  396. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  397. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  398. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  399. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  400. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  403. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  405. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  407. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  409. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  411. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  413. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  415. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  417. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  419. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  420. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  421. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  422. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  423. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  424. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  425. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  426. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  427. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  428. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  429. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  430. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  431. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  433. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  434. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  435. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  436. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  438. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  440. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  442. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  445. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  449. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  450. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  451. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  452. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
  453. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  454. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
  455. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  456. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  457. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  458. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  459. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  460. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  461. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  462. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  463. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  464. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  465. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  466. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  467. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  468. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  469. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  470. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  471. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  472. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  473. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  474. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  475. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  476. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  477. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  478. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  479. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  480. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  481. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  483. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  484. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  485. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  486. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  487. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  488. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  489. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  490. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  491. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  493. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  496. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  498. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  499. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  500. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  501. package/contracts/components/BaseComponent.sol +0 -91
  502. package/contracts/components/Distribution.sol +0 -159
  503. package/contracts/components/IBaseComponent.sol +0 -25
  504. package/contracts/components/IDistributionComponent.sol +0 -44
  505. package/contracts/components/IPoolComponent.sol +0 -62
  506. package/contracts/components/IProductComponent.sol +0 -35
  507. package/contracts/components/Pool.sol +0 -242
  508. package/contracts/components/Product.sol +0 -284
  509. package/contracts/experiment/cloning/Cloner.sol +0 -47
  510. package/contracts/experiment/errors/Require.sol +0 -38
  511. package/contracts/experiment/errors/Revert.sol +0 -44
  512. package/contracts/experiment/inheritance/A.sol +0 -53
  513. package/contracts/experiment/inheritance/B.sol +0 -28
  514. package/contracts/experiment/inheritance/C.sol +0 -34
  515. package/contracts/experiment/inheritance/IA.sol +0 -13
  516. package/contracts/experiment/inheritance/IB.sol +0 -10
  517. package/contracts/experiment/inheritance/IC.sol +0 -12
  518. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  519. package/contracts/experiment/statemachine/ISM.sol +0 -25
  520. package/contracts/experiment/statemachine/SM.sol +0 -57
  521. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  522. package/contracts/experiment/types/TypeA.sol +0 -47
  523. package/contracts/experiment/types/TypeB.sol +0 -29
  524. package/contracts/instance/AccessManagedSimple.sol +0 -115
  525. package/contracts/instance/AccessManagerSimple.sol +0 -692
  526. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  527. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  528. package/contracts/instance/base/IInstanceBase.sol +0 -23
  529. package/contracts/instance/base/KeyValueStore.sol +0 -172
  530. package/contracts/instance/module/ISetup.sol +0 -44
  531. package/contracts/instance/module/ITreasury.sol +0 -23
  532. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  533. package/contracts/instance/service/DistributionService.sol +0 -88
  534. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  535. package/contracts/instance/service/IDistributionService.sol +0 -12
  536. package/contracts/instance/service/IPoolService.sol +0 -37
  537. package/contracts/instance/service/IProductService.sol +0 -107
  538. package/contracts/instance/service/PoolService.sol +0 -194
  539. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  540. package/contracts/instance/service/ProductService.sol +0 -543
  541. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  542. package/contracts/shared/ContractDeployerLib.sol +0 -72
  543. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  544. package/contracts/test/TestFee.sol +0 -25
  545. package/contracts/test/TestRegisterable.sol +0 -18
  546. package/contracts/test/TestRoleId.sol +0 -14
  547. package/contracts/test/TestService.sol +0 -24
  548. package/contracts/test/TestToken.sol +0 -26
  549. package/contracts/test/TestVersion.sol +0 -44
  550. package/contracts/test/TestVersionable.sol +0 -17
  551. package/contracts/types/ChainId.sol +0 -38
  552. package/contracts/types/NftIdSet.sol +0 -60
  553. package/contracts/types/NumberId.sol +0 -52
  554. package/contracts/types/RoleId.sol +0 -90
  555. /package/contracts/{types → type}/AddressSet.sol +0 -0
  556. /package/contracts/{types → type}/Key32.sol +0 -0
  557. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,156 @@
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, AmountLib} from "../type/Amount.sol";
7
+ import {Component} from "../shared/Component.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {IStaking} from "./IStaking.sol";
11
+ import {Key32} from "../type/Key32.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, INSTANCE, PROTOCOL, TARGET} from "../type/ObjectType.sol";
14
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
15
+ import {StakingReader} from "./StakingReader.sol";
16
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
17
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
18
+
19
+
20
+ library StakeManagerLib {
21
+
22
+ function checkActiveTarget(
23
+ StakingReader stakingReader,
24
+ NftId targetNftId
25
+ )
26
+ public
27
+ view
28
+ {
29
+ // target nft id must be registered
30
+ if (!stakingReader.isTarget(targetNftId)) {
31
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
32
+ }
33
+
34
+ // only accept stakes for active targets
35
+ if (!stakingReader.isActive(targetNftId)) {
36
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
37
+ }
38
+ }
39
+
40
+
41
+ function checkStakeParameters(
42
+ StakingReader stakingReader,
43
+ NftId targetNftId,
44
+ Amount dipAmount
45
+ )
46
+ external
47
+ view
48
+ returns (
49
+ Timestamp lockedUntil
50
+ )
51
+ {
52
+ // target nft id must be registered
53
+ if (!stakingReader.isTarget(targetNftId)) {
54
+ revert IStaking.ErrorStakingNotTarget(targetNftId);
55
+ }
56
+
57
+ // only accept stakes for active targets
58
+ if (!stakingReader.isActive(targetNftId)) {
59
+ revert IStaking.ErrorStakingTargetNotActive(targetNftId);
60
+ }
61
+
62
+ checkDipAmount(targetNftId, dipAmount);
63
+
64
+ Timestamp currentTime = TimestampLib.blockTimestamp();
65
+ lockedUntil = currentTime.addSeconds(
66
+ stakingReader.getTargetInfo(targetNftId).lockingPeriod);
67
+ }
68
+
69
+
70
+ function checkDipAmount(
71
+ NftId targetNftId,
72
+ Amount dipAmount
73
+ )
74
+ public
75
+ pure
76
+ {
77
+ // check stake amount > 0
78
+ if (dipAmount.eqz()) {
79
+ revert IStaking.ErrorStakingStakeAmountZero(targetNftId);
80
+ }
81
+
82
+ // TODO add check for target specific max dip amount (min stake + tvl * stake rate + buffer)
83
+ }
84
+
85
+
86
+ function checkDipBalanceAndAllowance(
87
+ IERC20Metadata dip,
88
+ address owner,
89
+ address tokenHandlerAddress,
90
+ Amount dipAmount
91
+ )
92
+ public
93
+ view
94
+ {
95
+ // check balance
96
+ uint256 amount = dipAmount.toInt();
97
+ uint256 dipBalance = dip.balanceOf(owner);
98
+ if (dipBalance < amount) {
99
+ revert IStaking.ErrorStakingDipBalanceInsufficient(owner, amount, dipBalance);
100
+ }
101
+
102
+ // check allowance
103
+ uint256 dipAllowance = dip.allowance(owner, tokenHandlerAddress);
104
+ if (dipAllowance < amount) {
105
+ revert IStaking.ErrorStakingDipAllowanceInsufficient(owner, tokenHandlerAddress, amount, dipAllowance);
106
+ }
107
+ }
108
+
109
+
110
+ function calculateRewardIncrease(
111
+ StakingReader stakingReader,
112
+ NftId stakeNftId
113
+ )
114
+ public
115
+ view
116
+ returns (Amount rewardIncreaseAmount)
117
+ {
118
+ (
119
+ UFixed rewardRate,
120
+ Amount stakeAmount,
121
+ Timestamp lastUpdatedAt
122
+ ) = stakingReader.getRewardCalculationInput(stakeNftId);
123
+
124
+ Seconds duration = SecondsLib.toSeconds(
125
+ block.timestamp - lastUpdatedAt.toInt());
126
+
127
+ rewardIncreaseAmount = calculateRewardAmount(
128
+ rewardRate,
129
+ duration,
130
+ stakeAmount);
131
+ }
132
+
133
+
134
+ function calculateRewardAmount(
135
+ UFixed rewardRate,
136
+ Seconds duration,
137
+ Amount stakeAmount
138
+ )
139
+ public
140
+ pure
141
+ returns(
142
+ Amount rewardAmount
143
+ )
144
+ {
145
+ UFixed yearFraction = getYearFraction(duration);
146
+ UFixed rewardRateFraction = yearFraction * rewardRate;
147
+ UFixed amountUFixed = rewardRateFraction * stakeAmount.toUFixed();
148
+ rewardAmount = AmountLib.toAmount(amountUFixed.toInt());
149
+ }
150
+
151
+
152
+ function getYearFraction(Seconds duration) public pure returns (UFixed yearFraction) {
153
+ return UFixedLib.toUFixed(duration.toInt()) / UFixedLib.toUFixed(SecondsLib.oneYear().toInt());
154
+ }
155
+
156
+ }
@@ -0,0 +1,502 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {ChainNft} from "../registry/ChainNft.sol";
6
+ import {Component} from "../shared/Component.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {IStaking} from "./IStaking.sol";
10
+ import {IVersionable} from "../shared/IVersionable.sol";
11
+ import {Key32} from "../type/Key32.sol";
12
+ import {KEEP_STATE} from "../type/StateId.sol";
13
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
14
+ import {NftId, NftIdLib} from "../type/NftId.sol";
15
+ import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
16
+ import {ObjectType, INSTANCE, PROTOCOL, STAKE, STAKING, TARGET} from "../type/ObjectType.sol";
17
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
18
+ import {StakeManagerLib} from "./StakeManagerLib.sol";
19
+ import {StakingReader} from "./StakingReader.sol";
20
+ import {StakingStore} from "./StakingStore.sol";
21
+ import {TargetManagerLib} from "./TargetManagerLib.sol";
22
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
23
+ import {TokenHandler} from "../shared/TokenHandler.sol";
24
+ import {TokenRegistry} from "../registry/TokenRegistry.sol";
25
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
26
+ import {Version, VersionLib} from "../type/Version.sol";
27
+ import {Versionable} from "../shared/Versionable.sol";
28
+
29
+ contract Staking is
30
+ Component,
31
+ Versionable,
32
+ IStaking
33
+ {
34
+ string public constant CONTRACT_NAME = "Staking";
35
+ uint8 private constant GIF_MAJOR_VERSION = 3;
36
+
37
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Staking.sol")) - 1)) & ~bytes32(uint256(0xff));
38
+ bytes32 public constant STAKING_LOCATION_V1 = 0xafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f00;
39
+
40
+ struct StakingStorage {
41
+ IRegistryService _registryService;
42
+ TokenRegistry _tokenRegistry;
43
+ StakingStore _store;
44
+ StakingReader _reader;
45
+
46
+ mapping(uint256 chainId => mapping(address token => UFixed stakingRate)) _stakingRate;
47
+
48
+ mapping(NftId targetNftId => Amount stakedAmount) _stakedAmount;
49
+ mapping(NftId targetNftId => mapping(address token => Amount tvlAmount)) _tvlAmount;
50
+
51
+ NftId _protocolNftId;
52
+ }
53
+
54
+
55
+ modifier onlyStake(NftId stakeNftId) {
56
+ if (!_getStakingStorage()._store.exists(stakeNftId)) {
57
+ revert ErrorStakingNotStake(stakeNftId);
58
+ }
59
+ _;
60
+ }
61
+
62
+
63
+ modifier onlyTarget(NftId targetNftId) {
64
+ if (!_getStakingStorage()._store.getTargetManager().exists(targetNftId)) {
65
+ revert ErrorStakingNotTarget(targetNftId);
66
+ }
67
+ _;
68
+ }
69
+
70
+
71
+ // from Versionable
72
+ function getVersion()
73
+ public
74
+ pure
75
+ virtual override (IVersionable, Versionable)
76
+ returns(Version)
77
+ {
78
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
79
+ }
80
+
81
+ // set/update staking reader
82
+ function setStakingReader(StakingReader stakingReader)
83
+ external
84
+ virtual
85
+ onlyOwner
86
+ {
87
+ if(stakingReader.getStaking() != IStaking(this)) {
88
+ revert ErrorStakingStakingReaderStakingMismatch(address(stakingReader.getStaking()));
89
+ }
90
+
91
+ _getStakingStorage()._reader = stakingReader;
92
+ }
93
+
94
+
95
+ // rate management
96
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate)
97
+ external
98
+ virtual
99
+ onlyOwner
100
+ {
101
+
102
+ }
103
+
104
+ // reward management
105
+
106
+ // target management
107
+
108
+ function registerTarget(
109
+ NftId targetNftId,
110
+ ObjectType expectedObjectType,
111
+ uint256 chainId,
112
+ Seconds initialLockingPeriod,
113
+ UFixed initialRewardRate
114
+ )
115
+ external
116
+ virtual
117
+ // restricted // staking service access
118
+ {
119
+ TargetManagerLib.checkTargetParameters(
120
+ getRegistry(),
121
+ _getStakingStorage()._reader,
122
+ targetNftId,
123
+ expectedObjectType,
124
+ initialLockingPeriod,
125
+ initialRewardRate);
126
+
127
+ _getStakingStorage()._store.createTarget(
128
+ targetNftId,
129
+ TargetInfo({
130
+ objectType: expectedObjectType,
131
+ chainId: chainId,
132
+ lockingPeriod: initialLockingPeriod,
133
+ rewardRate: initialRewardRate}));
134
+ }
135
+
136
+
137
+ function setLockingPeriod(
138
+ NftId targetNftId,
139
+ Seconds lockingPeriod
140
+ )
141
+ external
142
+ virtual
143
+ // TODO add restricted // only staking service
144
+ onlyTarget(targetNftId) // maybe duplicate check
145
+ {
146
+ (
147
+ Seconds oldLockingPeriod,
148
+ TargetInfo memory targetInfo
149
+ ) = TargetManagerLib.updateLockingPeriod(
150
+ this,
151
+ targetNftId,
152
+ lockingPeriod);
153
+
154
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
155
+
156
+ emit LogStakingLockingPeriodSet(targetNftId, oldLockingPeriod, lockingPeriod);
157
+ }
158
+
159
+ // TODO add function to set protocol reward rate: onlyOwner
160
+ // get protocol nft id (from where)
161
+
162
+ function setRewardRate(NftId targetNftId, UFixed rewardRate)
163
+ external
164
+ virtual
165
+ onlyTarget(targetNftId) // maybe duplicate check
166
+ {
167
+ (
168
+ UFixed oldRewardRate,
169
+ TargetInfo memory targetInfo
170
+ ) = TargetManagerLib.updateRewardRate(
171
+ this,
172
+ targetNftId,
173
+ rewardRate);
174
+
175
+ _getStakingStorage()._store.updateTarget(targetNftId, targetInfo);
176
+
177
+ emit LogStakingRewardRateSet(targetNftId, oldRewardRate, rewardRate);
178
+ }
179
+
180
+
181
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount)
182
+ external
183
+ virtual
184
+ {
185
+
186
+ }
187
+
188
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount)
189
+ external
190
+ virtual
191
+ // onlyNftOwner(targetNftId)
192
+ {
193
+
194
+ }
195
+
196
+
197
+ function increaseTvl(NftId targetNftId, address token, Amount amount)
198
+ external
199
+ virtual
200
+ // restricted // service to service access
201
+ {
202
+
203
+ }
204
+
205
+ function decreaseTvl(NftId targetNftId, address token, Amount amount)
206
+ external
207
+ virtual
208
+ // restricted // service to service access
209
+ {
210
+
211
+ }
212
+
213
+
214
+ function registerRemoteTarget(NftId targetNftId, TargetInfo memory targetInfo)
215
+ external
216
+ virtual
217
+ onlyOwner // or CCIP
218
+ {
219
+
220
+ }
221
+
222
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount)
223
+ external
224
+ virtual
225
+ onlyOwner // or CCIP
226
+ {
227
+
228
+ }
229
+
230
+ //--- staking functions -------------------------------------------------//
231
+
232
+ function registerStake(
233
+ NftId stakeNftId,
234
+ NftId targetNftId,
235
+ Amount dipAmount
236
+ )
237
+ external
238
+ virtual
239
+ // TODO add restricted() // only staking service
240
+ {
241
+ Timestamp lockedUntil = StakeManagerLib.checkStakeParameters(
242
+ _getStakingStorage()._reader,
243
+ targetNftId,
244
+ dipAmount);
245
+
246
+ _getStakingStorage()._store.create(
247
+ stakeNftId,
248
+ StakeInfo({
249
+ lockedUntil: lockedUntil}),
250
+ dipAmount);
251
+ }
252
+
253
+
254
+ function stake(NftId stakeNftId, Amount dipAmount)
255
+ external
256
+ virtual
257
+ // TODO add restricted() // only staking service
258
+ onlyStake(stakeNftId)
259
+ {
260
+ StakingStorage storage $ = _getStakingStorage();
261
+ Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
262
+ $._reader,
263
+ stakeNftId);
264
+
265
+ $._store.increaseBalance(
266
+ stakeNftId,
267
+ dipAmount,
268
+ rewardIncrement);
269
+ }
270
+
271
+
272
+ function restake(NftId stakeNftId)
273
+ external
274
+ virtual
275
+ // TODO add restricted() // only staking service
276
+ onlyStake(stakeNftId)
277
+ {
278
+ // TODO add check that target is active and allows additional staking amount
279
+ StakingStorage storage $ = _getStakingStorage();
280
+ Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
281
+ $._reader,
282
+ stakeNftId);
283
+
284
+ $._store.restakeRewards(
285
+ stakeNftId,
286
+ rewardIncrement);
287
+ }
288
+
289
+
290
+ function updateRewards(NftId stakeNftId)
291
+ external
292
+ virtual
293
+ // TODO add restricted() // only staking service
294
+ onlyStake(stakeNftId)
295
+ {
296
+ StakingStorage storage $ = _getStakingStorage();
297
+ _updateRewards($._reader, $._store, stakeNftId);
298
+ }
299
+
300
+
301
+ function claimRewards(NftId stakeNftId)
302
+ external
303
+ virtual
304
+ // TODO add restricted() // only staking service
305
+ onlyStake(stakeNftId)
306
+ returns (
307
+ Amount rewardsClaimedAmount
308
+ )
309
+ {
310
+ StakingStorage storage $ = _getStakingStorage();
311
+
312
+ // update rewards since last update
313
+ _updateRewards($._reader, $._store, stakeNftId);
314
+
315
+ // unstake all available rewards
316
+ rewardsClaimedAmount = $._store.claimUpTo(
317
+ stakeNftId,
318
+ AmountLib.max());
319
+ }
320
+
321
+
322
+ function unstake(NftId stakeNftId)
323
+ external
324
+ virtual
325
+ // TODO add restricted() // only staking service
326
+ onlyStake(stakeNftId)
327
+ returns (
328
+ Amount unstakedAmount,
329
+ Amount rewardsClaimedAmount
330
+ )
331
+ {
332
+ // TODO add check that stake locking is in the past
333
+ StakingStorage storage $ = _getStakingStorage();
334
+
335
+ // update rewards since last update
336
+ _updateRewards($._reader, $._store, stakeNftId);
337
+
338
+ // unstake all available dips
339
+ (
340
+ unstakedAmount,
341
+ rewardsClaimedAmount
342
+ ) = $._store.unstakeUpTo(
343
+ stakeNftId,
344
+ AmountLib.max(), // unstake all stakes
345
+ AmountLib.max()); // claim all rewards
346
+ }
347
+
348
+
349
+
350
+ function _updateRewards(
351
+ StakingReader reader,
352
+ StakingStore store,
353
+ NftId stakeNftId
354
+ )
355
+ internal
356
+ virtual
357
+ {
358
+ Amount rewardIncrement = StakeManagerLib.calculateRewardIncrease(
359
+ reader,
360
+ stakeNftId);
361
+
362
+ store.updateRewards(
363
+ stakeNftId,
364
+ rewardIncrement);
365
+ }
366
+
367
+
368
+ //--- other functions ---------------------------------------------------//
369
+
370
+ function collectDipAmount(address from, Amount dipAmount)
371
+ external
372
+ // TODO add restricted() // only staking service
373
+ {
374
+ TokenHandler tokenHandler = getTokenHandler();
375
+ address stakingWallet = getWallet();
376
+
377
+ StakeManagerLib.checkDipBalanceAndAllowance(
378
+ getToken(),
379
+ from,
380
+ address(tokenHandler),
381
+ dipAmount);
382
+
383
+ tokenHandler.transfer(from, stakingWallet, dipAmount);
384
+ }
385
+
386
+
387
+ function transferDipAmount(address to, Amount dipAmount)
388
+ external
389
+ // TODO add restricted() // only staking service
390
+ {
391
+ TokenHandler tokenHandler = getTokenHandler();
392
+ address stakingWallet = getWallet();
393
+
394
+ StakeManagerLib.checkDipBalanceAndAllowance(
395
+ getToken(),
396
+ stakingWallet,
397
+ address(tokenHandler),
398
+ dipAmount);
399
+
400
+ tokenHandler.transfer(stakingWallet, to, dipAmount);
401
+ }
402
+
403
+
404
+ //--- view functions ----------------------------------------------------//
405
+
406
+ function getStakingReader() public view returns (StakingReader reader) {
407
+ return _getStakingStorage()._reader;
408
+ }
409
+
410
+ function getStakingStore() external view returns (StakingStore stakingStore) {
411
+ return _getStakingStorage()._store;
412
+ }
413
+
414
+ function getStakingRate(uint256 chainId, address token) external view returns (UFixed stakingRate) {
415
+ return _getStakingStorage()._stakingRate[chainId][token];
416
+ }
417
+
418
+ function getTvlAmount(NftId targetNftId, address token) external view returns (Amount tvlAmount) {
419
+ return _getStakingStorage()._tvlAmount[targetNftId][token];
420
+ }
421
+
422
+ function getStakedAmount(NftId targetNftId) external view returns (Amount stakeAmount) {
423
+ return _getStakingStorage()._stakedAmount[targetNftId];
424
+ }
425
+
426
+ function getTokenRegistryAddress() external view returns (address tokenRegistry) {
427
+ return address(_getStakingStorage()._tokenRegistry);
428
+ }
429
+
430
+ function calculateRewardIncrementAmount(
431
+ NftId targetNftId,
432
+ Timestamp rewardsLastUpdatedAt
433
+ )
434
+ public
435
+ virtual
436
+ view
437
+ returns (Amount rewardIncrementAmount)
438
+ {
439
+
440
+ }
441
+
442
+ //--- internal functions ------------------------------------------------//
443
+
444
+ function _initialize(
445
+ address owner,
446
+ bytes memory data
447
+ )
448
+ internal
449
+ virtual override
450
+ initializer
451
+ {
452
+ (
453
+ address initialAuthority,
454
+ address registryAddress,
455
+ address stakingReaderAddress,
456
+ address stakingStoreAddress,
457
+ address initialOwner
458
+ ) = abi.decode(data, (address, address, address, address, address));
459
+
460
+ IRegistry registry = IRegistry(registryAddress);
461
+ TokenRegistry tokenRegistry = TokenRegistry(registry.getTokenRegistryAddress());
462
+ address dipTokenAddress = address(tokenRegistry.getDipToken());
463
+
464
+ initializeComponent(
465
+ initialAuthority,
466
+ registryAddress,
467
+ registry.getNftId(),
468
+ CONTRACT_NAME,
469
+ dipTokenAddress,
470
+ STAKING(),
471
+ false, // is interceptor
472
+ initialOwner,
473
+ "", // registry data
474
+ ""); // component data
475
+
476
+ _createAndSetTokenHandler();
477
+
478
+ // wiring to external contracts
479
+ StakingStorage storage $ = _getStakingStorage();
480
+ $._protocolNftId = getRegistry().getProtocolNftId();
481
+ $._store = StakingStore(stakingStoreAddress);
482
+ $._reader = StakingReader(stakingReaderAddress);
483
+ $._tokenRegistry = TokenRegistry(
484
+ address(tokenRegistry));
485
+
486
+ // wiring to staking
487
+ $._reader.setStakingDependencies(
488
+ registryAddress,
489
+ address(this),
490
+ stakingStoreAddress);
491
+
492
+ registerInterface(type(IStaking).interfaceId);
493
+ }
494
+
495
+
496
+ function _getStakingStorage() private pure returns (StakingStorage storage $) {
497
+ assembly {
498
+ $.slot := STAKING_LOCATION_V1
499
+ }
500
+ }
501
+
502
+ }