@etherisc/gif-next 0.0.2-ecbd488-936 → 0.0.2-ed3b1b0-046

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 (493) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -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 +819 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -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 +415 -776
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3067
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +443 -257
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +446 -398
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -132
  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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +735 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +332 -336
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +747 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +687 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +779 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +727 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +679 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +319 -129
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +268 -255
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +339 -222
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +238 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +313 -354
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +323 -135
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +846 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
  123. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  125. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  126. package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
  127. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentService.sol/ComponentService.json} +271 -180
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  164. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → staking/IStakingService.sol/IStakingService.json} +226 -145
  165. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  166. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
  167. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  168. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +667 -0
  169. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  170. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  171. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  172. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  173. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  174. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  175. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  177. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  178. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  179. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  180. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  181. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  182. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  183. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  185. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  186. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  187. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  189. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  191. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  192. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  193. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  194. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  195. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  197. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  199. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  201. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  203. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  204. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  205. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  206. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  207. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  209. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  211. package/contracts/distribution/Distribution.sol +285 -0
  212. package/contracts/distribution/DistributionService.sol +351 -0
  213. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
  214. package/contracts/distribution/IDistributionComponent.sol +71 -0
  215. package/contracts/distribution/IDistributionService.sol +87 -0
  216. package/contracts/instance/BundleManager.sol +126 -0
  217. package/contracts/instance/IInstance.sol +60 -31
  218. package/contracts/instance/IInstanceService.sol +56 -13
  219. package/contracts/instance/Instance.sol +149 -363
  220. package/contracts/instance/InstanceAccessManager.sol +432 -177
  221. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  222. package/contracts/instance/InstanceReader.sol +109 -47
  223. package/contracts/instance/InstanceService.sol +246 -140
  224. package/contracts/instance/InstanceServiceManager.sol +12 -25
  225. package/contracts/instance/InstanceStore.sol +211 -0
  226. package/contracts/instance/base/Cloneable.sol +51 -0
  227. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  228. package/contracts/instance/base/ILifecycle.sol +3 -3
  229. package/contracts/instance/base/KeyValueStore.sol +44 -47
  230. package/contracts/instance/base/Lifecycle.sol +28 -7
  231. package/contracts/instance/base/ObjectManager.sol +82 -0
  232. package/contracts/instance/module/IAccess.sol +37 -21
  233. package/contracts/instance/module/IBundle.sol +11 -8
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +7 -4
  236. package/contracts/instance/module/IPolicy.sol +50 -17
  237. package/contracts/instance/module/IRisk.sol +1 -1
  238. package/contracts/instance/module/ISetup.sol +11 -22
  239. package/contracts/instance/module/ITreasury.sol +2 -2
  240. package/contracts/pool/BundleService.sol +384 -0
  241. package/contracts/pool/BundleServiceManager.sol +42 -0
  242. package/contracts/pool/IBundleService.sol +118 -0
  243. package/contracts/pool/IPoolComponent.sol +114 -0
  244. package/contracts/pool/IPoolService.sol +114 -0
  245. package/contracts/pool/Pool.sol +302 -0
  246. package/contracts/pool/PoolService.sol +404 -0
  247. package/contracts/pool/PoolServiceManager.sol +42 -0
  248. package/contracts/product/ApplicationService.sol +187 -0
  249. package/contracts/product/ApplicationServiceManager.sol +38 -0
  250. package/contracts/product/ClaimService.sol +443 -0
  251. package/contracts/product/ClaimServiceManager.sol +38 -0
  252. package/contracts/product/IApplicationService.sol +62 -0
  253. package/contracts/product/IClaimService.sol +93 -0
  254. package/contracts/product/IPolicyService.sol +80 -0
  255. package/contracts/product/IPricingService.sol +37 -0
  256. package/contracts/product/IProductComponent.sol +41 -0
  257. package/contracts/product/IProductService.sol +40 -0
  258. package/contracts/product/PolicyService.sol +378 -0
  259. package/contracts/product/PolicyServiceManager.sol +42 -0
  260. package/contracts/product/PricingService.sol +276 -0
  261. package/contracts/product/PricingServiceManager.sol +42 -0
  262. package/contracts/product/Product.sol +379 -0
  263. package/contracts/product/ProductService.sol +212 -0
  264. package/contracts/product/ProductServiceManager.sol +42 -0
  265. package/contracts/registry/ChainNft.sol +9 -1
  266. package/contracts/registry/IRegistry.sol +56 -27
  267. package/contracts/registry/IRegistryService.sol +36 -28
  268. package/contracts/registry/ITransferInterceptor.sol +1 -0
  269. package/contracts/registry/Registry.sol +259 -232
  270. package/contracts/registry/RegistryAccessManager.sol +132 -0
  271. package/contracts/registry/RegistryService.sol +81 -208
  272. package/contracts/registry/RegistryServiceManager.sol +34 -42
  273. package/contracts/registry/ReleaseManager.sol +382 -0
  274. package/contracts/registry/TokenRegistry.sol +22 -17
  275. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  276. package/contracts/shared/Component.sol +271 -0
  277. package/contracts/shared/ComponentService.sol +141 -0
  278. package/contracts/shared/ERC165.sol +14 -12
  279. package/contracts/shared/IComponent.sol +90 -0
  280. package/contracts/shared/INftOwnable.sol +12 -11
  281. package/contracts/shared/IPolicyHolder.sol +40 -0
  282. package/contracts/shared/IRegisterable.sol +4 -6
  283. package/contracts/shared/IRegistryLinked.sol +11 -0
  284. package/contracts/shared/IService.sol +7 -4
  285. package/contracts/shared/IVersionable.sol +5 -48
  286. package/contracts/shared/NftOwnable.sol +64 -80
  287. package/contracts/shared/PolicyHolder.sol +94 -0
  288. package/contracts/shared/ProxyManager.sol +126 -25
  289. package/contracts/shared/Registerable.sol +26 -41
  290. package/contracts/shared/RegistryLinked.sol +43 -0
  291. package/contracts/shared/Service.sol +41 -24
  292. package/contracts/shared/TokenHandler.sol +14 -6
  293. package/contracts/shared/Versionable.sol +4 -92
  294. package/contracts/staking/IStakingService.sol +102 -0
  295. package/contracts/staking/StakingService.sol +169 -0
  296. package/contracts/staking/StakingServiceManager.sol +40 -0
  297. package/contracts/type/Amount.sol +109 -0
  298. package/contracts/{types → type}/Blocknumber.sol +1 -0
  299. package/contracts/type/ClaimId.sol +75 -0
  300. package/contracts/{types → type}/DistributorType.sol +2 -2
  301. package/contracts/{types → type}/Fee.sol +17 -8
  302. package/contracts/{types → type}/NftId.sol +8 -0
  303. package/contracts/type/NftIdSet.sol +62 -0
  304. package/contracts/{types → type}/ObjectType.sol +17 -7
  305. package/contracts/type/PayoutId.sol +82 -0
  306. package/contracts/{types → type}/Referral.sol +4 -0
  307. package/contracts/type/RoleId.sol +139 -0
  308. package/contracts/type/Seconds.sol +54 -0
  309. package/contracts/{types → type}/StateId.sol +7 -2
  310. package/contracts/{types → type}/Timestamp.sol +18 -13
  311. package/contracts/{types → type}/UFixed.sol +1 -0
  312. package/contracts/{types → type}/Version.sol +1 -0
  313. package/package.json +3 -3
  314. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  315. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  316. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  317. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  318. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  320. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  322. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  323. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  324. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  326. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  327. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  328. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  329. package/artifacts/contracts/components/Product.sol/Product.json +0 -719
  330. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  332. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  334. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  336. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  338. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  340. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  344. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  346. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  348. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  350. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  353. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  355. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  357. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  359. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  361. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  363. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  365. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  367. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  369. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  370. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  371. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  372. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  373. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  374. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  375. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  376. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  377. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  379. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  380. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  381. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  382. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  383. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  384. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  385. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  386. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  388. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  389. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  391. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  392. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1046
  393. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  394. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -448
  395. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  396. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  397. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  398. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  399. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  400. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  401. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  402. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  403. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  404. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  405. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  406. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  407. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  408. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  409. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  410. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  411. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  412. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  413. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  414. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  415. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  416. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  417. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  418. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  419. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  420. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  421. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  422. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  423. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  424. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  425. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  426. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  427. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  428. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  429. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  430. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  431. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  432. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  434. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  435. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  436. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  437. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  439. package/contracts/components/BaseComponent.sol +0 -91
  440. package/contracts/components/Distribution.sol +0 -159
  441. package/contracts/components/IBaseComponent.sol +0 -25
  442. package/contracts/components/IDistributionComponent.sol +0 -44
  443. package/contracts/components/IPoolComponent.sol +0 -62
  444. package/contracts/components/IProductComponent.sol +0 -35
  445. package/contracts/components/Pool.sol +0 -242
  446. package/contracts/components/Product.sol +0 -284
  447. package/contracts/experiment/cloning/Cloner.sol +0 -47
  448. package/contracts/experiment/errors/Require.sol +0 -38
  449. package/contracts/experiment/errors/Revert.sol +0 -44
  450. package/contracts/experiment/inheritance/A.sol +0 -53
  451. package/contracts/experiment/inheritance/B.sol +0 -28
  452. package/contracts/experiment/inheritance/C.sol +0 -34
  453. package/contracts/experiment/inheritance/IA.sol +0 -13
  454. package/contracts/experiment/inheritance/IB.sol +0 -10
  455. package/contracts/experiment/inheritance/IC.sol +0 -12
  456. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  457. package/contracts/experiment/statemachine/ISM.sol +0 -25
  458. package/contracts/experiment/statemachine/SM.sol +0 -57
  459. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  460. package/contracts/experiment/types/TypeA.sol +0 -47
  461. package/contracts/experiment/types/TypeB.sol +0 -29
  462. package/contracts/instance/AccessManagedSimple.sol +0 -115
  463. package/contracts/instance/AccessManagerSimple.sol +0 -692
  464. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  465. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  466. package/contracts/instance/base/IInstanceBase.sol +0 -23
  467. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  468. package/contracts/instance/service/DistributionService.sol +0 -88
  469. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  470. package/contracts/instance/service/IDistributionService.sol +0 -12
  471. package/contracts/instance/service/IPoolService.sol +0 -37
  472. package/contracts/instance/service/IProductService.sol +0 -107
  473. package/contracts/instance/service/PoolService.sol +0 -194
  474. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  475. package/contracts/instance/service/ProductService.sol +0 -543
  476. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  477. package/contracts/shared/ContractDeployerLib.sol +0 -72
  478. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  479. package/contracts/test/TestFee.sol +0 -25
  480. package/contracts/test/TestRegisterable.sol +0 -18
  481. package/contracts/test/TestRoleId.sol +0 -14
  482. package/contracts/test/TestService.sol +0 -24
  483. package/contracts/test/TestToken.sol +0 -26
  484. package/contracts/test/TestVersion.sol +0 -44
  485. package/contracts/test/TestVersionable.sol +0 -17
  486. package/contracts/test/Usdc.sol +0 -26
  487. package/contracts/types/ChainId.sol +0 -38
  488. package/contracts/types/NftIdSet.sol +0 -60
  489. package/contracts/types/NumberId.sol +0 -52
  490. package/contracts/types/RoleId.sol +0 -90
  491. /package/contracts/{types → type}/AddressSet.sol +0 -0
  492. /package/contracts/{types → type}/Key32.sol +0 -0
  493. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -0,0 +1,169 @@
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 {IRegistry} from "../registry/IRegistry.sol";
7
+ import {IStakingService} from "./IStakingService.sol";
8
+ import {NftId} from "../type/NftId.sol";
9
+ import {ObjectType, POOL, STAKE} from "../type/ObjectType.sol";
10
+ import {Service} from "../shared/Service.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+
13
+
14
+ contract StakingService is
15
+ Service,
16
+ IStakingService
17
+ {
18
+ // TODO decide and implement string spec for location calculation
19
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.shared.StakingService.sol")) - 1)) & ~bytes32(uint256(0xff));
20
+ bytes32 public constant STAKING_SERVICE_LOCATION_V1 = 0x6548005c3f4340f82f348c576c0ff69f7f529cadd5ad41f96aae61abceeaa300;
21
+
22
+ struct StakingServiceStorage {
23
+ IPoolService _poolService;
24
+ }
25
+
26
+ function getDomain() public pure override returns(ObjectType) {
27
+ return STAKE();
28
+ }
29
+
30
+
31
+ function create(
32
+ NftId targetNftId,
33
+ Amount amount
34
+ )
35
+ external
36
+ virtual
37
+ returns (
38
+ NftId stakeNftId
39
+ )
40
+ {
41
+
42
+ }
43
+
44
+
45
+ function stake(
46
+ NftId stakeNftId,
47
+ Amount amount
48
+ )
49
+ external
50
+ virtual
51
+ {
52
+
53
+ }
54
+
55
+
56
+ function unstake(
57
+ NftId stakeNftId,
58
+ Amount amount
59
+ )
60
+ external
61
+ virtual
62
+ {
63
+
64
+ }
65
+
66
+ function close(
67
+ NftId stakeNftId
68
+ )
69
+ external
70
+ virtual
71
+ {
72
+
73
+ }
74
+
75
+ function reStake(
76
+ NftId stakeNftId,
77
+ NftId newTargetNftId
78
+ )
79
+ external
80
+ virtual
81
+ returns (
82
+ NftId newStakeNftId,
83
+ Timestamp unlockedAt
84
+ )
85
+ {
86
+
87
+ }
88
+
89
+
90
+ function increaseTotalValueLocked(
91
+ NftId targetNftId,
92
+ address token,
93
+ Amount amount
94
+ )
95
+ external
96
+ virtual
97
+ returns (Amount totalValueLocked)
98
+ {
99
+
100
+ }
101
+
102
+
103
+ function decreaseTotalValueLocked(
104
+ NftId targetNftId,
105
+ address token,
106
+ Amount amount
107
+ )
108
+ external
109
+ virtual
110
+ returns (Amount totalValueLocked)
111
+ {
112
+
113
+ }
114
+
115
+
116
+ function sendTotalValueLockedData(
117
+ NftId targetNftId,
118
+ address token
119
+ )
120
+ external
121
+ virtual
122
+ {
123
+
124
+ }
125
+
126
+
127
+ function receiveTotalValueLockedData(
128
+ NftId targetNftId,
129
+ address token
130
+ )
131
+ external
132
+ virtual
133
+ {
134
+
135
+ }
136
+
137
+
138
+ function _initialize(
139
+ address owner,
140
+ bytes memory data
141
+ )
142
+ internal
143
+ virtual override
144
+ initializer()
145
+ {
146
+ (
147
+ address registryAddress,,
148
+ //address managerAddress
149
+ address authority
150
+ ) = abi.decode(data, (address, address, address));
151
+
152
+ initializeService(registryAddress, authority, owner);
153
+
154
+ StakingServiceStorage storage $ = _getStakingServiceStorage();
155
+ $._poolService = IPoolService(_getServiceAddress(POOL()));
156
+
157
+ registerInterface(type(IStakingService).interfaceId);
158
+ }
159
+
160
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
161
+ return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
162
+ }
163
+
164
+ function _getStakingServiceStorage() private pure returns (StakingServiceStorage storage $) {
165
+ assembly {
166
+ $.slot := STAKING_SERVICE_LOCATION_V1
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {StakingService} from "./StakingService.sol";
7
+
8
+ contract StakingServiceManager is
9
+ ProxyManager
10
+ {
11
+
12
+ StakingService private _stakingService;
13
+
14
+ /// @dev initializes proxy manager with service implementation
15
+ constructor(
16
+ address authority,
17
+ address registryAddress,
18
+ bytes32 salt
19
+ )
20
+ ProxyManager(registryAddress)
21
+ {
22
+ StakingService svc = new StakingService{salt: salt}();
23
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
24
+ IVersionable versionable = deployDetermenistic(
25
+ address(svc),
26
+ data,
27
+ salt);
28
+
29
+ _stakingService = StakingService(address(versionable));
30
+ }
31
+
32
+ //--- view functions ----------------------------------------------------//
33
+ function getStakingService()
34
+ external
35
+ view
36
+ returns (StakingService)
37
+ {
38
+ return _stakingService;
39
+ }
40
+ }
@@ -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
+ }
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Key32, KeyId, Key32Lib} from "./Key32.sol";
5
5
  import {NftId} from "./NftId.sol";
6
- import {DISTRIBUTION_TYPE} from "./ObjectType.sol";
6
+ import {DISTRIBUTOR_TYPE} from "./ObjectType.sol";
7
7
 
8
8
  type DistributorType is bytes8;
9
9
 
@@ -45,7 +45,7 @@ library DistributorTypeLib {
45
45
 
46
46
  /// @dev Returns the key32 value for the specified nft id and object type.
47
47
  function toKey32(DistributorType id) public pure returns (Key32 key) {
48
- return Key32Lib.toKey32(DISTRIBUTION_TYPE(), toKeyId(id));
48
+ return Key32Lib.toKey32(DISTRIBUTOR_TYPE(), toKeyId(id));
49
49
  }
50
50
 
51
51
  /// @dev Returns the key id value for the specified nft id
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {Amount, AmountLib} from "./Amount.sol";
4
5
  import {UFixed, UFixedLib} from "./UFixed.sol";
5
6
 
6
7
  struct Fee {
@@ -12,19 +13,22 @@ library FeeLib {
12
13
 
13
14
  function calculateFee(
14
15
  Fee memory fee,
15
- uint256 amount
16
+ Amount amount
16
17
  )
17
18
  public
18
19
  pure
19
20
  returns (
20
- uint256 feeAmount,
21
- uint256 netAmount
21
+ Amount feeAmount,
22
+ Amount netAmount
22
23
  )
23
24
  {
24
- UFixed fractionalAmount = UFixedLib.toUFixed(amount) *
25
- fee.fractionalFee;
26
- feeAmount = fractionalAmount.toInt() + fee.fixedFee;
27
- netAmount = amount - feeAmount;
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
+ }
28
32
  }
29
33
 
30
34
  /// @dev Converts the uint256 to a fee struct.
@@ -40,6 +44,7 @@ library FeeLib {
40
44
  return Fee(UFixedLib.toUFixed(percent, -2), 0);
41
45
  }
42
46
 
47
+ // TODO rename to zero
43
48
  /// @dev Return a zero fee struct (0, 0)
44
49
  function zeroFee() public pure returns (Fee memory fee) {
45
50
  return Fee(UFixed.wrap(0), 0);
@@ -50,7 +55,11 @@ library FeeLib {
50
55
  return a.fixedFee == b.fixedFee && a.fractionalFee == b.fractionalFee;
51
56
  }
52
57
 
53
- function feeIsZero(Fee memory fee) public pure returns (bool) {
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) {
54
63
  return fee.fixedFee == 0 && UFixed.unwrap(fee.fractionalFee) == 0;
55
64
  }
56
65
  }
@@ -24,6 +24,7 @@ function toNftId(uint256 id) pure returns (NftId) {
24
24
  return NftId.wrap(uint96(id));
25
25
  }
26
26
 
27
+ // TODO move to NftIdLib and rename to zero()
27
28
  /// @dev Return the NftId zero (0)
28
29
  function zeroNftId() pure returns (NftId) {
29
30
  return NftId.wrap(0);
@@ -40,6 +41,13 @@ function neNftId(NftId a, NftId b) pure returns (bool isDifferent) {
40
41
 
41
42
  // library functions that operate on user defined type
42
43
  library NftIdLib {
44
+
45
+ /// @dev the zero nft id
46
+ /// is never a valid nft id and implies a non-initialized value
47
+ function zero() public pure returns (NftId) {
48
+ return NftId.wrap(0);
49
+ }
50
+
43
51
  /// @dev Converts the NftId to a uint256.
44
52
  function toInt(NftId nftId) public pure returns (uint96) {
45
53
  return uint96(NftId.unwrap(nftId));
@@ -0,0 +1,62 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../type/NftId.sol";
5
+
6
+ // based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/structs/EnumerableSet.sol
7
+ library LibNftIdSet {
8
+
9
+ struct Set {
10
+ NftId[] ids;
11
+ mapping(NftId nftid => uint256 index) at;
12
+ }
13
+
14
+ error ErrorNftIdSetAlreadyAdded(NftId nftId);
15
+ error ErrorNftIdSetNotInSet(NftId nftId);
16
+
17
+
18
+ function add(Set storage set, NftId nftId) external {
19
+ if (set.at[nftId] > 0) {
20
+ revert ErrorNftIdSetAlreadyAdded(nftId);
21
+ }
22
+
23
+ set.ids.push(nftId);
24
+ set.at[nftId] = set.ids.length;
25
+ }
26
+
27
+ function remove(Set storage set, NftId nftId) external {
28
+ uint256 nftIdIndex = set.at[nftId];
29
+
30
+ if (nftIdIndex == 0) {
31
+ revert ErrorNftIdSetNotInSet(nftId);
32
+ }
33
+
34
+ uint256 toDeleteIndex = nftIdIndex - 1;
35
+ uint256 lastIndex = set.ids.length - 1;
36
+
37
+ if (lastIndex != toDeleteIndex) {
38
+ NftId lastId = set.ids[lastIndex];
39
+ set.ids[toDeleteIndex] = lastId;
40
+ set.at[lastId] = nftIdIndex; // Replace lastValue's index to valueIndex
41
+ }
42
+
43
+ set.ids.pop();
44
+ delete set.at[nftId];
45
+ }
46
+
47
+ function isEmpty(Set storage set) external view returns(bool empty) {
48
+ return set.ids.length == 0;
49
+ }
50
+
51
+ function contains(Set storage set, NftId nftId) external view returns(bool inSet) {
52
+ return set.at[nftId] > 0;
53
+ }
54
+
55
+ function size(Set storage set) external view returns(uint256 length) {
56
+ return set.ids.length;
57
+ }
58
+
59
+ function getElementAt(Set storage set, uint256 index) external view returns(NftId nftId) {
60
+ return set.ids[index];
61
+ }
62
+ }
@@ -8,6 +8,7 @@ using {
8
8
  eqObjectType as ==,
9
9
  neObjectType as !=,
10
10
  ObjectTypeLib.toInt,
11
+ ObjectTypeLib.eqz,
11
12
  ObjectTypeLib.gtz
12
13
  } for ObjectType global;
13
14
 
@@ -66,7 +67,7 @@ function DISTRIBUTION() pure returns (ObjectType) {
66
67
  return toObjectType(120);
67
68
  }
68
69
 
69
- function DISTRIBUTION_TYPE() pure returns (ObjectType) {
70
+ function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
70
71
  return toObjectType(121);
71
72
  }
72
73
 
@@ -86,24 +87,32 @@ function POOL() pure returns (ObjectType) {
86
87
  return toObjectType(140);
87
88
  }
88
89
 
90
+ function BUNDLE() pure returns (ObjectType) {
91
+ return toObjectType(220);
92
+ }
93
+
89
94
  function RISK() pure returns (ObjectType) {
90
95
  return toObjectType(200);
91
96
  }
92
97
 
93
- function POLICY() pure returns (ObjectType) {
98
+ function APPLICATION() pure returns (ObjectType) {
94
99
  return toObjectType(210);
95
100
  }
96
101
 
97
- function BUNDLE() pure returns (ObjectType) {
98
- return toObjectType(220);
102
+ function POLICY() pure returns (ObjectType) {
103
+ return toObjectType(211);
99
104
  }
100
105
 
101
106
  function CLAIM() pure returns (ObjectType) {
102
- return toObjectType(211);
107
+ return toObjectType(212);
103
108
  }
104
109
 
105
110
  function PAYOUT() pure returns (ObjectType) {
106
- return toObjectType(212);
111
+ return toObjectType(213);
112
+ }
113
+
114
+ function PRICE() pure returns (ObjectType) {
115
+ return toObjectType(230);
107
116
  }
108
117
 
109
118
  /// @dev Converts the uint8 to a ObjectType.
@@ -111,6 +120,7 @@ function toObjectType(uint256 objectType) pure returns (ObjectType) {
111
120
  return ObjectType.wrap(uint8(objectType));
112
121
  }
113
122
 
123
+ // TODO move to ObjecTypeLib and rename to zero()
114
124
  /// @dev Return the ObjectType zero (0)
115
125
  function zeroObjectType() pure returns (ObjectType) {
116
126
  return ObjectType.wrap(0);
@@ -149,4 +159,4 @@ library ObjectTypeLib {
149
159
  function eq(ObjectType a, ObjectType b) public pure returns (bool isSame) {
150
160
  return eqObjectType(a, b);
151
161
  }
152
- }
162
+ }