@etherisc/gif-next 0.0.2-aa0bd77 → 0.0.2-aaa8646-641

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 (445) hide show
  1. package/README.md +358 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +698 -35
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1345 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1064 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +830 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1246 -65
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +1014 -60
  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 +288 -519
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +654 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +530 -594
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  32. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  34. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1403 -0
  36. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1025 -0
  38. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +673 -0
  40. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
  42. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  43. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  44. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +639 -0
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  48. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  50. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  51. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  52. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  54. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  56. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  58. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  60. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  62. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  63. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  64. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  66. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  68. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  70. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +902 -0
  72. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
  74. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1326 -0
  76. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +725 -0
  78. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
  80. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1515 -0
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +757 -0
  86. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +501 -0
  88. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +714 -0
  90. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  92. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +871 -0
  94. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +969 -0
  96. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +960 -0
  98. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +450 -0
  102. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1575 -0
  104. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +741 -0
  106. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1481 -0
  108. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +709 -0
  110. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
  112. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +872 -0
  116. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +548 -71
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +631 -78
  128. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  130. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  132. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -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 +4 -0
  141. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +138 -0
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IService.sol/IService.json +335 -0
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  154. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  156. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  158. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  160. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  162. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  163. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -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} +261 -217
  166. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  167. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -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 +4 -0
  171. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  172. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  174. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  176. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  178. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestService.sol/TestService.json +596 -0
  180. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  182. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  184. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  186. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  187. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  188. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  189. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  190. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  192. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  194. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  196. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  198. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  200. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/Fee.sol/FeeLib.json +288 -0
  202. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  204. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +161 -5
  206. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  207. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  208. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  210. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  212. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  214. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  216. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  218. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  220. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  222. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  224. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +280 -0
  226. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  228. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  229. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  230. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  232. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  234. package/contracts/components/Component.sol +231 -40
  235. package/contracts/components/Distribution.sol +284 -0
  236. package/contracts/components/IComponent.sol +76 -0
  237. package/contracts/components/IDistributionComponent.sol +71 -0
  238. package/contracts/components/IPoolComponent.sol +113 -0
  239. package/contracts/components/IProductComponent.sol +40 -0
  240. package/contracts/components/Pool.sol +291 -18
  241. package/contracts/components/Product.sol +341 -32
  242. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  243. package/contracts/instance/BundleManager.sol +126 -0
  244. package/contracts/instance/Cloneable.sol +51 -0
  245. package/contracts/instance/IInstance.sol +75 -15
  246. package/contracts/instance/IInstanceService.sol +80 -0
  247. package/contracts/instance/Instance.sol +218 -44
  248. package/contracts/instance/InstanceAccessManager.sol +541 -0
  249. package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
  250. package/contracts/instance/InstanceReader.sol +320 -0
  251. package/contracts/instance/InstanceService.sol +309 -0
  252. package/contracts/instance/InstanceServiceManager.sol +54 -0
  253. package/contracts/instance/InstanceStore.sol +208 -0
  254. package/contracts/instance/ObjectManager.sol +82 -0
  255. package/contracts/instance/base/ComponentService.sol +148 -0
  256. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  257. package/contracts/instance/base/ILifecycle.sol +30 -0
  258. package/contracts/instance/base/KeyValueStore.sol +180 -0
  259. package/contracts/instance/base/Lifecycle.sol +117 -0
  260. package/contracts/instance/module/IAccess.sol +54 -0
  261. package/contracts/instance/module/IBundle.sol +23 -0
  262. package/contracts/instance/module/IComponents.sol +41 -0
  263. package/contracts/instance/module/IDistribution.sol +41 -0
  264. package/contracts/instance/module/IPolicy.sol +77 -0
  265. package/contracts/instance/module/IRisk.sol +11 -0
  266. package/contracts/instance/module/ISetup.sol +33 -0
  267. package/contracts/instance/module/ITreasury.sol +23 -0
  268. package/contracts/instance/service/ApplicationService.sol +185 -0
  269. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  270. package/contracts/instance/service/BundleService.sol +440 -0
  271. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  272. package/contracts/instance/service/ClaimService.sol +239 -0
  273. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  274. package/contracts/instance/service/DistributionService.sol +342 -0
  275. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  276. package/contracts/instance/service/IApplicationService.sol +61 -0
  277. package/contracts/instance/service/IBundleService.sol +102 -0
  278. package/contracts/instance/service/IClaimService.sol +92 -0
  279. package/contracts/instance/service/IDistributionService.sol +85 -0
  280. package/contracts/instance/service/IPolicyService.sol +142 -0
  281. package/contracts/instance/service/IPoolService.sol +102 -0
  282. package/contracts/instance/service/IPricingService.sol +36 -0
  283. package/contracts/instance/service/IProductService.sol +40 -0
  284. package/contracts/instance/service/PolicyService.sol +579 -0
  285. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  286. package/contracts/instance/service/PoolService.sol +338 -0
  287. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  288. package/contracts/instance/service/PricingService.sol +275 -0
  289. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  290. package/contracts/instance/service/ProductService.sol +210 -0
  291. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  292. package/contracts/registry/ChainNft.sol +145 -108
  293. package/contracts/registry/IRegistry.sol +82 -49
  294. package/contracts/registry/IRegistryService.sol +68 -0
  295. package/contracts/registry/ITransferInterceptor.sol +7 -0
  296. package/contracts/registry/Registry.sol +403 -112
  297. package/contracts/registry/RegistryAccessManager.sol +216 -0
  298. package/contracts/registry/RegistryService.sol +286 -0
  299. package/contracts/registry/RegistryServiceManager.sol +62 -0
  300. package/contracts/registry/ReleaseManager.sol +324 -0
  301. package/contracts/registry/TokenRegistry.sol +116 -0
  302. package/contracts/shared/ContractDeployerLib.sol +72 -0
  303. package/contracts/shared/ERC165.sol +27 -0
  304. package/contracts/shared/INftOwnable.sol +23 -0
  305. package/contracts/shared/IPolicyHolder.sol +26 -0
  306. package/contracts/shared/IRegisterable.sol +15 -0
  307. package/contracts/shared/IRegistryLinked.sol +12 -0
  308. package/contracts/shared/IService.sol +16 -0
  309. package/contracts/shared/IVersionable.sol +53 -0
  310. package/contracts/shared/NftOwnable.sol +120 -0
  311. package/contracts/shared/PolicyHolder.sol +81 -0
  312. package/contracts/shared/ProxyManager.sol +169 -0
  313. package/contracts/shared/Registerable.sol +74 -0
  314. package/contracts/shared/RegistryLinked.sol +48 -0
  315. package/contracts/shared/Service.sol +72 -0
  316. package/contracts/shared/TokenHandler.sol +33 -0
  317. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  318. package/contracts/shared/Versionable.sol +59 -0
  319. package/contracts/test/TestFee.sol +25 -0
  320. package/contracts/test/TestRegisterable.sol +18 -0
  321. package/contracts/test/TestRoleId.sol +14 -0
  322. package/contracts/test/TestService.sol +25 -0
  323. package/contracts/test/TestToken.sol +26 -0
  324. package/contracts/test/TestVersion.sol +44 -0
  325. package/contracts/test/TestVersionable.sol +17 -0
  326. package/contracts/test/Usdc.sol +26 -0
  327. package/contracts/types/AddressSet.sol +58 -0
  328. package/contracts/types/Amount.sol +70 -0
  329. package/contracts/types/Blocknumber.sol +119 -0
  330. package/contracts/types/ChainId.sol +24 -10
  331. package/contracts/types/ClaimId.sol +75 -0
  332. package/contracts/types/DistributorType.sol +55 -0
  333. package/contracts/types/Fee.sol +64 -0
  334. package/contracts/types/Key32.sol +50 -0
  335. package/contracts/types/NftId.sol +63 -8
  336. package/contracts/types/NftIdSet.sol +62 -0
  337. package/contracts/types/NumberId.sol +52 -0
  338. package/contracts/types/ObjectType.sol +161 -0
  339. package/contracts/types/PayoutId.sol +82 -0
  340. package/contracts/types/Referral.sol +89 -0
  341. package/contracts/types/RiskId.sol +43 -0
  342. package/contracts/types/RoleId.sol +97 -0
  343. package/contracts/types/Seconds.sol +54 -0
  344. package/contracts/types/StateId.sol +110 -0
  345. package/contracts/types/Timestamp.sol +132 -0
  346. package/contracts/types/UFixed.sol +326 -0
  347. package/contracts/types/Version.sol +108 -0
  348. package/package.json +21 -6
  349. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  350. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  351. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  352. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  353. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  354. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  355. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  357. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  359. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  361. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  363. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  367. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  369. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  371. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  372. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  373. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  374. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  375. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  376. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  377. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  378. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  379. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  380. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  381. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  382. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  384. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  386. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  388. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  389. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  390. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  391. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  393. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  394. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  395. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  396. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  397. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  398. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  400. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  402. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  403. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  405. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  407. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  409. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  411. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  412. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  413. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  414. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  415. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  416. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  417. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  418. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  420. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  421. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  422. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  423. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  424. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  425. package/contracts/components/IPool.sol +0 -9
  426. package/contracts/components/IProduct.sol +0 -11
  427. package/contracts/experiment/inheritance/A.sol +0 -56
  428. package/contracts/experiment/inheritance/B.sol +0 -23
  429. package/contracts/experiment/inheritance/C.sol +0 -28
  430. package/contracts/experiment/inheritance/IA.sol +0 -18
  431. package/contracts/experiment/inheritance/IB.sol +0 -9
  432. package/contracts/experiment/inheritance/IC.sol +0 -11
  433. package/contracts/experiment/types/TypeA.sol +0 -42
  434. package/contracts/experiment/types/TypeB.sol +0 -24
  435. package/contracts/instance/access/Access.sol +0 -218
  436. package/contracts/instance/access/IAccess.sol +0 -83
  437. package/contracts/instance/component/ComponentModule.sol +0 -259
  438. package/contracts/instance/component/IComponent.sol +0 -94
  439. package/contracts/instance/policy/IPolicy.sol +0 -66
  440. package/contracts/instance/policy/PolicyModule.sol +0 -106
  441. package/contracts/instance/pool/IPoolModule.sol +0 -40
  442. package/contracts/instance/pool/PoolModule.sol +0 -83
  443. package/contracts/instance/product/IProductService.sol +0 -45
  444. package/contracts/instance/product/ProductService.sol +0 -105
  445. package/contracts/registry/IChainNft.sol +0 -18
@@ -0,0 +1,77 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../../types/Amount.sol";
5
+ import {NftId} from "../../types/NftId.sol";
6
+ import {ClaimId} from "../../types/ClaimId.sol";
7
+ import {ReferralId} from "../../types/Referral.sol";
8
+ import {RiskId} from "../../types/RiskId.sol";
9
+ import {Seconds} from "../../types/Seconds.sol";
10
+ import {Timestamp} from "../../types/Timestamp.sol";
11
+
12
+ interface IPolicy {
13
+
14
+ struct Premium {
15
+ // this is the net premium calculated by the product
16
+ uint256 netPremiumAmount;
17
+ // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
18
+ uint256 fullPremiumAmount;
19
+ // premium = fullPremium - discount
20
+ uint256 premiumAmount;
21
+ uint256 productFeeFixAmount;
22
+ uint256 poolFeeFixAmount;
23
+ uint256 bundleFeeFixAmount;
24
+ uint256 distributionFeeFixAmount;
25
+ uint256 productFeeVarAmount;
26
+ uint256 poolFeeVarAmount;
27
+ uint256 bundleFeeVarAmount;
28
+ uint256 distributionFeeVarAmount;
29
+ uint256 distributionOwnerFeeFixAmount;
30
+ // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
31
+ uint256 distributionOwnerFeeVarAmount;
32
+ // this value is based on distributor type referenced in the referral
33
+ uint256 commissionAmount;
34
+ // this is based on referral used
35
+ uint256 discountAmount;
36
+ }
37
+
38
+ /// @dev policy data for the full policy lifecycle
39
+ struct PolicyInfo {
40
+ NftId productNftId;
41
+ NftId bundleNftId;
42
+ ReferralId referralId;
43
+ RiskId riskId;
44
+ uint256 sumInsuredAmount;
45
+ uint256 premiumAmount;
46
+ uint256 premiumPaidAmount; // when lower than premium amount: max payout decreased accordingly
47
+ Seconds lifetime;
48
+ bytes applicationData;
49
+ bytes policyData;
50
+ uint16 claimsCount;
51
+ uint16 openClaimsCount;
52
+ Amount payoutAmount;
53
+ Timestamp activatedAt; // time of underwriting
54
+ Timestamp expiredAt; // no new claims (activatedAt + lifetime)
55
+ Timestamp closedAt; // no locked capital (or declinedAt)
56
+ }
57
+
58
+ // claimId neeeds to be encoded policyNftId:claimId combination
59
+ struct ClaimInfo {
60
+ Amount claimAmount;
61
+ Amount paidAmount;
62
+ uint8 payoutsCount;
63
+ uint8 openPayoutsCount;
64
+ bytes data;
65
+ // TODO consider to add processData that may include information supporting confirm or decline
66
+ Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
67
+ }
68
+
69
+ // claimId neeeds to be encoded policyNftId:claimId combination
70
+ struct PayoutInfo {
71
+ ClaimId claimId;
72
+ Amount amount;
73
+ // TODO consider to add a beneficiary address that will be the receiver of the payout tokens
74
+ bytes data;
75
+ Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
76
+ }
77
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+
6
+ interface IRisk {
7
+ struct RiskInfo {
8
+ NftId productNftId;
9
+ bytes data;
10
+ }
11
+ }
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Fee} from "../../types/Fee.sol";
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {RoleId} from "../../types/RoleId.sol";
9
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
10
+ import {UFixed} from "../../types/UFixed.sol";
11
+
12
+ interface ISetup {
13
+
14
+ struct ProductSetupInfo {
15
+ IERC20Metadata token;
16
+ TokenHandler tokenHandler;
17
+ NftId distributionNftId;
18
+ NftId poolNftId;
19
+ Fee productFee; // product fee on net premium
20
+ Fee processingFee; // product fee on payout amounts
21
+ bool isIntercepting; // intercepts nft transfers (for products)
22
+ address wallet;
23
+ }
24
+
25
+ struct DistributionSetupInfo {
26
+ NftId productNftId;
27
+ TokenHandler tokenHandler;
28
+ Fee minDistributionOwnerFee;
29
+ Fee distributionFee; // recalculated whenever any fee on the product/pool/dist/disttype is changed
30
+ address wallet;
31
+ uint256 sumDistributionOwnerFees;
32
+ }
33
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Fee} from "../../types/Fee.sol";
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
9
+
10
+ interface ITreasury {
11
+ struct TreasuryInfo {
12
+ IERC20Metadata token;
13
+ TokenHandler tokenHandler;
14
+ NftId distributionNftId;
15
+ NftId poolNftId;
16
+ Fee distributionFee; // default distribution fee (no referral id)
17
+ Fee productFee; // product fee on net premium
18
+ Fee processingFee; // product fee on payout amounts
19
+ Fee poolFee; // pool fee on net premium
20
+ Fee stakingFee; // pool fee on staked capital from investor
21
+ Fee performanceFee; // pool fee on profits from capital investors
22
+ }
23
+ }
@@ -0,0 +1,185 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {AmountLib} from "../../types/Amount.sol";
5
+ import {Seconds} from "../../types/Seconds.sol";
6
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
7
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
8
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
9
+ import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE, PRICE} from "../../types/ObjectType.sol";
10
+ import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
11
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
12
+ import {Fee, FeeLib} from "../../types/Fee.sol";
13
+ import {ReferralId} from "../../types/Referral.sol";
14
+ import {RiskId} from "../../types/RiskId.sol";
15
+ import {StateId} from "../../types/StateId.sol";
16
+ import {Version, VersionLib} from "../../types/Version.sol";
17
+ import {AmountLib} from "../../types/Amount.sol";
18
+
19
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
20
+ import {IVersionable} from "../../shared/IVersionable.sol";
21
+ import {Versionable} from "../../shared/Versionable.sol";
22
+ import {IService} from "../../shared/IService.sol";
23
+ import {Service} from "../../shared/Service.sol";
24
+
25
+ import {IRegistry} from "../../registry/IRegistry.sol";
26
+
27
+ import {IProductComponent} from "../../components/IProductComponent.sol";
28
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
29
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
30
+ import {Product} from "../../components/Product.sol";
31
+
32
+ import {IComponents} from "../module/IComponents.sol";
33
+ import {IPolicy} from "../module/IPolicy.sol";
34
+ import {IRisk} from "../module/IRisk.sol";
35
+ import {IBundle} from "../module/IBundle.sol";
36
+ import {IProductService} from "./IProductService.sol";
37
+ import {ITreasury} from "../module/ITreasury.sol";
38
+ import {ISetup} from "../module/ISetup.sol";
39
+
40
+ import {ComponentService} from "../base/ComponentService.sol";
41
+
42
+ import {IInstance} from "../IInstance.sol";
43
+ import {InstanceReader} from "../InstanceReader.sol";
44
+
45
+ import {IApplicationService} from "./IApplicationService.sol";
46
+ import {IBundleService} from "./IBundleService.sol";
47
+ import {IDistributionService} from "./IDistributionService.sol";
48
+ import {IPoolService} from "./IPoolService.sol";
49
+ import {IPricingService} from "./IPricingService.sol";
50
+
51
+
52
+ contract ApplicationService is
53
+ ComponentService,
54
+ IApplicationService
55
+ {
56
+ IDistributionService internal _distributionService;
57
+ IPricingService internal _pricingService;
58
+
59
+ function _initialize(
60
+ address owner,
61
+ bytes memory data
62
+ )
63
+ internal
64
+ virtual override
65
+ initializer()
66
+ {
67
+ // TODO check this, might no longer be the way, refactor if necessary
68
+ address registryAddress;
69
+ address initialOwner;
70
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
71
+
72
+ initializeService(registryAddress, address(0), owner);
73
+ registerInterface(type(IApplicationService).interfaceId);
74
+
75
+ _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
76
+ _pricingService = IPricingService(_getServiceAddress(PRICE()));
77
+ }
78
+
79
+
80
+ function getDomain() public pure override returns(ObjectType) {
81
+ return APPLICATION();
82
+ }
83
+
84
+
85
+ function create(
86
+ address applicationOwner,
87
+ RiskId riskId,
88
+ uint256 sumInsuredAmount,
89
+ Seconds lifetime,
90
+ NftId bundleNftId,
91
+ ReferralId referralId,
92
+ bytes memory applicationData
93
+ )
94
+ external
95
+ virtual
96
+ returns (NftId applicationNftId)
97
+ {
98
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
99
+ // TODO: add validations (see create bundle in pool service)
100
+
101
+ applicationNftId = getRegistryService().registerPolicy(
102
+ IRegistry.ObjectInfo(
103
+ zeroNftId(),
104
+ productNftId,
105
+ POLICY(),
106
+ false, // intercepting property for policies is defined on product
107
+ address(0),
108
+ applicationOwner,
109
+ ""
110
+ )
111
+ );
112
+
113
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
114
+ IPolicy.Premium memory premium = _pricingService.calculatePremium(
115
+ productNftId,
116
+ riskId,
117
+ sumInsuredAmount,
118
+ lifetime,
119
+ applicationData,
120
+ bundleNftId,
121
+ referralId
122
+ );
123
+
124
+ IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo({
125
+ productNftId: productNftId,
126
+ bundleNftId: bundleNftId,
127
+ referralId: referralId,
128
+ riskId: riskId,
129
+ sumInsuredAmount: sumInsuredAmount,
130
+ premiumAmount: premium.premiumAmount,
131
+ premiumPaidAmount: 0,
132
+ lifetime: lifetime,
133
+ applicationData: applicationData,
134
+ policyData: "",
135
+ claimsCount: 0,
136
+ openClaimsCount: 0,
137
+ payoutAmount: AmountLib.zero(),
138
+ activatedAt: zeroTimestamp(),
139
+ expiredAt: zeroTimestamp(),
140
+ closedAt: zeroTimestamp()
141
+ });
142
+
143
+ instance.getInstanceStore().createApplication(applicationNftId, policyInfo);
144
+
145
+ // TODO: add logging
146
+ }
147
+
148
+
149
+ function renew(
150
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
151
+ NftId bundleNftId // will likely need a newer bundle for underwriting
152
+ )
153
+ external
154
+ virtual override
155
+ returns (NftId applicationNftId)
156
+ {
157
+
158
+ }
159
+
160
+
161
+ function adjust(
162
+ NftId applicationNftId,
163
+ RiskId riskId,
164
+ NftId bundleNftId,
165
+ ReferralId referralId,
166
+ uint256 sumInsuredAmount,
167
+ uint256 lifetime,
168
+ bytes memory applicationData
169
+ )
170
+ external
171
+ virtual override
172
+ {
173
+
174
+ }
175
+
176
+ function revoke(NftId applicationNftId)
177
+ external
178
+ virtual override
179
+ {
180
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
181
+ instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
182
+ }
183
+
184
+ // internal functions
185
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
+ import {ApplicationService} from "./ApplicationService.sol";
7
+
8
+ contract ApplicationServiceManager is ProxyManager {
9
+
10
+ ApplicationService private _applicationService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ApplicationService svc = new ApplicationService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _applicationService = ApplicationService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getApplicationService()
29
+ external
30
+ view
31
+ returns (ApplicationService)
32
+ {
33
+ return _applicationService;
34
+ }
35
+ }