@etherisc/gif-next 0.0.2-de220d6-949 → 0.0.2-def25d4-556

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 (379) hide show
  1. package/README.md +179 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +176 -23
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +670 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +129 -23
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +204 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +463 -60
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +540 -70
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -34
  27. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  42. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  43. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  44. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  46. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  48. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  50. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  52. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +277 -1709
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
  55. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  56. package/artifacts/contracts/instance/Instance.sol/Instance.json +2480 -1170
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  58. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1283 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +851 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +472 -0
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  66. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +229 -43
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +51 -1
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
  71. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +55 -245
  74. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  76. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  78. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  80. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  82. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  86. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  88. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  90. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +381 -77
  92. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +657 -0
  94. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +436 -0
  96. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
  98. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → service/IDistributionService.sol/IDistributionService.json} +204 -58
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +235 -50
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +325 -51
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -37
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +853 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +597 -122
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1237 -0
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +525 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  121. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  126. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  128. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +175 -54
  130. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  132. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  138. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +199 -83
  140. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  141. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  146. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  154. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
  156. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  158. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  160. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  162. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  163. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  164. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  165. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  168. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  169. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
  171. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  173. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  175. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  176. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  177. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  178. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  179. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  181. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  182. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  183. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  185. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  187. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  189. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  191. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  192. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  193. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  195. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  197. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  199. package/contracts/components/BaseComponent.sol +26 -23
  200. package/contracts/components/Distribution.sol +166 -0
  201. package/contracts/components/IBaseComponent.sol +9 -3
  202. package/contracts/components/IDistributionComponent.sol +46 -0
  203. package/contracts/components/IPoolComponent.sol +14 -9
  204. package/contracts/components/IProductComponent.sol +25 -9
  205. package/contracts/components/Pool.sol +114 -30
  206. package/contracts/components/Product.sol +212 -32
  207. package/contracts/experiment/cloning/Cloner.sol +47 -0
  208. package/contracts/experiment/errors/Revert.sol +4 -13
  209. package/contracts/instance/AccessManagedSimple.sol +115 -0
  210. package/contracts/instance/AccessManagerSimple.sol +692 -0
  211. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  212. package/contracts/instance/IInstance.sol +25 -45
  213. package/contracts/instance/IInstanceService.sol +30 -0
  214. package/contracts/instance/Instance.sol +427 -52
  215. package/contracts/instance/InstanceAccessManager.sol +288 -0
  216. package/contracts/instance/InstanceReader.sol +290 -0
  217. package/contracts/instance/InstanceService.sol +170 -0
  218. package/contracts/instance/InstanceServiceManager.sol +56 -0
  219. package/contracts/instance/base/ComponentServiceBase.sol +12 -13
  220. package/contracts/instance/base/IInstanceBase.sol +11 -2
  221. package/contracts/instance/base/IKeyValueStore.sol +13 -13
  222. package/contracts/instance/base/ILifecycle.sol +3 -3
  223. package/contracts/instance/base/KeyValueStore.sol +53 -37
  224. package/contracts/instance/base/Lifecycle.sol +16 -11
  225. package/contracts/instance/module/IAccess.sol +38 -0
  226. package/contracts/instance/module/IBundle.sol +19 -0
  227. package/contracts/instance/module/IDistribution.sol +39 -0
  228. package/contracts/instance/module/IPolicy.sol +45 -0
  229. package/contracts/instance/module/IRisk.sol +11 -0
  230. package/contracts/instance/module/ISetup.sol +43 -0
  231. package/contracts/instance/module/ITreasury.sol +23 -0
  232. package/contracts/instance/service/ComponentOwnerService.sol +244 -97
  233. package/contracts/instance/service/DistributionService.sol +105 -0
  234. package/contracts/instance/service/DistributionServiceManager.sol +53 -0
  235. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  236. package/contracts/instance/service/IDistributionService.sol +12 -0
  237. package/contracts/instance/service/IPoolService.sol +8 -1
  238. package/contracts/instance/service/IProductService.sol +56 -7
  239. package/contracts/registry/ChainNft.sol +80 -37
  240. package/contracts/registry/IRegistry.sol +62 -25
  241. package/contracts/registry/IRegistryService.sol +33 -0
  242. package/contracts/registry/ITransferInterceptor.sol +6 -0
  243. package/contracts/registry/Registry.sol +375 -267
  244. package/contracts/registry/RegistryService.sol +399 -0
  245. package/contracts/registry/RegistryServiceManager.sol +80 -0
  246. package/contracts/registry/TokenRegistry.sol +111 -0
  247. package/contracts/shared/ContractDeployerLib.sol +72 -0
  248. package/contracts/shared/ERC165.sol +6 -2
  249. package/contracts/shared/INftOwnable.sol +22 -0
  250. package/contracts/shared/IRegisterable.sol +8 -15
  251. package/contracts/{instance/base → shared}/IService.sol +3 -3
  252. package/contracts/shared/IVersionable.sol +55 -11
  253. package/contracts/shared/NftOwnable.sol +136 -0
  254. package/contracts/shared/ProxyManager.sol +94 -0
  255. package/contracts/shared/Registerable.sol +63 -59
  256. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  257. package/contracts/shared/Service.sol +54 -0
  258. package/contracts/shared/TokenHandler.sol +27 -0
  259. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  260. package/contracts/shared/Versionable.sol +113 -55
  261. package/contracts/test/TestFee.sol +2 -2
  262. package/contracts/test/TestRegisterable.sol +5 -6
  263. package/contracts/test/TestRoleId.sol +1 -1
  264. package/contracts/test/TestService.sol +5 -13
  265. package/contracts/types/DistributorType.sol +55 -0
  266. package/contracts/types/Fee.sol +10 -5
  267. package/contracts/types/Key32.sol +8 -3
  268. package/contracts/types/NumberId.sol +52 -0
  269. package/contracts/types/ObjectType.sol +51 -14
  270. package/contracts/types/Referral.sol +85 -0
  271. package/contracts/types/RiskId.sol +43 -0
  272. package/contracts/types/RoleId.sol +60 -10
  273. package/contracts/types/StateId.sol +5 -1
  274. package/contracts/types/Timestamp.sol +7 -3
  275. package/contracts/types/UFixed.sol +128 -12
  276. package/contracts/types/Version.sol +13 -1
  277. package/package.json +4 -3
  278. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IIncrementRevert.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IIncrementRevert.json +0 -27
  280. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IncrementRevert.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/errors/IncrementRevert.sol/IncrementRevert.json +0 -83
  282. package/artifacts/contracts/experiment/errors/Revert.sol/IRevert.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/errors/Revert.sol/IRevert.json +0 -75
  284. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  285. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  286. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  287. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  288. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  289. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  291. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  292. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  293. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  294. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  295. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  297. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  298. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  299. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  300. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  301. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  302. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  303. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  304. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  305. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  306. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  307. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  308. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  309. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  310. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  311. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  312. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  313. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  314. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  315. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  316. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  317. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  318. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  319. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  320. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  321. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  322. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  323. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  324. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  325. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  326. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  327. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  328. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  329. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  330. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  331. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  332. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  333. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  334. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  335. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  336. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  337. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  338. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  339. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  340. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  341. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  342. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  343. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  344. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  345. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  346. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  347. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  348. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  349. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  350. package/contracts/experiment/errors/IncrementRevert.sol +0 -43
  351. package/contracts/experiment/statemachine/README.md +0 -112
  352. package/contracts/instance/IInstanceLinked.sol +0 -8
  353. package/contracts/instance/base/InstanceBase.sol +0 -80
  354. package/contracts/instance/base/ModuleBase.sol +0 -52
  355. package/contracts/instance/base/ServiceBase.sol +0 -37
  356. package/contracts/instance/module/access/Access.sol +0 -149
  357. package/contracts/instance/module/access/IAccess.sol +0 -53
  358. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  359. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  360. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  361. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  362. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  363. package/contracts/instance/module/component/IComponent.sol +0 -53
  364. package/contracts/instance/module/policy/IPolicy.sol +0 -61
  365. package/contracts/instance/module/policy/PolicyModule.sol +0 -77
  366. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  367. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  368. package/contracts/instance/module/risk/IRisk.sol +0 -10
  369. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  370. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  371. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  372. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  373. package/contracts/instance/service/PoolService.sol +0 -123
  374. package/contracts/instance/service/ProductService.sol +0 -354
  375. package/contracts/registry/IChainNft.sol +0 -21
  376. package/contracts/registry/IRegistryLinked.sol +0 -8
  377. package/contracts/shared/IOwnable.sol +0 -6
  378. package/contracts/test/TestPool.sol +0 -22
  379. package/contracts/test/TestProduct.sol +0 -44
@@ -1,52 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../registry/IRegistry.sol";
5
-
6
- import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
7
- import {Key32, KeyId} from "../../types/Key32.sol";
8
- import {LibNftIdSet} from "../../types/NftIdSet.sol";
9
- import {NftId} from "../../types/NftId.sol";
10
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
11
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
12
- import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
13
-
14
- import {IKeyValueStore} from "./IKeyValueStore.sol";
15
-
16
- abstract contract ModuleBase {
17
-
18
- IKeyValueStore private _store;
19
- ObjectType private _type;
20
-
21
- function _initialize(IKeyValueStore keyValueStore, ObjectType objectType) internal {
22
- _store = keyValueStore;
23
- _type = objectType;
24
- }
25
-
26
- function _create(NftId nftId, bytes memory data) internal {
27
- _store.create(
28
- _toKey32(nftId),
29
- _type,
30
- data);
31
- }
32
-
33
- function _updateData(NftId nftId, bytes memory data) internal {
34
- _store.updateData(_toKey32(nftId), data);
35
- }
36
-
37
- function _updateState(NftId nftId, StateId state) internal {
38
- _store.updateState(_toKey32(nftId), state);
39
- }
40
-
41
- function _getData(NftId nftId) internal view returns(bytes memory data) {
42
- return _store.getData(_toKey32(nftId));
43
- }
44
-
45
- function _getState(NftId nftId) internal view returns(StateId) {
46
- return _store.getState(_toKey32(nftId));
47
- }
48
-
49
- function _toKey32(NftId nftId) internal view returns (Key32 key32) {
50
- return nftId.toKey32(_type);
51
- }
52
- }
@@ -1,37 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId, zeroNftId} from "../../types/NftId.sol";
5
- import {ObjectType, SERVICE} from "../../types/ObjectType.sol";
6
- import {Version, VersionPart} from "../../types/Version.sol";
7
-
8
- import {Registerable} from "../../shared/Registerable.sol";
9
- import {IVersionable} from "../../shared/IVersionable.sol";
10
- import {Versionable} from "../../shared/Versionable.sol";
11
-
12
- import {IService} from "./IService.sol";
13
-
14
- abstract contract ServiceBase is
15
- Registerable,
16
- Versionable,
17
- IService
18
- {
19
-
20
- constructor(
21
- address registry,
22
- NftId registryNftId
23
- )
24
- Registerable(registry, registryNftId)
25
- Versionable()
26
- {
27
- _registerInterface(type(IService).interfaceId);
28
- }
29
-
30
- function getMajorVersion() external view override returns(VersionPart majorVersion) {
31
- return this.getVersion().toMajorPart();
32
- }
33
-
34
- function getType() external pure override returns (ObjectType) {
35
- return SERVICE();
36
- }
37
- }
@@ -1,149 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // role admin handling of oz doesn't fit nft ownability
5
- // import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
6
- import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
7
-
8
- import {RoleId, RoleIdLib} from "../../../types/RoleId.sol";
9
- import {DISTRIBUTOR_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../../../types/RoleId.sol";
10
- import {DISTRIBUTOR_OWNER_ROLE_NAME, ORACLE_OWNER_ROLE_NAME, POOL_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE_NAME} from "../../../types/RoleId.sol";
11
- import {IAccessModule} from "./IAccess.sol";
12
-
13
- abstract contract AccessModule is IAccessModule {
14
-
15
- using EnumerableSet for EnumerableSet.AddressSet;
16
-
17
- mapping(RoleId role => RoleInfo info) private _info;
18
- RoleId[] private _roles;
19
-
20
- mapping(RoleId role => mapping(address member => bool isMember))
21
- private _isRoleMember;
22
- mapping(RoleId role => EnumerableSet.AddressSet members) private _roleMembers;
23
-
24
- modifier onlyAccessOwner() {
25
- require(
26
- msg.sender == this.getOwner(),
27
- "ERROR:ACS-001:NOT_OWNER");
28
- _;
29
- }
30
-
31
- modifier onlyExistingRole(RoleId role) {
32
- require(
33
- _info[role].id == role,
34
- "ERROR:ACS-002:ROLE_NOT_EXISTING");
35
- _;
36
- }
37
-
38
- constructor() {
39
- _createRole(DISTRIBUTOR_OWNER_ROLE(), DISTRIBUTOR_OWNER_ROLE_NAME());
40
- _createRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME());
41
- _createRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME());
42
- _createRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME());
43
- }
44
-
45
- function createRole(
46
- string memory roleName
47
- ) public override onlyAccessOwner returns (RoleId role) {
48
- role = RoleIdLib.toRoleId(roleName);
49
- require(
50
- !roleExists(role),
51
- "ERROR:ACS-010:ROLE_ALREADY_EXISTS");
52
-
53
- _createRole(role, roleName);
54
- }
55
-
56
- function setRoleState(RoleId role, bool active) external override onlyExistingRole(role) onlyAccessOwner {
57
- RoleInfo memory info = _info[role];
58
- info.isActive = active;
59
- _setRoleInfo(info);
60
-
61
- emit LogAccessRoleStateSet(role, active);
62
- }
63
-
64
- function grantRole(
65
- RoleId role,
66
- address member
67
- ) external override onlyExistingRole(role) onlyAccessOwner {
68
- require(_info[role].isActive, "ERROR:ACS-040:ROLE_NOT_ACTIVE");
69
-
70
- _isRoleMember[role][member] = true;
71
- _roleMembers[role].add(member);
72
-
73
- emit LogAccessRoleGranted(role, member, _isRoleMember[role][member]);
74
- }
75
-
76
- function revokeRole(
77
- RoleId role,
78
- address member
79
- ) external override onlyExistingRole(role) onlyAccessOwner {
80
- delete _isRoleMember[role][member];
81
- _roleMembers[role].remove(member);
82
-
83
- emit LogAccessRoleGranted(role, member, false);
84
- }
85
-
86
- function roleExists(RoleId role) public view virtual override returns (bool) {
87
- return _info[role].id == role;
88
- }
89
-
90
- function hasRole(
91
- RoleId role,
92
- address member
93
- ) public view virtual override returns (bool) {
94
- return _isRoleMember[role][member];
95
- }
96
-
97
- function getRoleId(string memory roleName) external pure override returns (RoleId role) {
98
- return RoleIdLib.toRoleId(roleName);
99
- }
100
-
101
- function getRoleInfo(
102
- RoleId role
103
- ) external view override returns (RoleInfo memory info) {
104
- return _info[role];
105
- }
106
-
107
- function getRole(
108
- uint256 idx
109
- ) external view override returns (RoleId role) {
110
- return _roles[idx];
111
- }
112
-
113
- function getRoleCount() external view override returns (uint256 roles) {
114
- return _roles.length;
115
- }
116
-
117
- function getRoleMemberCount(
118
- RoleId role
119
- ) public view override returns (uint256 roleMembers) {
120
- return _roleMembers[role].length();
121
- }
122
-
123
- function getRoleMember(
124
- RoleId role,
125
- uint256 idx
126
- ) public view override returns (address roleMembers) {
127
- return _roleMembers[role].at(idx);
128
- }
129
-
130
- function _createRole(
131
- RoleId role,
132
- string memory roleName
133
- ) internal {
134
- RoleInfo memory info = RoleInfo(role, roleName, true);
135
- _setRoleInfo(info);
136
-
137
- emit LogAccessRoleCreated(role, roleName);
138
- }
139
-
140
- function _setRoleInfo(
141
- RoleInfo memory info
142
- ) internal {
143
- RoleId role = info.id;
144
- _info[role] = info;
145
- if(!roleExists(role)) {
146
- _roles.push(role);
147
- }
148
- }
149
- }
@@ -1,53 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {RoleId} from "../../../types/RoleId.sol";
5
-
6
- interface IAccess {
7
- struct RoleInfo {
8
- RoleId id;
9
- string name;
10
- bool isActive;
11
- }
12
- }
13
-
14
- interface IAccessModule is
15
- IAccess
16
- {
17
- event LogAccessRoleCreated(RoleId role, string roleName);
18
- event LogAccessRoleStateSet(RoleId role, bool active);
19
- event LogAccessRoleGranted(RoleId role, address member, bool isMember);
20
-
21
- function createRole(string memory roleName) external returns (RoleId role);
22
-
23
- function setRoleState(RoleId role, bool active) external;
24
-
25
- function grantRole(RoleId role, address member) external;
26
-
27
- function revokeRole(RoleId role, address member) external;
28
-
29
- function roleExists(RoleId role) external view returns (bool);
30
-
31
- function hasRole(RoleId role, address member) external view returns (bool);
32
-
33
- function getRoleCount() external view returns (uint256 roles);
34
-
35
- function getRole(uint256 idx) external view returns (RoleId role);
36
-
37
- function getRoleId(string memory roleName) external pure returns (RoleId role);
38
-
39
- function getRoleInfo(
40
- RoleId role
41
- ) external view returns (RoleInfo memory info);
42
-
43
- function getRoleMemberCount(
44
- RoleId role
45
- ) external view returns (uint256 roleMembers);
46
-
47
- function getRoleMember(
48
- RoleId role,
49
- uint256 idx
50
- ) external view returns (address roleMember);
51
-
52
- function getOwner() external view returns (address owner);
53
- }
@@ -1,136 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../../registry/IRegistry.sol";
5
-
6
- import {IProductService} from "../../service/IProductService.sol";
7
- import {IPoolService} from "../../service/IPoolService.sol";
8
-
9
- import {NftId} from "../../../types/NftId.sol";
10
- import {Key32, KeyId} from "../../../types/Key32.sol";
11
- import {LibNftIdSet} from "../../../types/NftIdSet.sol";
12
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../../types/ObjectType.sol";
13
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../../types/StateId.sol";
14
- import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
15
- import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
16
-
17
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
18
- import {ModuleBase} from "../../base/ModuleBase.sol";
19
-
20
- import {IBundleModule} from "./IBundle.sol";
21
-
22
- abstract contract BundleModule is
23
- ModuleBase,
24
- IBundleModule
25
- {
26
-
27
- using LibNftIdSet for LibNftIdSet.Set;
28
-
29
- mapping(NftId bundleNftId => LibNftIdSet.Set policies) private _collateralizedPolicies;
30
- mapping(NftId bundleNftId => mapping(NftId policyNftId => uint256 amount)) private _collateralizationAmount;
31
-
32
- modifier onlyBundlePoolService() {
33
- require(
34
- msg.sender == address(this.getPoolService()),
35
- "ERROR:BDL-001:NOT_POOL_SERVICE"
36
- );
37
- _;
38
- }
39
-
40
- modifier onlyBundleProductService() {
41
- require(
42
- msg.sender == address(this.getProductService()),
43
- "ERROR:BDL-002:NOT_PRODUCT_SERVICE"
44
- );
45
- _;
46
- }
47
-
48
- modifier onlyPoolOrProductService() {
49
- require(
50
- msg.sender == address(this.getPoolService())
51
- || msg.sender == address(this.getProductService()),
52
- "ERROR:BDL-003:NOT_POOL_OR_PRODUCT_SERVICE"
53
- );
54
- _;
55
- }
56
-
57
- function initializeBundleModule(IKeyValueStore keyValueStore) internal {
58
- _initialize(keyValueStore, BUNDLE());
59
- }
60
-
61
- function createBundleInfo(
62
- NftId bundleNftId,
63
- NftId poolNftId,
64
- uint256 amount,
65
- uint256 lifetime,
66
- bytes calldata filter
67
- )
68
- external
69
- onlyBundlePoolService
70
- override
71
- {
72
- BundleInfo memory bundleInfo = BundleInfo(
73
- bundleNftId,
74
- poolNftId,
75
- filter,
76
- amount, // capital
77
- 0, // locked capital
78
- amount, // balance
79
- blockTimestamp().addSeconds(lifetime), // expiredAt
80
- zeroTimestamp() // closedAt
81
- );
82
-
83
- _create(bundleNftId, abi.encode(bundleInfo));
84
- }
85
-
86
- function setBundleInfo(BundleInfo memory bundleInfo)
87
- external
88
- override
89
- onlyPoolOrProductService
90
- {
91
- _updateData(bundleInfo.nftId, abi.encode(bundleInfo));
92
- }
93
-
94
- function updateBundleState(NftId bundleNftId, StateId state)
95
- external
96
- override
97
- onlyBundlePoolService
98
- {
99
- _updateState(bundleNftId, state);
100
- }
101
-
102
- function collateralizePolicy(
103
- NftId bundleNftId,
104
- NftId policyNftId,
105
- uint256 collateralAmount
106
- )
107
- external
108
- onlyBundleProductService
109
- override
110
- {
111
- _collateralizationAmount[bundleNftId][policyNftId] = collateralAmount;
112
- _collateralizedPolicies[bundleNftId].add(policyNftId);
113
- }
114
-
115
- function releasePolicy(
116
- NftId bundleNftId,
117
- NftId policyNftId
118
- )
119
- external
120
- onlyBundleProductService
121
- override
122
- returns(uint256 collateralAmount)
123
- {
124
- collateralAmount = _collateralizationAmount[bundleNftId][policyNftId];
125
- delete _collateralizationAmount[bundleNftId][policyNftId];
126
- _collateralizedPolicies[bundleNftId].remove(policyNftId);
127
- }
128
-
129
- function getBundleInfo(NftId bundleNftId) external view override returns(BundleInfo memory bundleInfo) {
130
- return abi.decode(_getData(bundleNftId), (BundleInfo));
131
- }
132
-
133
- function toBundleKey32(NftId bundleNftId) external view override returns (Key32 key32) {
134
- return _toKey32(bundleNftId);
135
- }
136
- }
@@ -1,58 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../../registry/IRegistry.sol";
5
- import {IInstance} from "../../IInstance.sol";
6
- import {Key32} from "../../../types/Key32.sol";
7
- import {NftId} from "../../../types/NftId.sol";
8
- import {StateId} from "../../../types/StateId.sol";
9
- import {Timestamp} from "../../../types/Timestamp.sol";
10
- import {Blocknumber} from "../../../types/Blocknumber.sol";
11
-
12
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
13
- import {IProductService} from "../../service/IProductService.sol";
14
- import {IPoolService} from "../../service/IPoolService.sol";
15
-
16
- interface IBundle {
17
-
18
- struct BundleInfo {
19
- NftId nftId;
20
- NftId poolNftId;
21
- bytes filter; // required conditions for applications to be considered for collateralization by this bundle
22
- uint256 capitalAmount; // net investment capital amount (<= balance)
23
- uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
24
- uint256 balanceAmount; // total amount of funds: net investment capital + net premiums - payouts
25
- Timestamp expiredAt; // no new policies
26
- Timestamp closedAt;
27
- }
28
- }
29
-
30
- interface IBundleModule is IBundle {
31
-
32
- function createBundleInfo(
33
- NftId bundleNftId,
34
- NftId poolNftId,
35
- uint256 amount,
36
- uint256 lifetime,
37
- bytes calldata filter
38
- ) external;
39
-
40
- function setBundleInfo(BundleInfo memory bundleInfo) external;
41
- function updateBundleState(NftId bundleNftId, StateId state) external;
42
-
43
- function collateralizePolicy(NftId bundleNftId, NftId policyNftId, uint256 amount) external;
44
- function releasePolicy(NftId bundleNftId, NftId policyNftId) external returns(uint256 collateralAmount);
45
-
46
- function getBundleInfo(NftId bundleNftId) external view returns(BundleInfo memory bundleInfo);
47
- function toBundleKey32(NftId bundleNftId) external view returns (Key32 key32);
48
-
49
- // repeat registry linked signature
50
- function getRegistry() external view returns (IRegistry registry);
51
-
52
- // repeat instance base signature
53
- function getKeyValueStore() external view returns (IKeyValueStore keyValueStore);
54
-
55
- // repeat service linked signatures to avoid linearization issues
56
- function getProductService() external returns(IProductService);
57
- function getPoolService() external returns(IPoolService);
58
- }
@@ -1,8 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {ICompensationModule} from "./ICompensation.sol";
5
-
6
- contract CompensationModule is ICompensationModule {
7
-
8
- }
@@ -1,10 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- interface ICompensation {
5
-
6
- }
7
-
8
- interface ICompensationModule is ICompensation {
9
-
10
- }
@@ -1,95 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {IRegistry} from "../../../registry/IRegistry.sol";
7
- import {IInstance} from "../../IInstance.sol";
8
-
9
- import {IComponent, IComponentModule} from "./IComponent.sol";
10
- import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
11
- import {ObjectType, PRODUCT, ORACLE, POOL} from "../../../types/ObjectType.sol";
12
- import {StateId, ACTIVE, PAUSED} from "../../../types/StateId.sol";
13
- import {NftId, NftIdLib, zeroNftId} from "../../../types/NftId.sol";
14
- import {Fee} from "../../../types/Fee.sol";
15
-
16
- abstract contract ComponentModule is
17
- IComponentModule
18
- {
19
- using NftIdLib for NftId;
20
-
21
- mapping(NftId nftId => ComponentInfo info) private _componentInfo;
22
- NftId[] private _nftIds;
23
-
24
- mapping(ObjectType cType => bytes32 role) private _componentOwnerRole;
25
-
26
- modifier onlyComponentOwnerService() {
27
- require(
28
- msg.sender == address(this.getComponentOwnerService()),
29
- "ERROR:CMP-001:NOT_OWNER_SERVICE"
30
- );
31
- _;
32
- }
33
-
34
- function registerComponent(
35
- NftId nftId,
36
- ObjectType, // objectType,
37
- IERC20Metadata token
38
- ) external override onlyComponentOwnerService {
39
-
40
- // create component info
41
- _componentInfo[nftId] = ComponentInfo(
42
- nftId,
43
- // _lifecycleModule.getInitialState(objectType),
44
- ACTIVE(),
45
- token
46
- );
47
-
48
- _nftIds.push(nftId);
49
-
50
- // TODO add logging
51
- }
52
-
53
- function setComponentInfo(
54
- ComponentInfo memory info
55
- ) external onlyComponentOwnerService returns (NftId nftId) {
56
- nftId = info.nftId;
57
- require(
58
- nftId.gtz() && _componentInfo[nftId].nftId.eq(nftId),
59
- "ERROR:CMP-006:COMPONENT_UNKNOWN"
60
- );
61
-
62
- // TODO decide if state changes should have explicit functions and not
63
- // just a generic setXYZInfo and implicit state transitions
64
- // when in doubt go for the explicit approach ...
65
- // ObjectType objectType = this.getRegistry().getObjectInfo(nftId).objectType;
66
- // _lifecycleModule.checkAndLogTransition(
67
- // nftId,
68
- // objectType,
69
- // _componentInfo[nftId].state,
70
- // info.state
71
- // );
72
- _componentInfo[nftId] = info;
73
- }
74
-
75
- function getComponentCount()
76
- external
77
- view
78
- override
79
- returns (uint256 numberOfCompnents)
80
- {
81
- return _nftIds.length;
82
- }
83
-
84
- function getComponentId(
85
- uint256 idx
86
- ) external view override returns (NftId componentNftId) {
87
- return _nftIds[idx];
88
- }
89
-
90
- function getComponentInfo(
91
- NftId nftId
92
- ) external view override returns (ComponentInfo memory) {
93
- return _componentInfo[nftId];
94
- }
95
- }
@@ -1,53 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
-
7
- import {IRegistry} from "../../../registry/IRegistry.sol";
8
- import {IInstance} from "../../IInstance.sol";
9
- import {StateId} from "../../../types/StateId.sol";
10
- import {NftId} from "../../../types/NftId.sol";
11
- import {ObjectType} from "../../../types/ObjectType.sol";
12
- import {RoleId} from "../../../types/RoleId.sol";
13
- import {Fee} from "../../../types/Fee.sol";
14
- import {UFixed} from "../../../types/UFixed.sol";
15
-
16
- import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
17
- // import {IComponentBase} from "../../../components/IComponentBase.sol";
18
-
19
- interface IComponent {
20
- // component dynamic info (static info kept in registry)
21
- struct ComponentInfo {
22
- NftId nftId;
23
- StateId state;
24
- IERC20Metadata token;
25
- }
26
- }
27
-
28
- interface IComponentModule is IComponent {
29
- function getRegistry() external view returns (IRegistry registry);
30
-
31
- function registerComponent(
32
- NftId nftId,
33
- ObjectType objectType,
34
- IERC20Metadata token
35
- ) external;
36
-
37
- function setComponentInfo(
38
- ComponentInfo memory info
39
- ) external returns (NftId componentNftId);
40
-
41
- function getComponentInfo(
42
- NftId nftId
43
- ) external view returns (ComponentInfo memory info);
44
-
45
- function getComponentCount() external view returns (uint256 numberOfCompnents);
46
-
47
- function getComponentId(uint256 idx) external view returns (NftId nftId);
48
-
49
- // repeat service linked signaturea to avoid linearization issues
50
- function getComponentOwnerService() external view returns(IComponentOwnerService);
51
-
52
- function hasRole(RoleId role, address member) external view returns (bool);
53
- }