@etherisc/gif-next 0.0.2-e46206a-486 → 0.0.2-e510b92-393

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 (320) hide show
  1. package/README.md +67 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +152 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +220 -33
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +114 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +24 -57
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -50
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +291 -68
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +299 -58
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  37. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  39. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  40. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  41. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  42. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  43. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  44. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  45. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  46. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +775 -0
  47. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  48. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -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 +778 -1020
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +485 -0
  55. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  56. package/artifacts/contracts/instance/Instance.sol/Instance.json +2286 -1032
  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 +1422 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +970 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +512 -0
  65. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  66. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +272 -0
  67. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +59 -0
  69. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  72. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -253
  75. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  77. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  78. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  79. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  81. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  83. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  85. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  86. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  87. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  88. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  89. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  90. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  91. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +32 -48
  93. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +111 -41
  95. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  97. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +167 -0
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  102. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +40 -31
  103. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +322 -42
  105. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +464 -0
  107. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  108. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +176 -105
  109. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +201 -0
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -19
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.json +172 -49
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +61 -29
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +47 -34
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  124. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  125. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +1 -1
  132. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  133. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  135. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  136. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  137. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +4 -4
  139. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +2 -104
  141. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +2 -2
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  144. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  145. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  146. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  147. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +4 -4
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  153. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestService.sol/TestService.json +11 -11
  155. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  160. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  161. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  162. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  170. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  176. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  178. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  183. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  185. package/contracts/components/BaseComponent.sol +64 -11
  186. package/contracts/components/Distribution.sol +22 -14
  187. package/contracts/components/IBaseComponent.sol +14 -2
  188. package/contracts/components/IDistributionComponent.sol +1 -3
  189. package/contracts/components/IPoolComponent.sol +5 -3
  190. package/contracts/components/IProductComponent.sol +1 -3
  191. package/contracts/components/Pool.sol +50 -29
  192. package/contracts/components/Product.sol +50 -60
  193. package/contracts/instance/AccessManagedSimple.sol +115 -0
  194. package/contracts/instance/AccessManagerSimple.sol +692 -0
  195. package/contracts/instance/BundleManager.sol +129 -0
  196. package/contracts/instance/Cloneable.sol +46 -0
  197. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  198. package/contracts/instance/IInstance.sol +48 -44
  199. package/contracts/instance/IInstanceService.sol +32 -0
  200. package/contracts/instance/Instance.sol +434 -63
  201. package/contracts/instance/InstanceAccessManager.sol +288 -0
  202. package/contracts/instance/InstanceReader.sol +315 -0
  203. package/contracts/instance/InstanceService.sol +232 -0
  204. package/contracts/instance/InstanceServiceManager.sol +57 -0
  205. package/contracts/instance/ObjectManager.sol +95 -0
  206. package/contracts/instance/base/ComponentServiceBase.sol +93 -8
  207. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  208. package/contracts/instance/base/ILifecycle.sol +3 -3
  209. package/contracts/instance/base/KeyValueStore.sol +49 -39
  210. package/contracts/instance/base/Lifecycle.sol +1 -1
  211. package/contracts/instance/module/IAccess.sol +38 -0
  212. package/contracts/instance/module/IBundle.sol +20 -0
  213. package/contracts/instance/module/IDistribution.sol +39 -0
  214. package/contracts/instance/module/IPolicy.sol +45 -0
  215. package/contracts/instance/module/IRisk.sol +11 -0
  216. package/contracts/instance/module/ISetup.sol +46 -0
  217. package/contracts/instance/module/ITreasury.sol +23 -0
  218. package/contracts/instance/service/ComponentOwnerService.sol +62 -60
  219. package/contracts/instance/service/DistributionService.sol +49 -15
  220. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  221. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  222. package/contracts/instance/service/IDistributionService.sol +1 -1
  223. package/contracts/instance/service/IPoolService.sol +17 -3
  224. package/contracts/instance/service/IProductService.sol +8 -5
  225. package/contracts/instance/service/PoolService.sol +183 -45
  226. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  227. package/contracts/instance/service/ProductService.sol +175 -115
  228. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  229. package/contracts/registry/IRegistry.sol +26 -2
  230. package/contracts/registry/IRegistryService.sol +34 -19
  231. package/contracts/registry/Registry.sol +61 -36
  232. package/contracts/registry/RegistryService.sol +42 -125
  233. package/contracts/registry/RegistryServiceManager.sol +21 -5
  234. package/contracts/registry/TokenRegistry.sol +111 -0
  235. package/contracts/shared/ERC165.sol +6 -2
  236. package/contracts/{instance/base → shared}/IService.sol +3 -3
  237. package/contracts/shared/NftOwnable.sol +2 -4
  238. package/contracts/shared/Registerable.sol +1 -0
  239. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  240. package/contracts/shared/Service.sol +55 -0
  241. package/contracts/shared/TokenHandler.sol +27 -0
  242. package/contracts/test/TestService.sol +3 -5
  243. package/contracts/types/NftIdSet.sol +26 -24
  244. package/contracts/types/RoleId.sol +8 -0
  245. package/contracts/types/StateId.sol +4 -0
  246. package/contracts/types/Version.sol +4 -1
  247. package/package.json +1 -1
  248. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  249. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  250. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  251. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  252. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  253. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  254. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  255. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  256. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  257. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  258. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  259. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  260. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  261. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  262. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  263. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  264. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  265. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  266. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  267. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  268. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  269. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  270. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  271. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  272. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  273. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  274. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  275. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  276. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  277. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  278. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  279. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  280. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  281. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  282. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  283. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  284. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  285. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  286. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  287. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  288. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  289. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  291. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  293. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  294. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  295. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  296. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  297. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  298. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  299. package/contracts/instance/IInstanceLinked.sol +0 -8
  300. package/contracts/instance/base/InstanceBase.sol +0 -89
  301. package/contracts/instance/base/ModuleBase.sol +0 -57
  302. package/contracts/instance/base/ServiceBase.sol +0 -44
  303. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  304. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  305. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  306. package/contracts/instance/module/component/IComponent.sol +0 -28
  307. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  308. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  309. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  310. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  311. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  312. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  313. package/contracts/instance/module/risk/IRisk.sol +0 -26
  314. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  315. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  316. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  317. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  318. package/contracts/test/TestDistribution.sol +0 -22
  319. package/contracts/test/TestPool.sol +0 -27
  320. package/contracts/test/TestProduct.sol +0 -74
@@ -1,8 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IInstance} from "./IInstance.sol";
5
-
6
- interface IInstanceLinked {
7
- function getInstance() external view returns (IInstance instance);
8
- }
@@ -1,89 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {Versionable} from "../../shared/Versionable.sol";
5
- import {Registerable} from "../../shared/Registerable.sol";
6
-
7
- import {ObjectType, INSTANCE} from "../../types/ObjectType.sol";
8
- import {Key32} from "../../types/Key32.sol";
9
- import {NftId} from "../../types/NftId.sol";
10
- import {StateId} from "../../types/StateId.sol";
11
- import {Version, VersionPart, VersionLib} from "../../types/Version.sol";
12
-
13
- import {IComponentOwnerService} from "../service/IComponentOwnerService.sol";
14
- import {IDistributionService} from "../service/IDistributionService.sol";
15
- import {IProductService} from "../service/IProductService.sol";
16
- import {IPoolService} from "../service/IPoolService.sol";
17
-
18
- import {IKeyValueStore} from "./IKeyValueStore.sol";
19
- import {IInstance} from "../IInstance.sol";
20
- import {IInstanceBase} from "./IInstanceBase.sol";
21
-
22
- import {KeyValueStore} from "./KeyValueStore.sol";
23
-
24
- abstract contract InstanceBase is
25
- Versionable,
26
- Registerable,
27
- IInstanceBase
28
- {
29
- IKeyValueStore internal _keyValueStore;
30
-
31
- IComponentOwnerService internal _componentOwnerService;
32
- IDistributionService internal _distributionService;
33
- IProductService internal _productService;
34
- IPoolService internal _poolService;
35
-
36
- constructor(
37
- address registry,
38
- NftId registryNftId,
39
- address initialOwner
40
- )
41
- Versionable()
42
- {
43
- bytes memory data = "";
44
- _initializeRegisterable(registry, registryNftId, INSTANCE(), true, initialOwner, data);
45
- _keyValueStore = new KeyValueStore();
46
-
47
- _registerInterface(type(IInstance).interfaceId);
48
- _linkToServicesInRegistry();
49
- }
50
-
51
- function getKeyValueStore() public view virtual override returns (IKeyValueStore keyValueStore) { return _keyValueStore; }
52
-
53
- function updateState(Key32 key, StateId state) external override {
54
- _keyValueStore.updateState(key, state);
55
- }
56
-
57
- function getState(Key32 key) external view override returns (StateId state) {
58
- return _keyValueStore.getState(key);
59
- }
60
-
61
- // from versionable
62
- function getVersion()
63
- public
64
- pure
65
- virtual override
66
- returns(Version)
67
- {
68
- return VersionLib.toVersion(3,0,0);
69
- }
70
-
71
- // from registerable
72
-
73
- // internal / private functions
74
- function _linkToServicesInRegistry() internal {
75
- VersionPart majorVersion = getVersion().toMajorPart();
76
- _componentOwnerService = IComponentOwnerService(_getAndCheck("ComponentOwnerService", majorVersion));
77
- _distributionService = IDistributionService(_getAndCheck("DistributionService", majorVersion));
78
- _productService = IProductService(_getAndCheck("ProductService", majorVersion));
79
- _poolService = IPoolService(_getAndCheck("PoolService", majorVersion));
80
- }
81
-
82
- function _getAndCheck(string memory serviceName, VersionPart majorVersion) internal view returns (address serviceAddress) {
83
- serviceAddress = getRegistry().getServiceAddress(serviceName, majorVersion);
84
- require(
85
- serviceAddress != address(0),
86
- "ERROR:INS-001:NOT_REGISTERED"
87
- );
88
- }
89
- }
@@ -1,57 +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, zeroTimestamp} from "../../types/Timestamp.sol";
13
-
14
- import {IKeyValueStore} from "./IKeyValueStore.sol";
15
-
16
- abstract contract ModuleBase {
17
-
18
- IKeyValueStore private _store;
19
-
20
- function _initialize(IKeyValueStore keyValueStore) internal {
21
- _store = keyValueStore;
22
- }
23
-
24
- function _create(ObjectType objectType, Key32 key, bytes memory data) internal {
25
- _store.create(
26
- key,
27
- objectType,
28
- data);
29
- }
30
-
31
- function _create(ObjectType objectType, NftId nftId, bytes memory data) internal {
32
- _store.create(
33
- nftId.toKey32(objectType),
34
- objectType,
35
- data);
36
- }
37
-
38
- function _updateData(ObjectType objectType, NftId nftId, bytes memory data) internal {
39
- _store.updateData(nftId.toKey32(objectType), data);
40
- }
41
-
42
- function _updateState(ObjectType objectType, NftId nftId, StateId state) internal {
43
- _store.updateState(nftId.toKey32(objectType), state);
44
- }
45
-
46
- function _exists(ObjectType objectType, NftId nftId) internal view returns (bool hasData) {
47
- return _store.exists(nftId.toKey32(objectType));
48
- }
49
-
50
- function _getData(ObjectType objectType, NftId nftId) internal view returns(bytes memory data) {
51
- return _store.getData(nftId.toKey32(objectType));
52
- }
53
-
54
- function _getState(ObjectType objectType, NftId nftId) internal view returns(StateId) {
55
- return _store.getState(nftId.toKey32(objectType));
56
- }
57
- }
@@ -1,44 +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, VersionLib} from "../../types/Version.sol";
7
-
8
- import {Registerable} from "../../shared/Registerable.sol";
9
- import {IRegistry} from "../../registry/IRegistry.sol";
10
- import {IVersionable} from "../../shared/IVersionable.sol";
11
- import {Versionable} from "../../shared/Versionable.sol";
12
-
13
- import {IService} from "./IService.sol";
14
-
15
- abstract contract ServiceBase is
16
- Registerable,
17
- Versionable,
18
- IService
19
- {
20
- function getName() public pure virtual override returns(string memory name);
21
-
22
- function getMajorVersion() public view virtual override returns(VersionPart majorVersion) {
23
- return getVersion().toMajorPart();
24
- }
25
-
26
- // from Versionable
27
- function getVersion()
28
- public
29
- pure
30
- virtual override (IVersionable, Versionable)
31
- returns(Version)
32
- {
33
- return VersionLib.toVersion(3,0,0);
34
- }
35
-
36
- function _initializeServiceBase(address registry, NftId registryNftId, address initialOwner)
37
- internal
38
- //onlyInitializing //TODO uncomment when "fully" upgradeable
39
- {// service must provide its name and version upon registration
40
- bytes memory data = abi.encode(getName(), getMajorVersion());
41
- _initializeRegisterable(registry, registryNftId, SERVICE(), false, initialOwner, data);
42
- _registerInterface(type(IService).interfaceId);
43
- }
44
- }
@@ -1,134 +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 {Fee} from "../../../types/Fee.sol";
10
- import {NftId} from "../../../types/NftId.sol";
11
- import {Key32, KeyId} from "../../../types/Key32.sol";
12
- import {LibNftIdSet} from "../../../types/NftIdSet.sol";
13
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../../types/ObjectType.sol";
14
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../../types/StateId.sol";
15
- import {Timestamp, TimestampLib, zeroTimestamp} from "../../../types/Timestamp.sol";
16
- import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
17
-
18
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
19
- import {ModuleBase} from "../../base/ModuleBase.sol";
20
-
21
- import {IBundleModule} from "./IBundle.sol";
22
-
23
- abstract contract BundleModule is
24
- ModuleBase,
25
- IBundleModule
26
- {
27
-
28
- using LibNftIdSet for LibNftIdSet.Set;
29
-
30
- mapping(NftId bundleNftId => LibNftIdSet.Set policies) private _collateralizedPolicies;
31
- mapping(NftId bundleNftId => mapping(NftId policyNftId => uint256 amount)) private _collateralizationAmount;
32
-
33
- modifier onlyBundlePoolService() {
34
- require(
35
- msg.sender == address(this.getPoolService()),
36
- "ERROR:BDL-001:NOT_POOL_SERVICE"
37
- );
38
- _;
39
- }
40
-
41
- modifier onlyBundleProductService() {
42
- require(
43
- msg.sender == address(this.getProductService()),
44
- "ERROR:BDL-002:NOT_PRODUCT_SERVICE"
45
- );
46
- _;
47
- }
48
-
49
- modifier onlyPoolOrProductService() {
50
- require(
51
- msg.sender == address(this.getPoolService())
52
- || msg.sender == address(this.getProductService()),
53
- "ERROR:BDL-003:NOT_POOL_OR_PRODUCT_SERVICE"
54
- );
55
- _;
56
- }
57
-
58
- function initializeBundleModule(IKeyValueStore keyValueStore) internal {
59
- _initialize(keyValueStore);
60
- }
61
-
62
- function createBundleInfo(
63
- NftId bundleNftId,
64
- NftId poolNftId,
65
- Fee memory fee,
66
- uint256 amount,
67
- uint256 lifetime,
68
- bytes calldata filter
69
- )
70
- external
71
- onlyBundlePoolService
72
- override
73
- {
74
- BundleInfo memory info = BundleInfo(
75
- poolNftId,
76
- fee,
77
- filter,
78
- amount, // capital
79
- 0, // locked capital
80
- amount, // balance
81
- TimestampLib.blockTimestamp().addSeconds(lifetime), // expiredAt
82
- zeroTimestamp() // closedAt
83
- );
84
-
85
- _create(BUNDLE(), bundleNftId, abi.encode(info));
86
- }
87
-
88
- function setBundleInfo(NftId bundleNftId, BundleInfo memory info)
89
- external
90
- override
91
- onlyPoolOrProductService
92
- {
93
- _updateData(BUNDLE(), bundleNftId, abi.encode(info));
94
- }
95
-
96
- function updateBundleState(NftId bundleNftId, StateId state)
97
- external
98
- override
99
- onlyBundlePoolService
100
- {
101
- _updateState(BUNDLE(), bundleNftId, state);
102
- }
103
-
104
- function collateralizePolicy(
105
- NftId bundleNftId,
106
- NftId policyNftId,
107
- uint256 collateralAmount
108
- )
109
- external
110
- onlyBundleProductService
111
- override
112
- {
113
- _collateralizationAmount[bundleNftId][policyNftId] = collateralAmount;
114
- _collateralizedPolicies[bundleNftId].add(policyNftId);
115
- }
116
-
117
- function releasePolicy(
118
- NftId bundleNftId,
119
- NftId policyNftId
120
- )
121
- external
122
- onlyBundleProductService
123
- override
124
- returns(uint256 collateralAmount)
125
- {
126
- collateralAmount = _collateralizationAmount[bundleNftId][policyNftId];
127
- delete _collateralizationAmount[bundleNftId][policyNftId];
128
- _collateralizedPolicies[bundleNftId].remove(policyNftId);
129
- }
130
-
131
- function getBundleInfo(NftId bundleNftId) external view override returns(BundleInfo memory bundleInfo) {
132
- return abi.decode(_getData(BUNDLE(), bundleNftId), (BundleInfo));
133
- }
134
- }
@@ -1,53 +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 {Fee} from "../../../types/Fee.sol";
7
- import {Key32} from "../../../types/Key32.sol";
8
- import {NftId} from "../../../types/NftId.sol";
9
- import {StateId} from "../../../types/StateId.sol";
10
- import {Timestamp} from "../../../types/Timestamp.sol";
11
- import {Blocknumber} from "../../../types/Blocknumber.sol";
12
-
13
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
14
- import {IProductService} from "../../service/IProductService.sol";
15
- import {IPoolService} from "../../service/IPoolService.sol";
16
-
17
- interface IBundle {
18
-
19
- struct BundleInfo {
20
- NftId poolNftId;
21
- Fee fee; // bundle fee on net premium amounts
22
- bytes filter; // required conditions for applications to be considered for collateralization by this bundle
23
- uint256 capitalAmount; // net investment capital amount (<= balance)
24
- uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
25
- uint256 balanceAmount; // total amount of funds: net investment capital + net premiums - payouts
26
- Timestamp expiredAt; // no new policies
27
- Timestamp closedAt;
28
- }
29
- }
30
-
31
- interface IBundleModule is IBundle {
32
-
33
- function createBundleInfo(
34
- NftId bundleNftId,
35
- NftId poolNftId,
36
- Fee memory fee,
37
- uint256 amount,
38
- uint256 lifetime,
39
- bytes calldata filter
40
- ) external;
41
-
42
- function setBundleInfo(NftId nftId, BundleInfo memory bundleInfo) external;
43
- function updateBundleState(NftId nftId, StateId state) external;
44
-
45
- function collateralizePolicy(NftId bundleNftId, NftId policyNftId, uint256 amount) external;
46
- function releasePolicy(NftId bundleNftId, NftId policyNftId) external returns(uint256 collateralAmount);
47
-
48
- function getBundleInfo(NftId nftId) external view returns(BundleInfo memory bundleInfo);
49
-
50
- // repeat service linked signatures to avoid linearization issues
51
- function getProductService() external returns(IProductService);
52
- function getPoolService() external returns(IPoolService);
53
- }
@@ -1,71 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
6
- import {IComponentModule} from "./IComponent.sol";
7
-
8
- import {NftId} from "../../../types/NftId.sol";
9
- import {ObjectType, COMPONENT} from "../../../types/ObjectType.sol";
10
- import {StateId} from "../../../types/StateId.sol";
11
- import {ModuleBase} from "../../base/ModuleBase.sol";
12
-
13
- abstract contract ComponentModule is
14
- ModuleBase,
15
- IComponentModule
16
- {
17
-
18
- NftId[] private _nftIds;
19
-
20
- // TODO try to keep 1 modifier in 1 place...
21
- modifier onlyComponentOwnerService() virtual {
22
- require(
23
- msg.sender == address(this.getComponentOwnerService()),
24
- "ERROR:CMP-001:NOT_COMPONENT_OWNER_SERVICE"
25
- );
26
- _;
27
- }
28
-
29
- function initializeComponentModule(IKeyValueStore keyValueStore) internal {
30
- _initialize(keyValueStore);
31
- }
32
-
33
- function registerComponent(
34
- NftId nftId,
35
- IERC20Metadata token,
36
- address wallet
37
- )
38
- external
39
- onlyComponentOwnerService
40
- override
41
- {
42
- ComponentInfo memory info = ComponentInfo(token, wallet);
43
- _nftIds.push(nftId);
44
- _create(COMPONENT(), nftId, abi.encode(info));
45
- }
46
-
47
- function getComponentToken(NftId nftId) external view override returns(IERC20Metadata token) {
48
- ComponentInfo memory info = abi.decode(_getData(COMPONENT(), nftId), (ComponentInfo));
49
- return info.token;
50
- }
51
-
52
- function getComponentWallet(NftId nftId) external view override returns (address wallet) {
53
- ComponentInfo memory info = abi.decode(_getData(COMPONENT(), nftId), (ComponentInfo));
54
- return info.wallet;
55
- }
56
-
57
- function getComponentCount()
58
- external
59
- view
60
- override
61
- returns (uint256 numberOfCompnents)
62
- {
63
- return _nftIds.length;
64
- }
65
-
66
- function getComponentId(
67
- uint256 idx
68
- ) external view override returns (NftId componentNftId) {
69
- return _nftIds[idx];
70
- }
71
- }
@@ -1,28 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.20;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
- import {IComponentOwnerService} from "../../service/IComponentOwnerService.sol";
6
-
7
- import {StateId} from "../../../types/StateId.sol";
8
- import {NftId} from "../../../types/NftId.sol";
9
-
10
- interface IComponent {
11
- struct ComponentInfo {
12
- IERC20Metadata token;
13
- address wallet;
14
- }
15
- }
16
-
17
- interface IComponentModule is IComponent {
18
-
19
- function registerComponent(NftId nftId, IERC20Metadata token, address wallet) external;
20
- function getComponentToken(NftId nftId) external view returns (IERC20Metadata token);
21
- function getComponentWallet(NftId nftId) external view returns (address wallet);
22
-
23
- function getComponentCount() external view returns (uint256 numberOfCompnents);
24
- function getComponentId(uint256 idx) external view returns (NftId nftId);
25
-
26
- // repeat service linked signaturea to avoid linearization issues
27
- function getComponentOwnerService() external view returns(IComponentOwnerService);
28
- }
@@ -1,17 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IDistributionModule} from "./IDistribution.sol";
5
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
6
- import {ModuleBase} from "../../base/ModuleBase.sol";
7
-
8
- contract DistributionModule is
9
- ModuleBase,
10
- IDistributionModule
11
- {
12
-
13
- function initializeDistributionModule(IKeyValueStore keyValueStore) internal {
14
- _initialize(keyValueStore);
15
- }
16
-
17
- }
@@ -1,10 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- interface IDistribution {
5
-
6
- }
7
-
8
- interface IDistributionModule is IDistribution {
9
-
10
- }
@@ -1,63 +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 {IProductService} from "../../service/IProductService.sol";
7
- import {NftId} from "../../../types/NftId.sol";
8
- import {ReferralId} from "../../../types/Referral.sol";
9
- import {RiskId} from "../../../types/RiskId.sol";
10
- import {StateId} from "../../../types/StateId.sol";
11
- import {Timestamp} from "../../../types/Timestamp.sol";
12
-
13
- // TODO check if there is value to introuce IContract and let IPolicy derive from IContract
14
- interface IPolicy {
15
- struct PolicyInfo {
16
- NftId productNftId;
17
- NftId bundleNftId;
18
- ReferralId referralId;
19
- address beneficiary;
20
- RiskId riskId;
21
- uint256 sumInsuredAmount;
22
- uint256 premiumAmount;
23
- uint256 premiumPaidAmount;
24
- uint256 lifetime;
25
- bytes applicationData;
26
- bytes policyData;
27
- Timestamp activatedAt; // time of underwriting
28
- Timestamp expiredAt; // no new claims (activatedAt + lifetime)
29
- Timestamp closedAt; // no locked capital
30
- }
31
- }
32
-
33
- interface IPolicyModule is IPolicy {
34
- function createPolicyInfo(
35
- NftId policyNftId,
36
- NftId productNftId,
37
- ReferralId referralId,
38
- RiskId riskId,
39
- uint256 sumInsuredAmount,
40
- uint256 premiumAmount,
41
- uint256 lifetime,
42
- NftId bundleNftId
43
- ) external;
44
-
45
- function setPolicyInfo(NftId policyNftId, PolicyInfo memory info) external;
46
- function updatePolicyState(NftId nftId, StateId state) external;
47
-
48
- // function underwrite(NftId nftId) external;
49
-
50
- // function processPremium(NftId nftId, uint256 amount) external;
51
-
52
- // function activate(NftId nftId, Timestamp activateAt) external;
53
-
54
- function getPolicyInfo(
55
- NftId nftId
56
- ) external view returns (PolicyInfo memory info);
57
-
58
- // repeat registry linked signature
59
- // function getRegistry() external view returns (IRegistry registry);
60
-
61
- // repeat service linked signature to avoid linearization issues
62
- function getProductService() external returns(IProductService);
63
- }
@@ -1,91 +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 {IPolicy, IPolicyModule} from "./IPolicy.sol";
8
- import {ObjectType, POLICY} from "../../../types/ObjectType.sol";
9
- import {NftId, NftIdLib} from "../../../types/NftId.sol";
10
- import {ReferralId} from "../../../types/Referral.sol";
11
- import {RiskId} from "../../../types/RiskId.sol";
12
- import {StateId} from "../../../types/StateId.sol";
13
- import {Timestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
14
-
15
- import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
16
- import {ModuleBase} from "../../base/ModuleBase.sol";
17
-
18
- abstract contract PolicyModule is
19
- ModuleBase,
20
- IPolicyModule
21
- {
22
-
23
- // TODO find a better place to avoid dupliation
24
- modifier onlyProductService2() {
25
- require(
26
- msg.sender == address(this.getProductService()),
27
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
28
- );
29
- _;
30
- }
31
-
32
- function initializePolicyModule(IKeyValueStore keyValueStore) internal {
33
- _initialize(keyValueStore);
34
- }
35
-
36
- function createPolicyInfo(
37
- NftId policyNftId,
38
- NftId productNftId,
39
- ReferralId referralId,
40
- RiskId riskId,
41
- uint256 sumInsuredAmount,
42
- uint256 premiumAmount,
43
- uint256 lifetime,
44
- NftId bundleNftId
45
- )
46
- external
47
- onlyProductService2
48
- override
49
- {
50
- PolicyInfo memory info = PolicyInfo(
51
- productNftId,
52
- bundleNftId,
53
- referralId,
54
- address(0), // beneficiary = policy nft holder
55
- riskId,
56
- sumInsuredAmount,
57
- premiumAmount,
58
- 0, // premium paid amount
59
- lifetime,
60
- "", // applicationData
61
- "", // policyData
62
- zeroTimestamp(), // activatedAt
63
- zeroTimestamp(), // expiredAt
64
- zeroTimestamp() // closedAt
65
- );
66
-
67
- _create(POLICY(), policyNftId, abi.encode(info));
68
- }
69
-
70
- function setPolicyInfo(NftId policyNftId, PolicyInfo memory info)
71
- external
72
- override
73
- onlyProductService2
74
- {
75
- _updateData(POLICY(), policyNftId, abi.encode(info));
76
- }
77
-
78
- function updatePolicyState(NftId bundleNftId, StateId state)
79
- external
80
- override
81
- onlyProductService2
82
- {
83
- _updateState(POLICY(), bundleNftId, state);
84
- }
85
-
86
- function getPolicyInfo(
87
- NftId nftId
88
- ) external view returns (PolicyInfo memory info) {
89
- return abi.decode(_getData(POLICY(), nftId), (PolicyInfo));
90
- }
91
- }