@etherisc/gif-next 0.0.2-f99f1d2-109 → 0.0.2-faaba97-954

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 (466) hide show
  1. package/README.md +337 -19
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +672 -35
  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 +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1064 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +830 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1180 -132
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +977 -156
  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 +1698 -810
  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 +2413 -849
  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/{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/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  56. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  60. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  62. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  64. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{treasury → module}/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 +4 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +844 -0
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +450 -0
  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 +4 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1237 -0
  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 +4 -0
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +840 -0
  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 +252 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +595 -27
  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 +652 -50
  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 +4 -0
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IService.sol/IService.json} +168 -132
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  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 +4 -0
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  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 +4 -0
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +596 -0
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  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 +4 -0
  179. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  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 -2
  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 +4 -0
  191. package/artifacts/contracts/types/Fee.sol/FeeLib.json +288 -0
  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 +4 -0
  197. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  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 +97 -4
  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 +4 -0
  221. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  222. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  224. package/contracts/components/Component.sol +227 -51
  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 +113 -0
  229. package/contracts/components/IProductComponent.sol +40 -0
  230. package/contracts/components/Pool.sol +281 -30
  231. package/contracts/components/Product.sol +252 -48
  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 +95 -22
  236. package/contracts/instance/IInstanceService.sol +72 -0
  237. package/contracts/instance/Instance.sol +306 -51
  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 +99 -0
  270. package/contracts/instance/service/IProductService.sol +40 -0
  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 +303 -0
  274. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  275. package/contracts/instance/service/ProductService.sol +210 -0
  276. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  277. package/contracts/registry/ChainNft.sol +137 -62
  278. package/contracts/registry/IRegistry.sol +75 -41
  279. package/contracts/registry/IRegistryService.sol +68 -0
  280. package/contracts/registry/ITransferInterceptor.sol +7 -0
  281. package/contracts/registry/Registry.sol +413 -128
  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 +27 -0
  289. package/contracts/shared/INftOwnable.sol +23 -0
  290. package/contracts/shared/IPolicyHolder.sol +26 -0
  291. package/contracts/shared/IRegisterable.sol +15 -0
  292. package/contracts/shared/IRegistryLinked.sol +12 -0
  293. package/contracts/shared/IService.sol +16 -0
  294. package/contracts/shared/IVersionable.sol +53 -0
  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 +74 -0
  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 +59 -0
  304. package/contracts/test/TestFee.sol +25 -0
  305. package/contracts/test/TestRegisterable.sol +18 -0
  306. package/contracts/test/TestRoleId.sol +14 -0
  307. package/contracts/test/TestService.sol +25 -0
  308. package/contracts/test/TestToken.sol +26 -0
  309. package/contracts/test/TestVersion.sol +44 -0
  310. package/contracts/test/TestVersionable.sol +17 -0
  311. package/contracts/test/Usdc.sol +26 -0
  312. package/contracts/types/AddressSet.sol +58 -0
  313. package/contracts/types/Amount.sol +60 -0
  314. package/contracts/types/Blocknumber.sol +1 -0
  315. package/contracts/types/ClaimId.sol +52 -0
  316. package/contracts/types/DistributorType.sol +55 -0
  317. package/contracts/types/Fee.sol +52 -20
  318. package/contracts/types/Key32.sol +50 -0
  319. package/contracts/types/NftId.sol +30 -1
  320. package/contracts/types/NftIdSet.sol +62 -0
  321. package/contracts/types/NumberId.sol +52 -0
  322. package/contracts/types/ObjectType.sol +65 -15
  323. package/contracts/types/PayoutId.sol +54 -0
  324. package/contracts/types/Referral.sol +89 -0
  325. package/contracts/types/RiskId.sol +43 -0
  326. package/contracts/types/RoleId.sol +97 -0
  327. package/contracts/types/Seconds.sol +54 -0
  328. package/contracts/types/StateId.sol +19 -4
  329. package/contracts/types/Timestamp.sol +31 -6
  330. package/contracts/types/UFixed.sol +151 -31
  331. package/contracts/types/Version.sol +108 -0
  332. package/package.json +12 -5
  333. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  334. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  335. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  336. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  337. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  339. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  341. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  343. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  345. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  347. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  349. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  351. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  353. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  355. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  357. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  359. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  361. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  363. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  365. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  367. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  369. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  371. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  372. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  373. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  375. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  376. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  377. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  378. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  379. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  380. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  382. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  384. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  385. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  386. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  387. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  388. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  390. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  391. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  392. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  393. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  394. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  395. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  396. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  399. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  400. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  402. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  404. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  405. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  407. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  409. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  411. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  412. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  413. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  414. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  415. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  416. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  417. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  418. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  419. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  420. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  421. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  422. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  423. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  424. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  425. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  426. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  427. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  428. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  429. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  430. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  431. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  432. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  433. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  434. package/contracts/components/IPool.sol +0 -15
  435. package/contracts/components/IProduct.sol +0 -16
  436. package/contracts/experiment/errors/Require.sol +0 -38
  437. package/contracts/experiment/errors/Revert.sol +0 -44
  438. package/contracts/experiment/inheritance/A.sol +0 -53
  439. package/contracts/experiment/inheritance/B.sol +0 -28
  440. package/contracts/experiment/inheritance/C.sol +0 -34
  441. package/contracts/experiment/inheritance/IA.sol +0 -13
  442. package/contracts/experiment/inheritance/IB.sol +0 -10
  443. package/contracts/experiment/inheritance/IC.sol +0 -12
  444. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  445. package/contracts/experiment/statemachine/ISM.sol +0 -25
  446. package/contracts/experiment/statemachine/README.md +0 -112
  447. package/contracts/experiment/statemachine/SM.sol +0 -57
  448. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  449. package/contracts/experiment/types/TypeA.sol +0 -47
  450. package/contracts/experiment/types/TypeB.sol +0 -29
  451. package/contracts/instance/access/Access.sol +0 -165
  452. package/contracts/instance/access/IAccess.sol +0 -63
  453. package/contracts/instance/component/ComponentModule.sol +0 -274
  454. package/contracts/instance/component/IComponent.sol +0 -74
  455. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  456. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  457. package/contracts/instance/policy/IPolicy.sol +0 -50
  458. package/contracts/instance/policy/PolicyModule.sol +0 -114
  459. package/contracts/instance/pool/IPoolModule.sol +0 -23
  460. package/contracts/instance/pool/PoolModule.sol +0 -81
  461. package/contracts/instance/product/IProductService.sol +0 -36
  462. package/contracts/instance/product/ProductService.sol +0 -136
  463. package/contracts/instance/treasury/ITreasury.sol +0 -91
  464. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  465. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  466. package/contracts/registry/IChainNft.sol +0 -21
@@ -1,63 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked} from "../../registry/IRegistry.sol";
5
-
6
- interface IAccess {
7
- struct RoleInfo {
8
- bytes32 id;
9
- string name;
10
- bool isActive;
11
- }
12
- }
13
-
14
- interface IAccessCheckRole {
15
- function hasRole(bytes32 role, address member) external view returns (bool);
16
- }
17
-
18
- interface IAccessComponentTypeRoles {
19
- function PRODUCT_OWNER_ROLE() external view returns (bytes32 role);
20
-
21
- function ORACLE_OWNER_ROLE() external view returns (bytes32 role);
22
-
23
- function POOL_OWNER_ROLE() external view returns (bytes32 role);
24
- }
25
-
26
- interface IAccessModule is
27
- IOwnable,
28
- IRegistryLinked,
29
- IAccess,
30
- IAccessComponentTypeRoles,
31
- IAccessCheckRole
32
- {
33
- function createRole(string memory roleName) external returns (bytes32 role);
34
-
35
- function enableRole(bytes32 role) external;
36
-
37
- function disableRole(bytes32 role) external;
38
-
39
- function grantRole(bytes32 role, address member) external;
40
-
41
- function revokeRole(bytes32 role, address member) external;
42
-
43
- function getRole(uint256 idx) external view returns (bytes32 role);
44
-
45
- function getRoleInfo(
46
- bytes32 role
47
- ) external view returns (RoleInfo memory info);
48
-
49
- function getRoleForName(
50
- string memory roleName
51
- ) external pure returns (bytes32 role);
52
-
53
- function getRoleCount() external view returns (uint256 roles);
54
-
55
- function getRoleMemberCount(
56
- bytes32 role
57
- ) external view returns (uint256 roleMembers);
58
-
59
- function getRoleMember(
60
- bytes32 role,
61
- uint256 idx
62
- ) external view returns (address roleMembers);
63
- }
@@ -1,274 +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 {RegistryLinked} from "../../registry/Registry.sol";
7
- import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
8
- import {IAccessComponentTypeRoles, IAccessCheckRole} from "../access/IAccess.sol";
9
- import {IInstance} from "../IInstance.sol";
10
-
11
- import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
12
- import {ITreasuryModule} from "../treasury/ITreasury.sol";
13
- import {TreasuryModule} from "../treasury/TreasuryModule.sol";
14
- import {IComponent, IComponentContract, IComponentModule, IComponentOwnerService} from "./IComponent.sol";
15
- import {IProductComponent} from "../../components/IProduct.sol";
16
- import {IPoolComponent} from "../../components/IPool.sol";
17
- import {IPoolModule} from "../pool/IPoolModule.sol";
18
- import {ObjectType, PRODUCT, ORACLE, POOL} from "../../types/ObjectType.sol";
19
- import {StateId, ACTIVE, PAUSED} from "../../types/StateId.sol";
20
- import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
21
- import {Fee, zeroFee} from "../../types/Fee.sol";
22
-
23
- abstract contract ComponentModule is
24
- IRegistryLinked,
25
- IAccessComponentTypeRoles,
26
- IAccessCheckRole,
27
- IComponentModule
28
- {
29
- using NftIdLib for NftId;
30
-
31
- mapping(NftId nftId => ComponentInfo info) private _componentInfo;
32
- mapping(address cAddress => NftId nftId) private _nftIdByAddress;
33
- NftId[] private _nftIds;
34
-
35
- mapping(ObjectType cType => bytes32 role) private _componentOwnerRole;
36
-
37
- // TODO maybe move this to Instance contract as internal variable?
38
- LifecycleModule private _lifecycleModule;
39
- TreasuryModule private _treasuryModule;
40
- IPoolModule private _poolModule;
41
- IComponentOwnerService private _componentOwnerService;
42
-
43
- modifier onlyComponentOwnerService() {
44
- require(
45
- address(_componentOwnerService) == msg.sender,
46
- "ERROR:CMP-001:NOT_OWNER_SERVICE"
47
- );
48
- _;
49
- }
50
-
51
- constructor(address componentOwnerService) {
52
- address componentAddress = address(this);
53
- _lifecycleModule = LifecycleModule(componentAddress);
54
- _treasuryModule = TreasuryModule(componentAddress);
55
- _poolModule = IPoolModule(componentAddress);
56
- _componentOwnerService = ComponentOwnerService(componentOwnerService);
57
- }
58
-
59
- function registerComponent(
60
- IComponentContract component
61
- ) external override onlyComponentOwnerService returns (NftId nftId) {
62
- ObjectType objectType = component.getType();
63
- bytes32 typeRole = getRoleForType(objectType);
64
- require(
65
- this.hasRole(typeRole, component.getInitialOwner()),
66
- "ERROR:CMP-004:TYPE_ROLE_MISSING"
67
- );
68
-
69
- nftId = this.getRegistry().register(address(component));
70
- IERC20Metadata token = component.getToken();
71
- address wallet = component.getWallet();
72
-
73
- // create component info
74
- _componentInfo[nftId] = ComponentInfo(
75
- nftId,
76
- _lifecycleModule.getInitialState(objectType),
77
- token
78
- );
79
-
80
- // component type specific registration actions
81
- if (component.getType() == PRODUCT()) {
82
- IProductComponent product = IProductComponent(address(component));
83
- NftId poolNftId = product.getPoolNftId();
84
- require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
85
- // validate pool token and product token are same
86
-
87
- // register with tresury
88
- // implement and add validation
89
- NftId distributorNftId = zeroNftId();
90
- _treasuryModule.registerProduct(
91
- nftId,
92
- distributorNftId,
93
- poolNftId,
94
- token,
95
- wallet,
96
- product.getPolicyFee(),
97
- product.getProcessingFee()
98
- );
99
- } else if (component.getType() == POOL()) {
100
- IPoolComponent pool = IPoolComponent(address(component));
101
-
102
- // register with pool
103
- _poolModule.registerPool(nftId);
104
-
105
- // register with tresury
106
- _treasuryModule.registerPool(
107
- nftId,
108
- wallet,
109
- pool.getStakingFee(),
110
- pool.getPerformanceFee()
111
- );
112
- }
113
- // TODO add distribution
114
-
115
- _nftIdByAddress[address(component)] = nftId;
116
- _nftIds.push(nftId);
117
-
118
- // TODO add loggingx
119
- }
120
-
121
- function getComponentOwnerService()
122
- external
123
- view
124
- override
125
- returns (IComponentOwnerService)
126
- {
127
- return _componentOwnerService;
128
- }
129
-
130
- function setComponentInfo(
131
- ComponentInfo memory info
132
- ) external onlyComponentOwnerService returns (NftId nftId) {
133
- nftId = info.nftId;
134
- require(
135
- nftId.gtz() && _componentInfo[nftId].nftId.eq(nftId),
136
- "ERROR:CMP-006:COMPONENT_UNKNOWN"
137
- );
138
-
139
- // TODO decide if state changes should have explicit functions and not
140
- // just a generic setXYZInfo and implicit state transitions
141
- // when in doubt go for the explicit approach ...
142
- ObjectType objectType = this.getRegistry().getInfo(nftId).objectType;
143
- _lifecycleModule.checkAndLogTransition(
144
- nftId,
145
- objectType,
146
- _componentInfo[nftId].state,
147
- info.state
148
- );
149
- _componentInfo[nftId] = info;
150
- }
151
-
152
- function getComponentInfo(
153
- NftId nftId
154
- ) external view override returns (ComponentInfo memory) {
155
- return _componentInfo[nftId];
156
- }
157
-
158
- function getComponentId(
159
- address componentAddress
160
- ) external view returns (NftId componentNftId) {
161
- return _nftIdByAddress[componentAddress];
162
- }
163
-
164
- function getComponentId(
165
- uint256 idx
166
- ) external view override returns (NftId componentNftId) {
167
- return _nftIds[idx];
168
- }
169
-
170
- function components()
171
- external
172
- view
173
- override
174
- returns (uint256 numberOfCompnents)
175
- {
176
- return _nftIds.length;
177
- }
178
-
179
- function getRoleForType(
180
- ObjectType cType
181
- ) public view returns (bytes32 role) {
182
- if (cType == PRODUCT()) {
183
- return this.PRODUCT_OWNER_ROLE();
184
- }
185
- if (cType == POOL()) {
186
- return this.POOL_OWNER_ROLE();
187
- }
188
- if (cType == ORACLE()) {
189
- return this.ORACLE_OWNER_ROLE();
190
- }
191
- }
192
- }
193
-
194
- // this is actually the component owner service
195
- contract ComponentOwnerService is
196
- RegistryLinked,
197
- IComponent,
198
- IComponentOwnerService
199
- {
200
- using NftIdLib for NftId;
201
-
202
- modifier onlyComponentOwner(IComponentContract component) {
203
- NftId nftId = _registry.getNftId(address(component));
204
- require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
205
- require(
206
- msg.sender == _registry.getOwner(nftId),
207
- "ERROR:COS-002:NOT_OWNER"
208
- );
209
- _;
210
- }
211
-
212
- constructor(
213
- address registry
214
- ) RegistryLinked(registry) // solhint-disable-next-line no-empty-blocks
215
- {
216
-
217
- }
218
-
219
- function register(
220
- IComponentContract component
221
- ) external override returns (NftId nftId) {
222
- require(
223
- msg.sender == component.getInitialOwner(),
224
- "ERROR:COS-003:NOT_OWNER"
225
- );
226
-
227
- IInstance instance = component.getInstance();
228
- nftId = instance.registerComponent(component);
229
- }
230
-
231
- function lock(
232
- IComponentContract component
233
- ) external override onlyComponentOwner(component) {
234
- IInstance instance = component.getInstance();
235
- ComponentInfo memory info = instance.getComponentInfo(
236
- component.getNftId()
237
- );
238
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
239
-
240
- info.state = PAUSED();
241
- // setComponentInfo checks for valid state changes
242
- instance.setComponentInfo(info);
243
- }
244
-
245
- function unlock(
246
- IComponentContract component
247
- ) external override onlyComponentOwner(component) {
248
- IInstance instance = component.getInstance();
249
- ComponentInfo memory info = instance.getComponentInfo(
250
- component.getNftId()
251
- );
252
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
253
-
254
- info.state = ACTIVE();
255
- // setComponentInfo checks for valid state changes
256
- instance.setComponentInfo(info);
257
- }
258
-
259
- function setProductFees(
260
- IComponentContract product,
261
- Fee memory policyFee,
262
- Fee memory processingFee
263
- ) external override onlyComponentOwner(product) {
264
- require(product.getType() == PRODUCT(), "ERROR_NOT_PRODUCT");
265
-
266
- address instanceAddress = address(product.getInstance());
267
- ITreasuryModule treasuryModule = ITreasuryModule(instanceAddress);
268
- treasuryModule.setProductFees(
269
- product.getNftId(),
270
- policyFee,
271
- processingFee
272
- );
273
- }
274
- }
@@ -1,74 +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 {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
7
- import {IInstance} from "../IInstance.sol";
8
- import {StateId} from "../../types/StateId.sol";
9
- import {NftId} from "../../types/NftId.sol";
10
- import {Fee} from "../../types/Fee.sol";
11
- import {UFixed} from "../../types/UFixed.sol";
12
-
13
- interface IComponent {
14
- // component dynamic info (static info kept in registry)
15
- struct ComponentInfo {
16
- NftId nftId;
17
- StateId state;
18
- IERC20Metadata token;
19
- }
20
- }
21
-
22
- interface IInstanceLinked {
23
- // function setInstance(address instance) external;
24
- function getInstance() external view returns (IInstance instance);
25
- }
26
-
27
- interface IComponentContract is IRegisterable, IInstanceLinked, IComponent {
28
- function getToken() external view returns (IERC20Metadata token);
29
-
30
- function getWallet() external view returns (address walletAddress);
31
- }
32
-
33
- interface IComponentOwnerService is IRegistryLinked {
34
- function register(
35
- IComponentContract component
36
- ) external returns (NftId nftId);
37
-
38
- function lock(IComponentContract component) external;
39
-
40
- function unlock(IComponentContract component) external;
41
-
42
- function setProductFees(
43
- IComponentContract product,
44
- Fee memory policyFee,
45
- Fee memory processingFee
46
- ) external;
47
- }
48
-
49
- interface IComponentModule is IOwnable, IRegistryLinked, IComponent {
50
- function registerComponent(
51
- IComponentContract component
52
- ) external returns (NftId nftId);
53
-
54
- function setComponentInfo(
55
- ComponentInfo memory info
56
- ) external returns (NftId componentNftId);
57
-
58
- function getComponentInfo(
59
- NftId nftId
60
- ) external view returns (ComponentInfo memory info);
61
-
62
- function getComponentId(
63
- address componentAddress
64
- ) external view returns (NftId nftId);
65
-
66
- function getComponentId(uint256 idx) external view returns (NftId nftId);
67
-
68
- function components() external view returns (uint256 numberOfCompnents);
69
-
70
- function getComponentOwnerService()
71
- external
72
- view
73
- returns (IComponentOwnerService);
74
- }
@@ -1,47 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {ObjectType} from "../../types/ObjectType.sol";
5
- import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
-
8
- interface ILifecycle {
9
- event LogComponentStateChanged(
10
- NftId nftId,
11
- ObjectType objectType,
12
- StateId fromStateId,
13
- StateId toStateId
14
- );
15
- event LogBundleStateChanged(
16
- NftId nftId,
17
- StateId fromStateId,
18
- StateId toStateId
19
- );
20
- event LogPolicyStateChanged(
21
- NftId nftId,
22
- StateId fromStateId,
23
- StateId toStateId
24
- );
25
- // event LogClaimStateChanged(NftId nftId, ClaimId claimId, StateId fromStateId, StateId toStateId);
26
- // event LogPayoutStateChanged(NftId nftId, ClaimId claimId, PayoutId payoutId, StateId fromStateId, StateId toStateId);
27
-
28
- error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
29
- error ErrorInvalidStateTransition(
30
- NftId nftId,
31
- ObjectType objectType,
32
- StateId fromStateId,
33
- StateId toStateId
34
- );
35
- }
36
-
37
- interface ILifecycleModule is ILifecycle {
38
- function getInitialState(
39
- ObjectType objectType
40
- ) external view returns (StateId);
41
-
42
- function isValidTransition(
43
- ObjectType objectType,
44
- StateId fromId,
45
- StateId toId
46
- ) external view returns (bool);
47
- }
@@ -1,88 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
6
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
7
- import {ILifecycleModule} from "./ILifecycle.sol";
8
-
9
- contract LifecycleModule is ILifecycleModule {
10
- mapping(ObjectType objectType => StateId initialState)
11
- private _initialState;
12
-
13
- mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
14
- private _isValidTransition;
15
-
16
- constructor() {
17
- _setupComponentLifecycle(PRODUCT());
18
- _setupComponentLifecycle(ORACLE());
19
- _setupComponentLifecycle(POOL());
20
-
21
- _setupBundleLifecycle();
22
- _setupPolicyLifecycle();
23
- }
24
-
25
- function checkAndLogTransition(
26
- NftId nftId,
27
- ObjectType objectType,
28
- StateId fromId,
29
- StateId toId
30
- ) public returns (StateId) // add only currentcontract? would that work?
31
- {
32
- if (!_isValidTransition[objectType][fromId][toId]) {
33
- revert ErrorInvalidStateTransition(nftId, objectType, fromId, toId);
34
- }
35
-
36
- if (objectType == POLICY()) {
37
- emit LogPolicyStateChanged(nftId, fromId, toId);
38
- } else if (objectType == BUNDLE()) {
39
- emit LogBundleStateChanged(nftId, fromId, toId);
40
- } else if (
41
- objectType == PRODUCT() ||
42
- objectType == ORACLE() ||
43
- objectType == POOL()
44
- ) {
45
- emit LogComponentStateChanged(nftId, objectType, fromId, toId);
46
- } else {
47
- revert ErrorNoLifecycle(nftId, objectType);
48
- }
49
-
50
- return toId;
51
- }
52
-
53
- function getInitialState(
54
- ObjectType objectType
55
- ) public view returns (StateId) {
56
- return _initialState[objectType];
57
- }
58
-
59
- function isValidTransition(
60
- ObjectType objectType,
61
- StateId fromId,
62
- StateId toId
63
- ) public view returns (bool) {
64
- return _isValidTransition[objectType][fromId][toId];
65
- }
66
-
67
- function _setupComponentLifecycle(ObjectType objectType) internal {
68
- _initialState[objectType] = ACTIVE();
69
- _isValidTransition[objectType][ACTIVE()][PAUSED()] = true;
70
- _isValidTransition[objectType][PAUSED()][ACTIVE()] = true;
71
- _isValidTransition[objectType][PAUSED()][ARCHIVED()] = true;
72
- }
73
-
74
- function _setupBundleLifecycle() internal {
75
- _initialState[BUNDLE()] = ACTIVE();
76
- _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
77
- _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
78
- _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
79
- }
80
-
81
- function _setupPolicyLifecycle() internal {
82
- _initialState[POLICY()] = APPLIED();
83
- _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
84
- _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
85
- _isValidTransition[POLICY()][APPLIED()][ACTIVE()] = true;
86
- _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
87
- }
88
- }
@@ -1,50 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {IProductService} from "../product/IProductService.sol";
7
- import {NftId} from "../../types/NftId.sol";
8
- import {StateId} from "../../types/StateId.sol";
9
-
10
- // TODO check if there is value to introuce IContract and let IPolicy derive from IContract
11
- interface IPolicy {
12
- struct PolicyInfo {
13
- NftId nftId;
14
- StateId state; // applied, withdrawn, rejected, active, closed
15
- // TODO add beneficiary address
16
- uint256 sumInsuredAmount;
17
- uint256 premiumAmount;
18
- uint256 premiumPaidAmount;
19
- uint256 lifetime; // activatedAt + lifetime >= expiredAt
20
- uint256 createdAt;
21
- uint256 updatedAt;
22
- uint256 activatedAt; // time of underwriting
23
- uint256 expiredAt; // no new claims
24
- uint256 closedAt; // no locked capital
25
- }
26
- }
27
-
28
- interface IPolicyModule is IOwnable, IRegistryLinked, IPolicy {
29
- function createApplication(
30
- IRegistry.RegistryInfo memory productInfo,
31
- address applicationOwner,
32
- uint256 sumInsuredAmount,
33
- uint256 premiumAmount,
34
- uint256 lifetime,
35
- NftId bundleNftId
36
- ) external returns (NftId nftId);
37
-
38
- // process full premium
39
- function processPremium(NftId nftId) external;
40
-
41
- function activate(NftId nftId) external;
42
-
43
- function getBundleNftForPolicy(
44
- NftId nftId
45
- ) external view returns (NftId bundleNft);
46
-
47
- function getPolicyInfo(
48
- NftId nftId
49
- ) external view returns (PolicyInfo memory info);
50
- }