@etherisc/gif-next 0.0.2-836a512-798 → 0.0.2-836e6e4-400

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 (431) hide show
  1. package/README.md +339 -8
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/BaseComponent.sol/BaseComponent.json} +254 -237
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +772 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/access/Access.sol/AccessModule.json → components/IBaseComponent.sol/IBaseComponent.json} +207 -223
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/policy/PolicyModule.sol/PolicyModule.json → components/IPoolComponent.sol/IPoolComponent.json} +143 -122
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +157 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +718 -79
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +628 -91
  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/Require.sol/Require.json +2 -2
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  42. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  44. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  45. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  46. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  47. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  48. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  49. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  50. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  51. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  52. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  54. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  55. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1145 -771
  58. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  59. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  60. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +541 -0
  62. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  63. package/artifacts/contracts/instance/Instance.sol/Instance.json +2219 -769
  64. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1057 -0
  66. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  68. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  70. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +879 -0
  72. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +444 -0
  74. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  75. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  76. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +521 -0
  78. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  80. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  82. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  83. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  84. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  86. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  88. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +243 -0
  90. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  92. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  94. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  95. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  96. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  98. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  99. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  100. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  101. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  102. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +923 -0
  104. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +432 -0
  106. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +814 -0
  108. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +671 -0
  110. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +420 -0
  112. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  114. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  116. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  118. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  120. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +499 -0
  122. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +536 -0
  124. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +971 -0
  126. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  128. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +705 -0
  130. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +420 -0
  132. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +755 -0
  134. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
  136. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  137. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  138. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  139. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +487 -31
  140. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  141. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +976 -0
  142. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  143. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  144. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  145. package/artifacts/contracts/registry/Registry.sol/Registry.json +545 -47
  146. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  147. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  148. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  149. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1195 -0
  150. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  151. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -0
  152. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  153. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +546 -0
  154. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  155. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
  156. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  158. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  160. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  162. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  163. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IRegisterable.sol/IRegisterable.json} +98 -102
  164. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IService.sol/IService.json +421 -0
  166. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  168. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  170. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  171. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  172. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +274 -0
  174. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  175. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  176. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  178. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  179. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  180. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  181. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  182. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  183. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  184. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  186. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  187. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +305 -0
  188. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  189. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  190. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  191. package/artifacts/contracts/test/TestService.sol/TestService.json +600 -0
  192. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  193. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  194. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  195. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  196. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  197. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  198. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  199. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  200. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  201. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  202. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  204. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  206. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  208. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  210. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  212. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  214. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  215. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  216. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  218. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  220. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  222. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  224. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  226. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  227. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  228. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  229. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -2
  230. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  232. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  234. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  235. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  236. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  237. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  238. package/contracts/components/BaseComponent.sol +148 -0
  239. package/contracts/components/Distribution.sol +163 -0
  240. package/contracts/components/IBaseComponent.sol +32 -0
  241. package/contracts/components/IDistributionComponent.sol +44 -0
  242. package/contracts/components/IPoolComponent.sol +66 -0
  243. package/contracts/components/IProductComponent.sol +35 -0
  244. package/contracts/components/Pool.sol +247 -21
  245. package/contracts/components/Product.sol +252 -41
  246. package/contracts/experiment/cloning/Cloner.sol +47 -0
  247. package/contracts/experiment/statemachine/Dummy.sol +12 -18
  248. package/contracts/experiment/statemachine/ISM.sol +7 -2
  249. package/contracts/experiment/statemachine/SM.sol +15 -12
  250. package/contracts/experiment/statemachine/SimpleStateMachine.sol +11 -4
  251. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  252. package/contracts/instance/BundleManager.sol +129 -0
  253. package/contracts/instance/Cloneable.sol +46 -0
  254. package/contracts/instance/IInstance.sol +61 -21
  255. package/contracts/instance/IInstanceBase.sol +26 -0
  256. package/contracts/instance/IInstanceService.sol +38 -0
  257. package/contracts/instance/Instance.sol +267 -60
  258. package/contracts/instance/InstanceAccessManager.sol +304 -0
  259. package/contracts/instance/InstanceBase.sol +41 -0
  260. package/contracts/instance/InstanceReader.sol +315 -0
  261. package/contracts/instance/InstanceService.sol +300 -0
  262. package/contracts/instance/InstanceServiceManager.sol +54 -0
  263. package/contracts/instance/ObjectManager.sol +101 -0
  264. package/contracts/instance/base/ComponentServiceBase.sol +72 -0
  265. package/contracts/instance/base/IInstanceBase.sol +23 -0
  266. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  267. package/contracts/instance/base/ILifecycle.sol +30 -0
  268. package/contracts/instance/base/KeyValueStore.sol +172 -0
  269. package/contracts/instance/base/Lifecycle.sol +100 -0
  270. package/contracts/instance/module/IAccess.sol +48 -0
  271. package/contracts/instance/module/IBundle.sol +20 -0
  272. package/contracts/instance/module/IDistribution.sol +39 -0
  273. package/contracts/instance/module/IPolicy.sol +45 -0
  274. package/contracts/instance/module/IRisk.sol +11 -0
  275. package/contracts/instance/module/ISetup.sol +46 -0
  276. package/contracts/instance/module/ITreasury.sol +23 -0
  277. package/contracts/instance/service/BundleService.sol +260 -0
  278. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  279. package/contracts/instance/service/ComponentOwnerService.sol +315 -0
  280. package/contracts/instance/service/DistributionService.sol +114 -0
  281. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  282. package/contracts/instance/service/IBundleService.sol +45 -0
  283. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  284. package/contracts/instance/service/IDistributionService.sol +12 -0
  285. package/contracts/instance/service/IPolicyService.sol +87 -0
  286. package/contracts/instance/service/IPoolService.sol +20 -0
  287. package/contracts/instance/service/IProductService.sol +40 -0
  288. package/contracts/instance/service/PolicyService.sol +503 -0
  289. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  290. package/contracts/instance/service/PoolService.sol +122 -0
  291. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  292. package/contracts/instance/service/ProductService.sol +168 -0
  293. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  294. package/contracts/registry/ChainNft.sol +129 -62
  295. package/contracts/registry/IRegistry.sol +65 -43
  296. package/contracts/registry/IRegistryService.sol +58 -0
  297. package/contracts/registry/ITransferInterceptor.sol +6 -0
  298. package/contracts/registry/Registry.sol +346 -127
  299. package/contracts/registry/RegistryAccessManager.sol +210 -0
  300. package/contracts/registry/RegistryService.sol +323 -0
  301. package/contracts/registry/RegistryServiceManager.sol +62 -0
  302. package/contracts/registry/ReleaseManager.sol +348 -0
  303. package/contracts/registry/TokenRegistry.sol +110 -0
  304. package/contracts/shared/ContractDeployerLib.sol +72 -0
  305. package/contracts/shared/ERC165.sol +25 -0
  306. package/contracts/shared/INftOwnable.sol +22 -0
  307. package/contracts/shared/IRegisterable.sol +17 -0
  308. package/contracts/shared/IService.sol +16 -0
  309. package/contracts/shared/IVersionable.sol +96 -0
  310. package/contracts/shared/NftOwnable.sol +134 -0
  311. package/contracts/shared/ProxyManager.sol +94 -0
  312. package/contracts/shared/Registerable.sol +90 -0
  313. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  314. package/contracts/shared/Service.sol +58 -0
  315. package/contracts/shared/TokenHandler.sol +27 -0
  316. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  317. package/contracts/shared/Versionable.sol +147 -0
  318. package/contracts/test/TestFee.sol +25 -0
  319. package/contracts/test/TestRegisterable.sol +18 -0
  320. package/contracts/test/TestRoleId.sol +14 -0
  321. package/contracts/test/TestService.sol +25 -0
  322. package/contracts/test/TestToken.sol +26 -0
  323. package/contracts/test/TestVersion.sol +44 -0
  324. package/contracts/test/TestVersionable.sol +17 -0
  325. package/contracts/test/Usdc.sol +26 -0
  326. package/contracts/types/AddressSet.sol +58 -0
  327. package/contracts/types/DistributorType.sol +55 -0
  328. package/contracts/types/Fee.sol +42 -16
  329. package/contracts/types/Key32.sol +50 -0
  330. package/contracts/types/NftId.sol +22 -1
  331. package/contracts/types/NftIdSet.sol +62 -0
  332. package/contracts/types/NumberId.sol +52 -0
  333. package/contracts/types/ObjectType.sol +125 -23
  334. package/contracts/types/Referral.sol +85 -0
  335. package/contracts/types/RiskId.sol +43 -0
  336. package/contracts/types/RoleId.sol +90 -0
  337. package/contracts/types/StateId.sol +80 -21
  338. package/contracts/types/Timestamp.sol +29 -4
  339. package/contracts/types/UFixed.sol +150 -31
  340. package/contracts/types/Version.sol +107 -0
  341. package/package.json +14 -5
  342. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  343. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  345. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  346. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  347. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  348. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  349. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  350. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  351. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  352. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  353. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  354. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  355. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  356. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  357. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  358. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -318
  359. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  360. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  361. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  362. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  363. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  364. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  365. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -236
  366. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  367. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  368. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  369. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  370. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  371. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  372. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  375. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  376. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  378. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  380. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  382. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  384. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  386. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  388. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  390. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  391. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  392. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  393. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -355
  395. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  396. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  397. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -355
  399. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  401. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  402. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  403. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  404. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  405. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  406. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  407. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  408. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  409. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  410. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  411. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  412. package/contracts/components/Component.sol +0 -77
  413. package/contracts/components/IPool.sol +0 -11
  414. package/contracts/components/IProduct.sol +0 -11
  415. package/contracts/experiment/statemachine/README.md +0 -112
  416. package/contracts/instance/access/Access.sol +0 -165
  417. package/contracts/instance/access/IAccess.sol +0 -63
  418. package/contracts/instance/component/ComponentModule.sol +0 -254
  419. package/contracts/instance/component/IComponent.sol +0 -76
  420. package/contracts/instance/lifecycle/ILifecycle.sol +0 -32
  421. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -91
  422. package/contracts/instance/policy/IPolicy.sol +0 -52
  423. package/contracts/instance/policy/PolicyModule.sol +0 -107
  424. package/contracts/instance/pool/IPoolModule.sol +0 -22
  425. package/contracts/instance/pool/PoolModule.sol +0 -82
  426. package/contracts/instance/product/IProductService.sol +0 -36
  427. package/contracts/instance/product/ProductService.sol +0 -118
  428. package/contracts/instance/treasury/ITreasury.sol +0 -73
  429. package/contracts/instance/treasury/TokenHandler.sol +0 -27
  430. package/contracts/instance/treasury/TreasuryModule.sol +0 -131
  431. package/contracts/registry/IChainNft.sol +0 -21
@@ -1,91 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
6
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
7
- import {ILifecycleModule} from "./ILifecycle.sol";
8
-
9
- contract LifecycleModule is ILifecycleModule {
10
-
11
- mapping(ObjectType objectType => StateId initialState) private _initialState;
12
-
13
- mapping(ObjectType objectType =>
14
- mapping(StateId stateFrom =>
15
- mapping(StateId stateTo => bool isValid))) private _isValidTransition;
16
-
17
-
18
- constructor() {
19
- _setupComponentLifecycle(PRODUCT());
20
- _setupComponentLifecycle(ORACLE());
21
- _setupComponentLifecycle(POOL());
22
-
23
- _setupBundleLifecycle();
24
- _setupPolicyLifecycle();
25
- }
26
-
27
-
28
- function checkAndLogTransition(NftId nftId, ObjectType objectType, StateId fromId, StateId toId)
29
- public
30
- returns(StateId)
31
- // add only currentcontract? would that work?
32
- {
33
- if(!_isValidTransition[objectType][fromId][toId]) {
34
- revert ErrorInvalidStateTransition(nftId, objectType, fromId, toId);
35
- }
36
-
37
- if(objectType == POLICY()) {
38
- emit LogPolicyStateChanged(nftId, fromId, toId);
39
- } else if(objectType == BUNDLE()) {
40
- emit LogBundleStateChanged(nftId, fromId, toId);
41
- } else if(objectType == PRODUCT() || objectType == ORACLE() || objectType == POOL()) {
42
- emit LogComponentStateChanged(nftId, objectType, fromId, toId);
43
- } else {
44
- revert ErrorNoLifecycle(nftId, objectType);
45
- }
46
-
47
- return toId;
48
- }
49
-
50
- function getInitialState(ObjectType objectType)
51
- public
52
- view
53
- returns(StateId)
54
- {
55
- return _initialState[objectType];
56
- }
57
-
58
-
59
- function isValidTransition(ObjectType objectType, StateId fromId, StateId toId)
60
- public
61
- view
62
- returns(bool)
63
- {
64
- return _isValidTransition[objectType][fromId][toId];
65
- }
66
-
67
-
68
- function _setupComponentLifecycle(ObjectType objectType) internal {
69
- _initialState[objectType] = ACTIVE();
70
- _isValidTransition[objectType][ACTIVE()][PAUSED()] = true;
71
- _isValidTransition[objectType][PAUSED()][ACTIVE()] = true;
72
- _isValidTransition[objectType][PAUSED()][ARCHIVED()] = true;
73
- }
74
-
75
-
76
- function _setupBundleLifecycle() internal {
77
- _initialState[BUNDLE()] = ACTIVE();
78
- _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
79
- _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
80
- _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
81
- }
82
-
83
-
84
- function _setupPolicyLifecycle() internal {
85
- _initialState[POLICY()] = APPLIED();
86
- _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
87
- _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
88
- _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
89
- _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
90
- }
91
- }
@@ -1,52 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {IProductService} from "../product/IProductService.sol";
7
- import {NftId} from "../../types/NftId.sol";
8
- import {StateId} from "../../types/StateId.sol";
9
-
10
- // TODO check if there is value to introuce IContract and let IPolicy derive from IContract
11
- interface IPolicy {
12
-
13
- struct PolicyInfo {
14
- NftId nftId;
15
- StateId state; // applied, withdrawn, rejected, active, closed
16
- // TODO add beneficiary address
17
- uint256 sumInsuredAmount;
18
- uint256 premiumAmount;
19
- uint256 premiumPaidAmount;
20
- uint256 lifetime; // activatedAt + lifetime >= expiredAt
21
- uint256 createdAt;
22
- uint256 updatedAt;
23
- uint256 activatedAt; // time of underwriting
24
- uint256 expiredAt; // no new claims
25
- uint256 closedAt; // no locked capital
26
- }
27
- }
28
-
29
- interface IPolicyModule is IOwnable, IRegistryLinked, IPolicy {
30
-
31
- function createApplication(
32
- IRegistry.RegistryInfo memory productInfo,
33
- address applicationOwner,
34
- uint256 sumInsuredAmount,
35
- uint256 premiumAmount,
36
- uint256 lifetime,
37
- NftId bundleNftId
38
- ) external returns (NftId nftId);
39
-
40
- // process full premium
41
- function processPremium(NftId nftId) external;
42
-
43
- function activate(NftId nftId) external;
44
-
45
- function getBundleNftForPolicy(
46
- NftId nftId
47
- ) external view returns (NftId bundleNft);
48
-
49
- function getPolicyInfo(
50
- NftId nftId
51
- ) external view returns (PolicyInfo memory info);
52
- }
@@ -1,107 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
6
-
7
- import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
8
- import {IProductService} from "../product/IProductService.sol";
9
- import {IPolicy, IPolicyModule} from "./IPolicy.sol";
10
- import {ObjectType, POLICY} from "../../types/ObjectType.sol";
11
- import {ACTIVE} from "../../types/StateId.sol";
12
- import {NftId, NftIdLib} from "../../types/NftId.sol";
13
-
14
- import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
15
-
16
- abstract contract PolicyModule is
17
- IRegistryLinked,
18
- IPolicyModule
19
- {
20
- using NftIdLib for NftId;
21
-
22
- mapping(NftId nftId => PolicyInfo info) private _policyInfo;
23
- mapping(NftId nftId => NftId bundleNftId) private _bundleForPolicy;
24
-
25
- LifecycleModule private _lifecycleModule;
26
- IProductService private _productService;
27
-
28
- // TODO find a better place to avoid dupliation
29
- modifier onlyProductService2() {
30
- require(
31
- address(_productService) == msg.sender,
32
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
33
- );
34
- _;
35
- }
36
-
37
- constructor(address productService) {
38
- _lifecycleModule = LifecycleModule(address(this));
39
- _productService = IProductService(productService);
40
- }
41
-
42
- function createApplication(
43
- IRegistry.RegistryInfo memory productInfo,
44
- address applicationOwner,
45
- uint256 sumInsuredAmount,
46
- uint256 premiumAmount,
47
- uint256 lifetime,
48
- NftId bundleNftId
49
- ) external override onlyProductService2 returns (NftId nftId) {
50
- // TODO add parameter validation
51
- if (bundleNftId.gtz()) {
52
- // IRegistry.RegistryInfo memory bundleInfo = this
53
- // .getRegistry()
54
- // .getInfo(bundleNftId);
55
- // IRegistry.RegistryInfo memory poolInfo = this.getRegistry().getInfo(bundleInfo.parentNftId);
56
- }
57
-
58
- nftId = this.getRegistry().registerObjectForInstance(
59
- productInfo.nftId,
60
- POLICY(),
61
- applicationOwner);
62
-
63
- _policyInfo[nftId] = PolicyInfo(
64
- nftId,
65
- _lifecycleModule.getInitialState(POLICY()),
66
- sumInsuredAmount,
67
- premiumAmount,
68
- 0, // premium paid amount
69
- lifetime,
70
- block.timestamp, // createdAt
71
- block.timestamp, // updatedAt
72
- 0, // activatedAt
73
- 0, // expiredAt
74
- 0 // closedAt
75
- );
76
-
77
- _bundleForPolicy[nftId] = bundleNftId;
78
-
79
- // add logging
80
- }
81
-
82
- function processPremium(NftId nftId) external override onlyProductService2 {
83
- PolicyInfo storage info = _policyInfo[nftId];
84
- info.premiumPaidAmount = info.premiumAmount;
85
- info.updatedAt = block.timestamp;
86
- }
87
-
88
-
89
- function activate(NftId nftId) external override onlyProductService2 {
90
- PolicyInfo storage info = _policyInfo[nftId];
91
- info.activatedAt = block.timestamp;
92
- info.expiredAt = block.timestamp + info.lifetime;
93
- info.state = _lifecycleModule.checkAndLogTransition(nftId, POLICY(), info.state, ACTIVE());
94
- }
95
-
96
- function getBundleNftForPolicy(
97
- NftId nftId
98
- ) external view returns (NftId bundleNft) {
99
- return _bundleForPolicy[nftId];
100
- }
101
-
102
- function getPolicyInfo(
103
- NftId nftId
104
- ) external view returns (PolicyInfo memory info) {
105
- return _policyInfo[nftId];
106
- }
107
- }
@@ -1,22 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
5
- import {NftId} from "../../types/NftId.sol";
6
-
7
- interface IPool {
8
- struct PoolInfo {
9
- NftId nftId;
10
- uint256 capital;
11
- uint256 lockedCapital;
12
- }
13
- }
14
-
15
- interface IPoolModule is IOwnable, IRegistryLinked, IPool {
16
-
17
- function underwrite(NftId policyNftId, NftId productNftId) external;
18
-
19
- function registerPool(NftId nftId) external;
20
-
21
- function getPoolInfo(NftId nftId) external view returns (PoolInfo memory info);
22
- }
@@ -1,82 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
5
- import {IProductService} from "../product/IProductService.sol";
6
- import {IPolicy, IPolicyModule} from "../policy/IPolicy.sol";
7
- import {ITreasuryModule} from "../treasury/ITreasury.sol";
8
- import {IPoolModule} from "./IPoolModule.sol";
9
- import {NftId, NftIdLib} from "../../types/NftId.sol";
10
-
11
- abstract contract PoolModule is IPoolModule {
12
- using NftIdLib for NftId;
13
-
14
- uint256 public constant INITIAL_CAPITAL = 10000 * 10 ** 6;
15
- uint256 public constant INITIAL_LOCKED_CAPITAL = 0;
16
-
17
- mapping(NftId nftId => PoolInfo info) private _poolInfo;
18
-
19
- IPolicyModule private _policyModule;
20
- ITreasuryModule private _treasuryModule;
21
- IProductService private _productService;
22
-
23
- modifier onlyProductService() {
24
- require(
25
- address(_productService) == msg.sender,
26
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
27
- );
28
- _;
29
- }
30
-
31
- constructor(address productService) {
32
- _policyModule = IPolicyModule(address(this));
33
- _treasuryModule = ITreasuryModule(address(this));
34
- _productService = IProductService(productService);
35
- }
36
-
37
- function registerPool(NftId nftId)
38
- public
39
- override
40
- {
41
- require(_poolInfo[nftId].nftId.eqz(), "ERROR:PL-001:ALREADY_CREATED");
42
-
43
- _poolInfo[nftId] = PoolInfo(
44
- nftId,
45
- INITIAL_CAPITAL,
46
- INITIAL_LOCKED_CAPITAL
47
- );
48
- }
49
-
50
- function underwrite(
51
- NftId policyNftId,
52
- NftId productNftId
53
- )
54
- external
55
- override
56
- onlyProductService
57
- {
58
- IPolicy.PolicyInfo memory policyInfo = _policyModule.getPolicyInfo(policyNftId);
59
- require(policyInfo.nftId == policyNftId, "ERROR:PL-002:POLICY_UNKNOWN");
60
-
61
- ITreasuryModule.ProductSetup memory product = _treasuryModule.getProductSetup(productNftId);
62
- require(product.productNftId == productNftId, "ERROR:PL-003:PRODUCT_SETUP_MISSING");
63
-
64
- NftId poolNftId = product.poolNftId;
65
- PoolInfo storage poolInfo = _poolInfo[poolNftId];
66
- require(poolInfo.nftId == poolNftId, "ERROR:PL-004:POOL_UNKNOWN");
67
-
68
- require(
69
- poolInfo.capital - poolInfo.lockedCapital >=
70
- policyInfo.sumInsuredAmount,
71
- "ERROR:PL-005:CAPACITY_TOO_LOW"
72
- );
73
-
74
- poolInfo.lockedCapital += policyInfo.sumInsuredAmount;
75
- }
76
-
77
- function getPoolInfo(
78
- NftId nftId
79
- ) external view override returns (PoolInfo memory info) {
80
- info = _poolInfo[nftId];
81
- }
82
- }
@@ -1,36 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
-
8
- // TODO or name this IProtectionService to have Product be something more generic (loan, savings account, ...)
9
- interface IProductService is IRegistryLinked {
10
- function createApplication(
11
- address applicationOwner,
12
- uint256 sumInsuredAmount,
13
- uint256 premiumAmount,
14
- uint256 lifetime,
15
- NftId bundleNftId
16
- ) external returns (NftId nftId);
17
-
18
- // function revoke(unit256 nftId) external;
19
-
20
- function underwrite(NftId nftId) external;
21
-
22
- // function decline(uint256 nftId) external;
23
- // function expire(uint256 nftId) external;
24
- function close(NftId nftId) external;
25
-
26
- function collectPremium(NftId nftId) external;
27
-
28
- // function createClaim(uint256 nftId, uint256 claimAmount) external;
29
- // function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
30
- // function declineClaim(uint256 nftId, uint256 claimId) external;
31
- // function closeClaim(uint256 nftId, uint256 claimId) external;
32
- }
33
-
34
- interface IProductModule is IOwnable, IRegistryLinked {
35
- function getProductService() external view returns (IProductService);
36
- }
@@ -1,118 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // import {IProduct} from "../../components/IProduct.sol";
5
- // import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
6
- // import {IInstance} from "../IInstance.sol";
7
- import {IRegistry} from "../../registry/IRegistry.sol";
8
- import {IPolicyModule} from "../policy/IPolicy.sol";
9
- import {RegistryLinked} from "../../registry/Registry.sol";
10
- import {IProductService, IProductModule} from "./IProductService.sol";
11
- import {ITreasuryModule} from "../../instance/treasury/ITreasury.sol";
12
- import {IPoolModule} from "../../instance/pool/IPoolModule.sol";
13
- import {ObjectType, INSTANCE, PRODUCT} from "../../types/ObjectType.sol";
14
- import {NftId, NftIdLib} from "../../types/NftId.sol";
15
-
16
- // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
17
- contract ProductService is RegistryLinked, IProductService {
18
- using NftIdLib for NftId;
19
-
20
- constructor(address registry) RegistryLinked(registry) {}
21
-
22
- function createApplication(
23
- address applicationOwner,
24
- uint256 sumInsuredAmount,
25
- uint256 premiumAmount,
26
- uint256 lifetime,
27
- NftId bundleNftId
28
- ) external override returns (NftId nftId) {
29
- // same as only registered product
30
- NftId productNftId = _registry.getNftId(msg.sender);
31
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
32
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(productNftId);
33
- require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
34
-
35
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(productInfo.parentNftId);
36
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
37
- require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
38
-
39
- IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
40
- nftId = policyModule.createApplication(
41
- productInfo,
42
- applicationOwner,
43
- sumInsuredAmount,
44
- premiumAmount,
45
- lifetime,
46
- bundleNftId
47
- );
48
-
49
- // add logging
50
- }
51
-
52
- function underwrite(NftId policyNftId) external override {
53
- // validation
54
- // same as only registered product
55
- NftId productNftId = _registry.getNftId(msg.sender);
56
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
57
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(productNftId);
58
- require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
59
-
60
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(productInfo.parentNftId);
61
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
62
- require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
63
-
64
- // underwrite policy
65
- address instanceAddress = instanceInfo.objectAddress;
66
- IPoolModule poolModule = IPoolModule(instanceAddress);
67
- poolModule.underwrite(policyNftId, productNftId);
68
-
69
- // activate policy
70
- IPolicyModule policyModule = IPolicyModule(instanceAddress);
71
- policyModule.activate(policyNftId);
72
-
73
- // add logging
74
- }
75
-
76
- function collectPremium(NftId policyNftId)
77
- external
78
- override
79
- {
80
- // validation same as other functions, eg underwrite
81
- // TODO unify validation into modifier and/or other suitable approaches
82
- // same as only registered product
83
- NftId productNftId = _registry.getNftId(msg.sender);
84
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
85
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(productNftId);
86
- require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
87
-
88
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(productInfo.parentNftId);
89
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
90
- require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
91
-
92
- // process/collect premium: book keeping for policy
93
- address instanceAddress = instanceInfo.objectAddress;
94
- IPolicyModule policyModule = IPolicyModule(instanceAddress);
95
- policyModule.processPremium(policyNftId);
96
-
97
- // process/collect premium: actual token transfer
98
- ITreasuryModule treasuryModule = ITreasuryModule(instanceAddress);
99
- treasuryModule.processPremium(policyNftId, productNftId);
100
-
101
- // TODO add logging
102
- }
103
-
104
- function close(NftId policyNftId) external override {}
105
-
106
- }
107
-
108
- abstract contract ProductModule is IProductModule {
109
- IProductService private _productService;
110
-
111
- constructor(address productService) {
112
- _productService = IProductService(productService);
113
- }
114
-
115
- function getProductService() external view returns (IProductService) {
116
- return _productService;
117
- }
118
- }
@@ -1,73 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
-
6
- import {IRegistryLinked} from "../../registry/IRegistry.sol";
7
-
8
- import {NftId} from "../../types/NftId.sol";
9
- import {UFixed} from "../../types/UFixed.sol";
10
- import {Fee} from "../../types/Fee.sol";
11
-
12
- import {TokenHandler} from "./TokenHandler.sol";
13
-
14
- interface ITreasury {
15
-
16
- // TODO add events
17
- // TODO add errors
18
- }
19
-
20
- interface ITreasuryModule is
21
- IRegistryLinked,
22
- ITreasury
23
- {
24
-
25
- struct ProductSetup {
26
- NftId productNftId;
27
- NftId distributorNftId;
28
- NftId poolNftId;
29
- IERC20 token;
30
- TokenHandler tokenHandler;
31
- address wallet;
32
- Fee policyFee;
33
- Fee processingFee;
34
- }
35
-
36
- struct DistributorSetup {
37
- NftId distributorNftId;
38
- address wallet;
39
- Fee commissionFees;
40
- }
41
-
42
- struct PoolSetup {
43
- NftId poolNftId;
44
- address wallet;
45
- Fee stakingFee;
46
- Fee performanceFee;
47
- }
48
-
49
- function registerProduct(
50
- NftId productNftId,
51
- NftId distributorNftId,
52
- NftId poolNftId,
53
- IERC20 token,
54
- address wallet,
55
- Fee memory policyFee,
56
- Fee memory processingFee
57
- )
58
- external;
59
-
60
- function registerPool(
61
- NftId poolNftId,
62
- address wallet,
63
- Fee memory stakingFee,
64
- Fee memory performanceFee
65
- )
66
- external;
67
-
68
- function getTokenHandler(NftId productNftId) external view returns(TokenHandler tokenHandler);
69
- function getProductSetup(NftId productNftId) external view returns(ProductSetup memory setup);
70
- function getPoolSetup(NftId poolNftId) external view returns(PoolSetup memory setup);
71
-
72
- function processPremium(NftId policyNftId, NftId productNftId) external;
73
- }
@@ -1,27 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
-
6
- contract TokenHandler {
7
-
8
- // TODO use oz safeTransferFrom
9
-
10
- IERC20 _token;
11
-
12
- constructor(address token) {
13
- _token = IERC20(token);
14
- }
15
-
16
- // TODO add logging
17
- function transfer(
18
- address from,
19
- address to,
20
- uint256 amount
21
- )
22
- external
23
- // TODO add authz (only treasury)
24
- {
25
- _token.transferFrom(from, to, amount);
26
- }
27
- }