@etherisc/gif-next 0.0.2-dc7e4cb-141 → 0.0.2-dd40550-413

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