@etherisc/gif-next 0.0.2-9b434da-265 → 0.0.2-9b58b75-869

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 (606) hide show
  1. package/README.md +209 -16
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1234 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1571 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +858 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +956 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +652 -0
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +416 -3032
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1735 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1073 -30
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3591 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1496 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +978 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1288 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/base/IService.sol/IService.json → product/IProductService.sol/IProductService.json} +145 -166
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1276 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +60 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +404 -58
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +389 -194
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -150
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +698 -259
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +368 -123
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1640 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  182. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  184. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  186. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +977 -0
  188. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +737 -0
  190. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  192. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  194. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  201. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +134 -29
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1015 -0
  206. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  207. package/artifacts/contracts/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +78 -87
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  211. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  218. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  219. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +203 -164
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  222. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  224. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  226. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  228. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  230. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  232. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  234. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  236. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  238. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  240. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  242. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  244. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  248. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  250. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  252. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  254. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  256. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  274. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  276. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  280. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  281. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  282. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  284. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  286. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/UFixed.sol/MathLib.json +10 -0
  288. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -0
  290. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  292. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  294. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  295. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  296. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  297. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  298. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  300. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  302. package/contracts/authorization/AccessAdmin.sol +591 -0
  303. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  304. package/contracts/authorization/Authorization.sol +218 -0
  305. package/contracts/authorization/IAccess.sol +48 -0
  306. package/contracts/authorization/IAccessAdmin.sol +136 -0
  307. package/contracts/authorization/IAuthorization.sol +54 -0
  308. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  309. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  310. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  311. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  312. package/contracts/distribution/BasicDistribution.sol +138 -0
  313. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  314. package/contracts/distribution/Distribution.sol +295 -0
  315. package/contracts/distribution/DistributionService.sol +352 -0
  316. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  317. package/contracts/distribution/IDistributionComponent.sol +52 -0
  318. package/contracts/distribution/IDistributionService.sol +98 -0
  319. package/contracts/instance/BundleSet.sol +126 -0
  320. package/contracts/instance/IInstance.sol +86 -0
  321. package/contracts/instance/IInstanceService.sol +92 -0
  322. package/contracts/instance/Instance.sol +185 -321
  323. package/contracts/instance/InstanceAdmin.sol +266 -0
  324. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  325. package/contracts/instance/InstanceReader.sol +405 -0
  326. package/contracts/instance/InstanceService.sol +422 -24
  327. package/contracts/instance/InstanceServiceManager.sol +40 -0
  328. package/contracts/instance/InstanceStore.sol +276 -0
  329. package/contracts/instance/base/BalanceStore.sol +123 -0
  330. package/contracts/instance/base/Cloneable.sol +28 -0
  331. package/contracts/instance/base/ObjectCounter.sol +21 -0
  332. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  333. package/contracts/instance/base/ObjectSet.sol +79 -0
  334. package/contracts/instance/module/IAccess.sol +30 -22
  335. package/contracts/instance/module/IBundle.sol +8 -7
  336. package/contracts/instance/module/IComponents.sol +51 -0
  337. package/contracts/instance/module/IDistribution.sol +7 -4
  338. package/contracts/instance/module/IPolicy.sol +56 -17
  339. package/contracts/instance/module/IRisk.sol +1 -1
  340. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  341. package/contracts/oracle/BasicOracle.sol +48 -0
  342. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  343. package/contracts/oracle/IOracle.sol +36 -0
  344. package/contracts/oracle/IOracleComponent.sol +33 -0
  345. package/contracts/oracle/IOracleService.sol +65 -0
  346. package/contracts/oracle/Oracle.sol +166 -0
  347. package/contracts/oracle/OracleService.sol +278 -0
  348. package/contracts/oracle/OracleServiceManager.sol +39 -0
  349. package/contracts/pool/BasicPool.sol +164 -0
  350. package/contracts/pool/BasicPoolAuthorization.sol +52 -0
  351. package/contracts/pool/BundleService.sol +284 -0
  352. package/contracts/pool/BundleServiceManager.sol +39 -0
  353. package/contracts/pool/IBundleService.sol +106 -0
  354. package/contracts/pool/IPoolComponent.sol +51 -0
  355. package/contracts/pool/IPoolService.sol +150 -0
  356. package/contracts/pool/Pool.sol +311 -0
  357. package/contracts/pool/PoolService.sol +436 -0
  358. package/contracts/pool/PoolServiceManager.sol +39 -0
  359. package/contracts/product/ApplicationService.sol +230 -0
  360. package/contracts/product/ApplicationServiceManager.sol +38 -0
  361. package/contracts/product/BasicProduct.sol +82 -0
  362. package/contracts/product/BasicProductAuthorization.sol +43 -0
  363. package/contracts/product/ClaimService.sol +416 -0
  364. package/contracts/product/ClaimServiceManager.sol +38 -0
  365. package/contracts/product/IApplicationService.sol +62 -0
  366. package/contracts/product/IClaimService.sol +99 -0
  367. package/contracts/product/IPolicyService.sol +78 -0
  368. package/contracts/product/IPricingService.sol +39 -0
  369. package/contracts/product/IProductComponent.sol +40 -0
  370. package/contracts/product/IProductService.sol +33 -0
  371. package/contracts/product/PolicyService.sol +475 -0
  372. package/contracts/product/PolicyServiceManager.sol +39 -0
  373. package/contracts/product/PricingService.sol +300 -0
  374. package/contracts/product/PricingServiceManager.sol +39 -0
  375. package/contracts/product/Product.sol +392 -0
  376. package/contracts/product/ProductService.sol +99 -0
  377. package/contracts/product/ProductServiceManager.sol +39 -0
  378. package/contracts/registry/ChainNft.sol +55 -25
  379. package/contracts/registry/IRegistry.sol +91 -30
  380. package/contracts/registry/IRegistryService.sol +56 -16
  381. package/contracts/registry/ITransferInterceptor.sol +1 -0
  382. package/contracts/registry/Registry.sol +411 -326
  383. package/contracts/registry/RegistryAdmin.sol +365 -0
  384. package/contracts/registry/RegistryService.sol +155 -272
  385. package/contracts/registry/RegistryServiceManager.sol +29 -19
  386. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  387. package/contracts/registry/ReleaseRegistry.sol +485 -0
  388. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  389. package/contracts/registry/TokenRegistry.sol +315 -0
  390. package/contracts/shared/Component.sol +280 -0
  391. package/contracts/shared/ComponentService.sol +622 -0
  392. package/contracts/shared/ComponentServiceManager.sol +35 -0
  393. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  394. package/contracts/shared/ERC165.sol +16 -10
  395. package/contracts/shared/IComponent.sol +70 -0
  396. package/contracts/shared/IComponentService.sol +112 -0
  397. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  398. package/contracts/{instance/base → shared}/IKeyValueStore.sol +20 -14
  399. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  400. package/contracts/shared/INftOwnable.sol +13 -12
  401. package/contracts/shared/IRegisterable.sol +4 -6
  402. package/contracts/shared/IRegistryLinked.sol +11 -0
  403. package/contracts/shared/IService.sol +25 -0
  404. package/contracts/shared/InitializableCustom.sol +177 -0
  405. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  406. package/contracts/shared/KeyValueStore.sol +131 -0
  407. package/contracts/shared/Lifecycle.sol +77 -0
  408. package/contracts/shared/NftIdSet.sol +65 -0
  409. package/contracts/shared/NftOwnable.sol +60 -89
  410. package/contracts/shared/Registerable.sol +27 -41
  411. package/contracts/shared/RegistryLinked.sol +43 -0
  412. package/contracts/shared/Service.sol +82 -0
  413. package/contracts/shared/TokenHandler.sol +39 -8
  414. package/contracts/staking/IStaking.sol +167 -0
  415. package/contracts/staking/IStakingService.sol +160 -0
  416. package/contracts/staking/StakeManagerLib.sol +231 -0
  417. package/contracts/staking/Staking.sol +514 -0
  418. package/contracts/staking/StakingLifecycle.sol +23 -0
  419. package/contracts/staking/StakingManager.sol +50 -0
  420. package/contracts/staking/StakingReader.sol +183 -0
  421. package/contracts/staking/StakingService.sol +411 -0
  422. package/contracts/staking/StakingServiceManager.sol +44 -0
  423. package/contracts/staking/StakingStore.sol +605 -0
  424. package/contracts/staking/TargetManagerLib.sol +207 -0
  425. package/contracts/{types → type}/AddressSet.sol +1 -1
  426. package/contracts/type/Amount.sol +128 -0
  427. package/contracts/{types → type}/Blocknumber.sol +21 -3
  428. package/contracts/type/ClaimId.sol +75 -0
  429. package/contracts/{types → type}/DistributorType.sol +2 -2
  430. package/contracts/type/Fee.sol +66 -0
  431. package/contracts/{types → type}/NftId.sol +21 -15
  432. package/contracts/type/NftIdSet.sol +62 -0
  433. package/contracts/type/ObjectType.sol +271 -0
  434. package/contracts/type/PayoutId.sol +82 -0
  435. package/contracts/{types → type}/Referral.sol +5 -1
  436. package/contracts/type/RequestId.sol +75 -0
  437. package/contracts/{types → type}/RiskId.sol +1 -1
  438. package/contracts/type/RoleId.sol +174 -0
  439. package/contracts/type/Seconds.sol +81 -0
  440. package/contracts/type/Selector.sol +102 -0
  441. package/contracts/{types → type}/StateId.sol +38 -4
  442. package/contracts/type/String.sol +53 -0
  443. package/contracts/{types → type}/Timestamp.sol +23 -14
  444. package/contracts/type/UFixed.sol +332 -0
  445. package/contracts/{types → type}/Version.sol +8 -2
  446. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  447. package/contracts/upgradeability/ProxyManager.sol +198 -0
  448. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +2 -4
  449. package/contracts/upgradeability/Versionable.sol +59 -0
  450. package/package.json +11 -7
  451. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  452. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  454. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  456. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  458. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  460. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  462. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  464. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  466. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  469. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  471. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  473. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  476. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  478. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  480. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  482. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  484. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  485. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  486. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  487. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  488. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  489. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  490. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  491. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  494. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -736
  495. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  497. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  498. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  499. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  500. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  501. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  502. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  503. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  504. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  505. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  506. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  507. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  508. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  509. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  510. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  511. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  512. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  513. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  514. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  515. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  516. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  517. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -10
  518. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  519. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  520. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  521. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  522. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  523. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  524. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  525. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  526. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  527. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  528. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  529. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  530. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  531. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  532. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  533. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  534. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  535. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  536. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  537. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  538. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  539. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  540. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  541. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  542. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  543. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  544. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  545. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  546. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  547. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  548. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  550. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  552. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  553. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  554. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  555. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  557. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  559. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  561. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  563. package/contracts/components/IBaseComponent.sol +0 -19
  564. package/contracts/experiment/errors/Require.sol +0 -38
  565. package/contracts/experiment/errors/Revert.sol +0 -44
  566. package/contracts/experiment/inheritance/A.sol +0 -53
  567. package/contracts/experiment/inheritance/B.sol +0 -28
  568. package/contracts/experiment/inheritance/C.sol +0 -34
  569. package/contracts/experiment/inheritance/IA.sol +0 -13
  570. package/contracts/experiment/inheritance/IB.sol +0 -10
  571. package/contracts/experiment/inheritance/IC.sol +0 -12
  572. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  573. package/contracts/experiment/statemachine/ISM.sol +0 -25
  574. package/contracts/experiment/statemachine/SM.sol +0 -57
  575. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  576. package/contracts/experiment/types/TypeA.sol +0 -47
  577. package/contracts/experiment/types/TypeB.sol +0 -29
  578. package/contracts/instance/AccessManagedSimple.sol +0 -114
  579. package/contracts/instance/AccessManagerSimple.sol +0 -682
  580. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  581. package/contracts/instance/InstanceAccessManager.sol +0 -288
  582. package/contracts/instance/base/IService.sol +0 -15
  583. package/contracts/instance/base/KeyValueStore.sol +0 -188
  584. package/contracts/instance/base/Lifecycle.sol +0 -100
  585. package/contracts/instance/base/ServiceBase.sol +0 -44
  586. package/contracts/instance/module/ISetup.sol +0 -41
  587. package/contracts/instance/module/ITreasury.sol +0 -23
  588. package/contracts/registry/IChainNft.sol +0 -22
  589. package/contracts/shared/ContractDeployerLib.sol +0 -72
  590. package/contracts/shared/ProxyManager.sol +0 -94
  591. package/contracts/shared/Versionable.sol +0 -147
  592. package/contracts/test/TestFee.sol +0 -25
  593. package/contracts/test/TestRegisterable.sol +0 -18
  594. package/contracts/test/TestRoleId.sol +0 -14
  595. package/contracts/test/TestService.sol +0 -26
  596. package/contracts/test/TestVersion.sol +0 -44
  597. package/contracts/test/TestVersionable.sol +0 -17
  598. package/contracts/test/Usdc.sol +0 -26
  599. package/contracts/types/ChainId.sol +0 -38
  600. package/contracts/types/Fee.sol +0 -56
  601. package/contracts/types/NftIdSet.sol +0 -60
  602. package/contracts/types/NumberId.sol +0 -52
  603. package/contracts/types/ObjectType.sol +0 -152
  604. package/contracts/types/RoleId.sol +0 -75
  605. package/contracts/types/UFixed.sol +0 -209
  606. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -1,136 +1,107 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {ERC165} from "./ERC165.sol";
4
5
  import {INftOwnable} from "./INftOwnable.sol";
5
- import {IRegistry} from "../registry/IRegistry.sol";
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
7
-
8
- contract NftOwnable is INftOwnable {
9
-
10
- IRegistry internal _registry;
11
- NftId private _nftId;
12
- address private _initialOwner;
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {RegistryLinked} from "./RegistryLinked.sol";
8
+
9
+ contract NftOwnable is
10
+ ERC165,
11
+ RegistryLinked,
12
+ INftOwnable
13
+ {
14
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.NftOwnable")) - 1)) & ~bytes32(uint256(0xff));
15
+ bytes32 public constant NFT_OWNABLE_STORAGE_LOCATION_V1 = 0x07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00;
16
+
17
+ struct NftOwnableStorage {
18
+ NftId _nftId;
19
+ address _initialOwner;
20
+ }
13
21
 
14
22
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
15
23
  modifier onlyOwner() {
16
- address owner = getOwner();
17
-
18
- // owner == address(0) is eg uninitialized upgradable contract
19
- if (owner != address(0) && msg.sender != owner) {
20
- revert ErrorNotOwner(msg.sender);
24
+ if (msg.sender != getOwner()) {
25
+ revert ErrorNftOwnableNotOwner(msg.sender);
21
26
  }
22
27
  _;
23
28
  }
24
29
 
25
- constructor() {
26
- _initialOwner = msg.sender;
27
- }
28
-
29
- /// @dev links this contract to nft after registration
30
- // needs to be done once per registered contract and
31
- // reduces registry calls to check ownership
32
- // does not need any protection as function can only do the "right thing"
33
- function linkToRegisteredNftId() public {
34
- if (_nftId.gtz()) {
35
- revert ErrorAlreadyLinked(address(_registry), _nftId);
36
- }
37
-
38
- if (address(_registry) == address(0)) {
39
- revert ErrorRegistryNotInitialized();
40
- }
41
30
 
42
- address contractAddress = address(this);
31
+ /// @dev initialization for upgradable contracts
32
+ // used in _initializeRegisterable
33
+ function initializeNftOwnable(
34
+ address initialOwner,
35
+ address registryAddress
36
+ )
37
+ public
38
+ virtual
39
+ onlyInitializing()
40
+ {
41
+ initializeRegistryLinked(registryAddress);
42
+ initializeERC165();
43
43
 
44
- if (!_registry.isRegistered(contractAddress)) {
45
- revert ErrorContractNotRegistered(contractAddress);
44
+ if(initialOwner == address(0)) {
45
+ revert ErrorNftOwnableInitialOwnerZero();
46
46
  }
47
47
 
48
- _nftId = _registry.getNftId(contractAddress);
48
+ _getNftOwnableStorage()._initialOwner = initialOwner;
49
49
  }
50
50
 
51
51
 
52
- function getRegistry() public view virtual override returns (IRegistry) {
53
- return _registry;
52
+ /// @dev links this contract to nft after registration
53
+ // needs to be done once per registered contract and
54
+ // reduces registry calls to check ownership
55
+ // does not need any protection as function can only do the "right thing"
56
+ function linkToRegisteredNftId()
57
+ public
58
+ virtual
59
+ returns (NftId nftId)
60
+ {
61
+ return _linkToNftOwnable(address(this));
54
62
  }
55
63
 
56
-
57
64
  function getNftId() public view virtual override returns (NftId) {
58
- return _nftId;
65
+ return _getNftOwnableStorage()._nftId;
59
66
  }
60
67
 
61
-
62
68
  function getOwner() public view virtual override returns (address) {
63
- if (_nftId.gtz()) {
64
- return _registry.ownerOf(_nftId);
69
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
70
+
71
+ if ($._nftId.gtz()) {
72
+ return getRegistry().ownerOf($._nftId);
65
73
  }
66
74
 
67
- return _initialOwner;
75
+ return $._initialOwner;
68
76
  }
69
77
 
70
-
71
- /// @dev initialization for upgradable contracts
72
- // used in _initializeRegisterable
73
- function _initializeNftOwnable(
74
- address initialOwner,
75
- address registryAddress
76
- )
77
- internal
78
- virtual
79
- {
80
- _initialOwner = initialOwner;
81
- _setRegistry(registryAddress);
82
- }
83
-
84
-
85
78
  /// @dev used in constructor of registry service manager
86
79
  // links ownership of registry service manager ot nft owner of registry service
87
80
  function _linkToNftOwnable(
88
- address registryAddress,
89
81
  address nftOwnableAddress
90
82
  )
91
83
  internal
92
- onlyOwner()
93
84
  returns (NftId)
94
85
  {
95
- if (_nftId.gtz()) {
96
- revert ErrorAlreadyLinked(address(_registry), _nftId);
97
- }
86
+ NftOwnableStorage storage $ = _getNftOwnableStorage();
98
87
 
99
- _setRegistry(registryAddress);
100
-
101
- if (!_registry.isRegistered(nftOwnableAddress)) {
102
- revert ErrorContractNotRegistered(nftOwnableAddress);
88
+ if ($._nftId.gtz()) {
89
+ revert ErrorNftOwnableAlreadyLinked($._nftId);
103
90
  }
104
91
 
105
- _nftId = _registry.getNftId(nftOwnableAddress);
106
-
107
- return _nftId;
108
- }
109
-
110
-
111
- function _setRegistry(address registryAddress)
112
- private
113
- {
114
- if (address(_registry) != address(0)) {
115
- revert ErrorRegistryAlreadyInitialized(address(_registry));
92
+ if (!getRegistry().isRegistered(nftOwnableAddress)) {
93
+ revert ErrorNftOwnableContractNotRegistered(nftOwnableAddress);
116
94
  }
117
95
 
118
- if (registryAddress == address(0)) {
119
- revert ErrorRegistryAddressZero();
120
- }
96
+ $._nftId = getRegistry().getNftId(nftOwnableAddress);
121
97
 
122
- if (registryAddress.code.length == 0) {
123
- revert ErrorNotRegistry(registryAddress);
124
- }
98
+ return $._nftId;
99
+ }
125
100
 
126
- _registry = IRegistry(registryAddress);
127
101
 
128
- try _registry.supportsInterface(type(IRegistry).interfaceId) returns (bool isRegistry) {
129
- if (!isRegistry) {
130
- revert ErrorNotRegistry(registryAddress);
131
- }
132
- } catch {
133
- revert ErrorNotRegistry(registryAddress);
102
+ function _getNftOwnableStorage() private pure returns (NftOwnableStorage storage $) {
103
+ assembly {
104
+ $.slot := NFT_OWNABLE_STORAGE_LOCATION_V1
134
105
  }
135
106
  }
136
107
  }
@@ -1,29 +1,22 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Initializable} from "@openzeppelin5/contracts/proxy/utils/Initializable.sol";
4
+ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {NftId, zeroNftId} from "../types/NftId.sol";
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
7
  import {NftOwnable} from "../shared/NftOwnable.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
9
 
10
10
  import {IRegistry} from "../registry/IRegistry.sol";
11
11
  import {IRegisterable} from "./IRegisterable.sol";
12
- import {Versionable} from "./Versionable.sol";
13
-
14
- import {ERC165} from "./ERC165.sol";
15
12
 
16
13
  contract Registerable is
17
- ERC165,
18
- Initializable,
19
14
  NftOwnable,
20
15
  IRegisterable
21
16
  {
22
17
  // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.Registerable.sol")) - 1)) & ~bytes32(uint256(0xff));
23
18
  bytes32 public constant REGISTERABLE_LOCATION_V1 = 0x6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300;
24
19
 
25
- error ErrorRegisterableNotRegistry(address registryAddress);
26
-
27
20
  struct RegisterableStorage {
28
21
  NftId _parentNftId;
29
22
  ObjectType _objectType;
@@ -31,38 +24,31 @@ contract Registerable is
31
24
  bytes _data;
32
25
  }
33
26
 
34
- function _getRegisterableStorage() private pure returns (RegisterableStorage storage $) {
35
- assembly {
36
- $.slot := REGISTERABLE_LOCATION_V1
37
- }
38
- }
39
-
40
- function _initializeRegisterable(
27
+ function initializeRegisterable(
41
28
  address registryAddress,
42
29
  NftId parentNftId,
43
30
  ObjectType objectType,
44
31
  bool isInterceptor,
45
32
  address initialOwner,
46
- bytes memory data
33
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
47
34
  )
48
- internal
49
- //onlyInitializing//TODO uncomment when "fully" upgradeable
35
+ public
50
36
  virtual
37
+ onlyInitializing
51
38
  {
52
- _initializeNftOwnable(
39
+ initializeNftOwnable(
53
40
  initialOwner,
54
41
  registryAddress);
55
42
 
56
- // TODO check parentNftId -> registry.isRegistered(parentNftId)
57
- // TODO check object-parent type pair -> registry.isValidTypeCombo() or something...verify with registry that setup will be able to register...
43
+ RegisterableStorage storage $;
44
+ assembly {
45
+ $.slot := REGISTERABLE_LOCATION_V1
46
+ }
58
47
 
59
- RegisterableStorage storage $ = _getRegisterableStorage();
60
48
  $._parentNftId = parentNftId;
61
49
  $._objectType = objectType;
62
50
  $._isInterceptor = isInterceptor;
63
- $._data = data;
64
-
65
- _registerInterface(type(IRegisterable).interfaceId);
51
+ $._data = registryData;
66
52
  }
67
53
 
68
54
 
@@ -70,20 +56,20 @@ contract Registerable is
70
56
  public
71
57
  view
72
58
  virtual
73
- returns (IRegistry.ObjectInfo memory, bytes memory data)
59
+ returns (IRegistry.ObjectInfo memory info)
74
60
  {
75
- RegisterableStorage storage $ = _getRegisterableStorage();
76
- return (
77
- IRegistry.ObjectInfo(
78
- zeroNftId(),
79
- $._parentNftId,
80
- $._objectType,
81
- $._isInterceptor,
82
- address(this),
83
- getOwner(),
84
- $._data
85
- ),
86
- bytes("")
87
- );
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);
88
74
  }
89
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,82 @@
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 "../upgradeability/IVersionable.sol";
10
+ import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
11
+ import {Registerable} from "./Registerable.sol";
12
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
13
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
14
+ import {Versionable} from "../upgradeability/Versionable.sol";
15
+
16
+
17
+ /// @dev service base contract
18
+ abstract contract Service is
19
+ Registerable,
20
+ Versionable,
21
+ AccessManagedUpgradeable,
22
+ IService
23
+ {
24
+
25
+ uint8 private constant GIF_MAJOR_VERSION = 3;
26
+
27
+
28
+ function initializeService(
29
+ address registry,
30
+ address authority, // real authority for registry service adress(0) for other services
31
+ address initialOwner
32
+ )
33
+ public
34
+ virtual
35
+ onlyInitializing()
36
+ {
37
+ initializeRegisterable(
38
+ registry,
39
+ IRegistry(registry).getNftId(),
40
+ SERVICE(),
41
+ false, // is interceptor
42
+ initialOwner,
43
+ ""); // data
44
+
45
+ // externally provided authority
46
+ if(authority != address(0)) {
47
+ __AccessManaged_init(authority);
48
+ } else {
49
+ address registryServiceAddress = _getServiceAddress(REGISTRY());
50
+
51
+ // copy authority from already registered registry services
52
+ __AccessManaged_init(IAccessManaged(registryServiceAddress).authority());
53
+ }
54
+
55
+ registerInterface(type(IAccessManaged).interfaceId);
56
+ registerInterface(type(IService).interfaceId);
57
+ }
58
+
59
+ function getDomain() external virtual pure returns(ObjectType serviceDomain) {
60
+ return _getDomain();
61
+ }
62
+
63
+ function getRoleId() external virtual pure returns(RoleId serviceRoleId) {
64
+ return RoleIdLib.roleForTypeAndVersion(_getDomain(), VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
65
+ }
66
+
67
+ // from Versionable
68
+ function getVersion()
69
+ public
70
+ pure
71
+ virtual override (IVersionable, Versionable)
72
+ returns(Version)
73
+ {
74
+ return VersionLib.toVersion(GIF_MAJOR_VERSION,0,0);
75
+ }
76
+
77
+ function _getDomain() internal virtual pure returns (ObjectType);
78
+
79
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
80
+ return getRegistry().getServiceAddress(domain, VersionPartLib.toVersionPart(GIF_MAJOR_VERSION));
81
+ }
82
+ }
@@ -1,9 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC20Metadata} from "@openzeppelin5/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
- import {SafeERC20} from "@openzeppelin5/contracts/token/ERC20/utils/SafeERC20.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
8
+
9
+ /// @dev token specific transfer helper
10
+ /// a default token contract is provided via contract constructor
11
+ /// relies internally on oz SafeERC20.safeTransferFrom
7
12
  contract TokenHandler {
8
13
  IERC20Metadata private _token;
9
14
 
@@ -11,17 +16,43 @@ contract TokenHandler {
11
16
  _token = IERC20Metadata(token);
12
17
  }
13
18
 
14
- // TODO add logging
19
+ /// @dev transfer amount default tokens
15
20
  function transfer(
16
21
  address from,
17
22
  address to,
18
- uint256 amount // TODO add authz (only treasury/instance/product/pool/ service)
19
- ) external {
20
- SafeERC20.safeTransferFrom(_token, from, to, amount);
21
- // _token.transferFrom(from, to, amount);
23
+ Amount amount
24
+ )
25
+ external
26
+ {
27
+ SafeERC20.safeTransferFrom(
28
+ _token,
29
+ from,
30
+ to,
31
+ amount.toInt());
32
+ }
33
+
34
+ /// @dev transfer amount of the specified token
35
+ function safeTransferFrom(
36
+ address token,
37
+ address from,
38
+ address to,
39
+ Amount amount
40
+ )
41
+ external
42
+ {
43
+ SafeERC20.safeTransferFrom(
44
+ IERC20Metadata(token),
45
+ from,
46
+ to,
47
+ amount.toInt());
22
48
  }
23
49
 
24
- function getToken() external view returns (IERC20Metadata) {
50
+ /// @dev returns the default token defined for this TokenHandler
51
+ function getToken()
52
+ external
53
+ view
54
+ returns (IERC20Metadata)
55
+ {
25
56
  return _token;
26
57
  }
27
58
  }
@@ -0,0 +1,167 @@
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 "../upgradeability/IVersionable.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {Seconds} from "../type/Seconds.sol";
10
+ import {StakingReader} from "./StakingReader.sol";
11
+ import {StakingStore} from "./StakingStore.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
13
+ import {UFixed} from "../type/UFixed.sol";
14
+
15
+ interface IStaking is
16
+ IComponent,
17
+ IVersionable
18
+ {
19
+ // staking rate
20
+ event LogStakingStakingRateSet(uint256 chainId, address token, UFixed oldStakingRate, UFixed newStakingRate);
21
+
22
+ // target parameters
23
+ event LogStakingLockingPeriodSet(NftId targetNftId, Seconds oldLockingPeriod, Seconds lockingPeriod);
24
+ event LogStakingRewardRateSet(NftId targetNftId, UFixed oldRewardRate, UFixed rewardRate);
25
+
26
+ // modifiers
27
+ error ErrorStakingNotStake(NftId stakeNftId);
28
+ error ErrorStakingNotTarget(NftId targetNftId);
29
+
30
+ error ErrorStakingNotStakingOwner();
31
+ error ErrorStakingNotNftOwner(NftId nftId);
32
+
33
+ // staking rate
34
+ error ErrorStakingTokenNotRegistered(uint256 chainId, address token);
35
+
36
+ // check dip balance and allowance
37
+ error ErrorStakingDipBalanceInsufficient(address owner, uint256 amount, uint256 dipBalance);
38
+ error ErrorStakingDipAllowanceInsufficient(address owner, address tokenHandler, uint256 amount, uint256 dipAllowance);
39
+
40
+ error ErrorStakingStakingReaderStakingMismatch(address stakingByStakingReader);
41
+ error ErrorStakingTargetAlreadyRegistered(NftId targetNftId);
42
+ error ErrorStakingTargetNftIdZero();
43
+ error ErrorStakingTargetTypeNotSupported(NftId targetNftId, ObjectType objectType);
44
+ error ErrorStakingTargetUnexpectedObjectType(NftId targetNftId, ObjectType expectedObjectType, ObjectType actualObjectType);
45
+ error ErrorStakingLockingPeriodZero(NftId targetNftId);
46
+ error ErrorStakingLockingPeriodTooLong(NftId targetNftId, Seconds maxLockingPeriod, Seconds lockingPeriod);
47
+ error ErrorStakingRewardRateTooHigh(NftId targetNftId, UFixed maxRewardRate, UFixed rewardRate);
48
+ error ErrorStakingTargetNotFound(NftId targetNftId);
49
+ error ErrorStakingTargetTokenNotFound(NftId targetNftId, uint256 chainId, address token);
50
+
51
+ error ErrorStakingTargetNotActive(NftId targetNftId);
52
+ error ErrorStakingStakeAmountZero(NftId targetNftId);
53
+
54
+ // info for individual stake
55
+ struct StakeInfo {
56
+ Timestamp lockedUntil;
57
+ }
58
+
59
+ struct TargetInfo {
60
+ ObjectType objectType;
61
+ uint256 chainId;
62
+ Seconds lockingPeriod;
63
+ UFixed rewardRate;
64
+ }
65
+
66
+ // staking rate management
67
+
68
+ /// @dev sets the rate that converts 1 token of total value locked into the
69
+ /// the required staked dip amount to back up the locked token value
70
+ function setStakingRate(uint256 chainId, address token, UFixed stakingRate) external;
71
+
72
+
73
+ // target management
74
+
75
+ function registerTarget(
76
+ NftId targetNftId,
77
+ ObjectType expectedObjectType,
78
+ uint256 chainId,
79
+ Seconds initialLockingPeriod,
80
+ UFixed initialRewardRate
81
+ ) external;
82
+
83
+
84
+ /// @dev set the stake locking period to the specified duration.
85
+ /// permissioned: only the staking service may call this function
86
+ function setLockingPeriod(NftId targetNftId, Seconds lockingPeriod) external;
87
+
88
+ /// @dev update the target specific reward rate.
89
+ /// permissioned: only the staking service may call this function
90
+ function setRewardRate(NftId targetNftId, UFixed rewardRate) external;
91
+
92
+ /// @dev (re)fills the staking reward reserves for the specified target
93
+ /// unpermissioned: anybody may fill up staking reward reserves
94
+ function refillRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
95
+
96
+ /// @dev defunds the staking reward reserves for the specified target
97
+ /// permissioned: only the staking service may call this function
98
+ function withdrawRewardReserves(NftId targetNftId, Amount dipAmount) external returns (Amount newBalance);
99
+
100
+
101
+ /// @dev increases the total value locked amount for the specified target by the provided token amount.
102
+ /// function is called when a new policy is collateralized.
103
+ /// function restricted to the pool service.
104
+ function increaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
105
+
106
+
107
+ /// @dev decreases the total value locked amount for the specified target by the provided token amount.
108
+ /// function is called when a new policy is closed or payouts are executed.
109
+ /// function restricted to the pool service.
110
+ function decreaseTotalValueLocked(NftId targetNftId, address token, Amount amount) external returns (Amount newBalance);
111
+
112
+
113
+ function updateRemoteTvl(NftId targetNftId, address token, Amount amount) external;
114
+
115
+ // staking functions
116
+
117
+ /// @dev creat a new stake info object
118
+ /// permissioned: only staking service may call this function.
119
+ function createStake(NftId stakeNftId, NftId targetNftId, Amount dipAmount) external;
120
+
121
+ /// @dev increase the staked dip by dipAmount for the specified stake.
122
+ /// staking rewards are updated and added to the staked dips as well.
123
+ /// the function returns the new total amount of staked dips.
124
+ function stake(NftId stakeNftId, Amount dipAmount) external returns (Amount stakeBalance);
125
+
126
+ /// @dev restakes the dips to a new target.
127
+ /// the sum of the staked dips and the accumulated rewards will be restaked.
128
+ /// permissioned: only staking service may call this function.
129
+ function restake(NftId stakeNftId, NftId newTargetNftId) external returns (NftId newStakeNftId);
130
+
131
+ /// @dev retuns the specified amount of dips to the holder of the specified stake nft.
132
+ /// if dipAmount is set to Amount.max() all staked dips and all rewards are transferred to
133
+ /// permissioned: only staking service may call this function.
134
+ function unstake(NftId stakeNftId)
135
+ external
136
+ returns (
137
+ Amount unstakedAmount,
138
+ Amount rewardsClaimedAmount
139
+ );
140
+
141
+ /// @dev update stake rewards for current time.
142
+ /// may be called before an announement of a decrease of a reward rate reduction.
143
+ /// calling this functions ensures that reward balance is updated using the current (higher) reward rate.
144
+ /// unpermissioned.
145
+ function updateRewards(NftId stakeNftId) external;
146
+
147
+ /// @dev transfers all rewards accumulated so far to the holder of the specified stake nft.
148
+ /// permissioned: only staking service may call this function.
149
+ function claimRewards(NftId stakeNftId)
150
+ external
151
+ returns (
152
+ Amount rewardsClaimedAmount
153
+ );
154
+
155
+ //--- helper functions --------------------------------------------------//
156
+
157
+ /// @dev transfers the specified amount of dips from the from address to the staking wallet.
158
+ function collectDipAmount(address from, Amount dipAmount) external;
159
+
160
+ /// @dev transfers the specified amount of dips from the staking wallet to the to addess.
161
+ function transferDipAmount(address to, Amount dipAmount) external;
162
+
163
+ //--- view and pure functions -------------------------------------------//
164
+
165
+ function getStakingStore() external view returns (StakingStore stakingStore);
166
+ function getStakingReader() external view returns (StakingReader reader);
167
+ }