@etherisc/gif-next 0.0.2-96853ac-143 → 0.0.2-96b5b72-170

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 (496) hide show
  1. package/README.md +337 -19
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1387 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1011 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +312 -1138
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +616 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +443 -1231
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1574 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +979 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +656 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +478 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  37. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +581 -0
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  46. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  48. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  50. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  52. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  54. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  58. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +735 -0
  66. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1106 -0
  68. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  70. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  71. package/artifacts/contracts/pool/Pool.sol/Pool.json +1418 -0
  72. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1630 -0
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +712 -0
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  88. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  90. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +510 -0
  92. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +872 -0
  94. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.json +442 -0
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  104. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  105. package/artifacts/contracts/product/Product.sol/Product.json +1209 -0
  106. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +680 -64
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +919 -0
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +750 -87
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1211 -0
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +657 -0
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +620 -0
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  130. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  132. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  133. package/artifacts/contracts/shared/Component.sol/Component.json +723 -0
  134. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +631 -0
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  138. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  139. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/IComponent.sol/IComponent.json} +240 -229
  140. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +647 -0
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +125 -0
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +175 -0
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IService.sol/IService.json +327 -0
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +884 -0
  156. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
  158. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  159. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  160. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
  162. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +339 -0
  164. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  166. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  167. package/artifacts/contracts/shared/Service.sol/Service.json +488 -0
  168. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  169. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  170. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  171. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  172. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  174. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  175. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +507 -0
  176. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  177. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +545 -0
  178. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  179. package/artifacts/contracts/staking/Staking.sol/Staking.json +854 -0
  180. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  181. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +640 -0
  182. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  183. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
  184. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -0
  186. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  187. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  188. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  189. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  190. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  192. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  194. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  195. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  196. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  197. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  198. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  199. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  200. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  202. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  203. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  204. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  206. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  208. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  210. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  212. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  214. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  216. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  218. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  220. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  221. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  222. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  224. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  226. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  228. package/contracts/distribution/Distribution.sol +285 -0
  229. package/contracts/distribution/DistributionService.sol +349 -0
  230. package/contracts/distribution/DistributionServiceManager.sol +51 -0
  231. package/contracts/distribution/IDistributionComponent.sol +71 -0
  232. package/contracts/distribution/IDistributionService.sol +87 -0
  233. package/contracts/instance/BundleManager.sol +126 -0
  234. package/contracts/instance/IInstance.sol +74 -22
  235. package/contracts/instance/IInstanceService.sol +73 -0
  236. package/contracts/instance/Instance.sol +210 -53
  237. package/contracts/instance/InstanceAccessManager.sol +543 -0
  238. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  239. package/contracts/instance/InstanceReader.sol +368 -0
  240. package/contracts/instance/InstanceService.sol +308 -0
  241. package/contracts/instance/InstanceServiceManager.sol +54 -0
  242. package/contracts/instance/InstanceStore.sol +211 -0
  243. package/contracts/instance/base/Cloneable.sol +51 -0
  244. package/contracts/instance/base/IKeyValueStore.sol +53 -0
  245. package/contracts/instance/base/ILifecycle.sol +30 -0
  246. package/contracts/instance/base/KeyValueStore.sol +169 -0
  247. package/contracts/instance/base/Lifecycle.sol +121 -0
  248. package/contracts/instance/base/ObjectManager.sol +82 -0
  249. package/contracts/instance/module/IAccess.sol +54 -0
  250. package/contracts/instance/module/IBundle.sol +23 -0
  251. package/contracts/instance/module/IComponents.sol +41 -0
  252. package/contracts/instance/module/IDistribution.sol +42 -0
  253. package/contracts/instance/module/IPolicy.sol +78 -0
  254. package/contracts/instance/module/IRisk.sol +11 -0
  255. package/contracts/instance/module/ISetup.sol +33 -0
  256. package/contracts/instance/module/ITreasury.sol +23 -0
  257. package/contracts/pool/BundleService.sol +382 -0
  258. package/contracts/pool/BundleServiceManager.sol +51 -0
  259. package/contracts/pool/IBundleService.sol +118 -0
  260. package/contracts/pool/IPoolComponent.sol +114 -0
  261. package/contracts/pool/IPoolService.sol +114 -0
  262. package/contracts/pool/Pool.sol +302 -0
  263. package/contracts/pool/PoolService.sol +403 -0
  264. package/contracts/pool/PoolServiceManager.sol +51 -0
  265. package/contracts/product/ApplicationService.sol +186 -0
  266. package/contracts/product/ApplicationServiceManager.sol +35 -0
  267. package/contracts/product/ClaimService.sol +442 -0
  268. package/contracts/product/ClaimServiceManager.sol +35 -0
  269. package/contracts/product/IApplicationService.sol +62 -0
  270. package/contracts/product/IClaimService.sol +93 -0
  271. package/contracts/product/IPolicyService.sol +80 -0
  272. package/contracts/product/IPricingService.sol +37 -0
  273. package/contracts/product/IProductComponent.sol +41 -0
  274. package/contracts/product/IProductService.sol +40 -0
  275. package/contracts/product/PolicyService.sol +376 -0
  276. package/contracts/product/PolicyServiceManager.sol +54 -0
  277. package/contracts/product/PricingService.sol +275 -0
  278. package/contracts/product/PricingServiceManager.sol +51 -0
  279. package/contracts/product/Product.sol +379 -0
  280. package/contracts/product/ProductService.sol +210 -0
  281. package/contracts/product/ProductServiceManager.sol +54 -0
  282. package/contracts/registry/ChainNft.sol +143 -62
  283. package/contracts/registry/IRegistry.sol +84 -41
  284. package/contracts/registry/IRegistryService.sol +69 -0
  285. package/contracts/registry/ITransferInterceptor.sol +7 -0
  286. package/contracts/registry/Registry.sol +451 -128
  287. package/contracts/registry/RegistryAccessManager.sol +207 -0
  288. package/contracts/registry/RegistryService.sol +304 -0
  289. package/contracts/registry/RegistryServiceManager.sol +60 -0
  290. package/contracts/registry/ReleaseManager.sol +360 -0
  291. package/contracts/registry/TokenRegistry.sol +116 -0
  292. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  293. package/contracts/shared/Component.sol +177 -0
  294. package/contracts/shared/ComponentService.sol +150 -0
  295. package/contracts/shared/ERC165.sol +27 -0
  296. package/contracts/shared/IComponent.sol +58 -0
  297. package/contracts/shared/IInstanceLinkedComponent.sol +52 -0
  298. package/contracts/shared/INftOwnable.sol +23 -0
  299. package/contracts/shared/IPolicyHolder.sol +40 -0
  300. package/contracts/shared/IRegisterable.sol +15 -0
  301. package/contracts/shared/IRegistryLinked.sol +11 -0
  302. package/contracts/shared/IService.sol +18 -0
  303. package/contracts/shared/IVersionable.sol +53 -0
  304. package/contracts/shared/InstanceLinkedComponent.sol +271 -0
  305. package/contracts/shared/NftOwnable.sol +118 -0
  306. package/contracts/shared/PolicyHolder.sol +94 -0
  307. package/contracts/shared/ProxyManager.sol +169 -0
  308. package/contracts/shared/Registerable.sol +75 -0
  309. package/contracts/shared/RegistryLinked.sol +43 -0
  310. package/contracts/shared/Service.sol +72 -0
  311. package/contracts/shared/TokenHandler.sol +58 -0
  312. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  313. package/contracts/shared/Versionable.sol +59 -0
  314. package/contracts/staking/IStaking.sol +30 -0
  315. package/contracts/staking/IStakingService.sol +105 -0
  316. package/contracts/staking/Staking.sol +65 -0
  317. package/contracts/staking/StakingManager.sol +46 -0
  318. package/contracts/staking/StakingService.sol +204 -0
  319. package/contracts/staking/StakingServiceManager.sol +41 -0
  320. package/contracts/type/AddressSet.sol +58 -0
  321. package/contracts/type/Amount.sol +109 -0
  322. package/contracts/{types → type}/Blocknumber.sol +1 -0
  323. package/contracts/type/ClaimId.sol +75 -0
  324. package/contracts/type/DistributorType.sol +55 -0
  325. package/contracts/type/Fee.sol +65 -0
  326. package/contracts/type/Key32.sol +50 -0
  327. package/contracts/{types → type}/NftId.sol +30 -1
  328. package/contracts/type/NftIdSet.sol +62 -0
  329. package/contracts/{types → type}/ObjectType.sol +74 -15
  330. package/contracts/type/PayoutId.sol +82 -0
  331. package/contracts/type/Referral.sol +89 -0
  332. package/contracts/type/RiskId.sol +43 -0
  333. package/contracts/type/RoleId.sol +132 -0
  334. package/contracts/type/Seconds.sol +54 -0
  335. package/contracts/{types → type}/StateId.sol +23 -4
  336. package/contracts/{types → type}/Timestamp.sol +36 -6
  337. package/contracts/type/UFixed.sol +326 -0
  338. package/contracts/type/Version.sol +108 -0
  339. package/package.json +12 -5
  340. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  341. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  342. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  343. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  344. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  345. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  346. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  347. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  348. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  349. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  350. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  351. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  352. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  354. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  356. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  358. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  360. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  362. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  364. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  372. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  374. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  376. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  378. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  380. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  382. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  384. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  386. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  388. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  389. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  390. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  391. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  392. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  394. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  396. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  398. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  399. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  400. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  401. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  402. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  403. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  404. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  405. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  406. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  407. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  408. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  409. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  412. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  413. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  414. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  415. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  417. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  418. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  419. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  420. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  421. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  422. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  423. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  424. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  425. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  426. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  427. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  428. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  429. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  430. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  431. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  432. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  433. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  434. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  435. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  436. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  437. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  438. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  439. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  440. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  441. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  442. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  443. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  444. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  445. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  446. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  447. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  448. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  449. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  450. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  451. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  452. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  454. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  455. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  456. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  457. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  458. package/contracts/components/Component.sol +0 -77
  459. package/contracts/components/IPool.sol +0 -15
  460. package/contracts/components/IProduct.sol +0 -16
  461. package/contracts/components/Pool.sol +0 -52
  462. package/contracts/components/Product.sol +0 -89
  463. package/contracts/experiment/errors/Require.sol +0 -38
  464. package/contracts/experiment/errors/Revert.sol +0 -44
  465. package/contracts/experiment/inheritance/A.sol +0 -53
  466. package/contracts/experiment/inheritance/B.sol +0 -28
  467. package/contracts/experiment/inheritance/C.sol +0 -34
  468. package/contracts/experiment/inheritance/IA.sol +0 -13
  469. package/contracts/experiment/inheritance/IB.sol +0 -10
  470. package/contracts/experiment/inheritance/IC.sol +0 -12
  471. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  472. package/contracts/experiment/statemachine/ISM.sol +0 -25
  473. package/contracts/experiment/statemachine/README.md +0 -112
  474. package/contracts/experiment/statemachine/SM.sol +0 -57
  475. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  476. package/contracts/experiment/types/TypeA.sol +0 -47
  477. package/contracts/experiment/types/TypeB.sol +0 -29
  478. package/contracts/instance/access/Access.sol +0 -165
  479. package/contracts/instance/access/IAccess.sol +0 -63
  480. package/contracts/instance/component/ComponentModule.sol +0 -274
  481. package/contracts/instance/component/IComponent.sol +0 -74
  482. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  483. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  484. package/contracts/instance/policy/IPolicy.sol +0 -50
  485. package/contracts/instance/policy/PolicyModule.sol +0 -114
  486. package/contracts/instance/pool/IPoolModule.sol +0 -23
  487. package/contracts/instance/pool/PoolModule.sol +0 -81
  488. package/contracts/instance/product/IProductService.sol +0 -36
  489. package/contracts/instance/product/ProductService.sol +0 -136
  490. package/contracts/instance/treasury/ITreasury.sol +0 -91
  491. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  492. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  493. package/contracts/registry/IChainNft.sol +0 -21
  494. package/contracts/types/ChainId.sol +0 -38
  495. package/contracts/types/Fee.sol +0 -32
  496. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,204 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Amount} from "../type/Amount.sol";
5
+ import {IPoolService} from "../pool/IPoolService.sol";
6
+ import {IRegisterable} from "../shared/IRegisterable.sol";
7
+ import {IRegistry} from "../registry/IRegistry.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {IStaking} from "./IStaking.sol";
10
+ import {IStakingService} from "./IStakingService.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {ObjectType, POOL, REGISTRY, STAKE, STAKING} from "../type/ObjectType.sol";
13
+ import {Service} from "../shared/Service.sol";
14
+ import {Timestamp} from "../type/Timestamp.sol";
15
+
16
+
17
+ contract StakingService is
18
+ Service,
19
+ IStakingService
20
+ {
21
+ // TODO decide and implement string spec for location calculation
22
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
23
+ bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
24
+
25
+ struct StakingServiceStorage {
26
+ IStaking _staking;
27
+ }
28
+
29
+ function getDomain() public pure override returns(ObjectType) {
30
+ return STAKING();
31
+ }
32
+
33
+
34
+ function create(
35
+ NftId targetNftId,
36
+ Amount amount
37
+ )
38
+ external
39
+ virtual
40
+ returns (
41
+ NftId stakeNftId
42
+ )
43
+ {
44
+
45
+ }
46
+
47
+
48
+ function stake(
49
+ NftId stakeNftId,
50
+ Amount amount
51
+ )
52
+ external
53
+ virtual
54
+ {
55
+
56
+ }
57
+
58
+
59
+ function unstake(
60
+ NftId stakeNftId,
61
+ Amount amount
62
+ )
63
+ external
64
+ virtual
65
+ {
66
+
67
+ }
68
+
69
+ function close(
70
+ NftId stakeNftId
71
+ )
72
+ external
73
+ virtual
74
+ {
75
+
76
+ }
77
+
78
+ function reStake(
79
+ NftId stakeNftId,
80
+ NftId newTargetNftId
81
+ )
82
+ external
83
+ virtual
84
+ returns (
85
+ NftId newStakeNftId,
86
+ Timestamp unlockedAt
87
+ )
88
+ {
89
+
90
+ }
91
+
92
+
93
+ function increaseTotalValueLocked(
94
+ NftId targetNftId,
95
+ address token,
96
+ Amount amount
97
+ )
98
+ external
99
+ virtual
100
+ returns (Amount totalValueLocked)
101
+ {
102
+
103
+ }
104
+
105
+
106
+ function decreaseTotalValueLocked(
107
+ NftId targetNftId,
108
+ address token,
109
+ Amount amount
110
+ )
111
+ external
112
+ virtual
113
+ returns (Amount totalValueLocked)
114
+ {
115
+
116
+ }
117
+
118
+
119
+ function setTotalValueLocked(
120
+ NftId targetNftId,
121
+ address token,
122
+ Amount amount
123
+ )
124
+ external
125
+ virtual
126
+ {
127
+
128
+ }
129
+
130
+ function getStaking()
131
+ external
132
+ virtual
133
+ returns (IStaking staking)
134
+ {
135
+ return _getStakingServiceStorage()._staking;
136
+ }
137
+
138
+
139
+ function _initialize(
140
+ address owner,
141
+ bytes memory data
142
+ )
143
+ internal
144
+ virtual override
145
+ initializer()
146
+ {
147
+ (
148
+ address registryAddress,
149
+ address stakingAddress
150
+ ) = abi.decode(data, (address, address));
151
+
152
+ initializeService(registryAddress, address(0), owner);
153
+
154
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
155
+ $._staking = _registerStaking(stakingAddress);
156
+
157
+ registerInterface(type(IStakingService).interfaceId);
158
+ }
159
+
160
+
161
+ function _registerStaking(
162
+ address stakingAddress
163
+ )
164
+ internal
165
+ returns (IStaking staking)
166
+ {
167
+ // check if provided staking contract is already registred
168
+ IRegistry.ObjectInfo memory stakingInfo = getRegistry().getObjectInfo(stakingAddress);
169
+ if (stakingInfo.nftId.gtz()) {
170
+ // registered object but wrong type
171
+ if (stakingInfo.objectType != STAKING()) {
172
+ revert ErrorStakingServiceNotStaking(stakingAddress);
173
+ }
174
+
175
+ // return correctly registered staking contract
176
+ return IStaking(stakingAddress);
177
+ }
178
+
179
+ // check that contract implements IStaking
180
+ if(!IStaking(stakingAddress).supportsInterface(type(IStaking).interfaceId)) {
181
+ revert ErrorStakingServiceNotSupportingIStaking(stakingAddress);
182
+ }
183
+
184
+ address owner = msg.sender;
185
+ IRegistryService(
186
+ _getServiceAddress(REGISTRY())).registerStaking(
187
+ IRegisterable(stakingAddress),
188
+ owner);
189
+
190
+ return IStaking(stakingAddress);
191
+ }
192
+
193
+
194
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
195
+ return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
196
+ }
197
+
198
+
199
+ function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
200
+ assembly {
201
+ $.slot := STAKING_SERVICE_LOCATION_V1
202
+ }
203
+ }
204
+ }
@@ -0,0 +1,41 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IVersionable} from "../shared/IVersionable.sol";
6
+ import {ProxyManager} from "../shared/ProxyManager.sol";
7
+ import {StakingService} from "./StakingService.sol";
8
+
9
+ contract StakingServiceManager is
10
+ ProxyManager
11
+ {
12
+
13
+ StakingService private _stakingService;
14
+
15
+ /// @dev initializes proxy manager with service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ StakingService svc = new StakingService();
22
+ bytes memory data = abi.encode(
23
+ registryAddress,
24
+ IRegistry(registryAddress).getStakingAddress());
25
+
26
+ IVersionable versionable = deploy(
27
+ address(svc),
28
+ data);
29
+
30
+ _stakingService = StakingService(address(versionable));
31
+ }
32
+
33
+ //--- view functions ----------------------------------------------------//
34
+ function getStakingService()
35
+ external
36
+ view
37
+ returns (StakingService)
38
+ {
39
+ return _stakingService;
40
+ }
41
+ }
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ // based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
5
+ library LibAddressSet {
6
+
7
+ struct Set {
8
+ address[] elements;
9
+ mapping(address element => uint256 index) at;
10
+ }
11
+
12
+ function add(Set storage set, address element) external returns(bool added) {
13
+ if (set.at[element] == 0) {
14
+ set.elements.push(element);
15
+ set.at[element] = set.elements.length;
16
+ return true;
17
+ } else {
18
+ return false;
19
+ }
20
+ }
21
+
22
+ function remove(Set storage set, address element) external returns(bool removed) {
23
+ uint256 elementIndex = set.at[element];
24
+
25
+ if (elementIndex > 0) {
26
+ uint256 toDeleteIndex = elementIndex - 1;
27
+ uint256 lastIndex = set.elements.length - 1;
28
+
29
+ if (lastIndex != toDeleteIndex) {
30
+ address lastElement = set.elements[lastIndex];
31
+ set.elements[toDeleteIndex] = lastElement;
32
+ set.at[lastElement] = elementIndex; // Replace lastValue's index to valueIndex
33
+ }
34
+
35
+ set.elements.pop();
36
+ delete set.at[element];
37
+ return true;
38
+ }
39
+
40
+ return false;
41
+ }
42
+
43
+ function isEmpty(Set storage set) external view returns(bool empty) {
44
+ return set.elements.length == 0;
45
+ }
46
+
47
+ function contains(Set storage set, address element) external view returns(bool inSet) {
48
+ return set.at[element] > 0;
49
+ }
50
+
51
+ function getLength(Set storage set) external view returns(uint256 length) {
52
+ return set.elements.length;
53
+ }
54
+
55
+ function getElementAt(Set storage set, uint256 index) external view returns(address element) {
56
+ return set.elements[index];
57
+ }
58
+ }
@@ -0,0 +1,109 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {UFixed, UFixedLib} from "./UFixed.sol";
5
+
6
+ type Amount is uint96;
7
+
8
+ using {
9
+ addAmount as +,
10
+ subAmount as -,
11
+ eqAmount as ==,
12
+ ltAmount as <,
13
+ gtAmount as >,
14
+ AmountLib.eq,
15
+ AmountLib.eqz,
16
+ AmountLib.gtz,
17
+ AmountLib.toInt,
18
+ AmountLib.add,
19
+ AmountLib.toUFixed
20
+ } for Amount global;
21
+
22
+ function addAmount(Amount a, Amount b) pure returns (Amount) {
23
+ return AmountLib.add(a, b);
24
+ }
25
+
26
+ function subAmount(Amount a, Amount b) pure returns (Amount) {
27
+ return AmountLib.sub(a, b);
28
+ }
29
+
30
+ function eqAmount(Amount a, Amount b) pure returns (bool) {
31
+ return AmountLib.eq(a, b);
32
+ }
33
+
34
+ function ltAmount(Amount a, Amount b) pure returns (bool) {
35
+ return AmountLib.lt(a, b);
36
+ }
37
+
38
+ function gtAmount(Amount a, Amount b) pure returns (bool) {
39
+ return AmountLib.gt(a, b);
40
+ }
41
+
42
+ library AmountLib {
43
+
44
+ error ErrorAmountLibValueTooBig(uint256 amount);
45
+
46
+ function zero() public pure returns (Amount) {
47
+ return Amount.wrap(0);
48
+ }
49
+
50
+ function max() public pure returns (Amount) {
51
+ return Amount.wrap(_max());
52
+ }
53
+
54
+ /// @dev converts the uint amount into Amount
55
+ /// function reverts if value is exceeding max Amount value
56
+ function toAmount(uint256 amount) public pure returns (Amount) {
57
+ if(amount > _max()) {
58
+ revert ErrorAmountLibValueTooBig(amount);
59
+ }
60
+
61
+ return Amount.wrap(uint96(amount));
62
+ }
63
+
64
+ /// @dev return true if amount equals 0
65
+ function eqz(Amount amount) public pure returns (bool) {
66
+ return Amount.unwrap(amount) == 0;
67
+ }
68
+
69
+ /// @dev return true if amount1 equals amount2
70
+ function eq(Amount amount1, Amount amount2) public pure returns (bool) {
71
+ return Amount.unwrap(amount1) == Amount.unwrap(amount2);
72
+ }
73
+
74
+ /// @dev return true if amount a1 is smaller than a2
75
+ function lt(Amount a1, Amount a2) public pure returns (bool) {
76
+ return Amount.unwrap(a1) < Amount.unwrap(a2);
77
+ }
78
+
79
+ /// @dev return true if amount a1 is larger than a2
80
+ function gt(Amount a1, Amount a2) public pure returns (bool) {
81
+ return Amount.unwrap(a1) > Amount.unwrap(a2);
82
+ }
83
+
84
+ /// @dev return true if amount is larger than 0
85
+ function gtz(Amount amount) public pure returns (bool) {
86
+ return Amount.unwrap(amount) > 0;
87
+ }
88
+
89
+ function add(Amount a1, Amount a2) public pure returns (Amount) {
90
+ return Amount.wrap(Amount.unwrap(a1) + Amount.unwrap(a2));
91
+ }
92
+
93
+ function sub(Amount a1, Amount a2) public pure returns (Amount) {
94
+ return Amount.wrap(Amount.unwrap(a1) - Amount.unwrap(a2));
95
+ }
96
+
97
+ function toInt(Amount amount) public pure returns (uint256) {
98
+ return uint256(uint96(Amount.unwrap(amount)));
99
+ }
100
+
101
+ function toUFixed(Amount amount) public pure returns (UFixed) {
102
+ return UFixedLib.toUFixed(Amount.unwrap(amount));
103
+ }
104
+
105
+ function _max() internal pure returns (uint96) {
106
+ // IMPORTANT: type nees to match with actual definition for Amount
107
+ return type(uint96).max;
108
+ }
109
+ }
@@ -52,6 +52,7 @@ function blockBlocknumber() view returns (Blocknumber) {
52
52
  return toBlocknumber(block.number);
53
53
  }
54
54
 
55
+ // TODO move to BlocknumberLib and rename to zero()
55
56
  /// @dev Return the Blocknumber zero (0)
56
57
  function zeroBlocknumber() pure returns (Blocknumber) {
57
58
  return toBlocknumber(0);
@@ -0,0 +1,75 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ // uint16 allows for 65'535 claims per policy
5
+ type ClaimId is uint16;
6
+
7
+ import {CLAIM} from "./ObjectType.sol";
8
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
9
+ import {NftId} from "./NftId.sol";
10
+
11
+ // type bindings
12
+ using {
13
+ eqClaimId as ==,
14
+ neClaimId as !=,
15
+ ClaimIdLib.eqz,
16
+ ClaimIdLib.gtz,
17
+ ClaimIdLib.toInt,
18
+ ClaimIdLib.toKey32
19
+ } for ClaimId global;
20
+
21
+
22
+ // pure free functions for operators
23
+ function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
24
+ return ClaimId.unwrap(a) == ClaimId.unwrap(b);
25
+ }
26
+
27
+ function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
28
+ return ClaimId.unwrap(a) != ClaimId.unwrap(b);
29
+ }
30
+
31
+ // library functions that operate on user defined type
32
+ library ClaimIdLib {
33
+ /// @dev claim id min value (0), use only for non-initialized values
34
+ function zero() public pure returns (ClaimId) {
35
+ return ClaimId.wrap(0);
36
+ }
37
+ /// @dev claim id max value (2**16-1), use only for non-initialized values
38
+ function max() public pure returns (ClaimId) {
39
+ return ClaimId.wrap(type(uint16).max);
40
+ }
41
+
42
+ /// @dev Converts an uint into a ClaimId.
43
+ function toClaimId(uint256 a) public pure returns (ClaimId) {
44
+ return ClaimId.wrap(uint16(a));
45
+ }
46
+
47
+ /// @dev Converts the ClaimId to a uint.
48
+ function toInt(ClaimId a) public pure returns (uint16) {
49
+ return uint16(ClaimId.unwrap(a));
50
+ }
51
+
52
+ /// @dev Converts the ClaimId and NftId to a Key32.
53
+ function toKey32(ClaimId claimId, NftId policyNftId) public pure returns (Key32) {
54
+ return Key32Lib.toKey32(CLAIM(), toKeyId(claimId, policyNftId));
55
+ }
56
+
57
+ /// @dev Converts the ClaimId and NftId to a Key32.
58
+ function toKeyId(ClaimId claimId, NftId policyNftId) public pure returns (KeyId) {
59
+ return KeyId.wrap(
60
+ bytes31(
61
+ bytes14(
62
+ uint112(
63
+ NftId.unwrap(policyNftId) << 16 + ClaimId.unwrap(claimId)))));
64
+ }
65
+
66
+ /// @dev Returns true if the value is non-zero (> 0).
67
+ function gtz(ClaimId a) public pure returns (bool) {
68
+ return ClaimId.unwrap(a) > 0;
69
+ }
70
+
71
+ /// @dev Returns true if the value is zero (== 0).
72
+ function eqz(ClaimId a) public pure returns (bool) {
73
+ return ClaimId.unwrap(a) == 0;
74
+ }
75
+ }
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
+ import {NftId} from "./NftId.sol";
6
+ import {DISTRIBUTOR_TYPE} from "./ObjectType.sol";
7
+
8
+ type DistributorType is bytes8;
9
+
10
+ // type bindings
11
+ using {
12
+ eqDistributorType as ==,
13
+ neDistributorType as !=,
14
+ DistributorTypeLib.toKey32
15
+ } for DistributorType global;
16
+
17
+ // general pure free functions
18
+
19
+ // pure free functions for operators
20
+ function eqDistributorType(
21
+ DistributorType a,
22
+ DistributorType b
23
+ ) pure returns (bool isSame) {
24
+ return DistributorType.unwrap(a) == DistributorType.unwrap(b);
25
+ }
26
+
27
+ function neDistributorType(
28
+ DistributorType a,
29
+ DistributorType b
30
+ ) pure returns (bool isDifferent) {
31
+ return DistributorType.unwrap(a) != DistributorType.unwrap(b);
32
+ }
33
+
34
+ // library functions that operate on user defined type
35
+ library DistributorTypeLib {
36
+
37
+ function zero() public pure returns (DistributorType) {
38
+ return DistributorType.wrap(bytes8(0));
39
+ }
40
+
41
+ // @dev Converts a referral string into an id.
42
+ function toDistributorType(NftId distributionNftId, string memory name) public pure returns (DistributorType) {
43
+ return DistributorType.wrap(bytes8(keccak256(abi.encode(distributionNftId, name))));
44
+ }
45
+
46
+ /// @dev Returns the key32 value for the specified nft id and object type.
47
+ function toKey32(DistributorType id) public pure returns (Key32 key) {
48
+ return Key32Lib.toKey32(DISTRIBUTOR_TYPE(), toKeyId(id));
49
+ }
50
+
51
+ /// @dev Returns the key id value for the specified nft id
52
+ function toKeyId(DistributorType id) public pure returns (KeyId keyId) {
53
+ return KeyId.wrap(bytes31(DistributorType.unwrap(id)));
54
+ }
55
+ }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {Amount, AmountLib} from "./Amount.sol";
5
+ import {UFixed, UFixedLib} from "./UFixed.sol";
6
+
7
+ struct Fee {
8
+ UFixed fractionalFee;
9
+ uint256 fixedFee;
10
+ }
11
+
12
+ library FeeLib {
13
+
14
+ function calculateFee(
15
+ Fee memory fee,
16
+ Amount amount
17
+ )
18
+ public
19
+ pure
20
+ returns (
21
+ Amount feeAmount,
22
+ Amount netAmount
23
+ )
24
+ {
25
+ netAmount = amount;
26
+ if(gtz(fee)) {
27
+ UFixed fractionalAmount =
28
+ amount.toUFixed() * fee.fractionalFee;
29
+ feeAmount = AmountLib.toAmount(fractionalAmount.toInt() + fee.fixedFee);
30
+ netAmount = netAmount - feeAmount;
31
+ }
32
+ }
33
+
34
+ /// @dev Converts the uint256 to a fee struct.
35
+ function toFee(
36
+ UFixed fractionalFee,
37
+ uint256 fixedFee
38
+ ) public pure returns (Fee memory fee) {
39
+ return Fee(fractionalFee, fixedFee);
40
+ }
41
+
42
+ /// @dev Return the percent fee struct (x%, 0)
43
+ function percentageFee(uint8 percent) public pure returns (Fee memory fee) {
44
+ return Fee(UFixedLib.toUFixed(percent, -2), 0);
45
+ }
46
+
47
+ // TODO rename to zero
48
+ /// @dev Return a zero fee struct (0, 0)
49
+ function zeroFee() public pure returns (Fee memory fee) {
50
+ return Fee(UFixed.wrap(0), 0);
51
+ }
52
+
53
+ // pure free functions for operators
54
+ function feeIsSame(Fee memory a, Fee memory b) public pure returns (bool isSame) {
55
+ return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
56
+ }
57
+
58
+ function gtz(Fee memory fee) public pure returns (bool) {
59
+ return UFixed.unwrap(fee.fractionalFee) > 0 || fee.fixedFee > 0;
60
+ }
61
+
62
+ function eqz(Fee memory fee) public pure returns (bool) {
63
+ return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
64
+ }
65
+ }
@@ -0,0 +1,50 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "./ObjectType.sol";
5
+
6
+ type Key32 is bytes32;
7
+ type KeyId is bytes31;
8
+
9
+ // type bindings
10
+ using {
11
+ eqKey32 as ==,
12
+ neKey32 as !=,
13
+ Key32Lib.toKeyId,
14
+ Key32Lib.toObjectType
15
+ } for Key32 global;
16
+
17
+ // @dev Returns true iff keys are identical
18
+ function eqKey32(Key32 a, Key32 b) pure returns (bool isSame) {
19
+ return Key32.unwrap(a) == Key32.unwrap(b);
20
+ }
21
+
22
+ // @dev Returns true iff keys are different
23
+ function neKey32(Key32 a, Key32 b) pure returns (bool isDifferent) {
24
+ return Key32.unwrap(a) != Key32.unwrap(b);
25
+ }
26
+
27
+ library Key32Lib {
28
+
29
+ uint8 public constant TYPE_SHIFT = 31 * 8;
30
+ uint8 public constant ID_SHIFT = uint8(32 * 8 - TYPE_SHIFT);
31
+ bytes32 public constant TYPE_MASK = bytes32(bytes1(type(uint8).max)); // first byte in bytes32
32
+ bytes32 public constant ID_MASK = bytes32(~TYPE_MASK); // remaining bytes in bytes32
33
+
34
+ function toKey32(ObjectType objectType, KeyId id) public pure returns (Key32) {
35
+ uint256 uintObjectType = ObjectType.unwrap(objectType);
36
+ uint256 uintId = uint248(KeyId.unwrap(id));
37
+ uint256 uintKey = (uintObjectType << TYPE_SHIFT) + uintId;
38
+ return Key32.wrap(bytes32(uintKey));
39
+ }
40
+
41
+ function toObjectType(Key32 key) public pure returns (ObjectType objectType) {
42
+ bytes32 key32 = Key32.unwrap(key);
43
+ objectType = ObjectType.wrap(uint8(uint256(key32 & TYPE_MASK) >> TYPE_SHIFT));
44
+ }
45
+
46
+ function toKeyId(Key32 key) public pure returns (KeyId id) {
47
+ bytes32 key32 = Key32.unwrap(key);
48
+ id = KeyId.wrap(bytes31((key32 & ID_MASK) << ID_SHIFT));
49
+ }
50
+ }