@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
@@ -2,354 +2,209 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {IRegistry} from "../../registry/IRegistry.sol";
5
+ import {IProductComponent} from "../../components/IProductComponent.sol";
6
+ import {Product} from "../../components/Product.sol";
7
+ import {IComponent} from "../../components/IComponent.sol";
5
8
  import {IPoolComponent} from "../../components/IPoolComponent.sol";
6
- import {IInstance} from "../../instance/IInstance.sol";
7
- import {IPolicy, IPolicyModule} from "../module/policy/IPolicy.sol";
8
- import {IPool} from "../module/pool/IPoolModule.sol";
9
- import {IBundle} from "../module/bundle/IBundle.sol";
9
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
10
+ import {IInstance} from "../IInstance.sol";
11
+ import {IPolicy} from "../module/IPolicy.sol";
12
+ import {IRisk} from "../module/IRisk.sol";
13
+ import {IBundle} from "../module/IBundle.sol";
10
14
  import {IProductService} from "./IProductService.sol";
11
- import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
15
+ import {ITreasury} from "../module/ITreasury.sol";
16
+ import {ISetup} from "../module/ISetup.sol";
17
+
18
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
12
19
 
13
20
  import {IVersionable} from "../../shared/IVersionable.sol";
14
21
  import {Versionable} from "../../shared/Versionable.sol";
15
22
 
16
23
  import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
17
- import {UFixed, UFixedMathLib} from "../../types/UFixed.sol";
18
- import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
19
- import {APPLIED, UNDERWRITTEN, ACTIVE} from "../../types/StateId.sol";
20
- import {NftId, NftIdLib} from "../../types/NftId.sol";
24
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
21
25
  import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
26
+ import {ObjectType, PRODUCT, POOL, POLICY} from "../../types/ObjectType.sol";
27
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
28
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
22
29
  import {Fee, FeeLib} from "../../types/Fee.sol";
30
+ import {ReferralId} from "../../types/Referral.sol";
31
+ import {RiskId} from "../../types/RiskId.sol";
32
+ import {StateId} from "../../types/StateId.sol";
23
33
  import {Version, VersionLib} from "../../types/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../../types/RoleId.sol";
24
35
 
25
- import {ComponentServiceBase} from "./ComponentServiceBase.sol";
36
+ import {IService} from "../../shared/IService.sol";
37
+ import {Service} from "../../shared/Service.sol";
38
+ import {ComponentService} from "../base/ComponentService.sol";
26
39
  import {IProductService} from "./IProductService.sol";
40
+ import {InstanceReader} from "../InstanceReader.sol";
41
+ import {IPoolService} from "./PoolService.sol";
27
42
 
28
43
  // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
29
- contract ProductService is ComponentServiceBase, IProductService {
44
+ contract ProductService is ComponentService, IProductService {
30
45
  using NftIdLib for NftId;
31
46
 
32
- string public constant NAME = "ProductService";
47
+ IPoolService internal _poolService;
33
48
 
34
49
  event LogProductServiceSender(address sender);
35
50
 
36
- constructor(
37
- address registry,
38
- NftId registryNftId
39
- ) ComponentServiceBase(registry, registryNftId) // solhint-disable-next-line no-empty-blocks
40
- {
41
- _registerInterface(type(IProductService).interfaceId);
42
- }
43
-
44
- function getVersion()
45
- public
46
- pure
47
- virtual override (IVersionable, Versionable)
48
- returns(Version)
49
- {
50
- return VersionLib.toVersion(3,0,0);
51
- }
52
-
53
- function getName() external pure override returns(string memory name) {
54
- return NAME;
55
- }
56
-
57
- function setFees(
58
- Fee memory policyFee,
59
- Fee memory processingFee
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
60
54
  )
61
- external
62
- override
55
+ internal
56
+ initializer
57
+ virtual override
63
58
  {
64
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
65
- instance.setProductFees(productInfo.nftId, policyFee, processingFee);
66
- }
59
+ address registryAddress;
60
+ address initialOwner;
61
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
62
 
68
- function createApplication(
69
- address applicationOwner,
70
- uint256 sumInsuredAmount,
71
- uint256 premiumAmount,
72
- uint256 lifetime,
73
- NftId bundleNftId
74
- ) external override returns (NftId policyNftId) {
75
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
76
- NftId productNftId = productInfo.nftId;
77
- // TODO add validations (see create bundle in pool service)
78
-
79
- policyNftId = this.getRegistry().registerObjectForInstance(
80
- productNftId,
81
- POLICY(),
82
- applicationOwner,
83
- ""
84
- );
63
+ initializeService(registryAddress, address(0), owner);
85
64
 
86
- instance.createApplication(
87
- productNftId,
88
- policyNftId,
89
- sumInsuredAmount,
90
- premiumAmount,
91
- lifetime,
92
- bundleNftId
93
- );
65
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
94
66
 
95
- // TODO add logging
67
+ registerInterface(type(IProductService).interfaceId);
96
68
  }
97
69
 
98
- function _getAndVerifyUnderwritingSetup(
99
- IInstance instance,
100
- IPolicy.PolicyInfo memory policyInfo
101
- )
102
- internal
103
- view
104
- returns (
105
- ITreasury.ProductSetup memory productSetup,
106
- IBundle.BundleInfo memory bundleInfo,
107
- uint256 collateralAmount,
108
- bool poolIsVerifying,
109
- bytes memory bundleFilter
110
- )
70
+
71
+ function register(address productAddress)
72
+ external
73
+ returns(NftId productNftId)
111
74
  {
112
- // check match between policy and bundle (via pool)
113
- productSetup = instance.getProductSetup(policyInfo.productNftId);
114
- bundleInfo = instance.getBundleInfo(policyInfo.bundleNftId);
115
- require(bundleInfo.poolNftId == productSetup.poolNftId, "POLICY_BUNDLE_MISMATCH");
116
-
117
- // calculate required collateral
118
- NftId poolNftId = productSetup.poolNftId;
119
- IPool.PoolInfo memory poolInfo = instance.getPoolInfo(poolNftId);
120
-
121
- // obtain remaining return values
122
- poolIsVerifying = poolInfo.isVerifying;
123
- collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
124
- bundleFilter = bundleInfo.filter;
75
+ (
76
+ IComponent component,
77
+ address owner,
78
+ IInstance instance,
79
+ NftId instanceNftId
80
+ ) = _checkComponentForRegistration(
81
+ productAddress,
82
+ PRODUCT(),
83
+ PRODUCT_OWNER_ROLE());
84
+
85
+ IProductComponent product = IProductComponent(productAddress);
86
+ IRegistry.ObjectInfo memory productInfo = getRegistryService().registerProduct(product, owner);
87
+ productNftId = productInfo.nftId;
88
+ _createProductSetup(
89
+ instance,
90
+ product,
91
+ productNftId);
125
92
  }
126
93
 
127
- function _lockCollateralInBundle(
128
- IInstance instance,
129
- IBundle.BundleInfo memory bundleInfo,
130
- NftId policyNftId,
131
- uint256 collateralAmount
94
+
95
+ function _createProductSetup(
96
+ IInstance instance,
97
+ IProductComponent product,
98
+ NftId productNftId
132
99
  )
133
100
  internal
134
- returns (IBundle.BundleInfo memory)
101
+ returns (string memory name)
135
102
  {
136
- bundleInfo.lockedAmount += collateralAmount;
137
- bundleInfo.updatedIn = blockNumber();
138
- instance.collateralizePolicy(bundleInfo.nftId, policyNftId, collateralAmount);
139
- return bundleInfo;
103
+ // wire distribution and pool components to product component
104
+ ISetup.ProductSetupInfo memory setup = product.getSetupInfo();
105
+ IComponent distribution = IComponent(getRegistry().getObjectInfo(setup.distributionNftId).objectAddress);
106
+ IComponent pool = IComponent(getRegistry().getObjectInfo(setup.poolNftId).objectAddress);
107
+
108
+ distribution.setProductNftId(productNftId);
109
+ pool.setProductNftId(productNftId);
110
+ product.setProductNftId(productNftId);
111
+ product.linkToRegisteredNftId();
112
+
113
+ // create product setup in instance
114
+ instance.createProductSetup(productNftId, product.getSetupInfo());
115
+
116
+ bytes4[][] memory selectors = new bytes4[][](1);
117
+ selectors[0] = new bytes4[](1);
118
+ selectors[0][0] = IProductComponent.setFees.selector;
119
+
120
+ RoleId[] memory roles = new RoleId[](1);
121
+ roles[0] = PRODUCT_OWNER_ROLE();
122
+
123
+ // create target for instane access manager
124
+ getInstanceService().createGifTarget(
125
+ getRegistry().getNftId(address(instance)),
126
+ address(product),
127
+ product.getName(),
128
+ selectors,
129
+ roles);
140
130
  }
141
131
 
142
- function _underwriteByPool(
143
- ITreasury.ProductSetup memory productSetup,
144
- IPolicy.PolicyInfo memory policyInfo,
145
- bytes memory bundleFilter,
146
- uint256 collateralAmount
147
- )
148
- internal
149
- {
150
- address poolAddress = _registry.getObjectInfo(productSetup.poolNftId).objectAddress;
151
- IPoolComponent pool = IPoolComponent(poolAddress);
152
- pool.underwrite(
153
- policyInfo.nftId,
154
- policyInfo.data,
155
- bundleFilter,
156
- collateralAmount);
132
+ function getDomain() public pure override returns(ObjectType) {
133
+ return PRODUCT();
157
134
  }
158
135
 
159
136
 
160
- function underwrite(
161
- NftId policyNftId,
162
- bool requirePremiumPayment,
163
- Timestamp activateAt
164
- )
165
- external
166
- override
137
+ function _decodeAndVerifyProductData(bytes memory data)
138
+ internal
139
+ returns(string memory name, ISetup.ProductSetupInfo memory setup)
167
140
  {
168
- // check caller is registered product
169
- (
170
- IRegistry.ObjectInfo memory productInfo,
171
- IInstance instance
172
- ) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
173
-
174
- // check match between policy and calling product
175
- NftId productNftId = productInfo.nftId;
176
- IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
177
- require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
178
- require(policyInfo.state == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
179
-
180
- (
181
- ITreasury.ProductSetup memory productSetup,
182
- IBundle.BundleInfo memory bundleInfo,
183
- uint256 collateralAmount,
184
- bool poolIsVerifying,
185
- bytes memory bundleFilter
186
- ) = _getAndVerifyUnderwritingSetup(
187
- instance,
188
- policyInfo
141
+ (name, setup) = abi.decode(
142
+ data,
143
+ (string, ISetup.ProductSetupInfo)
189
144
  );
190
145
 
191
- // lock bundle collateral
192
- bundleInfo = _lockCollateralInBundle(
193
- instance,
194
- bundleInfo,
195
- policyNftId,
196
- collateralAmount);
197
-
198
- // collect premium
199
- if(requirePremiumPayment) {
200
- uint256 netPremiumAmount = _processPremiumByTreasury(
201
- instance,
202
- productSetup,
203
- policyNftId,
204
- policyInfo.premiumAmount);
205
-
206
- policyInfo.premiumPaidAmount += policyInfo.premiumAmount;
207
- bundleInfo.balanceAmount += netPremiumAmount;
208
- }
209
-
210
- // set policy state to underwritten
211
- // TODO add require for state change
212
- policyInfo.state = UNDERWRITTEN();
213
- policyInfo.updatedIn = blockNumber();
214
-
215
- // optional activation of policy
216
- if(activateAt > zeroTimestamp()) {
217
- policyInfo.activatedAt = activateAt;
218
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
219
-
220
- // TODO add require for state change
221
- policyInfo.state = ACTIVE();
222
- }
223
-
224
- instance.setPolicyInfo(policyInfo);
225
- instance.setBundleInfo(bundleInfo);
226
-
227
- // integrate pool component
228
- if(poolIsVerifying) {
229
- _underwriteByPool(
230
- productSetup,
231
- policyInfo,
232
- bundleFilter,
233
- collateralAmount
234
- );
235
- }
236
-
237
- // TODO add logging
146
+ // TODO add checks
147
+ // if(wallet == address(0)) {
148
+ // revert WalletIsZero();
149
+ // }
238
150
  }
239
151
 
240
- function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
241
- UFixed sumInsuredUFixed = UFixedMathLib.toUFixed(sumInsuredAmount);
242
- UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
243
- return collateralUFixed.toInt();
244
- }
245
-
246
- function collectPremium(NftId policyNftId, Timestamp activateAt) external override {
247
- // check caller is registered product
248
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
249
-
250
- // perform actual token transfers
251
- IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
252
- ITreasury.ProductSetup memory product = instance.getProductSetup(productInfo.nftId);
253
-
254
- uint256 premiumAmount = policyInfo.premiumAmount;
255
- _processPremiumByTreasury(instance, product, policyNftId, premiumAmount);
256
-
257
- // policy level book keeping for premium paid
258
- policyInfo.premiumPaidAmount += premiumAmount;
259
- policyInfo.updatedIn = blockNumber();
260
-
261
- // optional activation of policy
262
- if(activateAt > zeroTimestamp()) {
263
- require(
264
- policyInfo.activatedAt.eqz(),
265
- "ERROR:PRS-030:ALREADY_ACTIVATED");
266
-
267
- policyInfo.activatedAt = activateAt;
268
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
269
-
270
- // TODO add require for state change
271
- policyInfo.state = ACTIVE();
272
- }
273
-
274
- instance.setPolicyInfo(policyInfo);
275
-
276
- // TODO add logging
277
- }
278
-
279
- function activate(NftId policyNftId, Timestamp activateAt) external override {
280
- // check caller is registered product
281
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
282
-
283
- IPolicy.PolicyInfo memory policyInfo = instance.getPolicyInfo(policyNftId);
284
-
285
- require(
286
- policyInfo.activatedAt.eqz(),
287
- "ERROR:PRS-020:ALREADY_ACTIVATED");
288
-
289
- policyInfo.activatedAt = activateAt;
290
- policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
152
+ function setFees(
153
+ Fee memory productFee,
154
+ Fee memory processingFee
155
+ )
156
+ external
157
+ {
158
+ // TODO check args
291
159
 
292
- // TODO add require for state change
293
- policyInfo.state = ACTIVE();
160
+ (NftId productNftId, IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
161
+ InstanceReader instanceReader = instance.getInstanceReader();
294
162
 
295
- instance.setPolicyInfo(policyInfo);
163
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
296
164
 
297
- // TODO add logging
165
+ productSetupInfo.productFee = productFee;
166
+ productSetupInfo.processingFee = processingFee;
167
+
168
+ instance.updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
298
169
  }
299
170
 
300
- function close(
301
- NftId policyNftId
302
- ) external override // solhint-disable-next-line no-empty-blocks
171
+ function createRisk(
172
+ RiskId riskId,
173
+ bytes memory data
174
+ )
175
+ external
176
+ override
303
177
  {
178
+ (NftId productNftId, IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
179
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
304
180
 
181
+ instance.createRisk(
182
+ riskId,
183
+ riskInfo
184
+ );
305
185
  }
306
186
 
307
- function _getPoolNftId(
308
- IInstance instance,
309
- NftId productNftId
187
+ function updateRisk(
188
+ RiskId riskId,
189
+ bytes memory data
310
190
  )
311
- internal
312
- view
313
- returns (NftId poolNftid)
191
+ external
314
192
  {
315
- return instance.getProductSetup(productNftId).poolNftId;
193
+ (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
194
+ InstanceReader instanceReader = instance.getInstanceReader();
195
+
196
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
197
+ riskInfo.data = data;
198
+ instance.updateRisk(riskId, riskInfo, KEEP_STATE());
316
199
  }
317
200
 
318
- function _processPremiumByTreasury(
319
- IInstance instance,
320
- ITreasury.ProductSetup memory product,
321
- NftId policyNftId,
322
- uint256 premiumAmount
201
+ function updateRiskState(
202
+ RiskId riskId,
203
+ StateId state
323
204
  )
324
- internal
325
- returns (uint256 netPremiumAmount)
205
+ external
326
206
  {
327
- // process token transfer(s)
328
- if(premiumAmount > 0) {
329
- TokenHandler tokenHandler = instance.getTokenHandler(product.productNftId);
330
- address policyOwner = _registry.getOwner(policyNftId);
331
- address poolWallet = instance.getPoolSetup(product.poolNftId).wallet;
332
- netPremiumAmount = premiumAmount;
333
- Fee memory policyFee = product.policyFee;
334
-
335
- if (FeeLib.feeIsZero(policyFee)) {
336
- tokenHandler.transfer(
337
- policyOwner,
338
- poolWallet,
339
- premiumAmount
340
- );
341
- } else {
342
- (uint256 feeAmount, uint256 netAmount) = instance.calculateFeeAmount(
343
- premiumAmount,
344
- policyFee
345
- );
346
-
347
- tokenHandler.transfer(policyOwner, product.wallet, feeAmount);
348
- tokenHandler.transfer(policyOwner, poolWallet, netAmount);
349
- netPremiumAmount = netAmount;
350
- }
351
- }
352
-
353
- // TODO add logging
207
+ (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
208
+ instance.updateRiskState(riskId, state);
354
209
  }
355
210
  }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {VersionLib} from "../../types/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ ProductService svc = new ProductService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _productService = ProductService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ // _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getProductService()
47
+ external
48
+ view
49
+ returns (ProductService productService)
50
+ {
51
+ return _productService;
52
+ }
53
+
54
+ }