@etherisc/gif-next 0.0.2-c576a00-897 → 0.0.2-c5c9395-682

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 (503) hide show
  1. package/README.md +262 -20
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1329 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +823 -115
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +608 -57
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1132 -143
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +967 -105
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1501 -1151
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2094 -1242
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1289 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1179 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  53. package/artifacts/contracts/{experiment/kvstore → instance/module}/IBundle.sol/IBundle.json +1 -1
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  56. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  60. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  62. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/{bundle/IBundle.sol/IBundle.json → ISetup.sol/ISetup.json} +2 -2
  64. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  65. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1039 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1798 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +805 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +475 -0
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1090 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +577 -109
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +186 -213
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +965 -199
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +460 -293
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +38 -74
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +100 -33
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +164 -142
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +256 -25
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  155. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +10 -10
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +272 -26
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +44 -10
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +347 -130
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +12 -12
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  177. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  179. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +2 -2
  180. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  182. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -40
  184. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  186. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  188. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  190. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Fee.sol/FeeLib.json +84 -14
  192. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  194. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  196. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  197. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  198. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  200. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  202. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  204. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  205. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  206. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  208. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  210. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  212. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  214. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  216. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  218. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  220. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  221. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  222. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  223. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  224. package/contracts/components/Component.sol +253 -0
  225. package/contracts/components/Distribution.sol +280 -0
  226. package/contracts/components/IComponent.sol +76 -0
  227. package/contracts/components/IDistributionComponent.sol +71 -0
  228. package/contracts/components/IPoolComponent.sol +98 -42
  229. package/contracts/components/IProductComponent.sol +30 -9
  230. package/contracts/components/Pool.sol +238 -109
  231. package/contracts/components/Product.sol +218 -42
  232. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  233. package/contracts/instance/BundleManager.sol +127 -0
  234. package/contracts/instance/Cloneable.sol +51 -0
  235. package/contracts/instance/IInstance.sol +87 -42
  236. package/contracts/instance/IInstanceService.sol +72 -0
  237. package/contracts/instance/Instance.sol +311 -50
  238. package/contracts/instance/InstanceAccessManager.sol +527 -0
  239. package/contracts/instance/InstanceReader.sol +291 -0
  240. package/contracts/instance/InstanceService.sol +495 -0
  241. package/contracts/instance/InstanceServiceManager.sol +54 -0
  242. package/contracts/instance/ObjectManager.sol +82 -0
  243. package/contracts/instance/base/ComponentService.sol +121 -0
  244. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  245. package/contracts/instance/base/ILifecycle.sol +30 -0
  246. package/contracts/instance/base/KeyValueStore.sol +180 -0
  247. package/contracts/instance/base/Lifecycle.sol +109 -0
  248. package/contracts/instance/module/IAccess.sol +54 -0
  249. package/contracts/instance/module/IBundle.sol +23 -0
  250. package/contracts/instance/module/IComponents.sol +41 -0
  251. package/contracts/instance/module/IDistribution.sol +41 -0
  252. package/contracts/instance/module/IPolicy.sol +72 -0
  253. package/contracts/instance/module/IRisk.sol +11 -0
  254. package/contracts/instance/module/ISetup.sol +33 -0
  255. package/contracts/instance/module/ITreasury.sol +23 -0
  256. package/contracts/instance/service/ApplicationService.sol +350 -0
  257. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  258. package/contracts/instance/service/BundleService.sol +431 -0
  259. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  260. package/contracts/instance/service/ClaimService.sol +151 -0
  261. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  262. package/contracts/instance/service/DistributionService.sol +435 -0
  263. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  264. package/contracts/instance/service/IApplicationService.sol +82 -0
  265. package/contracts/instance/service/IBundleService.sol +93 -0
  266. package/contracts/instance/service/IClaimService.sol +61 -0
  267. package/contracts/instance/service/IDistributionService.sol +99 -0
  268. package/contracts/instance/service/IPolicyService.sol +72 -0
  269. package/contracts/instance/service/IPoolService.sol +81 -12
  270. package/contracts/instance/service/IProductService.sol +21 -39
  271. package/contracts/instance/service/PolicyService.sol +362 -0
  272. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  273. package/contracts/instance/service/PoolService.sol +249 -69
  274. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  275. package/contracts/instance/service/ProductService.sol +147 -292
  276. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  277. package/contracts/registry/ChainNft.sol +87 -36
  278. package/contracts/registry/IRegistry.sol +68 -24
  279. package/contracts/registry/IRegistryService.sol +68 -0
  280. package/contracts/registry/ITransferInterceptor.sol +7 -0
  281. package/contracts/registry/Registry.sol +372 -286
  282. package/contracts/registry/RegistryAccessManager.sol +216 -0
  283. package/contracts/registry/RegistryService.sol +282 -0
  284. package/contracts/registry/RegistryServiceManager.sol +62 -0
  285. package/contracts/registry/ReleaseManager.sol +324 -0
  286. package/contracts/registry/TokenRegistry.sol +116 -0
  287. package/contracts/shared/ContractDeployerLib.sol +72 -0
  288. package/contracts/shared/ERC165.sol +14 -8
  289. package/contracts/shared/INftOwnable.sol +23 -0
  290. package/contracts/shared/IPolicyHolder.sol +26 -0
  291. package/contracts/shared/IRegisterable.sol +10 -19
  292. package/contracts/shared/IRegistryLinked.sol +12 -0
  293. package/contracts/shared/IService.sol +16 -0
  294. package/contracts/shared/IVersionable.sol +38 -37
  295. package/contracts/shared/NftOwnable.sol +120 -0
  296. package/contracts/shared/PolicyHolder.sol +81 -0
  297. package/contracts/shared/ProxyManager.sol +169 -0
  298. package/contracts/shared/Registerable.sol +54 -66
  299. package/contracts/shared/RegistryLinked.sol +48 -0
  300. package/contracts/shared/Service.sol +72 -0
  301. package/contracts/shared/TokenHandler.sol +33 -0
  302. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  303. package/contracts/shared/Versionable.sol +38 -68
  304. package/contracts/test/TestFee.sol +2 -2
  305. package/contracts/test/TestRegisterable.sol +5 -6
  306. package/contracts/test/TestRoleId.sol +2 -2
  307. package/contracts/test/TestService.sol +7 -14
  308. package/contracts/test/Usdc.sol +26 -0
  309. package/contracts/types/Amount.sol +60 -0
  310. package/contracts/types/Blocknumber.sol +1 -16
  311. package/contracts/types/ClaimId.sol +52 -0
  312. package/contracts/types/DistributorType.sol +55 -0
  313. package/contracts/types/Fee.sol +22 -9
  314. package/contracts/types/Key32.sol +50 -0
  315. package/contracts/types/NftId.sol +24 -1
  316. package/contracts/types/NftIdSet.sol +26 -24
  317. package/contracts/types/NumberId.sol +52 -0
  318. package/contracts/types/ObjectType.sol +53 -15
  319. package/contracts/types/PayoutId.sol +54 -0
  320. package/contracts/types/Referral.sol +89 -0
  321. package/contracts/types/RiskId.sol +24 -7
  322. package/contracts/types/RoleId.sol +72 -11
  323. package/contracts/types/Seconds.sol +54 -0
  324. package/contracts/types/StateId.sol +13 -2
  325. package/contracts/types/Timestamp.sol +17 -13
  326. package/contracts/types/UFixed.sol +145 -25
  327. package/contracts/types/Version.sol +14 -1
  328. package/package.json +9 -5
  329. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  330. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  331. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  334. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  336. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  338. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  340. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  342. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  344. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  346. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  348. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  351. package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/kvstore/BundleModuleStore.sol/BundleModuleStore.json +0 -543
  353. package/artifacts/contracts/experiment/kvstore/IBundle.sol/IBundle.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/kvstore/KeyMapper.sol/KeyMapper.json +0 -185
  356. package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/kvstore/KeyValueStore.sol/KeyValueStore.json +0 -383
  358. package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/kvstore/KvStore.sol/KvStore.json +0 -1064
  360. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  364. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  366. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  368. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  370. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  372. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  374. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  375. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  376. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
  377. package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
  378. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  380. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  381. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  384. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -276
  386. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -276
  389. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  391. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  393. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  395. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  397. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  398. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  399. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  401. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  402. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  403. package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  406. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  407. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  409. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  411. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  412. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  413. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  414. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  415. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  417. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  418. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  419. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -167
  420. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -185
  422. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  423. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  424. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  425. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  426. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  427. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  428. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  429. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  430. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -491
  431. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  432. package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  433. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  434. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  435. package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
  436. package/artifacts/contracts/instance/service/IService.sol/IService.json +0 -300
  437. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  438. package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.json +0 -300
  439. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  440. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  441. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  442. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  443. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  444. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  445. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  446. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  447. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  448. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  449. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  450. package/contracts/components/BaseComponent.sol +0 -89
  451. package/contracts/components/IBaseComponent.sol +0 -19
  452. package/contracts/experiment/errors/Require.sol +0 -38
  453. package/contracts/experiment/errors/Revert.sol +0 -44
  454. package/contracts/experiment/inheritance/A.sol +0 -53
  455. package/contracts/experiment/inheritance/B.sol +0 -28
  456. package/contracts/experiment/inheritance/C.sol +0 -34
  457. package/contracts/experiment/inheritance/IA.sol +0 -13
  458. package/contracts/experiment/inheritance/IB.sol +0 -10
  459. package/contracts/experiment/inheritance/IC.sol +0 -12
  460. package/contracts/experiment/kvstore/BundleModuleStore.sol +0 -93
  461. package/contracts/experiment/kvstore/IBundle.sol +0 -22
  462. package/contracts/experiment/kvstore/KeyMapper.sol +0 -40
  463. package/contracts/experiment/kvstore/KeyValueStore.sol +0 -156
  464. package/contracts/experiment/kvstore/KvStore.sol +0 -195
  465. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  466. package/contracts/experiment/statemachine/ISM.sol +0 -25
  467. package/contracts/experiment/statemachine/README.md +0 -112
  468. package/contracts/experiment/statemachine/SM.sol +0 -57
  469. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  470. package/contracts/experiment/types/TypeA.sol +0 -47
  471. package/contracts/experiment/types/TypeB.sol +0 -29
  472. package/contracts/instance/IInstanceLinked.sol +0 -8
  473. package/contracts/instance/IServiceLinked.sol +0 -12
  474. package/contracts/instance/InstanceBase.sol +0 -71
  475. package/contracts/instance/module/access/Access.sol +0 -149
  476. package/contracts/instance/module/access/IAccess.sol +0 -53
  477. package/contracts/instance/module/bundle/BundleModule.sol +0 -228
  478. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  479. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  480. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  481. package/contracts/instance/module/component/ComponentModule.sol +0 -103
  482. package/contracts/instance/module/component/IComponent.sol +0 -53
  483. package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
  484. package/contracts/instance/module/lifecycle/LifecycleModule.sol +0 -89
  485. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  486. package/contracts/instance/module/policy/PolicyModule.sol +0 -84
  487. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  488. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  489. package/contracts/instance/module/risk/IRisk.sol +0 -39
  490. package/contracts/instance/module/risk/RiskModule.sol +0 -55
  491. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  492. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  493. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  494. package/contracts/instance/service/ComponentOwnerService.sol +0 -171
  495. package/contracts/instance/service/ComponentServiceBase.sol +0 -41
  496. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  497. package/contracts/instance/service/IService.sol +0 -15
  498. package/contracts/instance/service/ServiceBase.sol +0 -39
  499. package/contracts/registry/IChainNft.sol +0 -21
  500. package/contracts/registry/IRegistryLinked.sol +0 -8
  501. package/contracts/shared/IOwnable.sol +0 -6
  502. package/contracts/test/TestPool.sol +0 -22
  503. package/contracts/test/TestProduct.sol +0 -44
@@ -1,84 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../../registry/IRegistry.sol";
5
-
6
- import {LifecycleModule} from "../../module/lifecycle/LifecycleModule.sol";
7
- import {IProductService} from "../../service/IProductService.sol";
8
- import {IPolicy, IPolicyModule} from "./IPolicy.sol";
9
- import {ObjectType, POLICY} from "../../../types/ObjectType.sol";
10
- import {APPLIED, ACTIVE, UNDERWRITTEN} from "../../../types/StateId.sol";
11
- import {NftId, NftIdLib} from "../../../types/NftId.sol";
12
- import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
13
- import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
14
-
15
- import {LifecycleModule} from "../../module/lifecycle/LifecycleModule.sol";
16
-
17
- abstract contract PolicyModule is IPolicyModule {
18
- using NftIdLib for NftId;
19
-
20
- mapping(NftId nftId => PolicyInfo info) private _policyInfo;
21
-
22
- LifecycleModule private _lifecycleModule;
23
-
24
- // TODO find a better place to avoid dupliation
25
- modifier onlyProductService2() {
26
- require(
27
- msg.sender == address(this.getProductService()),
28
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
29
- );
30
- _;
31
- }
32
-
33
- constructor() {
34
- _lifecycleModule = LifecycleModule(address(this));
35
- }
36
-
37
- function createApplication(
38
- NftId productNftId,
39
- NftId policyNftId,
40
- uint256 sumInsuredAmount,
41
- uint256 premiumAmount,
42
- uint256 lifetime,
43
- NftId bundleNftId
44
- )
45
- external
46
- onlyProductService2
47
- override
48
- {
49
- _policyInfo[policyNftId] = PolicyInfo(
50
- policyNftId,
51
- productNftId,
52
- bundleNftId,
53
- address(0), // beneficiary = policy nft holder
54
- _lifecycleModule.getInitialState(POLICY()),
55
- sumInsuredAmount,
56
- premiumAmount,
57
- 0, // premium paid amount
58
- lifetime,
59
- "", // data
60
- blockTimestamp(), // createdAt
61
- zeroTimestamp(), // activatedAt
62
- zeroTimestamp(), // expiredAt
63
- zeroTimestamp(), // closedAt
64
- blockNumber() // updatedIn
65
- );
66
-
67
- // TODO add logging
68
- }
69
-
70
- function setPolicyInfo(PolicyInfo memory policyInfo)
71
- external
72
- override
73
- onlyProductService2
74
- {
75
- _policyInfo[policyInfo.nftId] = policyInfo;
76
- }
77
-
78
- function getPolicyInfo(
79
- NftId nftId
80
- ) external view returns (PolicyInfo memory info) {
81
- return _policyInfo[nftId];
82
- }
83
-
84
- }
@@ -1,41 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../../registry/IRegistry.sol";
5
- import {NftId} from "../../../types/NftId.sol";
6
- import {UFixed} from "../../../types/UFixed.sol";
7
- import {IProductService} from "../../service/IProductService.sol";
8
- import {IPoolService} from "../../service/IPoolService.sol";
9
-
10
- interface IPool {
11
- struct PoolInfo {
12
- NftId nftId;
13
- bool isVerifying;
14
- UFixed collateralizationLevel;
15
- }
16
- }
17
-
18
- interface IPoolModule is IPool {
19
-
20
- function registerPool(
21
- NftId poolNftId,
22
- bool isVerifying,
23
- UFixed collateralizationLevel
24
- ) external;
25
-
26
- function addBundleToPool(
27
- NftId bundleNftId,
28
- NftId poolNftId,
29
- uint256 amount
30
- ) external;
31
-
32
- function getPoolInfo(
33
- NftId nftId
34
- ) external view returns (PoolInfo memory info);
35
-
36
- function getBundleCount(NftId poolNftId) external view returns (uint256 bundleCount);
37
- function getBundleNftId(NftId poolNftId, uint256 index) external view returns (NftId bundleNftId);
38
-
39
- // repeat service linked signatures to avoid linearization issues
40
- function getPoolService() external returns(IPoolService);
41
- }
@@ -1,87 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IRegistry} from "../../../registry/IRegistry.sol";
5
- import {IProductService} from "../../service/IProductService.sol";
6
- import {IPoolService} from "../../service/IPoolService.sol";
7
- import {IPolicy, IPolicyModule} from "../../module/policy/IPolicy.sol";
8
- import {ITreasuryModule} from "../../module/treasury/ITreasury.sol";
9
-
10
- import {NftId} from "../../../types/NftId.sol";
11
- import {LibNftIdSet} from "../../../types/NftIdSet.sol";
12
- import {StateId, APPLIED} from "../../../types/StateId.sol";
13
- import {UFixed} from "../../../types/UFixed.sol";
14
-
15
- import {IPoolModule} from "./IPoolModule.sol";
16
-
17
- abstract contract PoolModule is
18
- IPoolModule
19
- {
20
- using LibNftIdSet for LibNftIdSet.Set;
21
-
22
- mapping(NftId poolNftId => PoolInfo info) private _poolInfo;
23
- mapping(NftId poolNftId => LibNftIdSet.Set bundles) private _bundlesForPool;
24
-
25
- modifier poolServiceCallingPool() {
26
- require(
27
- msg.sender == address(this.getPoolService()),
28
- "ERROR:PL-001:NOT_POOL_SERVICE"
29
- );
30
- _;
31
- }
32
-
33
- function registerPool(
34
- NftId nftId,
35
- bool isVerifying,
36
- UFixed collateralizationRate
37
- )
38
- public
39
- override
40
- {
41
- require(
42
- _poolInfo[nftId].nftId.eqz(),
43
- "ERROR:PL-010:ALREADY_CREATED");
44
-
45
- _poolInfo[nftId] = PoolInfo(
46
- nftId,
47
- isVerifying,
48
- collateralizationRate
49
- );
50
-
51
- // TODO add logging
52
- }
53
-
54
- function addBundleToPool(
55
- NftId bundleNftId,
56
- NftId poolNftId,
57
- uint256 // amount
58
- )
59
- external
60
- override
61
- {
62
- LibNftIdSet.Set storage bundleSet = _bundlesForPool[poolNftId];
63
- require(
64
- !bundleSet.contains(bundleNftId),
65
- "ERROR:PL-020:BUNDLE_ALREADY_ADDED");
66
-
67
- bundleSet.add(bundleNftId);
68
- }
69
-
70
-
71
- function getPoolInfo(
72
- NftId nftId
73
- ) external view override returns (PoolInfo memory info) {
74
- info = _poolInfo[nftId];
75
- }
76
-
77
-
78
- function getBundleCount(NftId poolNftId) external view override returns (uint256 bundleCount) {
79
- return _bundlesForPool[poolNftId].getLength();
80
- }
81
-
82
-
83
- function getBundleNftId(NftId poolNftId, uint256 index) external view override returns (NftId bundleNftId) {
84
- return _bundlesForPool[poolNftId].getElementAt(index);
85
- }
86
-
87
- }
@@ -1,39 +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 {RiskId} from "../../../types/RiskId.sol";
6
- import {StateId} from "../../../types/StateId.sol";
7
- import {Timestamp} from "../../../types/Timestamp.sol";
8
- import {Blocknumber} from "../../../types/Blocknumber.sol";
9
-
10
- interface IRisk {
11
-
12
- struct RiskInfo {
13
- RiskId id; // derived from hash over project specific data
14
- StateId state; // active, paused, closed
15
- bytes specification; // project specific risk attributes
16
- Timestamp createdAt;
17
- Blocknumber updatedIn;
18
- }
19
- }
20
-
21
- interface IRiskModule is IRisk {
22
-
23
- function createRisk(
24
- bytes memory specification
25
- )
26
- external
27
- returns (RiskId id);
28
-
29
- function setRiskInfo(RiskInfo memory riskInfo) external;
30
-
31
- function calculateRiskId(bytes memory specification) external pure returns (RiskId riskId);
32
- function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory riskInfo);
33
-
34
- function getRiskCount() external view returns (uint256 riskCount);
35
- function getRiskId(uint256 index) external view returns (RiskId riskId);
36
-
37
- // function getActivePolicyCount(RiskId riskId) external view returns (uint256 riskCount);
38
- // function getActivePolicyNftId(RiskId riskId, uint256 index) external view returns (NftId policyNftId);
39
- }
@@ -1,55 +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 {RiskId, toRiskId} from "../../../types/RiskId.sol";
6
- import {StateId, ACTIVE} from "../../../types/StateId.sol";
7
- import {Timestamp, blockTimestamp} from "../../../types/Timestamp.sol";
8
- import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
9
- import {IRiskModule} from "./IRisk.sol";
10
-
11
- contract RiskModule is IRiskModule {
12
-
13
- mapping(RiskId id => RiskInfo info) private _info;
14
- RiskId[] private _riskIds;
15
-
16
- function createRisk(
17
- bytes memory specification
18
- )
19
- external
20
- returns (RiskId riskId)
21
- {
22
- riskId = toRiskId(specification);
23
- require(_info[riskId].createdAt.eqz(), "ERROR:RSK-010:RISK_ALREADY_EXISTS");
24
-
25
- _info[riskId] = RiskInfo(
26
- riskId,
27
- ACTIVE(),
28
- specification,
29
- blockTimestamp(), // createdAt
30
- blockNumber()); // updatedIn
31
- }
32
-
33
- function setRiskInfo(RiskInfo memory riskInfo) external {
34
- _info[riskInfo.id] = riskInfo;
35
- }
36
-
37
- function calculateRiskId(bytes memory specification) external pure returns (RiskId riskId) {
38
- return toRiskId(specification);
39
- }
40
-
41
- function getRiskInfo(RiskId riskId) external view returns (RiskInfo memory riskInfo) {
42
- return _info[riskId];
43
- }
44
-
45
- function getRiskCount() external view returns (uint256 riskCount) {
46
- return _riskIds.length;
47
- }
48
-
49
- function getRiskId(uint256 index) external view returns (RiskId riskId) {
50
- return _riskIds[index];
51
- }
52
-
53
- // function getActivePolicyCount(RiskId riskId) external view returns (uint256 riskCount);
54
- // function getActivePolicyNftId(RiskId riskId, uint256 index) external view returns (NftId policyNftId);
55
- }
@@ -1,103 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {NftId} from "../../../types/NftId.sol";
7
- import {UFixed} from "../../../types/UFixed.sol";
8
- import {Fee} from "../../../types/Fee.sol";
9
-
10
- import {TokenHandler} from "./TokenHandler.sol";
11
-
12
- interface ITreasury {
13
- // TODO add events
14
- // TODO add errors
15
-
16
- struct ProductSetup {
17
- NftId productNftId;
18
- NftId distributorNftId;
19
- NftId poolNftId;
20
- IERC20Metadata token;
21
- address wallet;
22
- Fee policyFee;
23
- Fee processingFee;
24
- }
25
-
26
- struct DistributorSetup {
27
- NftId distributorNftId;
28
- address wallet;
29
- Fee commissionFee;
30
- }
31
-
32
- struct PoolSetup {
33
- NftId poolNftId;
34
- address wallet;
35
- Fee stakingFee;
36
- Fee performanceFee;
37
- }
38
- }
39
-
40
- interface ITreasuryModule is ITreasury {
41
-
42
- function registerProduct(
43
- NftId productNftId,
44
- NftId distributorNftId,
45
- NftId poolNftId,
46
- IERC20Metadata token,
47
- address wallet,
48
- Fee memory policyFee,
49
- Fee memory processingFee
50
- ) external;
51
-
52
- function setProductFees(
53
- NftId productNftId,
54
- Fee memory policyFee,
55
- Fee memory processingFee
56
- ) external;
57
-
58
- function registerPool(
59
- NftId poolNftId,
60
- address wallet,
61
- Fee memory stakingFee,
62
- Fee memory performanceFee
63
- ) external;
64
-
65
- function setPoolFees(
66
- NftId poolNftId,
67
- Fee memory stakingFee,
68
- Fee memory performanceFee
69
- ) external;
70
-
71
- function getTokenHandler(
72
- NftId componentNftId
73
- ) external view returns (TokenHandler tokenHandler);
74
-
75
- function getProductSetup(
76
- NftId productNftId
77
- ) external view returns (ProductSetup memory setup);
78
-
79
- function getPoolSetup(
80
- NftId poolNftId
81
- ) external view returns (PoolSetup memory setup);
82
-
83
- function calculateFeeAmount(
84
- uint256 amount,
85
- Fee memory fee
86
- ) external pure returns (uint256 feeAmount, uint256 netAmount);
87
-
88
- function getFee(
89
- UFixed fractionalFee,
90
- uint256 fixedFee
91
- ) external pure returns (Fee memory fee);
92
-
93
- function getZeroFee() external pure returns (Fee memory fee);
94
-
95
- function getUFixed(
96
- uint256 a
97
- ) external pure returns (UFixed);
98
-
99
- function getUFixed(
100
- uint256 a,
101
- int8 exp
102
- ) external pure returns (UFixed);
103
- }
@@ -1,48 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {NftId} from "../../../types/NftId.sol";
7
-
8
- contract TokenHandler {
9
- NftId private _productNftId;
10
- IERC20Metadata private _token;
11
-
12
- constructor(
13
- NftId productNftId,
14
- address token
15
- )
16
- {
17
- _productNftId = productNftId;
18
- _token = IERC20Metadata(token);
19
- }
20
-
21
- // TODO add logging
22
- function transfer(
23
- address from,
24
- address to,
25
- uint256 amount
26
- )
27
- external // TODO add authz (only treasury/instance/product/pool/ service)
28
- {
29
- // TODO switch to oz safeTransferFrom
30
- _token.transferFrom(from, to, amount);
31
- }
32
-
33
- function getProductNftId()
34
- external
35
- view
36
- returns(NftId)
37
- {
38
- return _productNftId;
39
- }
40
-
41
- function getToken()
42
- external
43
- view
44
- returns(IERC20Metadata)
45
- {
46
- return _token;
47
- }
48
- }
@@ -1,152 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
-
6
- import {NftId} from "../../../types/NftId.sol";
7
- import {Fee, FeeLib} from "../../../types/Fee.sol";
8
- import {UFixed, UFixedMathLib} from "../../../types/UFixed.sol";
9
- import {TokenHandler} from "./TokenHandler.sol";
10
- import {ITreasuryModule} from "./ITreasury.sol";
11
-
12
- abstract contract TreasuryModule is ITreasuryModule {
13
- mapping(NftId productNftId => ProductSetup setup) private _productSetup;
14
- mapping(NftId distributorNftId => DistributorSetup setup)
15
- private _distributorSetup;
16
- mapping(NftId poolNftId => PoolSetup setup) private _poolSetup;
17
- mapping(NftId componentNftId => TokenHandler tokenHanlder) _tokenHandler;
18
-
19
- function registerProduct(
20
- NftId productNftId,
21
- NftId distributorNftId,
22
- NftId poolNftId,
23
- IERC20Metadata token,
24
- address wallet,
25
- Fee memory policyFee,
26
- Fee memory processingFee
27
- ) external override // TODO add authz (only component module)
28
- {
29
- require(address(_tokenHandler[productNftId]) == address(0), "ERROR:TRS-010:TOKEN_HANDLER_ALREADY_REGISTERED");
30
- require(address(_tokenHandler[poolNftId]) == address(0), "ERROR:TRS-011:TOKEN_HANDLER_ALREADY_REGISTERED");
31
- require(address(_tokenHandler[distributorNftId]) == address(0), "ERROR:TRS-012:TOKEN_HANDLER_ALREADY_REGISTERED");
32
- // TODO add additional validations
33
-
34
- // deploy product specific handler contract
35
- TokenHandler tokenHandler = new TokenHandler(productNftId, address(token));
36
- _tokenHandler[productNftId] = tokenHandler;
37
- _tokenHandler[poolNftId] = tokenHandler;
38
- _tokenHandler[distributorNftId] = tokenHandler;
39
-
40
- // create product setup
41
- _productSetup[productNftId] = ProductSetup(
42
- productNftId,
43
- distributorNftId,
44
- poolNftId,
45
- token,
46
- wallet,
47
- policyFee,
48
- processingFee
49
- );
50
-
51
- // TODO add logging
52
- }
53
-
54
- function setProductFees(
55
- NftId productNftId,
56
- Fee memory policyFee,
57
- Fee memory processingFee
58
- ) external override // TODO add authz (only component owner service)
59
- {
60
- // TODO add validation
61
-
62
- ProductSetup storage setup = _productSetup[productNftId];
63
- setup.policyFee = policyFee;
64
- setup.processingFee = processingFee;
65
-
66
- // TODO add logging
67
- }
68
-
69
- function registerPool(
70
- NftId poolNftId,
71
- address wallet,
72
- Fee memory stakingFee,
73
- Fee memory performanceFee
74
- ) external override // TODO add authz (only component module)
75
- {
76
- // TODO add validation
77
-
78
- _poolSetup[poolNftId] = PoolSetup(
79
- poolNftId,
80
- wallet,
81
- stakingFee,
82
- performanceFee
83
- );
84
-
85
- // TODO add logging
86
- }
87
-
88
- function setPoolFees(
89
- NftId poolNftId,
90
- Fee memory stakingFee,
91
- Fee memory performanceFee
92
- ) external override // TODO add authz (only component owner service)
93
- {
94
- // TODO add validation
95
-
96
- PoolSetup storage setup = _poolSetup[poolNftId];
97
- setup.stakingFee = stakingFee;
98
- setup.performanceFee = performanceFee;
99
-
100
- // TODO add logging
101
- }
102
-
103
- function getTokenHandler(
104
- NftId componentNftId
105
- ) external view override returns (TokenHandler tokenHandler) {
106
- return _tokenHandler[componentNftId];
107
- }
108
-
109
- function getProductSetup(
110
- NftId productNftId
111
- ) external view override returns (ProductSetup memory setup) {
112
- return _productSetup[productNftId];
113
- }
114
-
115
- function getPoolSetup(
116
- NftId poolNftId
117
- ) external view override returns (PoolSetup memory setup) {
118
- return _poolSetup[poolNftId];
119
- }
120
-
121
- function calculateFeeAmount(
122
- uint256 amount,
123
- Fee memory fee
124
- ) public pure override returns (uint256 feeAmount, uint256 netAmount) {
125
- return FeeLib.calculateFee(amount, fee);
126
- }
127
-
128
- function getFee(
129
- UFixed fractionalFee,
130
- uint256 fixedFee
131
- ) external pure override returns (Fee memory fee) {
132
- return FeeLib.toFee(fractionalFee, fixedFee);
133
- }
134
-
135
- function getZeroFee() external pure override returns (Fee memory fee) {
136
- return FeeLib.zeroFee();
137
- }
138
-
139
- function getUFixed(
140
- uint256 a
141
- ) external pure override returns (UFixed) {
142
- return UFixedMathLib.toUFixed(a);
143
- }
144
-
145
- function getUFixed(
146
- uint256 a,
147
- int8 exp
148
- ) external pure returns (UFixed)
149
- {
150
- return UFixedMathLib.toUFixed(a, exp);
151
- }
152
- }