@etherisc/gif-next 0.0.2-ed4dd55 → 0.0.2-edd8f00-238

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 (553) hide show
  1. package/README.md +367 -8
  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 +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -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 +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +304 -531
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +534 -578
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1220 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -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 +137 -0
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  50. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  52. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  54. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  55. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  56. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +10 -0
  58. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  60. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  62. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  64. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  66. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  68. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  69. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  70. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  72. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  74. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  75. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  76. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  78. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  79. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  80. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  81. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  82. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  84. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  86. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  88. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  90. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  92. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  94. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  96. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  98. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  99. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  100. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  101. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  102. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  103. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  104. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  106. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  108. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  109. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  110. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  112. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  113. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  114. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  115. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  116. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +695 -68
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  124. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  126. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  127. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  128. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  129. package/artifacts/contracts/registry/Registry.sol/Registry.json +1051 -126
  130. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  132. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  134. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  136. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +187 -0
  138. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1234 -0
  140. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  142. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  143. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  144. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  145. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  146. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  148. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  150. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  154. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  156. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  158. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  160. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  161. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  162. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  164. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  165. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  166. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  168. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  170. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  172. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  174. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  176. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  180. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  181. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  182. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  184. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  185. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +131 -0
  186. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  188. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
  190. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  192. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  194. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  196. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  197. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  198. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  199. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  200. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  201. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +570 -0
  202. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  203. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +156 -0
  204. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  205. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  207. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  209. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  210. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  212. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  213. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  214. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  215. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  216. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  217. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  220. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  221. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  222. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  223. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +187 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2260 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +92 -0
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  296. package/contracts/distribution/Distribution.sol +261 -0
  297. package/contracts/distribution/DistributionService.sol +297 -0
  298. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  299. package/contracts/distribution/IDistributionComponent.sol +66 -0
  300. package/contracts/distribution/IDistributionService.sol +81 -0
  301. package/contracts/instance/BundleManager.sol +126 -0
  302. package/contracts/instance/IInstance.sol +82 -15
  303. package/contracts/instance/IInstanceService.sol +97 -0
  304. package/contracts/instance/Instance.sol +244 -44
  305. package/contracts/instance/InstanceAdmin.sol +331 -0
  306. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  307. package/contracts/instance/InstanceReader.sol +392 -0
  308. package/contracts/instance/InstanceService.sol +439 -0
  309. package/contracts/instance/InstanceServiceManager.sol +44 -0
  310. package/contracts/instance/InstanceStore.sol +272 -0
  311. package/contracts/instance/base/BalanceStore.sol +123 -0
  312. package/contracts/instance/base/Cloneable.sol +28 -0
  313. package/contracts/instance/base/ObjectCounter.sol +21 -0
  314. package/contracts/instance/base/ObjectLifecycle.sol +96 -0
  315. package/contracts/instance/base/ObjectManager.sol +80 -0
  316. package/contracts/instance/module/IAccess.sol +46 -0
  317. package/contracts/instance/module/IBundle.sol +20 -0
  318. package/contracts/instance/module/IComponents.sol +52 -0
  319. package/contracts/instance/module/IDistribution.sol +42 -0
  320. package/contracts/instance/module/IPolicy.sol +84 -0
  321. package/contracts/instance/module/IRisk.sol +11 -0
  322. package/contracts/mock/Dip.sol +26 -0
  323. package/contracts/oracle/IOracle.sol +20 -0
  324. package/contracts/oracle/IOracleComponent.sol +32 -0
  325. package/contracts/oracle/IOracleService.sol +65 -0
  326. package/contracts/oracle/Oracle.sol +145 -0
  327. package/contracts/oracle/OracleService.sol +278 -0
  328. package/contracts/oracle/OracleServiceManager.sol +42 -0
  329. package/contracts/pool/BundleService.sol +296 -0
  330. package/contracts/pool/BundleServiceManager.sol +42 -0
  331. package/contracts/pool/IBundleService.sol +106 -0
  332. package/contracts/pool/IPoolComponent.sol +112 -0
  333. package/contracts/pool/IPoolService.sol +150 -0
  334. package/contracts/pool/Pool.sol +299 -0
  335. package/contracts/pool/PoolService.sol +452 -0
  336. package/contracts/pool/PoolServiceManager.sol +42 -0
  337. package/contracts/product/ApplicationService.sol +254 -0
  338. package/contracts/product/ApplicationServiceManager.sol +38 -0
  339. package/contracts/product/ClaimService.sol +442 -0
  340. package/contracts/product/ClaimServiceManager.sol +38 -0
  341. package/contracts/product/IApplicationService.sol +62 -0
  342. package/contracts/product/IClaimService.sol +99 -0
  343. package/contracts/product/IPolicyService.sol +78 -0
  344. package/contracts/product/IPricingService.sol +39 -0
  345. package/contracts/product/IProductComponent.sol +42 -0
  346. package/contracts/product/IProductService.sol +33 -0
  347. package/contracts/product/PolicyService.sol +475 -0
  348. package/contracts/product/PolicyServiceManager.sol +42 -0
  349. package/contracts/product/PricingService.sol +300 -0
  350. package/contracts/product/PricingServiceManager.sol +42 -0
  351. package/contracts/product/Product.sol +377 -0
  352. package/contracts/product/ProductService.sol +124 -0
  353. package/contracts/product/ProductServiceManager.sol +42 -0
  354. package/contracts/registry/ChainNft.sol +152 -108
  355. package/contracts/registry/IRegistry.sol +105 -49
  356. package/contracts/registry/IRegistryService.sol +69 -0
  357. package/contracts/registry/IServiceAuthorization.sol +38 -0
  358. package/contracts/registry/ITransferInterceptor.sol +7 -0
  359. package/contracts/registry/Registry.sol +518 -112
  360. package/contracts/registry/RegistryAdmin.sol +333 -0
  361. package/contracts/registry/RegistryService.sol +266 -0
  362. package/contracts/registry/RegistryServiceManager.sol +53 -0
  363. package/contracts/registry/ReleaseLifecycle.sol +28 -0
  364. package/contracts/registry/ReleaseManager.sol +523 -0
  365. package/contracts/registry/ServiceAuthorization.sol +90 -0
  366. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  367. package/contracts/registry/TokenRegistry.sol +315 -0
  368. package/contracts/shared/AccessAdmin.sol +759 -0
  369. package/contracts/shared/AccessManagerCustom.sol +741 -0
  370. package/contracts/shared/AccessManagerExtended.sol +481 -0
  371. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  372. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  373. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  374. package/contracts/shared/Component.sol +281 -0
  375. package/contracts/shared/ComponentService.sol +620 -0
  376. package/contracts/shared/ComponentServiceManager.sol +35 -0
  377. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  378. package/contracts/shared/ERC165.sol +27 -0
  379. package/contracts/shared/IAccessAdmin.sol +168 -0
  380. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  381. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  382. package/contracts/shared/IComponent.sol +70 -0
  383. package/contracts/shared/IComponentService.sol +102 -0
  384. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  385. package/contracts/shared/IKeyValueStore.sol +54 -0
  386. package/contracts/shared/ILifecycle.sol +29 -0
  387. package/contracts/shared/INftOwnable.sol +23 -0
  388. package/contracts/shared/IPolicyHolder.sol +45 -0
  389. package/contracts/shared/IRegisterable.sol +15 -0
  390. package/contracts/shared/IRegistryLinked.sol +11 -0
  391. package/contracts/shared/IService.sol +25 -0
  392. package/contracts/shared/IVersionable.sol +53 -0
  393. package/contracts/shared/InitializableCustom.sol +177 -0
  394. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  395. package/contracts/shared/KeyValueStore.sol +131 -0
  396. package/contracts/shared/Lifecycle.sol +71 -0
  397. package/contracts/shared/NftIdSetManager.sol +65 -0
  398. package/contracts/shared/NftOwnable.sol +107 -0
  399. package/contracts/shared/PolicyHolder.sol +102 -0
  400. package/contracts/shared/ProxyManager.sol +199 -0
  401. package/contracts/shared/Registerable.sol +75 -0
  402. package/contracts/shared/RegistryLinked.sol +43 -0
  403. package/contracts/shared/Service.sol +83 -0
  404. package/contracts/shared/TokenHandler.sol +58 -0
  405. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  406. package/contracts/shared/Versionable.sol +59 -0
  407. package/contracts/staking/IStaking.sol +168 -0
  408. package/contracts/staking/IStakingService.sol +153 -0
  409. package/contracts/staking/StakeManagerLib.sol +231 -0
  410. package/contracts/staking/Staking.sol +513 -0
  411. package/contracts/staking/StakingLifecycle.sol +24 -0
  412. package/contracts/staking/StakingManager.sol +54 -0
  413. package/contracts/staking/StakingReader.sol +187 -0
  414. package/contracts/staking/StakingService.sol +411 -0
  415. package/contracts/staking/StakingServiceManager.sol +44 -0
  416. package/contracts/staking/StakingStore.sol +615 -0
  417. package/contracts/staking/TargetManagerLib.sol +207 -0
  418. package/contracts/type/AddressSet.sol +58 -0
  419. package/contracts/type/Amount.sol +128 -0
  420. package/contracts/type/Blocknumber.sol +136 -0
  421. package/contracts/type/ClaimId.sol +75 -0
  422. package/contracts/type/DistributorType.sol +55 -0
  423. package/contracts/type/Fee.sol +66 -0
  424. package/contracts/type/Key32.sol +50 -0
  425. package/contracts/type/NftId.sol +78 -0
  426. package/contracts/type/NftIdSet.sol +62 -0
  427. package/contracts/type/ObjectType.sol +241 -0
  428. package/contracts/type/PayoutId.sol +82 -0
  429. package/contracts/type/Referral.sol +89 -0
  430. package/contracts/type/RequestId.sol +75 -0
  431. package/contracts/type/RiskId.sol +43 -0
  432. package/contracts/type/RoleId.sol +201 -0
  433. package/contracts/type/Seconds.sol +81 -0
  434. package/contracts/type/Selector.sol +102 -0
  435. package/contracts/type/StateId.sol +135 -0
  436. package/contracts/type/String.sol +53 -0
  437. package/contracts/type/Timestamp.sol +136 -0
  438. package/contracts/type/UFixed.sol +326 -0
  439. package/contracts/type/Version.sol +108 -0
  440. package/package.json +23 -7
  441. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  442. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  443. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  444. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  445. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  446. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  447. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  448. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  449. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  450. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -195
  451. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  452. package/artifacts/contracts/components/Product.sol/Product.json +0 -213
  453. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  455. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  457. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  458. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  459. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  460. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  461. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  463. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  465. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  467. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  469. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  471. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  473. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  474. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  475. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  476. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  477. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  478. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  479. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  480. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  481. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  482. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  483. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  484. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  485. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  486. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  487. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  488. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  489. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  490. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  491. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  492. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  493. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  494. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  495. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  496. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  497. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  498. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  499. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  500. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  501. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  502. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  503. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  504. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  505. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  506. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  507. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  508. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  509. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  510. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  511. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  512. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  513. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  514. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  515. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  516. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  517. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  518. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  519. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  520. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  521. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  522. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  523. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  524. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  525. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  526. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  527. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -10
  528. package/contracts/components/Component.sol +0 -62
  529. package/contracts/components/IPool.sol +0 -9
  530. package/contracts/components/IProduct.sol +0 -11
  531. package/contracts/components/Pool.sol +0 -29
  532. package/contracts/components/Product.sol +0 -65
  533. package/contracts/experiment/inheritance/A.sol +0 -56
  534. package/contracts/experiment/inheritance/B.sol +0 -23
  535. package/contracts/experiment/inheritance/C.sol +0 -28
  536. package/contracts/experiment/inheritance/IA.sol +0 -18
  537. package/contracts/experiment/inheritance/IB.sol +0 -9
  538. package/contracts/experiment/inheritance/IC.sol +0 -11
  539. package/contracts/experiment/types/TypeA.sol +0 -42
  540. package/contracts/experiment/types/TypeB.sol +0 -24
  541. package/contracts/instance/access/Access.sol +0 -218
  542. package/contracts/instance/access/IAccess.sol +0 -83
  543. package/contracts/instance/component/ComponentModule.sol +0 -259
  544. package/contracts/instance/component/IComponent.sol +0 -94
  545. package/contracts/instance/policy/IPolicy.sol +0 -66
  546. package/contracts/instance/policy/PolicyModule.sol +0 -106
  547. package/contracts/instance/pool/IPoolModule.sol +0 -40
  548. package/contracts/instance/pool/PoolModule.sol +0 -83
  549. package/contracts/instance/product/IProductService.sol +0 -45
  550. package/contracts/instance/product/ProductService.sol +0 -105
  551. package/contracts/registry/IChainNft.sol +0 -18
  552. package/contracts/types/ChainId.sol +0 -24
  553. package/contracts/types/NftId.sol +0 -25
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
+ import {NftOwnable} from "../shared/NftOwnable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {IRegisterable} from "./IRegisterable.sol";
12
+
13
+ contract Registerable is
14
+ NftOwnable,
15
+ IRegisterable
16
+ {
17
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
18
+ bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
19
+
20
+ struct RegisterableStorage {
21
+ NftId _parentNftId;
22
+ ObjectType _objectType;
23
+ bool _isInterceptor;
24
+ bytes _data;
25
+ }
26
+
27
+ function initializeRegisterable(
28
+ address registryAddress,
29
+ NftId parentNftId,
30
+ ObjectType objectType,
31
+ bool isInterceptor,
32
+ address initialOwner,
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
34
+ )
35
+ public
36
+ virtual
37
+ onlyInitializing
38
+ {
39
+ initializeNftOwnable(
40
+ initialOwner,
41
+ registryAddress);
42
+
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
46
+ }
47
+
48
+ $._parentNftId = parentNftId;
49
+ $._objectType = objectType;
50
+ $._isInterceptor = isInterceptor;
51
+ $._data = registryData;
52
+ }
53
+
54
+
55
+ function getInitialInfo()
56
+ public
57
+ view
58
+ virtual
59
+ returns (IRegistry.ObjectInfo memory info)
60
+ {
61
+ RegisterableStorage storage $;
62
+ assembly {
63
+ $.slot := REGISTERABLE_LOCATION_V1
64
+ }
65
+
66
+ info = IRegistry.ObjectInfo(
67
+ NftIdLib.zero(),
68
+ $._parentNftId,
69
+ $._objectType,
70
+ $._isInterceptor,
71
+ address(this),
72
+ getOwner(),
73
+ $._data);
74
+ }
75
+ }
@@ -0,0 +1,43 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+ import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IRegistryLinked} from "./IRegistryLinked.sol";
7
+
8
+ contract RegistryLinked is
9
+ Initializable,
10
+ IRegistryLinked
11
+ {
12
+
13
+ IRegistry private _registry;
14
+
15
+ /// @dev initialization for upgradable contracts
16
+ // used in _initializeRegisterable
17
+ function initializeRegistryLinked(
18
+ address registryAddress
19
+ )
20
+ public
21
+ virtual
22
+ onlyInitializing()
23
+ {
24
+ if (registryAddress.code.length == 0) {
25
+ revert ErrorNotRegistry(registryAddress);
26
+ }
27
+
28
+ _registry = IRegistry(registryAddress);
29
+
30
+ try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
31
+ if (!isRegistry) {
32
+ revert ErrorNotRegistry(registryAddress);
33
+ }
34
+ } catch {
35
+ revert ErrorNotRegistry(registryAddress);
36
+ }
37
+ }
38
+
39
+
40
+ function getRegistry() public view returns (IRegistry) {
41
+ return _registry;
42
+ }
43
+ }
@@ -0,0 +1,83 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
6
+
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IService} from "./IService.sol";
9
+ import {IVersionable} from "./IVersionable.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
+ import {Registerable} from "./Registerable.sol";
13
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
14
+ import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
15
+ import {Versionable} from "./Versionable.sol";
16
+
17
+
18
+ /// @dev service base contract
19
+ abstract contract Service is
20
+ Registerable,
21
+ Versionable,
22
+ AccessManagedUpgradeable,
23
+ IService
24
+ {
25
+
26
+ uint8 private constant GIF_MAJOR_VERSION = 3;
27
+
28
+
29
+ function initializeService(
30
+ address registry,
31
+ address authority, // real authority for registry service adress(0) for other services
32
+ address initialOwner
33
+ )
34
+ public
35
+ virtual
36
+ onlyInitializing()
37
+ {
38
+ initializeRegisterable(
39
+ registry,
40
+ IRegistry(registry).getNftId(),
41
+ SERVICE(),
42
+ false, // is interceptor
43
+ initialOwner,
44
+ ""); // data
45
+
46
+ // externally provided authority
47
+ if(authority != address(0)) {
48
+ __AccessManaged_init(authority);
49
+ } else {
50
+ address registryServiceAddress = _getServiceAddress(REGISTRY());
51
+
52
+ // copy authority from already registered registry services
53
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
54
+ }
55
+
56
+ registerInterface(type(IAccessManaged).interfaceId);
57
+ registerInterface(type(IService).interfaceId);
58
+ }
59
+
60
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
61
+ return _getDomain();
62
+ }
63
+
64
+ function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
65
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
66
+ }
67
+
68
+ // from Versionable
69
+ function getVersion()
70
+ public
71
+ pure
72
+ virtual override (IVersionable, Versionable)
73
+ returns(Version)
74
+ {
75
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
76
+ }
77
+
78
+ function _getDomain() internal virtual pure returns (ObjectType);
79
+
80
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
81
+ return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
82
+ }
83
+ }
@@ -0,0 +1,58 @@
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
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
+
7
+ import {Amount} from "../type/Amount.sol";
8
+
9
+ /// @dev token specific transfer helper
10
+ /// a default token contract is provided via contract constructor
11
+ /// relies internally on oz SafeERC20.safeTransferFrom
12
+ contract TokenHandler {
13
+ IERC20Metadata private _token;
14
+
15
+ constructor(address token) {
16
+ _token = IERC20Metadata(token);
17
+ }
18
+
19
+ /// @dev transfer amount default tokens
20
+ function transfer(
21
+ address from,
22
+ address to,
23
+ Amount amount
24
+ )
25
+ external
26
+ {
27
+ SafeERC20.safeTransferFrom(
28
+ _token,
29
+ from,
30
+ to,
31
+ amount.toInt());
32
+ }
33
+
34
+ /// @dev transfer amount of the specified token
35
+ function safeTransferFrom(
36
+ address token,
37
+ address from,
38
+ address to,
39
+ Amount amount
40
+ )
41
+ external
42
+ {
43
+ SafeERC20.safeTransferFrom(
44
+ IERC20Metadata(token),
45
+ from,
46
+ to,
47
+ amount.toInt());
48
+ }
49
+
50
+ /// @dev returns the default token defined for this TokenHandler
51
+ function getToken()
52
+ external
53
+ view
54
+ returns (IERC20Metadata)
55
+ {
56
+ return _token;
57
+ }
58
+ }
@@ -0,0 +1,16 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
5
+ import {TransparentUpgradeableProxy, ITransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
6
+
7
+ import {IVersionable} from "./IVersionable.sol";
8
+
9
+ contract UpgradableProxyWithAdmin is TransparentUpgradeableProxy {
10
+
11
+ constructor(address implementation, address initialProxyAdminOwner, bytes memory data)
12
+ TransparentUpgradeableProxy(implementation, initialProxyAdminOwner, data)
13
+ {}
14
+
15
+ function getProxyAdmin() external returns (ProxyAdmin) { return ProxyAdmin(_proxyAdmin()); }
16
+ }
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
+
6
+ import {IVersionable} from "./IVersionable.sol";
7
+ import {Version, VersionLib} from "../type/Version.sol";
8
+
9
+
10
+ abstract contract Versionable is
11
+ Initializable,
12
+ IVersionable
13
+ {
14
+ constructor() {
15
+ _disableInitializers();
16
+ }
17
+
18
+ function initializeVersionable(
19
+ address activatedBy,
20
+ bytes memory data
21
+ )
22
+ public
23
+ initializer
24
+ {
25
+ _initialize(activatedBy, data);
26
+ }
27
+
28
+ function upgradeVersionable(
29
+ bytes memory data
30
+ )
31
+ external
32
+ reinitializer(VersionLib.toUint64(getVersion()))
33
+ {
34
+ _upgrade(data);
35
+ }
36
+
37
+ function getVersion() public pure virtual returns(Version);
38
+
39
+ // IMPORTANT each version must implement this function
40
+ // each implementation MUST use onlyInitialising modifier
41
+ // each implementation MUST call intializers of all base contracts...
42
+ function _initialize(address owner, bytes memory data)
43
+ internal
44
+ onlyInitializing
45
+ virtual
46
+ {
47
+ revert();
48
+ }
49
+
50
+ // IMPORTANT each version except version "1" must implement this function
51
+ // each implementation MUST use onlyInitialising modifier
52
+ function _upgrade(bytes memory data)
53
+ internal
54
+ onlyInitializing
55
+ virtual
56
+ {
57
+ revert();
58
+ }
59
+ }
@@ -0,0 +1,168 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IVersionable} from "../shared/IVersionable.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
9
+ import {ObjectType} from "../type/ObjectType.sol";
10
+ import {Seconds} from "../type/Seconds.sol";
11
+ import {StakingReader} from "./StakingReader.sol";
12
+ import {StakingStore} from "./StakingStore.sol";
13
+ import {Timestamp} from "../type/Timestamp.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+
16
+ interface IStaking is
17
+ IComponent,
18
+ IVersionable
19
+ {
20
+ // staking rate
21
+ event LogStakingStakingRateSet(uint256 chainId, address token, UFixed oldStakingRate, UFixed newStakingRate);
22
+
23
+ // target parameters
24
+ event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
25
+ event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
26
+
27
+ // modifiers
28
+ error ErrorStakingNotStake(NftId stakeNftId);
29
+ error ErrorStakingNotTarget(NftId targetNftId);
30
+
31
+ error ErrorStakingNotStakingOwner();
32
+ error ErrorStakingNotNftOwner(NftId nftId);
33
+
34
+ // staking rate
35
+ error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
36
+
37
+ // check dip balance and allowance
38
+ error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
39
+ error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
40
+
41
+ error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
42
+ error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
43
+ error ErrorStakingTargetNftIdZero();
44
+ error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
45
+ error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
46
+ error ErrorStakingLockingPeriodZero(NftId targetNftId);
47
+ error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
48
+ error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
49
+ error ErrorStakingTargetNotFound(NftId targetNftId);
50
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
51
+
52
+ error ErrorStakingTargetNotActive(NftId targetNftId);
53
+ error ErrorStakingStakeAmountZero(NftId targetNftId);
54
+
55
+ // info for individual stake
56
+ struct StakeInfo {
57
+ Timestamp lockedUntil;
58
+ }
59
+
60
+ struct TargetInfo {
61
+ ObjectType objectType;
62
+ uint256 chainId;
63
+ Seconds lockingPeriod;
64
+ UFixed rewardRate;
65
+ }
66
+
67
+ // staking rate management
68
+
69
+ /// @dev sets the rate that converts 1 token of total value locked into the
70
+ /// the required staked dip amount to back up the locked token value
71
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
72
+
73
+
74
+ // target management
75
+
76
+ function registerTarget(
77
+ NftId targetNftId,
78
+ ObjectType expectedObjectType,
79
+ uint256 chainId,
80
+ Seconds initialLockingPeriod,
81
+ UFixed initialRewardRate
82
+ ) external;
83
+
84
+
85
+ /// @dev set the stake locking period to the specified duration.
86
+ /// permissioned: only the staking service may call this function
87
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
88
+
89
+ /// @dev update the target specific reward rate.
90
+ /// permissioned: only the staking service may call this function
91
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
92
+
93
+ /// @dev (re)fills the staking reward reserves for the specified target
94
+ /// unpermissioned: anybody may fill up staking reward reserves
95
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
96
+
97
+ /// @dev defunds the staking reward reserves for the specified target
98
+ /// permissioned: only the staking service may call this function
99
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
100
+
101
+
102
+ /// @dev increases the total value locked amount for the specified target by the provided token amount.
103
+ /// function is called when a new policy is collateralized.
104
+ /// function restricted to the pool service.
105
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
106
+
107
+
108
+ /// @dev decreases the total value locked amount for the specified target by the provided token amount.
109
+ /// function is called when a new policy is closed or payouts are executed.
110
+ /// function restricted to the pool service.
111
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
112
+
113
+
114
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
115
+
116
+ // staking functions
117
+
118
+ /// @dev creat a new stake info object
119
+ /// permissioned: only staking service may call this function.
120
+ function createStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
121
+
122
+ /// @dev increase the staked dip by dipAmount for the specified stake.
123
+ /// staking rewards are updated and added to the staked dips as well.
124
+ /// the function returns the new total amount of staked dips.
125
+ function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
126
+
127
+ /// @dev restakes the dips to a new target.
128
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
129
+ /// permissioned: only staking service may call this function.
130
+ function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId);
131
+
132
+ /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
133
+ /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
134
+ /// permissioned: only staking service may call this function.
135
+ function unstake(NftId stakeNftId)
136
+ external
137
+ returns (
138
+ Amount unstakedAmount,
139
+ Amount rewardsClaimedAmount
140
+ );
141
+
142
+ /// @dev update stake rewards for current time.
143
+ /// may be called before an announement of a decrease of a reward rate reduction.
144
+ /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
145
+ /// unpermissioned.
146
+ function updateRewards(NftId stakeNftId) external;
147
+
148
+ /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
149
+ /// permissioned: only staking service may call this function.
150
+ function claimRewards(NftId stakeNftId)
151
+ external
152
+ returns (
153
+ Amount rewardsClaimedAmount
154
+ );
155
+
156
+ //--- helper functions --------------------------------------------------//
157
+
158
+ /// @dev transfers the specified amount of dips from the from address to the staking wallet.
159
+ function collectDipAmount(address from, Amount dipAmount) external;
160
+
161
+ /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
162
+ function transferDipAmount(address to, Amount dipAmount) external;
163
+
164
+ //--- view and pure functions -------------------------------------------//
165
+
166
+ function getStakingStore() external view returns (StakingStore stakingStore);
167
+ function getStakingReader() external view returns (StakingReader reader);
168
+ }
@@ -0,0 +1,153 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../type/Amount.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IStaking} from "./IStaking.sol";
9
+ import {NftId} from "../type/NftId.sol";
10
+ import {ObjectType} from "../type/ObjectType.sol";
11
+ import {Seconds} from "../type/Seconds.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+ import {TokenHandler} from "../shared/TokenHandler.sol";
14
+ import {UFixed} from "../type/UFixed.sol";
15
+
16
+
17
+ interface IStakingService is IService
18
+ {
19
+
20
+ event LogStakingServiceProtocolTargetRegistered(NftId protocolNftId);
21
+ event LogStakingServiceInstanceTargetRegistered(NftId instanceNftId, uint256 chainId);
22
+ event LogStakingServiceLockingPeriodSet(NftId targetNftId, Seconds oldLockingDuration, Seconds lockingDuration);
23
+ event LogStakingServiceRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
24
+
25
+ event LogStakingServiceRewardReservesIncreased(NftId targetNftId, address rewardProvider, Amount dipAmount, Amount newBalance);
26
+ event LogStakingServiceRewardReservesDecreased(NftId targetNftId, address targetOwner, Amount dipAmount, Amount newBalance);
27
+
28
+ event LogStakingServiceStakeCreated(NftId stakeNftId, NftId targetNftId, address owner, Amount stakedAmount);
29
+ event LogStakingServiceStakeIncreased(NftId stakeNftId, address owner, Amount stakedAmount, Amount stakeBalance);
30
+ event LogStakingServiceUnstaked(NftId stakeNftId, address stakeOwner, Amount totalAmount);
31
+
32
+ event LogStakingServiceRewardsUpdated(NftId stakeNftId);
33
+ event LogStakingServiceRewardsClaimed(NftId stakeNftId, address stakeOwner, Amount rewardsClaimedAmount);
34
+
35
+ // modifiers
36
+ error ErrorStakingServiceNotNftOwner(NftId nftId, address expectedOwner, address owner);
37
+ error ErrorStakingServiceNotStaking(address stakingAddress);
38
+ error ErrorStakingServiceNotSupportingIStaking(address stakingAddress);
39
+
40
+ // create
41
+ error ErrorStakingServiceZeroTargetNftId();
42
+ error ErrorStakingServiceNotTargetNftId(NftId targetNftId);
43
+ error ErrorStakingServiceNotActiveTargetNftId(NftId targetNftId);
44
+ error ErrorStakingServiceDipBalanceInsufficient(NftId targetNftId, uint256 amount, uint256 balance);
45
+ error ErrorStakingServiceDipAllowanceInsufficient(NftId targetNftId, address tokenHandler, uint256 amount, uint256 allowance);
46
+
47
+ /// @dev creates/registers an on-chain instance staking target.
48
+ /// function granted to instance service
49
+ function createInstanceTarget(
50
+ NftId targetNftId,
51
+ Seconds initialLockingPeriod,
52
+ UFixed initialRewardRate
53
+ ) external;
54
+
55
+ /// @dev Set the instance stake locking period to the specified duration.
56
+ /// permissioned: only the owner of the specified target may set the locking period
57
+ function setInstanceLockingPeriod(NftId instanceNftId, Seconds lockingPeriod) external;
58
+
59
+ /// @dev Set the instance reward rate to the specified value
60
+ /// permissioned: only the owner of the specified target may set the locking period
61
+ function setInstanceRewardRate(NftId instanceNftId, UFixed rewardRate) external;
62
+
63
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the reward provider.
64
+ /// unpermissioned: anybody may fill up staking reward reserves
65
+ function refillInstanceRewardReserves(NftId instanceNftId, address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
66
+
67
+ /// @dev (Re)fills the staking reward reserves for the specified target using the dips provided by the sender
68
+ /// unpermissioned: anybody may fill up staking reward reserves
69
+ function refillRewardReservesBySender(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
70
+
71
+ /// @dev defunds the staking reward reserves for the specified target
72
+ /// permissioned: only the target owner may call this function
73
+ function withdrawInstanceRewardReserves(NftId instanceNftId, Amount dipAmount) external returns (Amount newBalance);
74
+
75
+ /// @dev create a new stake with amount DIP to the specified target
76
+ /// returns the id of the newly minted stake nft
77
+ /// permissionless function
78
+ function create(
79
+ NftId targetNftId,
80
+ Amount amount
81
+ )
82
+ external
83
+ returns (
84
+ NftId stakeNftId
85
+ );
86
+
87
+
88
+ /// @dev increase an existing stake by amount DIP
89
+ /// updates and restakes the staking reward amount
90
+ /// function restricted to the current stake owner
91
+ function stake(
92
+ NftId stakeNftId,
93
+ Amount amount
94
+ )
95
+ external;
96
+
97
+
98
+ /// @dev re-stakes the current staked DIP as well as all accumulated rewards to the new stake target.
99
+ /// all related stakes and all accumulated reward DIP are transferred to the current stake holder
100
+ /// function restricted to the current stake owner
101
+ function restakeToNewTarget(
102
+ NftId stakeNftId,
103
+ NftId newTargetNftId
104
+ )
105
+ external
106
+ returns (
107
+ NftId newStakeNftId
108
+ );
109
+
110
+
111
+ /// @dev updates the reward balance of the stake using the current reward rate.
112
+ function updateRewards(
113
+ NftId stakeNftId
114
+ )
115
+ external;
116
+
117
+
118
+ /// @dev claims all available rewards.
119
+ function claimRewards(
120
+ NftId stakeNftId
121
+ )
122
+ external;
123
+
124
+
125
+ /// @dev unstakes all dips (stakes and rewards) of an existing stake.
126
+ /// function restricted to the current stake owner
127
+ function unstake(
128
+ NftId stakeNftId
129
+ )
130
+ external;
131
+
132
+
133
+ /// @dev sets total value locked data for a target contract on a different chain.
134
+ /// this is done via CCIP (cross chain communication)
135
+ function setTotalValueLocked(
136
+ NftId targetNftId,
137
+ address token,
138
+ Amount amount
139
+ )
140
+ external;
141
+
142
+ function getDipToken()
143
+ external
144
+ returns (IERC20Metadata dip);
145
+
146
+ function getTokenHandler()
147
+ external
148
+ returns (TokenHandler tokenHandler);
149
+
150
+ function getStaking()
151
+ external
152
+ returns (IStaking staking);
153
+ }