@etherisc/gif-next 0.0.2-7b86057-523 → 0.0.2-7bdebe2-893

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +8 -13
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +315 -98
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +489 -163
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +250 -137
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +626 -189
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +427 -178
  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 +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1562 -814
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +227 -213
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +1119 -785
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +463 -167
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +418 -230
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +439 -379
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -104
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +197 -169
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +58 -75
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1092 -0
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +672 -0
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +527 -338
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +344 -93
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1400 -0
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +760 -0
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1282 -256
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +619 -0
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +279 -264
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +800 -159
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +159 -274
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +701 -118
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -160
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +338 -412
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +299 -128
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1062 -198
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +384 -89
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +231 -223
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +34 -2
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +47 -15
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +182 -232
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +128 -37
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  123. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  125. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  126. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  127. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
  129. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  130. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  131. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IService.sol/IService.json +71 -160
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +100 -33
  137. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  138. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  139. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -76
  141. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
  143. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  145. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  146. package/artifacts/contracts/shared/Service.sol/Service.json +172 -160
  147. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  148. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  149. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  150. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +115 -58
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  159. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestService.sol/TestService.json +190 -210
  161. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  164. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  166. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  167. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  168. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  169. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  170. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  172. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  175. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  177. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  179. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  181. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  183. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  185. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  188. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  189. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  190. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  192. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  194. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  196. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  198. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  200. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  202. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  204. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  206. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  207. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  208. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  210. package/contracts/components/Component.sol +134 -78
  211. package/contracts/components/Distribution.sol +190 -57
  212. package/contracts/components/IComponent.sol +62 -15
  213. package/contracts/components/IDistributionComponent.sol +39 -15
  214. package/contracts/components/IPoolComponent.sol +84 -31
  215. package/contracts/components/IProductComponent.sol +3 -2
  216. package/contracts/components/Pool.sol +223 -148
  217. package/contracts/components/Product.sol +221 -115
  218. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  219. package/contracts/instance/BundleManager.sol +10 -9
  220. package/contracts/instance/Cloneable.sol +7 -2
  221. package/contracts/instance/IInstance.sol +51 -19
  222. package/contracts/instance/IInstanceService.sol +33 -11
  223. package/contracts/instance/Instance.sol +143 -94
  224. package/contracts/instance/InstanceAccessManager.sol +389 -160
  225. package/contracts/instance/InstanceReader.sol +85 -12
  226. package/contracts/instance/InstanceService.sol +273 -224
  227. package/contracts/instance/InstanceServiceManager.sol +1 -1
  228. package/contracts/instance/ObjectManager.sol +6 -8
  229. package/contracts/instance/base/ComponentService.sol +28 -32
  230. package/contracts/instance/base/KeyValueStore.sol +13 -36
  231. package/contracts/instance/base/Lifecycle.sol +26 -6
  232. package/contracts/instance/module/IAccess.sol +22 -16
  233. package/contracts/instance/module/IBundle.sol +8 -5
  234. package/contracts/instance/module/IComponents.sol +41 -0
  235. package/contracts/instance/module/IDistribution.sol +2 -0
  236. package/contracts/instance/module/IPolicy.sol +41 -9
  237. package/contracts/instance/module/ISetup.sol +7 -20
  238. package/contracts/instance/service/ApplicationService.sol +356 -0
  239. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  240. package/contracts/instance/service/BundleService.sol +224 -132
  241. package/contracts/instance/service/BundleServiceManager.sol +1 -1
  242. package/contracts/instance/service/ClaimService.sol +444 -0
  243. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  244. package/contracts/instance/service/DistributionService.sol +344 -19
  245. package/contracts/instance/service/DistributionServiceManager.sol +1 -1
  246. package/contracts/instance/service/IApplicationService.sol +78 -0
  247. package/contracts/instance/service/IBundleService.sol +93 -22
  248. package/contracts/instance/service/IClaimService.sol +90 -0
  249. package/contracts/instance/service/IDistributionService.sol +87 -0
  250. package/contracts/instance/service/IPolicyService.sol +36 -50
  251. package/contracts/instance/service/IPoolService.sol +106 -3
  252. package/contracts/instance/service/PolicyService.sol +166 -346
  253. package/contracts/instance/service/PolicyServiceManager.sol +2 -2
  254. package/contracts/instance/service/PoolService.sol +312 -19
  255. package/contracts/instance/service/PoolServiceManager.sol +1 -1
  256. package/contracts/instance/service/ProductService.sol +35 -58
  257. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  258. package/contracts/registry/ChainNft.sol +8 -0
  259. package/contracts/registry/IRegistry.sol +5 -2
  260. package/contracts/registry/IRegistryService.sol +12 -11
  261. package/contracts/registry/ITransferInterceptor.sol +1 -0
  262. package/contracts/registry/Registry.sol +43 -28
  263. package/contracts/registry/RegistryService.sol +70 -50
  264. package/contracts/registry/RegistryServiceManager.sol +13 -13
  265. package/contracts/registry/ReleaseManager.sol +32 -40
  266. package/contracts/registry/TokenRegistry.sol +16 -12
  267. package/contracts/shared/ERC165.sol +14 -12
  268. package/contracts/shared/INftOwnable.sol +11 -10
  269. package/contracts/shared/IPolicyHolder.sol +40 -0
  270. package/contracts/shared/IRegisterable.sol +3 -3
  271. package/contracts/shared/IRegistryLinked.sol +11 -0
  272. package/contracts/shared/IService.sol +6 -4
  273. package/contracts/shared/IVersionable.sol +4 -47
  274. package/contracts/shared/NftOwnable.sol +64 -85
  275. package/contracts/shared/PolicyHolder.sol +94 -0
  276. package/contracts/shared/ProxyManager.sol +100 -25
  277. package/contracts/shared/Registerable.sol +16 -27
  278. package/contracts/shared/RegistryLinked.sol +43 -0
  279. package/contracts/shared/Service.sol +32 -20
  280. package/contracts/shared/TokenHandler.sol +11 -5
  281. package/contracts/shared/Versionable.sol +4 -92
  282. package/contracts/test/TestRegisterable.sol +1 -1
  283. package/contracts/test/TestService.sol +1 -1
  284. package/contracts/types/Amount.sol +80 -0
  285. package/contracts/types/Blocknumber.sol +1 -0
  286. package/contracts/types/ClaimId.sol +75 -0
  287. package/contracts/types/DistributorType.sol +2 -2
  288. package/contracts/types/Fee.sol +13 -5
  289. package/contracts/types/NftId.sol +8 -0
  290. package/contracts/types/ObjectType.sol +11 -6
  291. package/contracts/types/PayoutId.sol +82 -0
  292. package/contracts/types/Referral.sol +4 -0
  293. package/contracts/types/RoleId.sol +16 -9
  294. package/contracts/types/Seconds.sol +54 -0
  295. package/contracts/types/StateId.sol +7 -2
  296. package/contracts/types/Timestamp.sol +18 -13
  297. package/contracts/types/UFixed.sol +1 -0
  298. package/contracts/types/Version.sol +1 -0
  299. package/package.json +3 -3
  300. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  301. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  302. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  303. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  304. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  305. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  306. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  307. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  308. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  309. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  310. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  312. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  313. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  314. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  315. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  316. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  317. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  318. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  319. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  320. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  321. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  323. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  325. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  327. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  329. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  331. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  333. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  335. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  337. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  339. package/contracts/experiment/cloning/Cloner.sol +0 -47
  340. package/contracts/experiment/errors/Require.sol +0 -38
  341. package/contracts/experiment/errors/Revert.sol +0 -44
  342. package/contracts/experiment/inheritance/A.sol +0 -53
  343. package/contracts/experiment/inheritance/B.sol +0 -28
  344. package/contracts/experiment/inheritance/C.sol +0 -34
  345. package/contracts/experiment/inheritance/IA.sol +0 -13
  346. package/contracts/experiment/inheritance/IB.sol +0 -10
  347. package/contracts/experiment/inheritance/IC.sol +0 -12
  348. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  349. package/contracts/experiment/statemachine/ISM.sol +0 -25
  350. package/contracts/experiment/statemachine/SM.sol +0 -57
  351. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  352. package/contracts/experiment/types/TypeA.sol +0 -47
  353. package/contracts/experiment/types/TypeB.sol +0 -29
@@ -0,0 +1,356 @@
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
+ AmountLib.zero(),
135
+ zeroTimestamp(),
136
+ zeroTimestamp(),
137
+ zeroTimestamp()
138
+ );
139
+
140
+ instance.createApplication(applicationNftId, policyInfo);
141
+
142
+ // TODO: add logging
143
+ }
144
+
145
+
146
+ function renew(
147
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
148
+ NftId bundleNftId // will likely need a newer bundle for underwriting
149
+ )
150
+ external
151
+ virtual override
152
+ returns (NftId applicationNftId)
153
+ {
154
+
155
+ }
156
+
157
+
158
+ function adjust(
159
+ NftId applicationNftId,
160
+ RiskId riskId,
161
+ NftId bundleNftId,
162
+ ReferralId referralId,
163
+ uint256 sumInsuredAmount,
164
+ uint256 lifetime,
165
+ bytes memory applicationData
166
+ )
167
+ external
168
+ virtual override
169
+ {
170
+
171
+ }
172
+
173
+ function revoke(NftId applicationNftId)
174
+ external
175
+ virtual override
176
+ {
177
+ (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
178
+ instance.updateApplicationState(applicationNftId, REVOKED());
179
+ }
180
+
181
+ // TODO: maybe move this to a pricing service later
182
+ function calculatePremium(
183
+ NftId productNftId,
184
+ RiskId riskId,
185
+ uint256 sumInsuredAmount,
186
+ Seconds lifetime,
187
+ bytes memory applicationData,
188
+ NftId bundleNftId,
189
+ ReferralId referralId
190
+ )
191
+ public
192
+ view
193
+ virtual override
194
+ returns (
195
+ IPolicy.Premium memory premium
196
+ )
197
+ {
198
+ uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
199
+ sumInsuredAmount,
200
+ riskId,
201
+ lifetime,
202
+ applicationData
203
+ );
204
+
205
+ premium = _getFixedFeeAmounts(
206
+ netPremiumAmount,
207
+ _getAndVerifyProduct(productNftId),
208
+ bundleNftId,
209
+ referralId
210
+ );
211
+
212
+ (
213
+ premium
214
+ ) = _calculateVariableFeeAmounts(
215
+ premium,
216
+ _getAndVerifyProduct(productNftId),
217
+ bundleNftId,
218
+ referralId
219
+ );
220
+ }
221
+
222
+
223
+ // internal functions
224
+ function _getFixedFeeAmounts(
225
+ uint256 netPremiumAmount,
226
+ Product product,
227
+ NftId bundleNftId,
228
+ ReferralId referralId
229
+ )
230
+ internal
231
+ view
232
+ returns (
233
+ IPolicy.Premium memory premium
234
+ )
235
+ {
236
+ InstanceReader instanceReader;
237
+ {
238
+ IInstance instance = product.getInstance();
239
+ instanceReader = instance.getInstanceReader();
240
+ }
241
+
242
+ NftId poolNftId = product.getPoolNftId();
243
+ premium = IPolicy.Premium(
244
+ netPremiumAmount, // net premium
245
+ netPremiumAmount, // full premium
246
+ 0, // premium
247
+ 0, 0, 0, 0, // fix fees
248
+ 0, 0, 0, 0, // variable fees
249
+ 0, 0, 0, 0); // distribution owner fee/commission/discount
250
+
251
+ {
252
+ {
253
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
254
+ uint256 t = productSetupInfo.productFee.fixedFee;
255
+ premium.productFeeFixAmount = t;
256
+ premium.fullPremiumAmount += t;
257
+ }
258
+ {
259
+ bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
260
+ uint256 t = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fixedFee;
261
+ premium.poolFeeFixAmount = t;
262
+ premium.fullPremiumAmount += t;
263
+ }
264
+ {
265
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
266
+ if(bundleInfo.poolNftId != poolNftId) {
267
+ revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
268
+ }
269
+ uint256 t = bundleInfo.fee.fixedFee;
270
+ premium.bundleFeeFixAmount = t;
271
+ premium.fullPremiumAmount += t;
272
+ }
273
+ {
274
+ ISetup.DistributionSetupInfo memory distInto = instanceReader.getDistributionSetupInfo(product.getDistributionNftId());
275
+ uint256 t = distInto.distributionFee.fixedFee;
276
+ premium.distributionFeeFixAmount = t;
277
+ premium.fullPremiumAmount += t;
278
+ }
279
+ }
280
+
281
+ }
282
+
283
+ function _calculateVariableFeeAmounts(
284
+ IPolicy.Premium memory premium,
285
+ Product product,
286
+ NftId bundleNftId,
287
+ ReferralId referralId
288
+ )
289
+ internal
290
+ view
291
+ returns (
292
+ IPolicy.Premium memory finalPremium
293
+ )
294
+ {
295
+ InstanceReader instanceReader;
296
+ {
297
+ IInstance instance = product.getInstance();
298
+ instanceReader = instance.getInstanceReader();
299
+ }
300
+
301
+ NftId poolNftId = product.getPoolNftId();
302
+ uint256 netPremiumAmount = premium.netPremiumAmount;
303
+
304
+ {
305
+ {
306
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
307
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * productSetupInfo.productFee.fractionalFee).toInt();
308
+ premium.productFeeVarAmount = t;
309
+ premium.fullPremiumAmount += t;
310
+ }
311
+ {
312
+ bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
313
+ UFixed poolFractionalFee = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fractionalFee;
314
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolFractionalFee).toInt();
315
+ premium.poolFeeVarAmount = t;
316
+ premium.fullPremiumAmount += t;
317
+ }
318
+ {
319
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
320
+ if(bundleInfo.poolNftId != poolNftId) {
321
+ revert ErrorApplicationServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
322
+ }
323
+ uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * bundleInfo.fee.fractionalFee).toInt();
324
+ premium.bundleFeeVarAmount = t;
325
+ premium.fullPremiumAmount += t;
326
+ }
327
+ {
328
+ premium = _distributionService.calculateFeeAmount(
329
+ product.getDistributionNftId(),
330
+ referralId,
331
+ premium
332
+ );
333
+ }
334
+ }
335
+
336
+ return premium;
337
+ }
338
+
339
+
340
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
341
+ IRegistry.ObjectInfo memory productInfo;
342
+ (, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
343
+ product = Product(productInfo.objectAddress);
344
+ }
345
+
346
+ function _getAndVerifyProduct(NftId productNftId) internal view returns (Product product) {
347
+ IRegistry registry = getRegistry();
348
+ IRegistry.ObjectInfo memory productInfo = registry.getObjectInfo(productNftId);
349
+
350
+ if(productInfo.objectType != PRODUCT()) {
351
+ revert ErrorApplicationServiceNotProduct(productNftId, productInfo.objectType);
352
+ }
353
+
354
+ product = Product(productInfo.objectAddress);
355
+ }
356
+ }
@@ -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
+ }