@etherisc/gif-next 0.0.2-f29e479-370 → 0.0.2-f2df3e2-873

Sign up to get free protection for your applications and to get access to all the features.
Files changed (269) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +78 -89
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +139 -140
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +156 -64
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +181 -112
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +353 -176
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -138
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +299 -245
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +83 -162
  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 +527 -400
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +175 -51
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +500 -612
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +305 -211
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -23
  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 +86 -31
  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 +56 -73
  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 +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +291 -100
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +46 -22
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +422 -252
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +78 -14
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +373 -87
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +55 -7
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +579 -123
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +71 -47
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +200 -46
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +241 -188
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +251 -58
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +444 -25
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +430 -76
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +511 -14
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +544 -153
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +51 -27
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +562 -52
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +24 -12
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +115 -52
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
  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 +19 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
  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 +31 -12
  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 +18 -37
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
  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 +2 -2
  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/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +3 -3
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +87 -16
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +3 -3
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +102 -27
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/Amount.sol/AmountLib.json +185 -0
  163. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  165. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
  168. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  170. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  172. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  173. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  174. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  176. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  178. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  181. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
  183. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  185. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  189. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  190. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  191. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  197. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  199. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  201. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  203. package/contracts/components/Component.sol +99 -87
  204. package/contracts/components/Distribution.sol +18 -21
  205. package/contracts/components/IComponent.sol +40 -18
  206. package/contracts/components/IDistributionComponent.sol +1 -22
  207. package/contracts/components/IPoolComponent.sol +73 -47
  208. package/contracts/components/IProductComponent.sol +3 -2
  209. package/contracts/components/Pool.sol +178 -130
  210. package/contracts/components/Product.sol +157 -71
  211. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  212. package/contracts/instance/BundleManager.sol +10 -9
  213. package/contracts/instance/Cloneable.sol +7 -2
  214. package/contracts/instance/IInstance.sol +37 -27
  215. package/contracts/instance/IInstanceService.sol +18 -9
  216. package/contracts/instance/Instance.sol +117 -98
  217. package/contracts/instance/InstanceAccessManager.sol +388 -158
  218. package/contracts/instance/InstanceReader.sol +36 -12
  219. package/contracts/instance/InstanceService.sol +193 -191
  220. package/contracts/instance/ObjectManager.sol +6 -8
  221. package/contracts/instance/base/ComponentService.sol +17 -30
  222. package/contracts/instance/base/KeyValueStore.sol +13 -5
  223. package/contracts/instance/base/Lifecycle.sol +23 -6
  224. package/contracts/instance/module/IAccess.sol +21 -14
  225. package/contracts/instance/module/IBundle.sol +8 -5
  226. package/contracts/instance/module/IComponents.sol +41 -0
  227. package/contracts/instance/module/IDistribution.sol +2 -1
  228. package/contracts/instance/module/IPolicy.sol +37 -7
  229. package/contracts/instance/module/ISetup.sol +7 -22
  230. package/contracts/instance/service/ApplicationService.sol +137 -50
  231. package/contracts/instance/service/BundleService.sol +221 -83
  232. package/contracts/instance/service/ClaimService.sol +114 -26
  233. package/contracts/instance/service/DistributionService.sol +174 -118
  234. package/contracts/instance/service/IApplicationService.sol +9 -13
  235. package/contracts/instance/service/IBundleService.sol +68 -26
  236. package/contracts/instance/service/IClaimService.sol +46 -15
  237. package/contracts/instance/service/IDistributionService.sol +20 -4
  238. package/contracts/instance/service/IPolicyService.sol +69 -21
  239. package/contracts/instance/service/IPoolService.sol +82 -3
  240. package/contracts/instance/service/PolicyService.sol +297 -232
  241. package/contracts/instance/service/PoolService.sol +214 -20
  242. package/contracts/instance/service/ProductService.sol +31 -54
  243. package/contracts/registry/ChainNft.sol +8 -0
  244. package/contracts/registry/IRegistry.sol +2 -0
  245. package/contracts/registry/IRegistryService.sol +4 -3
  246. package/contracts/registry/ITransferInterceptor.sol +1 -0
  247. package/contracts/registry/Registry.sol +23 -20
  248. package/contracts/registry/RegistryService.sol +15 -16
  249. package/contracts/registry/ReleaseManager.sol +20 -18
  250. package/contracts/shared/IService.sol +4 -6
  251. package/contracts/shared/Registerable.sol +2 -2
  252. package/contracts/shared/Service.sol +21 -7
  253. package/contracts/shared/TokenHandler.sol +11 -5
  254. package/contracts/test/TestService.sol +1 -1
  255. package/contracts/types/Amount.sol +65 -0
  256. package/contracts/types/Blocknumber.sol +1 -0
  257. package/contracts/types/ClaimId.sol +25 -2
  258. package/contracts/types/Fee.sol +13 -5
  259. package/contracts/types/NftId.sol +8 -0
  260. package/contracts/types/ObjectType.sol +6 -5
  261. package/contracts/types/PayoutId.sol +33 -5
  262. package/contracts/types/Referral.sol +4 -0
  263. package/contracts/types/RoleId.sol +13 -6
  264. package/contracts/types/Seconds.sol +54 -0
  265. package/contracts/types/StateId.sol +7 -2
  266. package/contracts/types/Timestamp.sol +18 -13
  267. package/contracts/types/UFixed.sol +1 -0
  268. package/contracts/types/Version.sol +1 -0
  269. package/package.json +1 -1
@@ -10,6 +10,7 @@ import {Product} from "../../components/Product.sol";
10
10
  import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
11
  import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
12
  import {IInstance} from "../IInstance.sol";
13
+ import {IComponents} from "../module/IComponents.sol";
13
14
  import {IPolicy} from "../module/IPolicy.sol";
14
15
  import {IRisk} from "../module/IRisk.sol";
15
16
  import {IBundle} from "../module/IBundle.sol";
@@ -22,11 +23,13 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
22
23
  import {IVersionable} from "../../shared/IVersionable.sol";
23
24
  import {Versionable} from "../../shared/Versionable.sol";
24
25
 
26
+ import {AmountLib} from "../../types/Amount.sol";
27
+ import {Seconds} from "../../types/Seconds.sol";
25
28
  import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
29
  import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
30
  import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
- import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, BUNDLE} from "../../types/ObjectType.sol";
29
- import {APPLIED, REVOKED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.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";
30
33
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
34
  import {Fee, FeeLib} from "../../types/Fee.sol";
32
35
  import {ReferralId} from "../../types/Referral.sol";
@@ -38,6 +41,7 @@ import {ComponentService} from "../base/ComponentService.sol";
38
41
  import {InstanceReader} from "../InstanceReader.sol";
39
42
  import {IApplicationService} from "./IApplicationService.sol";
40
43
  import {IBundleService} from "./IBundleService.sol";
44
+ import {IDistributionService} from "./IDistributionService.sol";
41
45
  import {IPoolService} from "./IPoolService.sol";
42
46
  import {IService} from "../../shared/IService.sol";
43
47
  import {Service} from "../../shared/Service.sol";
@@ -47,6 +51,7 @@ contract ApplicationService is
47
51
  ComponentService,
48
52
  IApplicationService
49
53
  {
54
+ IDistributionService internal _distributionService;
50
55
 
51
56
  function _initialize(
52
57
  address owner,
@@ -61,12 +66,14 @@ contract ApplicationService is
61
66
  address initialOwner;
62
67
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
63
68
 
64
- initializeService(registryAddress, owner);
69
+ initializeService(registryAddress, address(0), owner);
65
70
  registerInterface(type(IApplicationService).interfaceId);
71
+
72
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart()));
66
73
  }
67
74
 
68
75
 
69
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
76
+ function getDomain() public pure override returns(ObjectType) {
70
77
  return APPLICATION();
71
78
  }
72
79
 
@@ -75,7 +82,7 @@ contract ApplicationService is
75
82
  address applicationOwner,
76
83
  RiskId riskId,
77
84
  uint256 sumInsuredAmount,
78
- uint256 lifetime,
85
+ Seconds lifetime,
79
86
  NftId bundleNftId,
80
87
  ReferralId referralId,
81
88
  bytes memory applicationData
@@ -84,13 +91,13 @@ contract ApplicationService is
84
91
  virtual
85
92
  returns (NftId applicationNftId)
86
93
  {
87
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
94
+ (NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
88
95
  // TODO: add validations (see create bundle in pool service)
89
96
 
90
97
  applicationNftId = getRegistryService().registerPolicy(
91
98
  IRegistry.ObjectInfo(
92
99
  zeroNftId(),
93
- productInfo.nftId,
100
+ productNftId,
94
101
  POLICY(),
95
102
  false, // intercepting property for policies is defined on product
96
103
  address(0),
@@ -99,7 +106,9 @@ contract ApplicationService is
99
106
  )
100
107
  );
101
108
 
102
- (uint256 premiumAmount,,,,) = calculatePremium(
109
+ // (uint256 premiumAmount,,,,,) = calculatePremium(
110
+ IPolicy.Premium memory premium = calculatePremium(
111
+ productNftId,
103
112
  riskId,
104
113
  sumInsuredAmount,
105
114
  lifetime,
@@ -109,26 +118,25 @@ contract ApplicationService is
109
118
  );
110
119
 
111
120
  IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
112
- productInfo.nftId,
121
+ productNftId,
113
122
  bundleNftId,
114
123
  referralId,
115
124
  riskId,
116
125
  sumInsuredAmount,
117
- premiumAmount,
126
+ premium.premiumAmount,
118
127
  0,
119
128
  lifetime,
120
129
  applicationData,
121
130
  "",
122
131
  0,
123
132
  0,
124
- 0,
133
+ AmountLib.zero(),
125
134
  zeroTimestamp(),
126
135
  zeroTimestamp(),
127
136
  zeroTimestamp()
128
137
  );
129
138
 
130
139
  instance.createApplication(applicationNftId, policyInfo);
131
- instance.updateApplicationState(applicationNftId, APPLIED());
132
140
 
133
141
  // TODO: add logging
134
142
  }
@@ -165,15 +173,16 @@ contract ApplicationService is
165
173
  external
166
174
  virtual override
167
175
  {
168
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
176
+ (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
169
177
  instance.updateApplicationState(applicationNftId, REVOKED());
170
178
  }
171
179
 
172
-
180
+ // TODO: maybe move this to a pricing service later
173
181
  function calculatePremium(
182
+ NftId productNftId,
174
183
  RiskId riskId,
175
184
  uint256 sumInsuredAmount,
176
- uint256 lifetime,
185
+ Seconds lifetime,
177
186
  bytes memory applicationData,
178
187
  NftId bundleNftId,
179
188
  ReferralId referralId
@@ -182,42 +191,36 @@ contract ApplicationService is
182
191
  view
183
192
  virtual override
184
193
  returns (
185
- uint256 premiumAmount,
186
- uint256 distributionFeeAmount,
187
- uint256 productFeeAmount,
188
- uint256 poolFeeAmount,
189
- uint256 bundleFeeAmount
194
+ IPolicy.Premium memory premium
190
195
  )
191
196
  {
192
- Product product = _getAndVerifyInstanceAndProduct();
193
- uint256 netPremiumAmount = product.calculateNetPremium(
197
+ uint256 netPremiumAmount = _getAndVerifyProduct(productNftId).calculateNetPremium(
194
198
  sumInsuredAmount,
195
199
  riskId,
196
200
  lifetime,
197
201
  applicationData
198
202
  );
199
203
 
200
- (
201
- productFeeAmount,
202
- poolFeeAmount,
203
- bundleFeeAmount,
204
- distributionFeeAmount
205
- ) = _calculateFeeAmounts(
204
+ premium = _getFixedFeeAmounts(
206
205
  netPremiumAmount,
207
- product,
206
+ _getAndVerifyProduct(productNftId),
208
207
  bundleNftId,
209
208
  referralId
210
209
  );
211
210
 
212
- premiumAmount = netPremiumAmount + productFeeAmount;
213
- premiumAmount += poolFeeAmount + bundleFeeAmount;
214
- premiumAmount += distributionFeeAmount;
211
+ (
212
+ premium
213
+ ) = _calculateVariableFeeAmounts(
214
+ premium,
215
+ _getAndVerifyProduct(productNftId),
216
+ bundleNftId,
217
+ referralId
218
+ );
215
219
  }
216
220
 
217
221
 
218
222
  // internal functions
219
-
220
- function _calculateFeeAmounts(
223
+ function _getFixedFeeAmounts(
221
224
  uint256 netPremiumAmount,
222
225
  Product product,
223
226
  NftId bundleNftId,
@@ -226,10 +229,7 @@ contract ApplicationService is
226
229
  internal
227
230
  view
228
231
  returns (
229
- uint256 productFeeAmount,
230
- uint256 poolFeeAmount,
231
- uint256 bundleFeeAmount,
232
- uint256 distributionFeeAmount
232
+ IPolicy.Premium memory premium
233
233
  )
234
234
  {
235
235
  InstanceReader instanceReader;
@@ -239,30 +239,117 @@ contract ApplicationService is
239
239
  }
240
240
 
241
241
  NftId poolNftId = product.getPoolNftId();
242
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
243
- require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
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
244
249
 
245
250
  {
246
- ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
247
- (productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
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
+ }
248
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;
249
295
  {
250
- ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
251
- (poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
296
+ IInstance instance = product.getInstance();
297
+ instanceReader = instance.getInstanceReader();
252
298
  }
299
+
300
+ NftId poolNftId = product.getPoolNftId();
301
+ uint256 netPremiumAmount = premium.netPremiumAmount;
302
+
253
303
  {
254
- NftId distributionNftId = product.getDistributionNftId();
255
- ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
256
- (distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
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
+ }
257
333
  }
258
-
259
- (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
334
+
335
+ return premium;
260
336
  }
261
337
 
262
338
 
263
339
  function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
264
340
  IRegistry.ObjectInfo memory productInfo;
265
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
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
+
266
353
  product = Product(productInfo.objectAddress);
267
354
  }
268
355
  }