@etherisc/gif-next 0.0.2-f2df3e2-873 → 0.0.2-f398177-971

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 (252) hide show
  1. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  2. package/artifacts/contracts/components/Component.sol/Component.json +37 -6
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +44 -13
  5. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.json +37 -6
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +44 -13
  9. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +55 -24
  11. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +52 -21
  13. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  14. package/artifacts/contracts/components/Pool.sol/Pool.json +55 -24
  15. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  16. package/artifacts/contracts/components/Product.sol/Product.json +52 -21
  17. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  19. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  20. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +252 -2210
  22. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +21 -38
  24. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/Instance.sol/Instance.json +346 -2685
  26. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +67 -49
  28. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +219 -53
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +59 -220
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -117
  36. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +37 -13
  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 +2 -2
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  56. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +75 -217
  58. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +33 -66
  60. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +155 -133
  62. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +35 -64
  64. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +463 -119
  66. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +109 -42
  68. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +181 -399
  70. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +81 -94
  72. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +11 -145
  74. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +79 -30
  76. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +229 -88
  78. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +23 -273
  80. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -326
  82. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +265 -32
  84. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +5 -13
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +213 -443
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +74 -75
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +439 -54
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +84 -37
  96. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
  98. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +55 -31
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +22 -35
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -13
  108. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -25
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +2 -2
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +10 -23
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  122. package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
  123. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +0 -13
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  134. package/artifacts/contracts/shared/IService.sol/IService.json +5 -13
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -19
  138. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
  140. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
  142. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
  144. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  146. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  147. package/artifacts/contracts/shared/Service.sol/Service.json +5 -13
  148. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  150. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  151. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  154. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
  156. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  158. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestService.sol/TestService.json +17 -25
  160. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  163. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  164. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  165. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Amount.sol/AmountLib.json +100 -4
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +2 -2
  171. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  173. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Fee.sol/FeeLib.json +42 -18
  175. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  177. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  179. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  180. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  181. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  184. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +2 -2
  186. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  188. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  190. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  192. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  199. package/contracts/components/Component.sol +21 -2
  200. package/contracts/components/Distribution.sol +5 -4
  201. package/contracts/components/IComponent.sol +16 -2
  202. package/contracts/components/IPoolComponent.sol +7 -6
  203. package/contracts/components/IProductComponent.sol +5 -4
  204. package/contracts/components/Pool.sol +8 -8
  205. package/contracts/components/Product.sol +21 -17
  206. package/contracts/instance/IInstance.sol +28 -53
  207. package/contracts/instance/IInstanceService.sol +15 -10
  208. package/contracts/instance/Instance.sol +90 -171
  209. package/contracts/instance/InstanceAccessManager.sol +35 -21
  210. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  211. package/contracts/instance/InstanceReader.sol +56 -5
  212. package/contracts/instance/InstanceService.sol +96 -266
  213. package/contracts/instance/InstanceStore.sol +212 -0
  214. package/contracts/instance/ObjectManager.sol +1 -1
  215. package/contracts/instance/base/ComponentService.sol +47 -20
  216. package/contracts/instance/base/KeyValueStore.sol +0 -31
  217. package/contracts/instance/base/Lifecycle.sol +7 -4
  218. package/contracts/instance/module/IComponents.sol +3 -3
  219. package/contracts/instance/module/IDistribution.sol +3 -2
  220. package/contracts/instance/module/IPolicy.sol +5 -5
  221. package/contracts/instance/service/ApplicationService.sol +58 -227
  222. package/contracts/instance/service/BundleService.sol +65 -119
  223. package/contracts/instance/service/ClaimService.sol +232 -34
  224. package/contracts/instance/service/DistributionService.sol +51 -134
  225. package/contracts/instance/service/IApplicationService.sol +5 -21
  226. package/contracts/instance/service/IBundleService.sol +32 -10
  227. package/contracts/instance/service/IClaimService.sol +37 -39
  228. package/contracts/instance/service/IDistributionService.sol +10 -22
  229. package/contracts/instance/service/IPolicyService.sol +15 -72
  230. package/contracts/instance/service/IPoolService.sol +18 -3
  231. package/contracts/instance/service/IPricingService.sol +37 -0
  232. package/contracts/instance/service/PolicyService.sol +112 -277
  233. package/contracts/instance/service/PoolService.sol +121 -21
  234. package/contracts/instance/service/PricingService.sol +275 -0
  235. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  236. package/contracts/instance/service/ProductService.sol +10 -10
  237. package/contracts/registry/IRegistryService.sol +0 -2
  238. package/contracts/registry/RegistryService.sol +14 -10
  239. package/contracts/shared/IPolicyHolder.sol +23 -9
  240. package/contracts/shared/IRegistryLinked.sol +0 -1
  241. package/contracts/shared/IService.sol +2 -0
  242. package/contracts/shared/NftOwnable.sol +0 -2
  243. package/contracts/shared/PolicyHolder.sol +30 -17
  244. package/contracts/shared/Registerable.sol +10 -9
  245. package/contracts/shared/RegistryLinked.sol +0 -5
  246. package/contracts/shared/TokenHandler.sol +4 -2
  247. package/contracts/types/Amount.sol +44 -0
  248. package/contracts/types/Fee.sol +7 -6
  249. package/contracts/types/ObjectType.sol +5 -1
  250. package/package.json +1 -1
  251. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  252. /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
@@ -8,11 +8,12 @@ import {InstanceReader} from "../../instance/InstanceReader.sol";
8
8
  import {ISetup} from "../../instance/module/ISetup.sol";
9
9
  import {IPolicy} from "../module/IPolicy.sol";
10
10
 
11
+ import {Amount, AmountLib} from "../../types/Amount.sol";
11
12
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
12
13
  import {Fee, FeeLib} from "../../types/Fee.sol";
13
14
  import {PRODUCT_SERVICE_ROLE, DISTRIBUTION_OWNER_ROLE} from "../../types/RoleId.sol";
14
15
  import {KEEP_STATE} from "../../types/StateId.sol";
15
- import {ObjectType, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR} from "../../types/ObjectType.sol";
16
+ import {ObjectType, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR, PRICE} from "../../types/ObjectType.sol";
16
17
  import {Version, VersionLib} from "../../types/Version.sol";
17
18
  import {RoleId} from "../../types/RoleId.sol";
18
19
 
@@ -26,6 +27,7 @@ import {InstanceService} from "../InstanceService.sol";
26
27
  import {IComponent} from "../../components/IComponent.sol";
27
28
  import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
28
29
  import {IDistributionService} from "./IDistributionService.sol";
30
+ import {IPricingService} from "./IPricingService.sol";
29
31
 
30
32
  import {UFixed, UFixedLib} from "../../types/UFixed.sol";
31
33
  import {DistributorType, DistributorTypeLib} from "../../types/DistributorType.sol";
@@ -33,6 +35,7 @@ import {ReferralId, ReferralStatus, ReferralLib} from "../../types/Referral.sol"
33
35
  import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
34
36
  import {Key32} from "../../types/Key32.sol";
35
37
  import {IDistribution} from "../module/IDistribution.sol";
38
+ import {InstanceStore} from "../InstanceStore.sol";
36
39
 
37
40
 
38
41
  contract DistributionService is
@@ -87,7 +90,7 @@ contract DistributionService is
87
90
  distribution.linkToRegisteredNftId();
88
91
  distributionNftId = distributionInfo.nftId;
89
92
 
90
- instance.createDistributionSetup(distributionNftId, distribution.getSetupInfo());
93
+ instance.getInstanceStore().createDistributionSetup(distributionNftId, distribution.getSetupInfo());
91
94
  // TODO move to distribution?
92
95
  bytes4[][] memory selectors = new bytes4[][](2);
93
96
  selectors[0] = new bytes4[](1);
@@ -119,14 +122,14 @@ contract DistributionService is
119
122
  revert ErrorIDistributionServiceMinFeeTooHigh(minDistributionOwnerFee.fractionalFee.toInt(), distributionFee.fractionalFee.toInt());
120
123
  }
121
124
 
122
- (NftId distributionNftId, IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
125
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
123
126
  InstanceReader instanceReader = instance.getInstanceReader();
124
127
 
125
128
  ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
126
129
  distSetupInfo.minDistributionOwnerFee = minDistributionOwnerFee;
127
130
  distSetupInfo.distributionFee = distributionFee;
128
131
 
129
- instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
132
+ instance.getInstanceStore().updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
130
133
  }
131
134
 
132
135
  function createDistributorType(
@@ -143,7 +146,7 @@ contract DistributionService is
143
146
  external
144
147
  returns (DistributorType distributorType)
145
148
  {
146
- (NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
149
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
147
150
 
148
151
  {
149
152
  ISetup.DistributionSetupInfo memory setupInfo = instance.getInstanceReader().getDistributionSetupInfo(distributionNftId);
@@ -153,7 +156,7 @@ contract DistributionService is
153
156
  revert ErrorIDistributionServiceMaxDiscountTooHigh(maxDiscountPercentage.toInt(), maxDiscountPercentageLimit.toInt());
154
157
  }
155
158
  }
156
-
159
+
157
160
  distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
158
161
  IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
159
162
  name,
@@ -166,16 +169,20 @@ contract DistributionService is
166
169
  allowRenewals,
167
170
  data);
168
171
 
169
- instance.createDistributorType(distributorType, info);
172
+ instance.getInstanceStore().createDistributorType(distributorType, info);
170
173
  }
171
174
 
175
+
172
176
  function createDistributor(
173
177
  address distributor,
174
178
  DistributorType distributorType,
175
179
  bytes memory data
176
- ) external returns (NftId distributorNftId)
180
+ )
181
+ external
182
+ virtual
183
+ returns (NftId distributorNftId)
177
184
  {
178
- (NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
185
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
179
186
 
180
187
  distributorNftId = getRegistryService().registerDistributor(
181
188
  IRegistry.ObjectInfo(
@@ -192,25 +199,27 @@ contract DistributionService is
192
199
  distributorType,
193
200
  true, // active
194
201
  data,
195
- 0,
202
+ AmountLib.zero(),
196
203
  0);
197
204
 
198
- instance.createDistributor(distributorNftId, info);
205
+ instance.getInstanceStore().createDistributor(distributorNftId, info);
199
206
  }
200
207
 
201
- function updateDistributorType(
202
- NftId distributorNftId,
203
- DistributorType distributorType,
204
- bytes memory data
205
- ) external virtual
206
- {
207
- (, IInstance instance) = _getAndVerifyCallingDistribution();
208
- InstanceReader instanceReader = instance.getInstanceReader();
209
- IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
210
- distributorInfo.distributorType = distributorType;
211
- distributorInfo.data = data;
212
- instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
213
- }
208
+ // function updateDistributorType(
209
+ // NftId distributorNftId,
210
+ // DistributorType distributorType,
211
+ // bytes memory data
212
+ // )
213
+ // external
214
+ // virtual
215
+ // {
216
+ // (, IInstance instance) = _getAndVerifyCallingDistribution();
217
+ // InstanceReader instanceReader = instance.getInstanceReader();
218
+ // IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
219
+ // distributorInfo.distributorType = distributorType;
220
+ // distributorInfo.data = data;
221
+ // instance.updateDistributor(distributorNftId, distributorInfo, KEEP_STATE());
222
+ // }
214
223
 
215
224
 
216
225
  function createReferral(
@@ -225,7 +234,7 @@ contract DistributionService is
225
234
  virtual
226
235
  returns (ReferralId referralId)
227
236
  {
228
- (NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
237
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(DISTRIBUTION());
229
238
 
230
239
  if (bytes(code).length == 0) {
231
240
  revert ErrorIDistributionServiceInvalidReferral(code);
@@ -235,8 +244,7 @@ contract DistributionService is
235
244
  }
236
245
 
237
246
  InstanceReader instanceReader = instance.getInstanceReader();
238
- IDistribution.DistributorInfo memory distributorInfo = instanceReader.getDistributorInfo(distributorNftId);
239
- DistributorType distributorType = distributorInfo.distributorType;
247
+ DistributorType distributorType = instanceReader.getDistributorInfo(distributorNftId).distributorType;
240
248
  IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
241
249
 
242
250
  if (distributorTypeData.maxReferralCount < maxReferrals) {
@@ -263,15 +271,15 @@ contract DistributionService is
263
271
  data
264
272
  );
265
273
 
266
- instance.createReferral(referralId, info);
274
+ instance.getInstanceStore().createReferral(referralId, info);
267
275
  return referralId;
268
276
  }
269
277
 
270
278
  function processSale(
271
- NftId distributionNftId,
279
+ NftId distributionNftId, // assume always of distribution type
272
280
  ReferralId referralId,
273
281
  IPolicy.Premium memory premium,
274
- uint256 transferredDistributionFeeAmount
282
+ Amount transferredDistributionFeeAmount
275
283
  )
276
284
  external
277
285
  virtual
@@ -285,104 +293,36 @@ contract DistributionService is
285
293
 
286
294
  IInstance instance = _getInstanceForDistribution(distributionNftId);
287
295
  InstanceReader reader = instance.getInstanceReader();
296
+ InstanceStore store = instance.getInstanceStore();
288
297
  IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
289
298
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
290
299
  ISetup.DistributionSetupInfo memory setupInfo = reader.getDistributionSetupInfo(distributionNftId);
291
300
 
292
- uint256 distributionOwnerFee = premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount;
293
- uint256 commissionAmount = premium.commissionAmount;
301
+ Amount distributionOwnerFee = AmountLib.toAmount(premium.distributionOwnerFeeFixAmount + premium.distributionOwnerFeeVarAmount);
302
+ Amount commissionAmount = AmountLib.toAmount(premium.commissionAmount);
294
303
 
295
- if (transferredDistributionFeeAmount != distributionOwnerFee + commissionAmount) {
296
- revert ErrorIDistributionServiceInvalidFeeTransferred(transferredDistributionFeeAmount, distributionOwnerFee + commissionAmount);
304
+ if (!(transferredDistributionFeeAmount == distributionOwnerFee + commissionAmount)) {
305
+ revert ErrorDistributionServiceInvalidFeeTransferred(transferredDistributionFeeAmount, distributionOwnerFee + commissionAmount);
297
306
  }
298
307
 
299
308
 
300
- if (distributionOwnerFee > 0) {
301
- setupInfo.sumDistributionOwnerFees += distributionOwnerFee;
302
- instance.updateDistributionSetup(distributionNftId, setupInfo, KEEP_STATE());
309
+ if (distributionOwnerFee.gtz()) {
310
+ setupInfo.sumDistributionOwnerFees += distributionOwnerFee.toInt();
311
+ store.updateDistributionSetup(distributionNftId, setupInfo, KEEP_STATE());
303
312
  }
304
313
 
305
314
  if (isReferral) {
306
315
  referralInfo.usedReferrals += 1;
307
- instance.updateReferral(referralId, referralInfo, KEEP_STATE());
316
+ store.updateReferral(referralId, referralInfo, KEEP_STATE());
308
317
 
309
- if (commissionAmount > 0) {
310
- distributorInfo.sumCommisions += commissionAmount;
318
+ if (commissionAmount.gtz()) {
319
+ distributorInfo.commissionAmount = distributorInfo.commissionAmount + commissionAmount;
311
320
  distributorInfo.numPoliciesSold += 1;
312
- instance.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
321
+ store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
313
322
  }
314
323
  }
315
324
  }
316
325
 
317
- function calculateFeeAmount(
318
- NftId distributionNftId,
319
- ReferralId referralId,
320
- IPolicy.Premium memory premium
321
- )
322
- external
323
- virtual
324
- view
325
- returns (IPolicy.Premium memory finalPremium)
326
- {
327
- IInstance instance = _getInstanceForDistribution(distributionNftId);
328
- InstanceReader reader = instance.getInstanceReader();
329
-
330
- // first calculate all fixed and variable fees for the distribution - this will defined the fullPremium
331
- ISetup.DistributionSetupInfo memory setupInfo = reader.getDistributionSetupInfo(distributionNftId);
332
- Fee memory distributionFee = setupInfo.distributionFee;
333
- Fee memory minDistributionOwnerFee = setupInfo.minDistributionOwnerFee;
334
- uint256 distributionFeeVarAmount = (UFixedLib.toUFixed(premium.netPremiumAmount) * distributionFee.fractionalFee).toInt();
335
- premium.distributionFeeVarAmount = distributionFeeVarAmount;
336
- premium.fullPremiumAmount += distributionFeeVarAmount;
337
-
338
- // if the referral is not valid, then the distribution owner gets everything
339
- if (! referralIsValid(distributionNftId, referralId)) {
340
- premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
341
- premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
342
- premium.premiumAmount = premium.fullPremiumAmount;
343
- return premium;
344
- }
345
-
346
- // if the referral is valid, the the commission and discount are calculated based in the full premium
347
- // the remaing amount goes to the distribution owner
348
- {
349
- IDistribution.ReferralInfo memory referralInfo = reader.getReferralInfo(referralId);
350
- IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
351
- IDistribution.DistributorTypeInfo memory distributorTypeInfo = reader.getDistributorTypeInfo(distributorInfo.distributorType);
352
-
353
- uint256 commissionAmount = UFixedLib.toUFixed(premium.netPremiumAmount).mul(distributorTypeInfo.commissionPercentage).toInt();
354
- premium.commissionAmount = commissionAmount;
355
- premium.discountAmount = UFixedLib.toUFixed(premium.fullPremiumAmount).mul(referralInfo.discountPercentage).toInt();
356
- premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
357
- premium.distributionOwnerFeeVarAmount = distributionFeeVarAmount - commissionAmount - premium.discountAmount;
358
- premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
359
- }
360
-
361
- // sanity check to validate the fee calculation
362
- if (premium.distributionOwnerFeeFixAmount < minDistributionOwnerFee.fixedFee) {
363
- revert ErrorIDistributionServiceFeeCalculationMismatch(
364
- premium.distributionFeeFixAmount,
365
- premium.distributionFeeVarAmount,
366
- premium.distributionOwnerFeeFixAmount,
367
- premium.distributionOwnerFeeVarAmount,
368
- premium.commissionAmount,
369
- premium.discountAmount
370
- );
371
- }
372
- if ((premium.distributionFeeVarAmount) != (premium.discountAmount + premium.distributionOwnerFeeVarAmount + premium.commissionAmount)) {
373
- revert ErrorIDistributionServiceFeeCalculationMismatch(
374
- premium.distributionFeeFixAmount,
375
- premium.distributionFeeVarAmount,
376
- premium.distributionOwnerFeeFixAmount,
377
- premium.distributionOwnerFeeVarAmount,
378
- premium.commissionAmount,
379
- premium.discountAmount
380
- );
381
- }
382
-
383
- return premium;
384
- }
385
-
386
326
  // TODO: zero should return false
387
327
  function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
388
328
  IInstance instance = _getInstanceForDistribution(distributionNftId);
@@ -396,29 +336,6 @@ contract DistributionService is
396
336
  isValid = isValid && info.usedReferrals < info.maxReferrals;
397
337
  }
398
338
 
399
- function _getAndVerifyCallingDistribution()
400
- internal
401
- view
402
- returns(
403
- NftId distributionNftId,
404
- IInstance instance
405
- )
406
- {
407
- distributionNftId = getRegistry().getNftId(msg.sender);
408
- if (distributionNftId.eqz()) {
409
- revert ErrorDistributionServiceCallerNotRegistered(msg.sender);
410
- }
411
-
412
- IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(distributionNftId);
413
- if(info.objectType != DISTRIBUTION()) {
414
- revert ErrorIDistributionServiceCallerNotDistributor(msg.sender);
415
- }
416
-
417
- address instanceAddress = getRegistry().getObjectInfo(info.parentNftId).objectAddress;
418
- instance = IInstance(instanceAddress);
419
- }
420
-
421
-
422
339
  function _getInstanceForDistribution(NftId distributionNftId)
423
340
  internal
424
341
  view
@@ -428,4 +345,4 @@ contract DistributionService is
428
345
  address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
429
346
  return IInstance(instanceAddress);
430
347
  }
431
- }
348
+ }
@@ -4,6 +4,7 @@ pragma solidity ^0.8.19;
4
4
  import {IPolicy} from "../module/IPolicy.sol";
5
5
  import {IService} from "../../shared/IService.sol";
6
6
 
7
+ import {Amount} from "../../types/Amount.sol";
7
8
  import {NftId} from "../../types/NftId.sol";
8
9
  import {ObjectType} from "../../types/ObjectType.sol";
9
10
  import {ReferralId} from "../../types/Referral.sol";
@@ -22,7 +23,7 @@ interface IApplicationService is IService {
22
23
  function create(
23
24
  address applicationOwner,
24
25
  RiskId riskId,
25
- uint256 sumInsuredAmount,
26
+ Amount sumInsuredAmount,
26
27
  Seconds lifetime,
27
28
  NftId bundleNftId,
28
29
  ReferralId referralId,
@@ -37,8 +38,8 @@ interface IApplicationService is IService {
37
38
  RiskId riskId,
38
39
  NftId bundleNftId,
39
40
  ReferralId referralId,
40
- uint256 sumInsuredAmount,
41
- uint256 lifetime,
41
+ Amount sumInsuredAmount,
42
+ Seconds lifetime,
42
43
  bytes memory applicationData
43
44
  ) external;
44
45
 
@@ -58,21 +59,4 @@ interface IApplicationService is IService {
58
59
  /// an application can only be revoked in applied state
59
60
  /// only the application holder may revoke an application
60
61
  function revoke(NftId policyNftId) external;
61
-
62
- /// @dev calculates the premium amount for the specified attributes
63
- /// also returns the various fee components involved with creating a policy
64
- function calculatePremium(
65
- NftId productNftId,
66
- RiskId riskId,
67
- uint256 sumInsuredAmount,
68
- Seconds lifetime,
69
- bytes memory applicationData,
70
- NftId bundleNftId,
71
- ReferralId referralId
72
- )
73
- external
74
- view
75
- returns (
76
- IPolicy.Premium memory premium
77
- );
78
- }
62
+ }
@@ -16,13 +16,15 @@ interface IBundleService is IService {
16
16
  event LogBundleServiceBundleActivated(NftId bundleNftId);
17
17
  event LogBundleServiceBundleLocked(NftId bundleNftId);
18
18
 
19
- error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
19
+ error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
20
20
  error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
21
- error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, uint capacityAmount, uint collateralAmount);
21
+ error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
22
22
  error ErrorBundleServiceBundleWithOpenPolicies(NftId bundleNftId, uint256 openPoliciesCount);
23
23
 
24
24
  error ErrorBundleServiceBundleUnknown(NftId bundleNftId);
25
- error ErrorBundleServiceBundlePoolMismatch(NftId expectedPoolNftId, NftId bundlePoolNftId);
25
+ error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
26
+
27
+ error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
26
28
 
27
29
  /// @dev create a new bundle for the specified attributes
28
30
  /// may only be called by pool service
@@ -38,6 +40,13 @@ interface IBundleService is IService {
38
40
  external
39
41
  returns(NftId bundleNftId); // the nft id of the newly created bundle
40
42
 
43
+
44
+ /// @dev increase bundle stakes by the specified amount
45
+ /// may only be called by the bundle owner
46
+ // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
47
+
48
+ // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
49
+
41
50
  /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
42
51
  /// only active bundles may be locked
43
52
  /// may only be called by registered and unlocked pool components
@@ -74,23 +83,36 @@ interface IBundleService is IService {
74
83
  IInstance instanceNftId,
75
84
  NftId policyNftId,
76
85
  NftId bundleNftId,
77
- uint256 collateralAmount,
78
- uint256 premium // premium amount after pool fee
86
+ Amount collateralAmount,
87
+ Amount premiumAmount // premium after pool fee
79
88
  ) external;
80
89
 
81
-
82
90
  /// @dev releases the specified collateral in the bundle
83
91
  /// may only be called by pool service
84
92
  function releaseCollateral(
85
93
  IInstance instance,
86
94
  NftId policyNftId,
87
95
  NftId bundleNftId,
88
- uint256 collateralAmount
96
+ Amount collateralAmount
89
97
  ) external;
90
98
 
91
- function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
99
+ /// @dev unlink policy from bundle
100
+ /// policy may only be unlinked if policy is closeable
101
+ /// may only be called by pool service
102
+ function unlinkPolicy(
103
+ IInstance instance,
104
+ NftId policyNftId
105
+ ) external;
92
106
 
93
- // function stake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
107
+ /// @dev updates the bundle's fees of with the provided fee amount
108
+ function updateBundleFees(
109
+ IInstance instance,
110
+ NftId bundleNftId,
111
+ Amount feeAmount
112
+ ) external;
94
113
 
95
- // function unstake(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
114
+ function increaseBalance(
115
+ IInstance instance,
116
+ NftId bundleNftId,
117
+ Amount amount) external;
96
118
  }
@@ -20,73 +20,71 @@ interface IClaimService is
20
20
  IService
21
21
  {
22
22
 
23
+ event LogClaimServiceClaimSubmitted(NftId policyNftId, ClaimId claimId, Amount claimAmount);
24
+ event LogClaimServiceClaimConfirmed(NftId policyNftId, ClaimId claimId, Amount confirmedAmount);
25
+ event LogClaimServiceClaimDeclined(NftId policyNftId, ClaimId claimId);
26
+ event LogClaimServiceClaimClosed(NftId policyNftId, ClaimId claimId);
27
+
28
+ event LogClaimServicePayoutCreated(NftId policyNftId, PayoutId payoutId, Amount amount);
29
+ event LogClaimServicePayoutProcessed(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary, Amount netAmount);
30
+
31
+ error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
32
+ error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
33
+ error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
34
+
23
35
  error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
24
36
  error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
25
37
  error ErrorClaimServiceClaimNotInExpectedState(NftId policyNftId, ClaimId claimId, StateId expectedState, StateId actualState);
26
38
 
27
39
  /// @dev create a new claim for the specified policy
40
+ /// returns the id of the newly created claim
28
41
  /// function can only be called by product, policy needs to match with calling product
29
42
  function submit(
30
- IInstance instance,
31
43
  NftId policyNftId,
32
- ClaimId claimId,
33
44
  Amount claimAmount,
34
45
  bytes memory claimData
35
- ) external;
46
+ ) external returns (ClaimId claimId);
36
47
 
37
- /// @dev confirms the specified claim and fixes the final claim amount
48
+ /// @dev declines the specified claim
38
49
  /// function can only be called by product, policy needs to match with calling product
39
- function confirm(
40
- IInstance instance,
41
- InstanceReader instanceReader,
50
+ function decline(
42
51
  NftId policyNftId,
43
- ClaimId claimId,
44
- Amount claimAmount
45
- ) external;
52
+ ClaimId claimId) external;
46
53
 
47
- /// @dev declares the claim as invalid, no payout(s) will be made
54
+ /// @dev confirms the specified claim and specifies the payout amount
48
55
  /// function can only be called by product, policy needs to match with calling product
49
- function decline(
50
- IInstance instance,
51
- InstanceReader instanceReader,
56
+ function confirm(
52
57
  NftId policyNftId,
53
- ClaimId claimId
58
+ ClaimId claimId,
59
+ Amount confirmedAmount
54
60
  ) external;
55
61
 
56
- /// @dev closes the claim
57
- /// a claim may only be closed once all existing payouts have been executed and the sum of the paid out amounts has reached the claim amount
62
+ /// @dev closes the specified claim
58
63
  /// function can only be called by product, policy needs to match with calling product
59
64
  function close(
60
- IInstance instance,
61
- InstanceReader instanceReader,
62
65
  NftId policyNftId,
63
66
  ClaimId claimId
64
- ) external;
67
+ ) external;
68
+
65
69
 
66
- /// @dev create a new payout for the specified policy
67
- /// payoutId may be constructed using PayoutIdLib(claimId, payoutNo)
70
+ /// @dev creates a new payout for the specified claim
71
+ /// returns the id of the newly created payout, this id is unique for the specified policy
68
72
  /// function can only be called by product, policy needs to match with calling product
69
73
  function createPayout(
70
- IInstance instance,
71
74
  NftId policyNftId,
72
- PayoutId payoutId,
73
- Amount payoutAmount,
74
- bytes calldata payoutData
75
- ) external;
75
+ ClaimId claimId,
76
+ Amount amount,
77
+ bytes memory data
78
+ )
79
+ external
80
+ returns (PayoutId payoutId);
76
81
 
77
- /// @dev callback function to confirm transfer of payout token to beneficiary
78
- /// allows claim service to update claims/payout book keeping
79
- /// only pool service can confirm executed payout
82
+
83
+ /// @dev processes the specified payout
84
+ /// this includes moving the payout token to the beneficiary (default: policy holder)
85
+ /// function can only be called by product, policy needs to match with calling product
80
86
  function processPayout(
81
- IInstance instance,
82
- InstanceReader instanceReader,
83
87
  NftId policyNftId,
84
88
  PayoutId payoutId
85
- )
86
- external
87
- returns (
88
- Amount amount,
89
- bool payoutIsClosingClaim
90
- );
91
-
89
+ ) external;
92
90
  }
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
+ import {Amount} from "../../types/Amount.sol";
4
5
  import {NftId} from "../../types/NftId.sol";
5
6
  import {Fee} from "../../types/Fee.sol";
6
7
  import {IPolicy} from "../module/IPolicy.sol";
@@ -25,16 +26,8 @@ interface IDistributionService is IService {
25
26
  error ErrorIDistributionServiceCommissionTooHigh(uint256 commissionPercentage, uint256 maxCommissionPercentage);
26
27
  error ErrorIDistributionServiceMinFeeTooHigh(uint256 minFee, uint256 limit);
27
28
  error ErrorIDistributionServiceMaxDiscountTooHigh(uint256 maxDiscountPercentage, uint256 limit);
28
- error ErrorIDistributionServiceFeeCalculationMismatch(
29
- uint256 distributionFeeFixAmount,
30
- uint256 distributionFeeVarAmount,
31
- uint256 distributionOwnerFeeFixAmount,
32
- uint256 distributionOwnerFeeVarAmount,
33
- uint256 commissionAmount,
34
- uint256 discountAmount
35
- );
36
29
  error ErrorIDistributionServiceReferralInvalid(NftId distributionNftId, ReferralId referralId);
37
- error ErrorIDistributionServiceInvalidFeeTransferred(uint256 transferredDistributionFeeAmount, uint256 expectedDistributionFeeAmount);
30
+ error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
38
31
 
39
32
  function setFees(
40
33
  Fee memory minDistributionOwnerFee,
@@ -61,11 +54,12 @@ interface IDistributionService is IService {
61
54
  bytes memory data
62
55
  ) external returns (NftId distributorNftId);
63
56
 
64
- function updateDistributorType(
65
- NftId distributorNftId,
66
- DistributorType distributorType,
67
- bytes memory data
68
- ) external;
57
+ // TODO re-enable and reorganize (service contract too large)
58
+ // function updateDistributorType(
59
+ // NftId distributorNftId,
60
+ // DistributorType distributorType,
61
+ // bytes memory data
62
+ // ) external;
69
63
 
70
64
  function createReferral(
71
65
  NftId distributorNftId,
@@ -83,17 +77,11 @@ interface IDistributionService is IService {
83
77
  NftId distributionNftId,
84
78
  ReferralId referralId,
85
79
  IPolicy.Premium memory premium,
86
- uint256 transferredDistributionFeeAmount
80
+ Amount transferredDistributionFeeAmount
87
81
  ) external;
88
82
 
89
- function calculateFeeAmount(
90
- NftId distributionNftId,
91
- ReferralId referralId,
92
- IPolicy.Premium memory premium
93
- ) external view returns (IPolicy.Premium memory finalPremium);
94
-
95
83
  function referralIsValid(
96
84
  NftId distributorNftId,
97
85
  ReferralId referralId
98
86
  ) external view returns (bool isValid);
99
- }
87
+ }