@etherisc/gif-next 0.0.2-e6ad61d-739 → 0.0.2-e818783-565

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 (464) hide show
  1. package/README.md +337 -19
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +672 -35
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +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 +1180 -132
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +977 -156
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1908 -776
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +633 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +2403 -852
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1330 -0
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1403 -0
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1140 -0
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +741 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +607 -0
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  44. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  46. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  48. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  50. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  52. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  54. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  56. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  60. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  62. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  63. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  64. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  66. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1060 -0
  68. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +681 -0
  70. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1266 -0
  72. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +725 -0
  74. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1040 -0
  76. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  78. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1774 -0
  80. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +793 -0
  82. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +627 -0
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +686 -0
  86. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +1090 -0
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +937 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +844 -0
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +450 -0
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1511 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +741 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1237 -0
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +840 -0
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +595 -27
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  116. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.json +652 -50
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  127. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  128. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  129. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  132. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  133. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  134. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
  136. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  138. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  139. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  140. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/component/ComponentModule.sol/ComponentModule.json → shared/IService.sol/IService.json} +168 -132
  142. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  144. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  146. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  148. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  150. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  152. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  154. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  155. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  156. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  158. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  160. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  164. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  166. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  168. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestService.sol/TestService.json +596 -0
  170. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  177. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  178. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  179. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  180. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/Amount.sol/AmountLib.json +185 -0
  182. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  184. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  186. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  187. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  188. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  189. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  190. package/artifacts/contracts/types/Fee.sol/FeeLib.json +288 -0
  191. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  192. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  193. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +78 -4
  195. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  196. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  197. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  199. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  201. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  203. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  204. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  205. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  207. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  209. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  210. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  211. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  212. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  213. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +110 -4
  215. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  216. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  217. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  218. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  219. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  220. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  221. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  222. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  223. package/contracts/components/Component.sol +227 -51
  224. package/contracts/components/Distribution.sol +284 -0
  225. package/contracts/components/IComponent.sol +76 -0
  226. package/contracts/components/IDistributionComponent.sol +71 -0
  227. package/contracts/components/IPoolComponent.sol +113 -0
  228. package/contracts/components/IProductComponent.sol +40 -0
  229. package/contracts/components/Pool.sol +280 -30
  230. package/contracts/components/Product.sol +331 -49
  231. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  232. package/contracts/instance/BundleManager.sol +126 -0
  233. package/contracts/instance/Cloneable.sol +51 -0
  234. package/contracts/instance/IInstance.sol +99 -22
  235. package/contracts/instance/IInstanceService.sol +68 -0
  236. package/contracts/instance/Instance.sol +289 -51
  237. package/contracts/instance/InstanceAccessManager.sol +527 -0
  238. package/contracts/instance/InstanceReader.sol +317 -0
  239. package/contracts/instance/InstanceService.sol +478 -0
  240. package/contracts/instance/InstanceServiceManager.sol +54 -0
  241. package/contracts/instance/ObjectManager.sol +82 -0
  242. package/contracts/instance/base/ComponentService.sol +121 -0
  243. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  244. package/contracts/instance/base/ILifecycle.sol +30 -0
  245. package/contracts/instance/base/KeyValueStore.sol +180 -0
  246. package/contracts/instance/base/Lifecycle.sol +117 -0
  247. package/contracts/instance/module/IAccess.sol +54 -0
  248. package/contracts/instance/module/IBundle.sol +23 -0
  249. package/contracts/instance/module/IComponents.sol +41 -0
  250. package/contracts/instance/module/IDistribution.sol +41 -0
  251. package/contracts/instance/module/IPolicy.sol +77 -0
  252. package/contracts/instance/module/IRisk.sol +11 -0
  253. package/contracts/instance/module/ISetup.sol +33 -0
  254. package/contracts/instance/module/ITreasury.sol +23 -0
  255. package/contracts/instance/service/ApplicationService.sol +355 -0
  256. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  257. package/contracts/instance/service/BundleService.sol +436 -0
  258. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  259. package/contracts/instance/service/ClaimService.sol +239 -0
  260. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  261. package/contracts/instance/service/DistributionService.sol +431 -0
  262. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  263. package/contracts/instance/service/IApplicationService.sol +78 -0
  264. package/contracts/instance/service/IBundleService.sol +96 -0
  265. package/contracts/instance/service/IClaimService.sol +92 -0
  266. package/contracts/instance/service/IDistributionService.sol +99 -0
  267. package/contracts/instance/service/IPolicyService.sol +137 -0
  268. package/contracts/instance/service/IPoolService.sol +99 -0
  269. package/contracts/instance/service/IProductService.sol +40 -0
  270. package/contracts/instance/service/PolicyService.sol +541 -0
  271. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  272. package/contracts/instance/service/PoolService.sol +303 -0
  273. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  274. package/contracts/instance/service/ProductService.sol +210 -0
  275. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  276. package/contracts/registry/ChainNft.sol +137 -62
  277. package/contracts/registry/IRegistry.sol +75 -41
  278. package/contracts/registry/IRegistryService.sol +68 -0
  279. package/contracts/registry/ITransferInterceptor.sol +7 -0
  280. package/contracts/registry/Registry.sol +413 -128
  281. package/contracts/registry/RegistryAccessManager.sol +216 -0
  282. package/contracts/registry/RegistryService.sol +282 -0
  283. package/contracts/registry/RegistryServiceManager.sol +62 -0
  284. package/contracts/registry/ReleaseManager.sol +324 -0
  285. package/contracts/registry/TokenRegistry.sol +116 -0
  286. package/contracts/shared/ContractDeployerLib.sol +72 -0
  287. package/contracts/shared/ERC165.sol +27 -0
  288. package/contracts/shared/INftOwnable.sol +23 -0
  289. package/contracts/shared/IPolicyHolder.sol +26 -0
  290. package/contracts/shared/IRegisterable.sol +15 -0
  291. package/contracts/shared/IRegistryLinked.sol +12 -0
  292. package/contracts/shared/IService.sol +16 -0
  293. package/contracts/shared/IVersionable.sol +53 -0
  294. package/contracts/shared/NftOwnable.sol +120 -0
  295. package/contracts/shared/PolicyHolder.sol +81 -0
  296. package/contracts/shared/ProxyManager.sol +169 -0
  297. package/contracts/shared/Registerable.sol +74 -0
  298. package/contracts/shared/RegistryLinked.sol +48 -0
  299. package/contracts/shared/Service.sol +72 -0
  300. package/contracts/shared/TokenHandler.sol +33 -0
  301. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  302. package/contracts/shared/Versionable.sol +59 -0
  303. package/contracts/test/TestFee.sol +25 -0
  304. package/contracts/test/TestRegisterable.sol +18 -0
  305. package/contracts/test/TestRoleId.sol +14 -0
  306. package/contracts/test/TestService.sol +25 -0
  307. package/contracts/test/TestToken.sol +26 -0
  308. package/contracts/test/TestVersion.sol +44 -0
  309. package/contracts/test/TestVersionable.sol +17 -0
  310. package/contracts/test/Usdc.sol +26 -0
  311. package/contracts/types/AddressSet.sol +58 -0
  312. package/contracts/types/Amount.sol +65 -0
  313. package/contracts/types/Blocknumber.sol +1 -0
  314. package/contracts/types/ClaimId.sol +75 -0
  315. package/contracts/types/DistributorType.sol +55 -0
  316. package/contracts/types/Fee.sol +52 -20
  317. package/contracts/types/Key32.sol +50 -0
  318. package/contracts/types/NftId.sol +30 -1
  319. package/contracts/types/NftIdSet.sol +62 -0
  320. package/contracts/types/NumberId.sol +52 -0
  321. package/contracts/types/ObjectType.sol +64 -14
  322. package/contracts/types/PayoutId.sol +82 -0
  323. package/contracts/types/Referral.sol +89 -0
  324. package/contracts/types/RiskId.sol +43 -0
  325. package/contracts/types/RoleId.sol +97 -0
  326. package/contracts/types/Seconds.sol +54 -0
  327. package/contracts/types/StateId.sol +23 -4
  328. package/contracts/types/Timestamp.sol +36 -6
  329. package/contracts/types/UFixed.sol +139 -23
  330. package/contracts/types/Version.sol +108 -0
  331. package/package.json +12 -5
  332. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  333. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  334. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  335. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  336. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  337. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  338. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  340. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  342. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  344. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  346. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  348. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  349. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  350. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  351. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  352. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  354. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  356. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  358. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  360. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  362. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  364. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  366. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  368. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  370. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  371. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  373. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  374. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  375. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  376. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  377. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  378. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  380. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  382. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  383. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  384. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  385. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  386. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  388. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  389. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  390. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  391. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  392. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  393. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  394. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  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 -254
  400. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  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 -129
  405. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  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/ProductService.sol/ProductModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  412. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  414. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  415. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  417. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  418. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  419. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  420. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  421. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  422. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  423. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  424. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  425. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  426. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  427. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  428. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  429. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  430. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  431. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  432. package/contracts/components/IPool.sol +0 -15
  433. package/contracts/components/IProduct.sol +0 -16
  434. package/contracts/experiment/errors/Require.sol +0 -38
  435. package/contracts/experiment/errors/Revert.sol +0 -44
  436. package/contracts/experiment/inheritance/A.sol +0 -53
  437. package/contracts/experiment/inheritance/B.sol +0 -28
  438. package/contracts/experiment/inheritance/C.sol +0 -34
  439. package/contracts/experiment/inheritance/IA.sol +0 -13
  440. package/contracts/experiment/inheritance/IB.sol +0 -10
  441. package/contracts/experiment/inheritance/IC.sol +0 -12
  442. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  443. package/contracts/experiment/statemachine/ISM.sol +0 -25
  444. package/contracts/experiment/statemachine/README.md +0 -112
  445. package/contracts/experiment/statemachine/SM.sol +0 -57
  446. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  447. package/contracts/experiment/types/TypeA.sol +0 -47
  448. package/contracts/experiment/types/TypeB.sol +0 -29
  449. package/contracts/instance/access/Access.sol +0 -165
  450. package/contracts/instance/access/IAccess.sol +0 -63
  451. package/contracts/instance/component/ComponentModule.sol +0 -274
  452. package/contracts/instance/component/IComponent.sol +0 -74
  453. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  454. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  455. package/contracts/instance/policy/IPolicy.sol +0 -50
  456. package/contracts/instance/policy/PolicyModule.sol +0 -114
  457. package/contracts/instance/pool/IPoolModule.sol +0 -23
  458. package/contracts/instance/pool/PoolModule.sol +0 -81
  459. package/contracts/instance/product/IProductService.sol +0 -36
  460. package/contracts/instance/product/ProductService.sol +0 -136
  461. package/contracts/instance/treasury/ITreasury.sol +0 -91
  462. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  463. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  464. package/contracts/registry/IChainNft.sol +0 -21
@@ -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,355 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "./IApplicationService.sol";
6
+
7
+ import {IRegistry} from "../../registry/IRegistry.sol";
8
+ import {IProductComponent} from "../../components/IProductComponent.sol";
9
+ import {Product} from "../../components/Product.sol";
10
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
+ import {IInstance} from "../IInstance.sol";
13
+ import {IComponents} from "../module/IComponents.sol";
14
+ import {IPolicy} from "../module/IPolicy.sol";
15
+ import {IRisk} from "../module/IRisk.sol";
16
+ import {IBundle} from "../module/IBundle.sol";
17
+ import {IProductService} from "./IProductService.sol";
18
+ import {ITreasury} from "../module/ITreasury.sol";
19
+ import {ISetup} from "../module/ISetup.sol";
20
+
21
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
22
+
23
+ import {IVersionable} from "../../shared/IVersionable.sol";
24
+ import {Versionable} from "../../shared/Versionable.sol";
25
+
26
+ import {AmountLib} from "../../types/Amount.sol";
27
+ import {Seconds} from "../../types/Seconds.sol";
28
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
29
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
30
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
31
+ import {ObjectType, DISTRIBUTION, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
32
+ import {APPLIED, REVOKED, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
33
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
34
+ import {Fee, FeeLib} from "../../types/Fee.sol";
35
+ import {ReferralId} from "../../types/Referral.sol";
36
+ import {RiskId} from "../../types/RiskId.sol";
37
+ import {StateId} from "../../types/StateId.sol";
38
+ import {Version, VersionLib} from "../../types/Version.sol";
39
+
40
+ import {ComponentService} from "../base/ComponentService.sol";
41
+ import {InstanceReader} from "../InstanceReader.sol";
42
+ import {IApplicationService} from "./IApplicationService.sol";
43
+ import {IBundleService} from "./IBundleService.sol";
44
+ import {IDistributionService} from "./IDistributionService.sol";
45
+ import {IPoolService} from "./IPoolService.sol";
46
+ import {IService} from "../../shared/IService.sol";
47
+ import {Service} from "../../shared/Service.sol";
48
+
49
+
50
+ contract ApplicationService is
51
+ ComponentService,
52
+ IApplicationService
53
+ {
54
+ IDistributionService internal _distributionService;
55
+
56
+ function _initialize(
57
+ address owner,
58
+ bytes memory data
59
+ )
60
+ internal
61
+ virtual override
62
+ initializer()
63
+ {
64
+ // TODO check this, might no longer be the way, refactor if necessary
65
+ address registryAddress;
66
+ address initialOwner;
67
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
68
+
69
+ initializeService(registryAddress, address(0), owner);
70
+ registerInterface(type(IApplicationService).interfaceId);
71
+
72
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart()));
73
+ }
74
+
75
+
76
+ function getDomain() public pure override returns(ObjectType) {
77
+ return APPLICATION();
78
+ }
79
+
80
+
81
+ function create(
82
+ address applicationOwner,
83
+ RiskId riskId,
84
+ uint256 sumInsuredAmount,
85
+ Seconds lifetime,
86
+ NftId bundleNftId,
87
+ ReferralId referralId,
88
+ bytes memory applicationData
89
+ )
90
+ external
91
+ virtual
92
+ returns (NftId applicationNftId)
93
+ {
94
+ (NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
95
+ // TODO: add validations (see create bundle in pool service)
96
+
97
+ applicationNftId = getRegistryService().registerPolicy(
98
+ IRegistry.ObjectInfo(
99
+ zeroNftId(),
100
+ productNftId,
101
+ POLICY(),
102
+ false, // intercepting property for policies is defined on product
103
+ address(0),
104
+ applicationOwner,
105
+ ""
106
+ )
107
+ );
108
+
109
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
110
+ IPolicy.Premium memory premium = calculatePremium(
111
+ productNftId,
112
+ riskId,
113
+ sumInsuredAmount,
114
+ lifetime,
115
+ applicationData,
116
+ bundleNftId,
117
+ referralId
118
+ );
119
+
120
+ IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
121
+ productNftId,
122
+ bundleNftId,
123
+ referralId,
124
+ riskId,
125
+ sumInsuredAmount,
126
+ premium.premiumAmount,
127
+ 0,
128
+ lifetime,
129
+ applicationData,
130
+ "",
131
+ 0,
132
+ 0,
133
+ AmountLib.zero(),
134
+ zeroTimestamp(),
135
+ zeroTimestamp(),
136
+ zeroTimestamp()
137
+ );
138
+
139
+ instance.createApplication(applicationNftId, policyInfo);
140
+
141
+ // TODO: add logging
142
+ }
143
+
144
+
145
+ function renew(
146
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
147
+ NftId bundleNftId // will likely need a newer bundle for underwriting
148
+ )
149
+ external
150
+ virtual override
151
+ returns (NftId applicationNftId)
152
+ {
153
+
154
+ }
155
+
156
+
157
+ function adjust(
158
+ NftId applicationNftId,
159
+ RiskId riskId,
160
+ NftId bundleNftId,
161
+ ReferralId referralId,
162
+ uint256 sumInsuredAmount,
163
+ uint256 lifetime,
164
+ bytes memory applicationData
165
+ )
166
+ external
167
+ virtual override
168
+ {
169
+
170
+ }
171
+
172
+ function revoke(NftId applicationNftId)
173
+ external
174
+ virtual override
175
+ {
176
+ (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
177
+ instance.updateApplicationState(applicationNftId, REVOKED());
178
+ }
179
+
180
+ // TODO: maybe move this to a pricing service later
181
+ function calculatePremium(
182
+ NftId productNftId,
183
+ RiskId riskId,
184
+ uint256 sumInsuredAmount,
185
+ Seconds lifetime,
186
+ bytes memory applicationData,
187
+ NftId bundleNftId,
188
+ ReferralId referralId
189
+ )
190
+ public
191
+ view
192
+ virtual override
193
+ returns (
194
+ IPolicy.Premium memory premium
195
+ )
196
+ {
197
+ uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
198
+ sumInsuredAmount,
199
+ riskId,
200
+ lifetime,
201
+ applicationData
202
+ );
203
+
204
+ premium = _getFixedFeeAmounts(
205
+ netPremiumAmount,
206
+ _getAndVerifyProduct(productNftId),
207
+ bundleNftId,
208
+ referralId
209
+ );
210
+
211
+ (
212
+ premium
213
+ ) = _calculateVariableFeeAmounts(
214
+ premium,
215
+ _getAndVerifyProduct(productNftId),
216
+ bundleNftId,
217
+ referralId
218
+ );
219
+ }
220
+
221
+
222
+ // internal functions
223
+ function _getFixedFeeAmounts(
224
+ uint256 netPremiumAmount,
225
+ Product product,
226
+ NftId bundleNftId,
227
+ ReferralId referralId
228
+ )
229
+ internal
230
+ view
231
+ returns (
232
+ IPolicy.Premium memory premium
233
+ )
234
+ {
235
+ InstanceReader instanceReader;
236
+ {
237
+ IInstance instance = product.getInstance();
238
+ instanceReader = instance.getInstanceReader();
239
+ }
240
+
241
+ NftId poolNftId = product.getPoolNftId();
242
+ premium = IPolicy.Premium(
243
+ netPremiumAmount, // net premium
244
+ netPremiumAmount, // full premium
245
+ 0, // premium
246
+ 0, 0, 0, 0, // fix fees
247
+ 0, 0, 0, 0, // variable fees
248
+ 0, 0, 0, 0); // distribution owner fee/commission/discount
249
+
250
+ {
251
+ {
252
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
253
+ uint256 t = productSetupInfo.productFee.fixedFee;
254
+ premium.productFeeFixAmount = t;
255
+ premium.fullPremiumAmount += t;
256
+ }
257
+ {
258
+ bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
259
+ uint256 t = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fixedFee;
260
+ premium.poolFeeFixAmount = t;
261
+ premium.fullPremiumAmount += t;
262
+ }
263
+ {
264
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
265
+ if(bundleInfo.poolNftId != poolNftId) {
266
+ revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
267
+ }
268
+ uint256 t = bundleInfo.fee.fixedFee;
269
+ premium.bundleFeeFixAmount = t;
270
+ premium.fullPremiumAmount += t;
271
+ }
272
+ {
273
+ ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
274
+ uint256 t = distInto.distributionFee.fixedFee;
275
+ premium.distributionFeeFixAmount = t;
276
+ premium.fullPremiumAmount += t;
277
+ }
278
+ }
279
+
280
+ }
281
+
282
+ function _calculateVariableFeeAmounts(
283
+ IPolicy.Premium memory premium,
284
+ Product product,
285
+ NftId bundleNftId,
286
+ ReferralId referralId
287
+ )
288
+ internal
289
+ view
290
+ returns (
291
+ IPolicy.Premium memory finalPremium
292
+ )
293
+ {
294
+ InstanceReader instanceReader;
295
+ {
296
+ IInstance instance = product.getInstance();
297
+ instanceReader = instance.getInstanceReader();
298
+ }
299
+
300
+ NftId poolNftId = product.getPoolNftId();
301
+ uint256 netPremiumAmount = premium.netPremiumAmount;
302
+
303
+ {
304
+ {
305
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
306
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
307
+ premium.productFeeVarAmount = t;
308
+ premium.fullPremiumAmount += t;
309
+ }
310
+ {
311
+ bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
312
+ UFixed poolFractionalFee = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fractionalFee;
313
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolFractionalFee).toInt();
314
+ premium.poolFeeVarAmount = t;
315
+ premium.fullPremiumAmount += t;
316
+ }
317
+ {
318
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
319
+ if(bundleInfo.poolNftId != poolNftId) {
320
+ revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
321
+ }
322
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
323
+ premium.bundleFeeVarAmount = t;
324
+ premium.fullPremiumAmount += t;
325
+ }
326
+ {
327
+ premium = _distributionService.calculateFeeAmount(
328
+ product.getDistributionNftId(),
329
+ referralId,
330
+ premium
331
+ );
332
+ }
333
+ }
334
+
335
+ return premium;
336
+ }
337
+
338
+
339
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
340
+ IRegistry.ObjectInfo memory productInfo;
341
+ (, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
342
+ product = Product(productInfo.objectAddress);
343
+ }
344
+
345
+ function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
346
+ IRegistry registry = getRegistry();
347
+ IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
348
+
349
+ if(productInfo.objectType != PRODUCT()) {
350
+ revert ErrorApplicationServiceNotProduct(productNftId, productInfo.objectType);
351
+ }
352
+
353
+ product = Product(productInfo.objectAddress);
354
+ }
355
+ }
@@ -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
+ }