@etherisc/gif-next 0.0.2-7b53731-014 → 0.0.2-7bdebe2-893

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 (492) hide show
  1. package/README.md +218 -39
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +873 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1104 -133
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +636 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +704 -44
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +736 -128
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +556 -65
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1062 -233
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +873 -119
  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 +1753 -1032
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +600 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2190 -1182
  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 +1569 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1099 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +724 -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 +631 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +67 -245
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  51. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  53. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  55. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  57. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  58. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  61. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  62. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  63. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  64. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  65. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1092 -0
  67. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +672 -0
  69. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1291 -0
  71. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +700 -0
  73. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1400 -0
  75. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +760 -0
  77. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1589 -211
  79. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  81. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +619 -0
  83. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +730 -0
  85. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  87. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +873 -116
  89. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +651 -0
  91. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +761 -124
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +151 -339
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1153 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +676 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1365 -238
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +732 -0
  103. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +451 -445
  105. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  107. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  109. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +485 -34
  111. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +858 -0
  113. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +487 -101
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1150 -0
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +657 -0
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +64 -56
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -37
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  139. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  140. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/IService.sol/IService.json} +166 -139
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +245 -27
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  153. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  154. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +256 -220
  155. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  157. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  158. package/artifacts/contracts/shared/{Proxy.sol/ProxyWithProxyAdminGetter.json → UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json} +4 -4
  159. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  163. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +261 -28
  165. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  167. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestService.sol/TestService.json +344 -135
  169. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  171. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  173. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +38 -140
  175. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  176. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -11
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  204. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  210. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +51 -7
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  214. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  216. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  217. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  218. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  221. package/contracts/components/Component.sol +272 -0
  222. package/contracts/components/Distribution.sol +214 -62
  223. package/contracts/components/IComponent.sol +90 -0
  224. package/contracts/components/IDistributionComponent.sol +43 -19
  225. package/contracts/components/IPoolComponent.sol +89 -47
  226. package/contracts/components/IProductComponent.sol +13 -11
  227. package/contracts/components/Pool.sol +224 -157
  228. package/contracts/components/Product.sol +256 -112
  229. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  230. package/contracts/instance/BundleManager.sol +126 -0
  231. package/contracts/instance/Cloneable.sol +51 -0
  232. package/contracts/instance/IInstance.sol +95 -44
  233. package/contracts/instance/IInstanceService.sol +63 -0
  234. package/contracts/instance/Instance.sol +302 -58
  235. package/contracts/instance/InstanceAccessManager.sol +527 -0
  236. package/contracts/instance/InstanceReader.sol +366 -0
  237. package/contracts/instance/InstanceService.sol +484 -0
  238. package/contracts/instance/InstanceServiceManager.sol +54 -0
  239. package/contracts/instance/ObjectManager.sol +82 -0
  240. package/contracts/instance/base/ComponentService.sol +130 -0
  241. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +30 -42
  244. package/contracts/instance/base/Lifecycle.sol +27 -7
  245. package/contracts/instance/module/IAccess.sol +54 -0
  246. package/contracts/instance/module/IBundle.sol +23 -0
  247. package/contracts/instance/module/IComponents.sol +41 -0
  248. package/contracts/instance/module/IDistribution.sol +41 -0
  249. package/contracts/instance/module/IPolicy.sol +77 -0
  250. package/contracts/instance/module/IRisk.sol +11 -0
  251. package/contracts/instance/module/ISetup.sol +33 -0
  252. package/contracts/instance/module/ITreasury.sol +23 -0
  253. package/contracts/instance/service/ApplicationService.sol +356 -0
  254. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  255. package/contracts/instance/service/BundleService.sol +385 -0
  256. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  257. package/contracts/instance/service/ClaimService.sol +444 -0
  258. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  259. package/contracts/instance/service/DistributionService.sol +398 -26
  260. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  261. package/contracts/instance/service/IApplicationService.sol +78 -0
  262. package/contracts/instance/service/IBundleService.sol +115 -0
  263. package/contracts/instance/service/IClaimService.sol +90 -0
  264. package/contracts/instance/service/IDistributionService.sol +88 -1
  265. package/contracts/instance/service/IPolicyService.sol +80 -0
  266. package/contracts/instance/service/IPoolService.sol +104 -18
  267. package/contracts/instance/service/IProductService.sol +9 -76
  268. package/contracts/instance/service/PolicyService.sol +358 -0
  269. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  270. package/contracts/instance/service/PoolService.sol +335 -81
  271. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  272. package/contracts/instance/service/ProductService.sol +136 -435
  273. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  274. package/contracts/registry/ChainNft.sol +87 -36
  275. package/contracts/registry/IRegistry.sol +68 -24
  276. package/contracts/registry/IRegistryService.sol +66 -0
  277. package/contracts/registry/ITransferInterceptor.sol +7 -0
  278. package/contracts/registry/Registry.sol +372 -286
  279. package/contracts/registry/RegistryAccessManager.sol +216 -0
  280. package/contracts/registry/RegistryService.sol +282 -0
  281. package/contracts/registry/RegistryServiceManager.sol +62 -0
  282. package/contracts/registry/ReleaseManager.sol +324 -0
  283. package/contracts/registry/TokenRegistry.sol +116 -0
  284. package/contracts/shared/ContractDeployerLib.sol +72 -0
  285. package/contracts/shared/ERC165.sol +14 -8
  286. package/contracts/shared/INftOwnable.sol +23 -0
  287. package/contracts/shared/IPolicyHolder.sol +40 -0
  288. package/contracts/shared/IRegisterable.sol +10 -19
  289. package/contracts/shared/IRegistryLinked.sol +11 -0
  290. package/contracts/shared/IService.sol +18 -0
  291. package/contracts/shared/IVersionable.sol +38 -37
  292. package/contracts/shared/NftOwnable.sol +118 -0
  293. package/contracts/shared/PolicyHolder.sol +94 -0
  294. package/contracts/shared/ProxyManager.sol +169 -0
  295. package/contracts/shared/Registerable.sol +52 -63
  296. package/contracts/shared/RegistryLinked.sol +43 -0
  297. package/contracts/shared/Service.sol +72 -0
  298. package/contracts/shared/TokenHandler.sol +33 -0
  299. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  300. package/contracts/shared/Versionable.sol +38 -68
  301. package/contracts/test/TestFee.sol +2 -2
  302. package/contracts/test/TestRegisterable.sol +5 -6
  303. package/contracts/test/TestRoleId.sol +1 -1
  304. package/contracts/test/TestService.sol +7 -14
  305. package/contracts/types/Amount.sol +80 -0
  306. package/contracts/types/Blocknumber.sol +1 -0
  307. package/contracts/types/ClaimId.sol +75 -0
  308. package/contracts/types/DistributorType.sol +55 -0
  309. package/contracts/types/Fee.sol +15 -7
  310. package/contracts/types/Key32.sol +8 -3
  311. package/contracts/types/NftId.sol +8 -0
  312. package/contracts/types/NftIdSet.sol +26 -24
  313. package/contracts/types/NumberId.sol +52 -0
  314. package/contracts/types/ObjectType.sol +41 -15
  315. package/contracts/types/PayoutId.sol +82 -0
  316. package/contracts/types/Referral.sol +89 -0
  317. package/contracts/types/RoleId.sol +68 -9
  318. package/contracts/types/Seconds.sol +54 -0
  319. package/contracts/types/StateId.sol +12 -3
  320. package/contracts/types/Timestamp.sol +22 -13
  321. package/contracts/types/UFixed.sol +129 -12
  322. package/contracts/types/Version.sol +14 -1
  323. package/package.json +6 -5
  324. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  325. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  326. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  327. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -174
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  344. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  346. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  348. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  352. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  354. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  356. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  358. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  360. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  361. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  362. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  363. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  364. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  365. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  366. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  368. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  369. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +0 -376
  370. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  371. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  372. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  373. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  375. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  376. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  378. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  380. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  383. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  384. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  386. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  388. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  390. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  393. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  394. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  396. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  398. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  400. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -144
  402. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -144
  404. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  405. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  407. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  409. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  410. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -511
  412. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  413. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  414. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  415. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -511
  416. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -531
  418. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  419. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -364
  420. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  421. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  422. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +0 -4
  423. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +0 -495
  424. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  425. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  426. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +0 -4
  427. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +0 -178
  428. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +0 -4
  429. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +0 -4
  430. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +0 -187
  431. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  432. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -405
  433. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  434. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -578
  435. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -575
  437. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  438. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  439. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  440. package/contracts/components/BaseComponent.sol +0 -94
  441. package/contracts/components/IBaseComponent.sol +0 -19
  442. package/contracts/experiment/errors/Require.sol +0 -38
  443. package/contracts/experiment/errors/Revert.sol +0 -44
  444. package/contracts/experiment/inheritance/A.sol +0 -53
  445. package/contracts/experiment/inheritance/B.sol +0 -28
  446. package/contracts/experiment/inheritance/C.sol +0 -34
  447. package/contracts/experiment/inheritance/IA.sol +0 -13
  448. package/contracts/experiment/inheritance/IB.sol +0 -10
  449. package/contracts/experiment/inheritance/IC.sol +0 -12
  450. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  451. package/contracts/experiment/statemachine/ISM.sol +0 -25
  452. package/contracts/experiment/statemachine/README.md +0 -112
  453. package/contracts/experiment/statemachine/SM.sol +0 -57
  454. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  455. package/contracts/experiment/types/TypeA.sol +0 -47
  456. package/contracts/experiment/types/TypeB.sol +0 -29
  457. package/contracts/instance/IInstanceLinked.sol +0 -8
  458. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  459. package/contracts/instance/base/IInstanceBase.sol +0 -22
  460. package/contracts/instance/base/IService.sol +0 -15
  461. package/contracts/instance/base/InstanceBase.sol +0 -91
  462. package/contracts/instance/base/ModuleBase.sol +0 -57
  463. package/contracts/instance/base/ServiceBase.sol +0 -37
  464. package/contracts/instance/module/access/Access.sol +0 -149
  465. package/contracts/instance/module/access/IAccess.sol +0 -53
  466. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  467. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  468. package/contracts/instance/module/component/ComponentModule.sol +0 -70
  469. package/contracts/instance/module/component/IComponent.sol +0 -28
  470. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  471. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  472. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  473. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  474. package/contracts/instance/module/pool/IPoolModule.sol +0 -40
  475. package/contracts/instance/module/pool/PoolModule.sol +0 -90
  476. package/contracts/instance/module/risk/IRisk.sol +0 -26
  477. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  478. package/contracts/instance/module/treasury/ITreasury.sol +0 -82
  479. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  480. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -138
  481. package/contracts/instance/service/ComponentOwnerService.sol +0 -157
  482. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  483. package/contracts/registry/IChainNft.sol +0 -21
  484. package/contracts/registry/IRegistryLinked.sol +0 -8
  485. package/contracts/registry/RegistryUpgradeable.sol +0 -416
  486. package/contracts/shared/IOwnable.sol +0 -6
  487. package/contracts/shared/Proxy.sol +0 -83
  488. package/contracts/shared/VersionableUpgradeable.sol +0 -108
  489. package/contracts/test/TestDistribution.sol +0 -21
  490. package/contracts/test/TestPool.sol +0 -25
  491. package/contracts/test/TestProduct.sol +0 -72
  492. package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,90 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IInstance} from "../instance/IInstance.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IProductService} from "../instance/service/IProductService.sol";
11
+ import {IRegisterable} from "../shared/IRegisterable.sol";
12
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
13
+ import {NftId} from "../types/NftId.sol";
14
+ import {ObjectType} from "../types/ObjectType.sol";
15
+ import {TokenHandler} from "../shared/TokenHandler.sol";
16
+
17
+ /// @dev component base class
18
+ /// component examples are product, distribution, pool and oracle
19
+ interface IComponent is
20
+ IRegisterable,
21
+ ITransferInterceptor,
22
+ IAccessManaged
23
+ {
24
+ error ErrorComponentNotChainNft(address caller);
25
+ error ErrorComponentNotProductService(address caller);
26
+ error ErrorComponentNotInstance(NftId instanceNftId);
27
+ error ErrorComponentProductNftAlreadySet();
28
+
29
+ error ErrorComponentWalletAddressZero();
30
+ error ErrorComponentWalletAddressIsSameAsCurrent();
31
+ error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
32
+
33
+ error ErrorComponentWalletNotComponent();
34
+
35
+ event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
36
+ event LogComponentWalletTokensTransferred(address from, address to, uint256 amount);
37
+
38
+ event LogComponentTokenHandlerApproved(uint256 limit);
39
+
40
+ /// @dev locks component to disable functions that may change state related to this component, the only exception is function "unlock"
41
+ /// only component owner (nft holder) is authorizes to call this function
42
+ function lock() external;
43
+
44
+ /// @dev unlocks component to (re-)enable functions that may change state related to this component
45
+ /// only component owner (nft holder) is authorizes to call this function
46
+ function unlock() external;
47
+
48
+ /// @dev approves token hanlder to spend up to the specified amount of tokens
49
+ /// reverts if component wallet is not component itself
50
+ /// only component owner (nft holder) is authorizes to call this function
51
+ function approveTokenHandler(uint256 spendingLimitAmount) external;
52
+
53
+ /// @dev sets the wallet address for the component
54
+ /// if the current wallet has tokens, these will be transferred
55
+ /// if the new wallet address is externally owned, an approval from the
56
+ /// owner of the external wallet for the component to move all tokens must exist
57
+ function setWallet(address walletAddress) external;
58
+
59
+ /// @dev only product service may set product nft id during registration of product setup
60
+ function setProductNftId(NftId productNftId) external;
61
+
62
+ /// @dev defines the instance to which this component is linked to
63
+ function getInstance() external view returns (IInstance instance);
64
+
65
+ /// @dev returns the name of this component
66
+ /// to successfully register the component with an instance the name MUST be unique in the linked instance
67
+ function getName() external view returns (string memory name);
68
+
69
+ /// @dev defines which ERC20 token is used by this component
70
+ function getToken() external view returns (IERC20Metadata token);
71
+
72
+ /// @dev returns token handler for this component
73
+ /// only registered components return a non zero token handler
74
+ function getTokenHandler() external view returns (TokenHandler tokenHandler);
75
+
76
+ /// @dev defines the wallet address used to hold the ERC20 tokens related to this component
77
+ /// the default address is the component token address
78
+ function getWallet() external view returns (address walletAddress);
79
+
80
+ /// @dev defines the product to which this component is linked to
81
+ /// this is only relevant for pool and distribution components
82
+ function getProductNftId() external view returns (NftId productNftId);
83
+
84
+ function isNftInterceptor() external view returns(bool isInterceptor);
85
+
86
+ /// @dev returns component infos for this pool
87
+ /// when registered with an instance the info is obtained from the data stored in the instance
88
+ /// when not registered the function returns the info from the component contract
89
+ function getComponentInfo() external view returns (IComponents.ComponentInfo memory info);
90
+ }
@@ -2,45 +2,69 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  import {Fee} from "../types/Fee.sol";
5
- import {ReferralId} from "../types/ReferralId.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
7
+ import {ReferralId, ReferralStatus} from "../types/Referral.sol";
6
8
  import {NftId} from "../types/NftId.sol";
7
- import {IBaseComponent} from "./IBaseComponent.sol";
9
+ import {DistributorType} from "../types/DistributorType.sol";
10
+ import {UFixed} from "../types/UFixed.sol";
11
+ import {Timestamp} from "../types/Timestamp.sol";
8
12
 
9
- interface IDistributionComponent is IBaseComponent {
13
+ interface IDistributionComponent is IComponent {
14
+
15
+ event LogDistributorUpdated(address to, address caller);
16
+
17
+ function getSetupInfo() external view returns (ISetup.DistributionSetupInfo memory setupInfo);
10
18
 
11
19
  function setFees(
20
+ Fee memory minDistributionOwnerFee,
12
21
  Fee memory distributionFee
13
22
  ) external;
14
23
 
15
- function calculateFeeAmount(
16
- ReferralId referralId,
17
- uint256 netPremiumAmount
18
- ) external view returns (uint256 feeAmount);
24
+ function createDistributorType(
25
+ string memory name,
26
+ UFixed minDiscountPercentage,
27
+ UFixed maxDiscountPercentage,
28
+ UFixed commissionPercentage,
29
+ uint32 maxReferralCount,
30
+ uint32 maxReferralLifetime,
31
+ bool allowSelfReferrals,
32
+ bool allowRenewals,
33
+ bytes memory data
34
+ ) external returns (DistributorType distributorType);
35
+
36
+ function createDistributor(
37
+ address distributor,
38
+ DistributorType distributorType,
39
+ bytes memory data
40
+ ) external returns(NftId distributorNftId);
41
+
42
+ function updateDistributorType(
43
+ NftId distributorNftId,
44
+ DistributorType distributorType,
45
+ bytes memory data
46
+ ) external;
19
47
 
20
48
  function calculateRenewalFeeAmount(
21
49
  ReferralId referralId,
22
50
  uint256 netPremiumAmount
23
51
  ) external view returns (uint256 feeAmount);
24
52
 
25
- /// @dev callback from product service when selling a policy for a specific referralId
26
- /// the used referral id and the collected fee are provided as parameters
27
- /// the component implementation can then process this information accordingly
28
- function processSale(
29
- ReferralId referralId,
30
- uint256 feeAmount
31
- ) external;
32
-
33
53
  /// @dev callback from product service when a policy is renews for a specific referralId
34
54
  function processRenewal(
35
55
  ReferralId referralId,
36
56
  uint256 feeAmount
37
57
  ) external;
38
58
 
39
- /// @dev returns true iff the referral id is valid
40
- function referralIsValid(ReferralId referralId) external view returns (bool isValid);
59
+ function getDiscountPercentage(
60
+ string memory referralCode
61
+ ) external view returns (UFixed discountPercentage, ReferralStatus status);
62
+
63
+ function getDistributionFee() external view returns (Fee memory distibutionFee);
41
64
 
42
- /// @dev default distribution fee, ie when not using any valid referralId
43
- function getDistributionFee() external view returns (Fee memory distributionFee);
65
+ function getReferralId(
66
+ string memory referralCode
67
+ ) external returns (ReferralId referralId);
44
68
 
45
69
  /// @dev returns true iff the component needs to be called when selling/renewing policis
46
70
  function isVerifying() external view returns (bool verifying);
@@ -1,71 +1,113 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../types/NftId.sol";
5
4
  import {Fee} from "../types/Fee.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {NftId} from "../types/NftId.sol";
8
+ import {RoleId} from "../types/RoleId.sol";
9
+ import {Seconds} from "../types/Seconds.sol";
6
10
  import {UFixed} from "../types/UFixed.sol";
7
- import {IBaseComponent} from "./IBaseComponent.sol";
8
11
 
9
- interface IPoolComponent is IBaseComponent {
12
+ /// @dev pool components hold and manage the collateral to cover active policies
13
+ /// pools come in different flavors
14
+ interface IPoolComponent is IComponent {
10
15
 
11
- event LogUnderwrittenByPool(NftId policyNftId, uint256 collateralizationAmount, address pool);
16
+ error ErrorPoolNotBundleOwner(NftId bundleNftId, address caller);
17
+ error ErrorPoolNotPoolService(address caller);
12
18
 
13
- function setFees(
14
- Fee memory poolFee,
15
- Fee memory stakingFee,
16
- Fee memory performanceFee
17
- ) external;
19
+ error ErrorPoolApplicationBundleMismatch(NftId applicationNftId);
18
20
 
19
- /**
20
- * @dev creates a new bundle for this pool.
21
- */
22
- function createBundle(
23
- Fee memory fee,
24
- uint256 initialAmount,
25
- uint256 lifetime,
26
- bytes memory filter
27
- ) external returns(NftId bundleNftId);
21
+ event LogPoolVerifiedByPool(address pool, NftId applicationNftId, uint256 collateralizationAmount);
28
22
 
23
+ /// @dev increases the staked tokens by the specified amount
24
+ /// only the bundle owner may stake tokens
25
+ /// bundle MUST be in active or locked state
26
+ function stake(NftId bundleNftId, uint256 amount) external;
27
+
28
+ /// @dev decreases the staked tokens by the specified amount
29
+ /// only the bundle owner may unstake tokens from the bundle
30
+ /// bundle MUST be in active, locked or closed state
31
+ function unstake(NftId bundleNftId, uint256 amount) external;
32
+
33
+ /// @dev extends the bundle lifetime of the bundle by the specified time
34
+ /// only the bundle owner may extend the bundle's lifetime
35
+ /// bundle MUST be in active or locked state
36
+ function extend(NftId bundleNftId, Seconds lifetimeExtension) external;
37
+
38
+ /// @dev locks the specified bundle
39
+ /// a bundle to be locked MUST be in active state
40
+ /// locked bundles may not be used to collateralize any new policy
41
+ function lockBundle(NftId bundleNftId) external;
42
+
43
+ /// @dev unlocks the specified bundle
44
+ /// a bundle to be unlocked MUST be in locked state
45
+ function unlockBundle(NftId bundleNftId) external;
46
+
47
+ /// @dev close the specified bundle
48
+ /// a bundle to be closed MUST be in active or locked state
49
+ /// to close a bundle all all linked policies MUST be in closed state as well
50
+ /// closing a bundle finalizes the bundle bookkeeping including overall profit calculation
51
+ /// once a bundle is closed this action cannot be reversed
52
+ function close(NftId bundleNftId) external;
53
+
54
+ /// @dev sets the fee for the specified bundle
55
+ /// the fee is added on top of the poolFee and deducted from the premium amounts
56
+ /// via these fees individual bundler owner may earn income per policy in the context of peer to peer pools
29
57
  function setBundleFee(
30
- NftId policyNftId,
58
+ NftId bundleNftId,
31
59
  Fee memory fee
32
60
  ) external;
33
61
 
34
- /**
35
- * @dev this is a callback function that is called by the product service when underwriting a policy.
36
- * the pool has the option to check the details and object to underwriting by reverting.
37
- * the function is only called for "active" pools that ask to be involved/notified
38
- * by product related state changes.
39
- */
40
- function underwrite(
41
- NftId policyNftId,
42
- bytes memory policyData,
62
+ /// @dev sets the maximum overall capital amound held by this pool
63
+ /// function may only be called by pool owner
64
+ function setMaxCapitalAmount(uint256 maxCapitalAmount) external;
65
+
66
+ /// @dev sets the required role to create/own bundles
67
+ /// may only be called once after setting up a pool
68
+ /// may only be called by pool owner
69
+ function setBundleOwnerRole(RoleId bundleOwnerRole) external;
70
+
71
+ /// @dev update pool fees to the specified values
72
+ /// pool fees: are deducted from the premium amount and goes to the pool owner
73
+ /// staking fees: are deducted from the staked tokens by a bundle owner and goes to the pool owner
74
+ /// performance fees: when a bundle is closed a bundle specific profit is calculated
75
+ /// the performance fee is deducted from this profit and goes to the pool owner
76
+ function setFees(
77
+ Fee memory poolFee,
78
+ Fee memory stakingFee,
79
+ Fee memory performanceFee
80
+ ) external;
81
+
82
+ /// @dev this is a callback function that is called by the product service when underwriting a policy.
83
+ /// the pool has the option to check the details and object to underwriting by reverting.
84
+ /// the function is only called for "active" pools that ask to be involved/notified
85
+ /// by product related state changes.
86
+ function verifyApplication(
87
+ NftId applicationNftId,
88
+ bytes memory applicationData,
89
+ NftId bundleNftId,
43
90
  bytes memory bundleFilter,
44
91
  uint256 collateralizationAmount
45
92
  ) external;
46
93
 
47
- /**
48
- * @dev returns true iff the policy application data in policyData matches
49
- * with the bundle filter criteria encoded in bundleFilter.
50
- */
51
- function policyMatchesBundle(
52
- bytes memory policyData,
53
- bytes memory bundleFilter
94
+ /// @dev returns true iff the application matches with the bundle
95
+ /// this is a callback function that is only called if a pool declares itself as a verifying pool
96
+ /// default implementation returns true
97
+ function applicationMatchesBundle(
98
+ NftId applicationNftId,
99
+ bytes memory applicationData,
100
+ NftId bundleNftId,
101
+ bytes memory bundleFilter,
102
+ uint256 collateralizationAmount
54
103
  )
55
104
  external
56
105
  view
57
106
  returns (bool isMatching);
58
107
 
59
- function isVerifying() external view returns (bool verifying);
60
-
61
- function getCollateralizationLevel() external view returns (UFixed collateralizationLevel);
62
-
63
- function getPoolFee() external view returns (Fee memory poolFee);
108
+ /// @dev returns pool specific infos for this pool
109
+ /// when registered with an instance the info is obtained from the data stored in the instance
110
+ /// when not registered the function returns the info from the component contract
111
+ function getPoolInfo() external view returns (IComponents.PoolInfo memory info);
64
112
 
65
- function getStakingFee() external view returns (Fee memory stakingFee);
66
-
67
- function getPerformanceFee()
68
- external
69
- view
70
- returns (Fee memory performanceFee);
71
113
  }
@@ -1,14 +1,18 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Fee} from "../types/Fee.sol";
5
+ import {IComponent} from "./IComponent.sol";
6
+ import {ISetup} from "../instance/module/ISetup.sol";
5
7
  import {NftId} from "../types/NftId.sol";
6
- import {ReferralId} from "../types/ReferralId.sol";
8
+ import {ReferralId} from "../types/Referral.sol";
7
9
  import {RiskId} from "../types/RiskId.sol";
10
+ import {Seconds} from "../types/Seconds.sol";
8
11
 
9
- import {IBaseComponent} from "./IBaseComponent.sol";
12
+ interface IProductComponent is IComponent {
13
+
14
+ function getSetupInfo() external view returns (ISetup.ProductSetupInfo memory setupInfo);
10
15
 
11
- interface IProductComponent is IBaseComponent {
12
16
  function setFees(
13
17
  Fee memory productFee,
14
18
  Fee memory processingFee
@@ -17,22 +21,20 @@ interface IProductComponent is IBaseComponent {
17
21
  function calculatePremium(
18
22
  uint256 sumInsuredAmount,
19
23
  RiskId riskId,
20
- uint256 lifetime,
24
+ Seconds lifetime,
21
25
  bytes memory applicationData,
22
- ReferralId referralId,
23
- NftId bundleNftId
26
+ NftId bundleNftId,
27
+ ReferralId referralId
24
28
  ) external view returns (uint256 premiumAmount);
25
29
 
26
30
  function calculateNetPremium(
27
31
  uint256 sumInsuredAmount,
28
32
  RiskId riskId,
29
- uint256 lifetime,
33
+ Seconds lifetime,
30
34
  bytes memory applicationData
31
35
  ) external view returns (uint256 netPremiumAmount);
32
36
 
33
- function getProductFee() external view returns (Fee memory productFee);
34
- function getProcessingFee() external view returns (Fee memory processingFee);
35
-
37
+
36
38
  function getPoolNftId() external view returns (NftId poolNftId);
37
39
  function getDistributionNftId() external view returns (NftId distributionNftId);
38
40
  }