@etherisc/gif-next 0.0.2-f7be756-963 → 0.0.2-f7c17b4-297

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 (463) hide show
  1. package/README.md +403 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +604 -35
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1310 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +234 -239
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +877 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1029 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +740 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1253 -130
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +978 -157
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1791 -776
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +498 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2497 -824
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1391 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +541 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  52. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  56. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  60. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +935 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +462 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +480 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +336 -0
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +373 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +716 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +766 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +578 -29
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +879 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +651 -68
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1166 -0
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  124. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  129. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  130. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  134. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  135. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  136. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  137. package/artifacts/contracts/{components/IPool.sol/IPoolComponent.json → shared/IService.sol/IService.json} +120 -117
  138. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  140. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  142. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  143. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  144. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  145. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  146. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  148. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  150. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  151. package/artifacts/contracts/shared/Service.sol/Service.json +414 -0
  152. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  153. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  154. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  155. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  156. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  158. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  159. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  160. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  161. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  162. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  164. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestService.sol/TestService.json +510 -0
  166. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  168. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  170. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  172. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  173. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  175. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  176. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  180. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  182. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  184. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  186. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  188. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  189. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  190. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  192. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  194. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  196. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  198. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  200. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  202. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  204. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  206. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +97 -4
  208. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  209. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  210. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  212. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  214. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  216. package/contracts/components/Component.sol +195 -51
  217. package/contracts/components/Distribution.sol +308 -0
  218. package/contracts/components/IComponent.sol +68 -0
  219. package/contracts/components/IDistributionComponent.sol +100 -0
  220. package/contracts/components/IPoolComponent.sol +151 -0
  221. package/contracts/components/IProductComponent.sol +40 -0
  222. package/contracts/components/Pool.sol +356 -30
  223. package/contracts/components/Product.sol +252 -48
  224. package/contracts/instance/BundleManager.sol +125 -0
  225. package/contracts/instance/Cloneable.sol +46 -0
  226. package/contracts/instance/IInstance.sol +91 -24
  227. package/contracts/instance/IInstanceService.sol +59 -0
  228. package/contracts/instance/Instance.sol +270 -51
  229. package/contracts/instance/InstanceAccessManager.sol +297 -0
  230. package/contracts/instance/InstanceReader.sol +293 -0
  231. package/contracts/instance/InstanceService.sol +490 -0
  232. package/contracts/instance/InstanceServiceManager.sol +54 -0
  233. package/contracts/instance/ObjectManager.sol +84 -0
  234. package/contracts/instance/base/ComponentService.sol +134 -0
  235. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  236. package/contracts/instance/base/ILifecycle.sol +30 -0
  237. package/contracts/instance/base/KeyValueStore.sol +172 -0
  238. package/contracts/instance/base/Lifecycle.sol +100 -0
  239. package/contracts/instance/module/IAccess.sol +47 -0
  240. package/contracts/instance/module/IBundle.sol +21 -0
  241. package/contracts/instance/module/IDistribution.sol +39 -0
  242. package/contracts/instance/module/IPolicy.sol +48 -0
  243. package/contracts/instance/module/IRisk.sol +11 -0
  244. package/contracts/instance/module/ISetup.sol +48 -0
  245. package/contracts/instance/module/ITreasury.sol +23 -0
  246. package/contracts/instance/service/ApplicationService.sol +269 -0
  247. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  248. package/contracts/instance/service/BundleService.sol +299 -0
  249. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  250. package/contracts/instance/service/ClaimService.sol +151 -0
  251. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  252. package/contracts/instance/service/DistributionService.sol +277 -0
  253. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  254. package/contracts/instance/service/IApplicationService.sol +83 -0
  255. package/contracts/instance/service/IBundleService.sol +55 -0
  256. package/contracts/instance/service/IClaimService.sol +61 -0
  257. package/contracts/instance/service/IDistributionService.sol +65 -0
  258. package/contracts/instance/service/IPolicyService.sol +90 -0
  259. package/contracts/instance/service/IPoolService.sol +20 -0
  260. package/contracts/instance/service/IProductService.sol +40 -0
  261. package/contracts/instance/service/PolicyService.sol +476 -0
  262. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  263. package/contracts/instance/service/PoolService.sol +109 -0
  264. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  265. package/contracts/instance/service/ProductService.sol +233 -0
  266. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  267. package/contracts/registry/ChainNft.sol +129 -62
  268. package/contracts/registry/IRegistry.sol +73 -41
  269. package/contracts/registry/IRegistryService.sol +67 -0
  270. package/contracts/registry/ITransferInterceptor.sol +6 -0
  271. package/contracts/registry/Registry.sol +408 -126
  272. package/contracts/registry/RegistryAccessManager.sol +216 -0
  273. package/contracts/registry/RegistryService.sol +283 -0
  274. package/contracts/registry/RegistryServiceManager.sol +62 -0
  275. package/contracts/registry/ReleaseManager.sol +322 -0
  276. package/contracts/registry/TokenRegistry.sol +116 -0
  277. package/contracts/shared/ContractDeployerLib.sol +72 -0
  278. package/contracts/shared/ERC165.sol +27 -0
  279. package/contracts/shared/INftOwnable.sol +23 -0
  280. package/contracts/shared/IPolicyHolder.sol +26 -0
  281. package/contracts/shared/IRegisterable.sol +15 -0
  282. package/contracts/shared/IRegistryLinked.sol +12 -0
  283. package/contracts/shared/IService.sol +16 -0
  284. package/contracts/shared/IVersionable.sol +53 -0
  285. package/contracts/shared/NftOwnable.sol +120 -0
  286. package/contracts/shared/PolicyHolder.sol +81 -0
  287. package/contracts/shared/ProxyManager.sol +169 -0
  288. package/contracts/shared/Registerable.sol +74 -0
  289. package/contracts/shared/RegistryLinked.sol +48 -0
  290. package/contracts/shared/Service.sol +58 -0
  291. package/contracts/shared/TokenHandler.sol +27 -0
  292. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  293. package/contracts/shared/Versionable.sol +59 -0
  294. package/contracts/test/TestFee.sol +25 -0
  295. package/contracts/test/TestRegisterable.sol +18 -0
  296. package/contracts/test/TestRoleId.sol +14 -0
  297. package/contracts/test/TestService.sol +25 -0
  298. package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
  299. package/contracts/test/TestVersion.sol +44 -0
  300. package/contracts/test/TestVersionable.sol +17 -0
  301. package/contracts/{mock → test}/Usdc.sol +1 -1
  302. package/contracts/types/AddressSet.sol +58 -0
  303. package/contracts/types/ClaimId.sol +52 -0
  304. package/contracts/types/DistributorType.sol +55 -0
  305. package/contracts/types/Fee.sol +44 -20
  306. package/contracts/types/Key32.sol +50 -0
  307. package/contracts/types/NftId.sol +22 -1
  308. package/contracts/types/NftIdSet.sol +62 -0
  309. package/contracts/types/NumberId.sol +52 -0
  310. package/contracts/types/ObjectType.sol +64 -15
  311. package/contracts/types/PayoutId.sol +54 -0
  312. package/contracts/types/Referral.sol +85 -0
  313. package/contracts/types/RiskId.sol +43 -0
  314. package/contracts/types/RoleId.sol +95 -0
  315. package/contracts/types/Seconds.sol +54 -0
  316. package/contracts/types/StateId.sol +18 -4
  317. package/contracts/types/Timestamp.sol +30 -6
  318. package/contracts/types/UFixed.sol +138 -23
  319. package/contracts/types/Version.sol +107 -0
  320. package/package.json +11 -5
  321. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  322. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  323. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  324. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  326. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  328. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  330. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  332. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  334. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  336. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  338. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  342. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  344. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  346. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  348. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  352. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  354. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  356. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  358. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  359. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  361. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  362. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  363. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  364. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  365. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  366. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  368. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  369. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  370. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  371. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  372. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  373. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  374. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  375. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  376. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  377. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  379. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  380. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  381. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  382. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  383. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  386. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  387. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  389. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  391. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  392. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  394. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  396. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  398. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  399. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  401. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  402. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  403. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  404. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  406. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  407. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  408. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  409. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  410. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  411. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  412. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  413. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  414. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  415. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  416. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  417. package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
  418. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  420. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  421. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  422. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  423. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  424. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  425. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  426. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  427. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  428. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  429. package/contracts/components/IPool.sol +0 -15
  430. package/contracts/components/IProduct.sol +0 -16
  431. package/contracts/experiment/errors/Require.sol +0 -38
  432. package/contracts/experiment/errors/Revert.sol +0 -44
  433. package/contracts/experiment/inheritance/A.sol +0 -53
  434. package/contracts/experiment/inheritance/B.sol +0 -28
  435. package/contracts/experiment/inheritance/C.sol +0 -34
  436. package/contracts/experiment/inheritance/IA.sol +0 -13
  437. package/contracts/experiment/inheritance/IB.sol +0 -10
  438. package/contracts/experiment/inheritance/IC.sol +0 -12
  439. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  440. package/contracts/experiment/statemachine/ISM.sol +0 -25
  441. package/contracts/experiment/statemachine/README.md +0 -112
  442. package/contracts/experiment/statemachine/SM.sol +0 -57
  443. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  444. package/contracts/experiment/types/TypeA.sol +0 -47
  445. package/contracts/experiment/types/TypeB.sol +0 -29
  446. package/contracts/instance/access/Access.sol +0 -165
  447. package/contracts/instance/access/IAccess.sol +0 -63
  448. package/contracts/instance/component/ComponentModule.sol +0 -274
  449. package/contracts/instance/component/IComponent.sol +0 -74
  450. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  451. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  452. package/contracts/instance/policy/IPolicy.sol +0 -50
  453. package/contracts/instance/policy/PolicyModule.sol +0 -114
  454. package/contracts/instance/pool/IPoolModule.sol +0 -23
  455. package/contracts/instance/pool/PoolModule.sol +0 -81
  456. package/contracts/instance/product/IProductService.sol +0 -36
  457. package/contracts/instance/product/ProductService.sol +0 -136
  458. package/contracts/instance/treasury/ITreasury.sol +0 -91
  459. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  460. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  461. package/contracts/mock/TestPool.sol +0 -16
  462. package/contracts/mock/TestProduct.sol +0 -39
  463. package/contracts/registry/IChainNft.sol +0 -21
@@ -1,81 +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) public override {
38
- require(_poolInfo[nftId].nftId.eqz(), "ERROR:PL-001:ALREADY_CREATED");
39
-
40
- _poolInfo[nftId] = PoolInfo(
41
- nftId,
42
- INITIAL_CAPITAL,
43
- INITIAL_LOCKED_CAPITAL
44
- );
45
- }
46
-
47
- function underwrite(
48
- NftId policyNftId,
49
- NftId productNftId
50
- ) external override onlyProductService {
51
- IPolicy.PolicyInfo memory policyInfo = _policyModule.getPolicyInfo(
52
- policyNftId
53
- );
54
- require(policyInfo.nftId == policyNftId, "ERROR:PL-002:POLICY_UNKNOWN");
55
-
56
- ITreasuryModule.ProductSetup memory product = _treasuryModule
57
- .getProductSetup(productNftId);
58
- require(
59
- product.productNftId == productNftId,
60
- "ERROR:PL-003:PRODUCT_SETUP_MISSING"
61
- );
62
-
63
- NftId poolNftId = product.poolNftId;
64
- PoolInfo storage poolInfo = _poolInfo[poolNftId];
65
- require(poolInfo.nftId == poolNftId, "ERROR:PL-004:POOL_UNKNOWN");
66
-
67
- require(
68
- poolInfo.capital - poolInfo.lockedCapital >=
69
- policyInfo.sumInsuredAmount,
70
- "ERROR:PL-005:CAPACITY_TOO_LOW"
71
- );
72
-
73
- poolInfo.lockedCapital += policyInfo.sumInsuredAmount;
74
- }
75
-
76
- function getPoolInfo(
77
- NftId nftId
78
- ) external view override returns (PoolInfo memory info) {
79
- info = _poolInfo[nftId];
80
- }
81
- }
@@ -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,136 +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(
21
- address registry
22
- ) RegistryLinked(registry) // solhint-disable-next-line no-empty-blocks
23
- {
24
-
25
- }
26
-
27
- function createApplication(
28
- address applicationOwner,
29
- uint256 sumInsuredAmount,
30
- uint256 premiumAmount,
31
- uint256 lifetime,
32
- NftId bundleNftId
33
- ) external override returns (NftId nftId) {
34
- // same as only registered product
35
- NftId productNftId = _registry.getNftId(msg.sender);
36
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
37
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
38
- productNftId
39
- );
40
- require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
41
-
42
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
43
- productInfo.parentNftId
44
- );
45
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
46
- require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
47
-
48
- IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
49
- nftId = policyModule.createApplication(
50
- productInfo,
51
- applicationOwner,
52
- sumInsuredAmount,
53
- premiumAmount,
54
- lifetime,
55
- bundleNftId
56
- );
57
-
58
- // add logging
59
- }
60
-
61
- function underwrite(NftId policyNftId) external override {
62
- // validation
63
- // same as only registered product
64
- NftId productNftId = _registry.getNftId(msg.sender);
65
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
66
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
67
- productNftId
68
- );
69
- require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
70
-
71
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
72
- productInfo.parentNftId
73
- );
74
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
75
- require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
76
-
77
- // underwrite policy
78
- address instanceAddress = instanceInfo.objectAddress;
79
- IPoolModule poolModule = IPoolModule(instanceAddress);
80
- poolModule.underwrite(policyNftId, productNftId);
81
-
82
- // activate policy
83
- IPolicyModule policyModule = IPolicyModule(instanceAddress);
84
- policyModule.activate(policyNftId);
85
-
86
- // add logging
87
- }
88
-
89
- function collectPremium(NftId policyNftId) external override {
90
- // validation same as other functions, eg underwrite
91
- // TODO unify validation into modifier and/or other suitable approaches
92
- // same as only registered product
93
- NftId productNftId = _registry.getNftId(msg.sender);
94
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
95
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
96
- productNftId
97
- );
98
- require(productInfo.objectType == PRODUCT(), "ERROR_NOT_PRODUCT");
99
-
100
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
101
- productInfo.parentNftId
102
- );
103
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
104
- require(instanceInfo.objectType == INSTANCE(), "ERROR_NOT_INSTANCE");
105
-
106
- // process/collect premium: book keeping for policy
107
- address instanceAddress = instanceInfo.objectAddress;
108
- IPolicyModule policyModule = IPolicyModule(instanceAddress);
109
- policyModule.processPremium(policyNftId);
110
-
111
- // process/collect premium: actual token transfer
112
- ITreasuryModule treasuryModule = ITreasuryModule(instanceAddress);
113
- treasuryModule.processPremium(policyNftId, productNftId);
114
-
115
- // TODO add logging
116
- }
117
-
118
- function close(
119
- NftId policyNftId
120
- ) external override // solhint-disable-next-line no-empty-blocks
121
- {
122
-
123
- }
124
- }
125
-
126
- abstract contract ProductModule is IProductModule {
127
- IProductService private _productService;
128
-
129
- constructor(address productService) {
130
- _productService = IProductService(productService);
131
- }
132
-
133
- function getProductService() external view returns (IProductService) {
134
- return _productService;
135
- }
136
- }
@@ -1,91 +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
- // TODO add events
16
- // TODO add errors
17
- }
18
-
19
- interface ITreasuryModule is IRegistryLinked, ITreasury {
20
- struct ProductSetup {
21
- NftId productNftId;
22
- NftId distributorNftId;
23
- NftId poolNftId;
24
- IERC20 token;
25
- TokenHandler tokenHandler;
26
- address wallet;
27
- Fee policyFee;
28
- Fee processingFee;
29
- }
30
-
31
- struct DistributorSetup {
32
- NftId distributorNftId;
33
- address wallet;
34
- Fee commissionFees;
35
- }
36
-
37
- struct PoolSetup {
38
- NftId poolNftId;
39
- address wallet;
40
- Fee stakingFee;
41
- Fee performanceFee;
42
- }
43
-
44
- function registerProduct(
45
- NftId productNftId,
46
- NftId distributorNftId,
47
- NftId poolNftId,
48
- IERC20 token,
49
- address wallet,
50
- Fee memory policyFee,
51
- Fee memory processingFee
52
- ) external;
53
-
54
- function setProductFees(
55
- NftId productNftId,
56
- Fee memory policyFee,
57
- Fee memory processingFee
58
- ) external;
59
-
60
- function registerPool(
61
- NftId poolNftId,
62
- address wallet,
63
- Fee memory stakingFee,
64
- Fee memory performanceFee
65
- ) external;
66
-
67
- function setPoolFees(
68
- NftId poolNftId,
69
- Fee memory stakingFee,
70
- Fee memory performanceFee
71
- ) external;
72
-
73
- function processPremium(NftId policyNftId, NftId productNftId) external;
74
-
75
- function getTokenHandler(
76
- NftId productNftId
77
- ) external view returns (TokenHandler tokenHandler);
78
-
79
- function getProductSetup(
80
- NftId productNftId
81
- ) external view returns (ProductSetup memory setup);
82
-
83
- function getPoolSetup(
84
- NftId poolNftId
85
- ) external view returns (PoolSetup memory setup);
86
-
87
- function calculateFeeAmount(
88
- uint256 amount,
89
- Fee memory fee
90
- ) external pure returns (uint256 feeAmount, uint256 netAmount);
91
- }
@@ -1,24 +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
- // TODO use oz safeTransferFrom
8
-
9
- IERC20 _token;
10
-
11
- constructor(address token) {
12
- _token = IERC20(token);
13
- }
14
-
15
- // TODO add logging
16
- function transfer(
17
- address from,
18
- address to,
19
- uint256 amount
20
- ) external // TODO add authz (only treasury)
21
- {
22
- _token.transferFrom(from, to, amount);
23
- }
24
- }
@@ -1,168 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
-
6
- import {NftId} from "../../types/NftId.sol";
7
- import {Fee, feeIsZero} from "../../types/Fee.sol";
8
- import {UFixed, UFixedMathLib} from "../../types/UFixed.sol";
9
- import {IProductComponent} from "../../components/IProduct.sol";
10
- import {IPolicy, IPolicyModule} from "../policy/IPolicy.sol";
11
- import {TokenHandler} from "./TokenHandler.sol";
12
- import {ITreasuryModule} from "./ITreasury.sol";
13
- import {TokenHandler} from "./TokenHandler.sol";
14
-
15
- abstract contract TreasuryModule is ITreasuryModule {
16
- mapping(NftId productNftId => ProductSetup setup) private _productSetup;
17
- mapping(NftId distributorNftId => DistributorSetup setup)
18
- private _distributorSetup;
19
- mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
20
-
21
- IPolicyModule private _policyModule;
22
-
23
- constructor() {
24
- _policyModule = IPolicyModule(address(this));
25
- }
26
-
27
- function registerProduct(
28
- NftId productNftId,
29
- NftId distributorNftId,
30
- NftId poolNftId,
31
- IERC20 token,
32
- address wallet,
33
- Fee memory policyFee,
34
- Fee memory processingFee
35
- ) external override // TODO add authz (only component module)
36
- {
37
- // TODO add validation
38
-
39
- // deploy product specific handler contract
40
- TokenHandler tokenHandler = new TokenHandler(address(token));
41
-
42
- _productSetup[productNftId] = ProductSetup(
43
- productNftId,
44
- distributorNftId,
45
- poolNftId,
46
- token,
47
- tokenHandler,
48
- wallet,
49
- policyFee,
50
- processingFee
51
- );
52
-
53
- // TODO add logging
54
- }
55
-
56
- function setProductFees(
57
- NftId productNftId,
58
- Fee memory policyFee,
59
- Fee memory processingFee
60
- ) external override // TODO add authz (only component owner service)
61
- {
62
- // TODO add validation
63
-
64
- ProductSetup storage setup = _productSetup[productNftId];
65
- setup.policyFee = policyFee;
66
- setup.processingFee = processingFee;
67
-
68
- // TODO add logging
69
- }
70
-
71
- function registerPool(
72
- NftId poolNftId,
73
- address wallet,
74
- Fee memory stakingFee,
75
- Fee memory performanceFee
76
- ) external override // TODO add authz (only component module)
77
- {
78
- // TODO add validation
79
-
80
- _poolSetup[poolNftId] = PoolSetup(
81
- poolNftId,
82
- wallet,
83
- stakingFee,
84
- performanceFee
85
- );
86
-
87
- // TODO add logging
88
- }
89
-
90
- function setPoolFees(
91
- NftId poolNftId,
92
- Fee memory stakingFee,
93
- Fee memory performanceFee
94
- ) external override // TODO add authz (only component owner service)
95
- {
96
- // TODO add validation
97
-
98
- PoolSetup storage setup = _poolSetup[poolNftId];
99
- setup.stakingFee = stakingFee;
100
- setup.performanceFee = performanceFee;
101
-
102
- // TODO add logging
103
- }
104
-
105
- function getTokenHandler(
106
- NftId productNftId
107
- ) external view override returns (TokenHandler tokenHandler) {
108
- return _productSetup[productNftId].tokenHandler;
109
- }
110
-
111
- function getProductSetup(
112
- NftId productNftId
113
- ) external view override returns (ProductSetup memory setup) {
114
- return _productSetup[productNftId];
115
- }
116
-
117
- function getPoolSetup(
118
- NftId poolNftId
119
- ) external view override returns (PoolSetup memory setup) {
120
- return _poolSetup[poolNftId];
121
- }
122
-
123
- function processPremium(
124
- NftId policyNftId,
125
- NftId productNftId
126
- ) external override // TODO add authz (only product service)
127
- {
128
- IPolicy.PolicyInfo memory policyInfo = _policyModule.getPolicyInfo(
129
- policyNftId
130
- );
131
- require(
132
- policyInfo.nftId == policyNftId,
133
- "ERROR:TRS-020:POLICY_UNKNOWN"
134
- );
135
-
136
- ProductSetup memory product = _productSetup[productNftId];
137
- TokenHandler tokenHandler = product.tokenHandler;
138
- address policyOwner = this.getRegistry().getOwner(policyNftId);
139
- address poolWallet = _poolSetup[product.poolNftId].wallet;
140
- // TODO add validation
141
-
142
- if (feeIsZero(product.policyFee)) {
143
- tokenHandler.transfer(
144
- policyOwner,
145
- poolWallet,
146
- policyInfo.premiumAmount
147
- );
148
- } else {
149
- (uint256 feeAmount, uint256 netAmount) = calculateFeeAmount(
150
- policyInfo.premiumAmount,
151
- product.policyFee
152
- );
153
-
154
- tokenHandler.transfer(policyOwner, product.wallet, feeAmount);
155
- tokenHandler.transfer(policyOwner, poolWallet, netAmount);
156
- }
157
- }
158
-
159
- function calculateFeeAmount(
160
- uint256 amount,
161
- Fee memory fee
162
- ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
163
- UFixed fractionalAmount = UFixedMathLib.itof(amount) *
164
- fee.fractionalFee;
165
- feeAmount = UFixedMathLib.ftoi(fractionalAmount) + fee.fixedFee;
166
- netAmount = amount - feeAmount;
167
- }
168
- }
@@ -1,16 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Fee, zeroFee} from "../../contracts/types/Fee.sol";
5
- import {Pool} from "../../contracts/components/Pool.sol";
6
-
7
-
8
- contract TestPool is Pool {
9
-
10
- constructor(address registry, address instance, address token)
11
- // feeless pool (no staking fee, no performance fee)
12
- Pool(registry, instance, token, zeroFee(), zeroFee())
13
- // solhint-disable-next-line no-empty-blocks
14
- {}
15
-
16
- }
@@ -1,39 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {Product} from "../../contracts/components/Product.sol";
5
- import {NftId, toNftId} from "../../contracts/types/NftId.sol";
6
- import {Fee, zeroFee} from "../../contracts/types/Fee.sol";
7
-
8
- contract TestProduct is Product {
9
-
10
- constructor(address registry, address instance, address token, address pool, Fee memory policyFee)
11
- Product(registry, instance, token, pool, policyFee, zeroFee())
12
- // solhint-disable-next-line no-empty-blocks
13
- {}
14
-
15
- function applyForPolicy(
16
- uint256 sumInsuredAmount,
17
- uint256 premiumAmount,
18
- uint256 lifetime
19
- )
20
- external
21
- returns(NftId nftId)
22
- {
23
- nftId = _createApplication(
24
- msg.sender, // policy holder
25
- sumInsuredAmount,
26
- premiumAmount,
27
- lifetime,
28
- toNftId(0) // requested bundle nft id
29
- );
30
- }
31
-
32
- function underwrite(NftId nftId) external {
33
- _underwrite(nftId);
34
- }
35
-
36
- function collectPremium(NftId nftId) external {
37
- _collectPremium(nftId);
38
- }
39
- }
@@ -1,21 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
5
-
6
- interface IChainNft is IERC721Enumerable {
7
- function mint(
8
- address to,
9
- string memory uri
10
- ) external returns (uint256 tokenId);
11
-
12
- function burn(uint256 tokenId) external;
13
-
14
- function setURI(uint256 tokenId, string memory uri) external;
15
-
16
- function exists(uint256 tokenId) external view returns (bool);
17
-
18
- function totalMinted() external view returns (uint256);
19
-
20
- function getRegistryAddress() external view returns (address registry);
21
- }