@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
@@ -0,0 +1,212 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
5
+
6
+ import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
7
+ import {NftId} from "../types/NftId.sol";
8
+ import {ClaimId} from "../types/ClaimId.sol";
9
+ import {NumberId} from "../types/NumberId.sol";
10
+ import {ObjectType, BUNDLE, DISTRIBUTION, INSTANCE, POLICY, POOL, ROLE, PRODUCT, TARGET, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../types/ObjectType.sol";
11
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
12
+ import {RoleId, RoleIdLib, INSTANCE_ROLE, INSTANCE_OWNER_ROLE} from "../types/RoleId.sol";
13
+ import {StateId, ACTIVE} from "../types/StateId.sol";
14
+ import {TimestampLib} from "../types/Timestamp.sol";
15
+ import {VersionPart, VersionPartLib} from "../types/Version.sol";
16
+ import {ReferralId} from "../types/Referral.sol";
17
+ import {DistributorType} from "../types/DistributorType.sol";
18
+ import {PayoutId} from "../types/PayoutId.sol";
19
+
20
+ import {IInstance} from "./IInstance.sol";
21
+ import {KeyValueStore} from "./base/KeyValueStore.sol";
22
+ import {IKeyValueStore} from "./base/KeyValueStore.sol";
23
+
24
+ import {IBundle} from "./module/IBundle.sol";
25
+ import {IComponents} from "./module/IComponents.sol";
26
+ import {IDistribution} from "./module/IDistribution.sol";
27
+ import {IPolicy} from "./module/IPolicy.sol";
28
+ import {IRisk} from "./module/IRisk.sol";
29
+ import {ISetup} from "./module/ISetup.sol";
30
+
31
+
32
+ // TODO combine with instance reader?
33
+ contract InstanceStore is AccessManagedUpgradeable, KeyValueStore
34
+ {
35
+ function initialize(address instance)
36
+ public
37
+ initializer()
38
+ {
39
+ address authority = IInstance(instance).authority();
40
+ __AccessManaged_init(authority);
41
+ initializeLifecycle();
42
+ }
43
+
44
+ //--- ProductSetup ------------------------------------------------------//
45
+ function createProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup) external restricted() {
46
+ create(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup));
47
+ }
48
+
49
+ function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external restricted() {
50
+ update(_toNftKey32(productNftId, PRODUCT()), abi.encode(setup), newState);
51
+ }
52
+
53
+ function updateProductSetupState(NftId productNftId, StateId newState) external restricted() {
54
+ updateState(_toNftKey32(productNftId, PRODUCT()), newState);
55
+ }
56
+
57
+ //--- DistributionSetup ------------------------------------------------------//
58
+ function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external restricted() {
59
+ create(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup));
60
+ }
61
+
62
+ function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external restricted() {
63
+ update(_toNftKey32(distributionNftId, DISTRIBUTION()), abi.encode(setup), newState);
64
+ }
65
+
66
+ function updateDistributionSetupState(NftId distributionNftId, StateId newState) external restricted() {
67
+ updateState(_toNftKey32(distributionNftId, DISTRIBUTION()), newState);
68
+ }
69
+
70
+ //--- PoolSetup ------------------------------------------------------//
71
+ function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external restricted() {
72
+ create(_toNftKey32(poolNftId, POOL()), abi.encode(info));
73
+ }
74
+
75
+ function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external restricted() {
76
+ update(_toNftKey32(poolNftId, POOL()), abi.encode(info), newState);
77
+ }
78
+
79
+ function updatePoolSetupState(NftId poolNftId, StateId newState) external restricted() {
80
+ updateState(_toNftKey32(poolNftId, POOL()), newState);
81
+ }
82
+
83
+ //--- DistributorType -------------------------------------------------------//
84
+ function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external restricted() {
85
+ create(distributorType.toKey32(), abi.encode(info));
86
+ }
87
+
88
+ function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external restricted() {
89
+ update(distributorType.toKey32(), abi.encode(info), newState);
90
+ }
91
+
92
+ function updateDistributorTypeState(DistributorType distributorType, StateId newState) external restricted() {
93
+ updateState(distributorType.toKey32(), newState);
94
+ }
95
+
96
+ //--- Distributor -------------------------------------------------------//
97
+ function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
98
+ create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
99
+ }
100
+
101
+ function updateDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info, StateId newState) external restricted() {
102
+ update(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info), newState);
103
+ }
104
+
105
+ function updateDistributorState(NftId distributorNftId, StateId newState) external restricted() {
106
+ updateState(_toNftKey32(distributorNftId, DISTRIBUTOR()), newState);
107
+ }
108
+
109
+ //--- Referral ----------------------------------------------------------//
110
+ function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external restricted() {
111
+ create(referralId.toKey32(), abi.encode(referralInfo));
112
+ }
113
+
114
+ function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external restricted() {
115
+ update(referralId.toKey32(), abi.encode(referralInfo), newState);
116
+ }
117
+
118
+ function updateReferralState(ReferralId referralId, StateId newState) external restricted() {
119
+ updateState(referralId.toKey32(), newState);
120
+ }
121
+
122
+ //--- Bundle ------------------------------------------------------------//
123
+ function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external restricted() {
124
+ create(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle));
125
+ }
126
+
127
+ function updateBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle, StateId newState) external restricted() {
128
+ update(_toNftKey32(bundleNftId, BUNDLE()), abi.encode(bundle), newState);
129
+ }
130
+
131
+ function updateBundleState(NftId bundleNftId, StateId newState) external restricted() {
132
+ updateState(_toNftKey32(bundleNftId, BUNDLE()), newState);
133
+ }
134
+
135
+ //--- Risk --------------------------------------------------------------//
136
+ function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external restricted() {
137
+ create(riskId.toKey32(), abi.encode(risk));
138
+ }
139
+
140
+ function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external restricted() {
141
+ update(riskId.toKey32(), abi.encode(risk), newState);
142
+ }
143
+
144
+ function updateRiskState(RiskId riskId, StateId newState) external restricted() {
145
+ updateState(riskId.toKey32(), newState);
146
+ }
147
+
148
+ //--- Application (Policy) ----------------------------------------------//
149
+ function createApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy) external restricted() {
150
+ create(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy));
151
+ }
152
+
153
+ function updateApplication(NftId applicationNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
154
+ update(_toNftKey32(applicationNftId, POLICY()), abi.encode(policy), newState);
155
+ }
156
+
157
+ function updateApplicationState(NftId applicationNftId, StateId newState) external restricted() {
158
+ updateState(_toNftKey32(applicationNftId, POLICY()), newState);
159
+ }
160
+
161
+ //--- Policy ------------------------------------------------------------//
162
+ function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
163
+ update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
164
+ }
165
+
166
+ function updatePolicyClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external restricted() {
167
+ update(_toNftKey32(policyNftId, POLICY()), abi.encode(policy), newState);
168
+ }
169
+
170
+ function updatePolicyState(NftId policyNftId, StateId newState) external restricted() {
171
+ updateState(_toNftKey32(policyNftId, POLICY()), newState);
172
+ }
173
+
174
+ //--- Claim -------------------------------------------------------------//
175
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
176
+ create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
177
+ }
178
+
179
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external restricted() {
180
+ update(_toClaimKey32(policyNftId, claimId), abi.encode(claim), newState);
181
+ }
182
+
183
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external restricted() {
184
+ updateState(_toClaimKey32(policyNftId, claimId), newState);
185
+ }
186
+
187
+ //--- Payout ------------------------------------------------------------//
188
+ function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout) external restricted() {
189
+ create(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout));
190
+ }
191
+
192
+ function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory payout, StateId newState) external restricted() {
193
+ update(_toPayoutKey32(policyNftId, payoutId), abi.encode(payout), newState);
194
+ }
195
+
196
+ function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external restricted() {
197
+ updateState(_toPayoutKey32(policyNftId, payoutId), newState);
198
+ }
199
+
200
+ //--- internal view/pure functions --------------------------------------//
201
+ function _toNftKey32(NftId nftId, ObjectType objectType) private pure returns (Key32) {
202
+ return nftId.toKey32(objectType);
203
+ }
204
+
205
+ function _toClaimKey32(NftId policyNftId, ClaimId claimId) private pure returns (Key32) {
206
+ return claimId.toKey32(policyNftId);
207
+ }
208
+
209
+ function _toPayoutKey32(NftId policyNftId, PayoutId payoutId) private pure returns (Key32) {
210
+ return payoutId.toKey32(policyNftId);
211
+ }
212
+ }
@@ -29,7 +29,7 @@ contract ObjectManager is
29
29
  external
30
30
  {
31
31
  IInstance instance = IInstance(instanceAddress);
32
- initialize(instance.authority(), instance.getRegistryAddress());
32
+ initialize(instance.authority(), address(instance.getRegistry()));
33
33
 
34
34
  _instance = instance;
35
35
 
@@ -21,11 +21,15 @@ abstract contract ComponentService is Service {
21
21
  error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
22
22
  error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
23
23
  error ErrorComponentServiceComponentLocked(address component);
24
+ error ErrorComponentServiceSenderNotService(address sender);
25
+ error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
24
26
 
25
27
  /// @dev modifier to check if caller is a registered service
26
28
  modifier onlyService() {
27
29
  address caller = msg.sender;
28
- require(getRegistry().isRegisteredService(caller), "ERROR_NOT_SERVICE");
30
+ if(!getRegistry().isRegisteredService(caller)) {
31
+ revert ErrorComponentServiceSenderNotService(caller);
32
+ }
29
33
  _;
30
34
  }
31
35
 
@@ -39,10 +43,6 @@ abstract contract ComponentService is Service {
39
43
  return InstanceService(_getServiceAddress(INSTANCE()));
40
44
  }
41
45
 
42
- function _getServiceAddress(ObjectType domain) internal view returns (address) {
43
- return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
44
- }
45
-
46
46
  // internal functions
47
47
  function _checkComponentForRegistration(
48
48
  address componentAddress,
@@ -88,34 +88,61 @@ abstract contract ComponentService is Service {
88
88
  }
89
89
 
90
90
  // internal view functions
91
-
92
- function _getAndVerifyComponentInfoAndInstance(
93
- ObjectType expectedType
91
+ function _getAndVerifyCallingComponentAndInstance(
92
+ ObjectType expectedType // assume always of `component` type
94
93
  )
95
94
  internal
96
95
  view
97
96
  returns(
98
- NftId nftId,
99
- IRegistry.ObjectInfo memory info,
97
+ NftId componentNftId,
98
+ IRegistry.ObjectInfo memory componentInfo,
100
99
  IInstance instance
101
100
  )
102
101
  {
103
- IRegistry registry = getRegistry();
104
-
105
- info = registry.getObjectInfo(msg.sender);
106
- require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
107
-
108
- nftId = info.nftId;
109
- instance = _getInstance(info.parentNftId);
102
+ componentNftId = getRegistry().getNftId(msg.sender);
103
+ (componentInfo, instance) = _getAndVerifyComponentInfoAndInstance(componentNftId, expectedType);
110
104
 
111
- if (instance.getInstanceAccessManager().isTargetLocked(info.objectAddress)) {
112
- revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
105
+ // locked component can not call services
106
+ if (instance.getInstanceAccessManager().isTargetLocked(componentInfo.objectAddress)) {
107
+ revert IAccess.ErrorIAccessTargetLocked(componentInfo.objectAddress);
113
108
  }
114
109
  }
115
110
 
111
+ function _getAndVerifyComponentInfoAndInstance(
112
+ NftId componentNftId,
113
+ ObjectType expectedType // assume always of `component` type
114
+ )
115
+ internal
116
+ view
117
+ returns(
118
+ IRegistry.ObjectInfo memory componentInfo,
119
+ IInstance instance
120
+ )
121
+ {
122
+ componentInfo = getRegistry().getObjectInfo(componentNftId);
123
+ if(componentInfo.objectType != expectedType) {
124
+ revert ErrorComponentServiceComponentTypeInvalid(
125
+ componentInfo.objectAddress,
126
+ expectedType,
127
+ componentInfo.objectType);
128
+ }
129
+
130
+ instance = _getInstance(componentInfo.parentNftId);
131
+ }
132
+ // assume componentNftId is always of `instance` type
116
133
  function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
117
134
  return IInstance(
118
135
  getRegistry().getObjectInfo(
119
136
  instanceNftId).objectAddress);
120
137
  }
121
- }
138
+ // assume componentNftId is always of `component` type
139
+ /*function _getInstanceForComponent(NftId componentNftId) internal view returns (IInstance) {
140
+ NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
141
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
142
+ return IInstance(instanceAddress);
143
+ }*/
144
+
145
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
146
+ return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
147
+ }
148
+ }
@@ -20,15 +20,6 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
20
20
  bytes memory data
21
21
  )
22
22
  internal
23
- {
24
- _create(key32, data);
25
- }
26
-
27
- function _create(
28
- Key32 key32,
29
- bytes memory data
30
- )
31
- internal
32
23
  {
33
24
  ObjectType objectType = key32.toObjectType();
34
25
  require(objectType.gtz(), "ERROR:KVS-010:TYPE_UNDEFINED");
@@ -60,16 +51,6 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
60
51
  StateId state
61
52
  )
62
53
  internal
63
- {
64
- _update(key32, data, state);
65
- }
66
-
67
- function _update(
68
- Key32 key32,
69
- bytes memory data,
70
- StateId state
71
- )
72
- internal
73
54
  {
74
55
  require(state.gtz(), "ERROR:KVS-020:STATE_UNDEFINED");
75
56
  Metadata storage metadata = _value[key32].metadata;
@@ -100,12 +81,6 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
100
81
 
101
82
  function updateData(Key32 key32, bytes memory data)
102
83
  internal
103
- {
104
- _updateData(key32, data);
105
- }
106
-
107
- function _updateData(Key32 key32, bytes memory data)
108
- internal
109
84
  {
110
85
  Metadata storage metadata = _value[key32].metadata;
111
86
  StateId state = metadata.state;
@@ -127,12 +102,6 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
127
102
 
128
103
  function updateState(Key32 key32, StateId state)
129
104
  internal
130
- {
131
- _updateState(key32, state);
132
- }
133
-
134
- function _updateState(Key32 key32, StateId state)
135
- internal
136
105
  {
137
106
  require(state.gtz(), "ERROR:KVS-040:STATE_UNDEFINED");
138
107
  Metadata storage metadata = _value[key32].metadata;
@@ -4,8 +4,8 @@ pragma solidity ^0.8.20;
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
6
  import {NftId} from "../../types/NftId.sol";
7
- import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK, CLAIM} from "../../types/ObjectType.sol";
8
- import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED} from "../../types/StateId.sol";
7
+ import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK, CLAIM, PAYOUT} from "../../types/ObjectType.sol";
8
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID} from "../../types/StateId.sol";
9
9
  import {ILifecycle} from "./ILifecycle.sol";
10
10
 
11
11
  contract Lifecycle is
@@ -25,7 +25,7 @@ contract Lifecycle is
25
25
  _setupBundleLifecycle();
26
26
  _setupComponentLifecycle();
27
27
  _setupPolicyLifecycle();
28
- _setupClaimLifecycle();
28
+ _setupClaimAndPayoutLifecycle();
29
29
  _setupRiskLifecycle();
30
30
  }
31
31
 
@@ -101,11 +101,14 @@ contract Lifecycle is
101
101
  _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
102
102
  }
103
103
 
104
- function _setupClaimLifecycle() internal {
104
+ function _setupClaimAndPayoutLifecycle() internal {
105
105
  _initialState[CLAIM()] = SUBMITTED();
106
106
  _isValidTransition[CLAIM()][SUBMITTED()][CONFIRMED()] = true;
107
107
  _isValidTransition[CLAIM()][SUBMITTED()][DECLINED()] = true;
108
108
  _isValidTransition[CLAIM()][CONFIRMED()][CLOSED()] = true;
109
+
110
+ _initialState[PAYOUT()] = EXPECTED();
111
+ _isValidTransition[PAYOUT()][EXPECTED()][PAID()] = true;
109
112
  }
110
113
 
111
114
  function _setupRiskLifecycle() internal {
@@ -26,9 +26,9 @@ interface IComponents {
26
26
  NftId productNftId; // the nft of the product this pool is linked to
27
27
  RoleId bundleOwnerRole; // the required role for bundle owners
28
28
  // TODO maxCapitalAmount -> maxBalanceAmount
29
- uint256 maxCapitalAmount; // max capital amount allowed for pool
30
- uint256 balanceAmount; // current pool balance (accounting view)
31
- uint256 feeAmount; // accumulated fee amount
29
+ Amount maxCapitalAmount; // max capital amount allowed for pool
30
+ Amount balanceAmount; // current pool balance (accounting view)
31
+ Amount feeAmount; // accumulated fee amount
32
32
  bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
33
33
  bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
34
34
  bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
@@ -1,6 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Amount} from "../../types/Amount.sol";
4
5
  import {DistributorType} from "../../types/DistributorType.sol";
5
6
  import {NftId} from "../../types/NftId.sol";
6
7
  import {Timestamp} from "../../types/Timestamp.sol";
@@ -24,8 +25,8 @@ interface IDistribution {
24
25
  DistributorType distributorType;
25
26
  bool active;
26
27
  bytes data;
27
- uint256 sumCommisions;
28
- uint256 numPoliciesSold;
28
+ Amount commissionAmount;
29
+ uint32 numPoliciesSold;
29
30
  }
30
31
 
31
32
  struct ReferralInfo {
@@ -41,15 +41,16 @@ interface IPolicy {
41
41
  NftId bundleNftId;
42
42
  ReferralId referralId;
43
43
  RiskId riskId;
44
- uint256 sumInsuredAmount;
45
- uint256 premiumAmount;
46
- uint256 premiumPaidAmount; // when lower than premium amount: max payout decreased accordingly
44
+ Amount sumInsuredAmount;
45
+ Amount premiumAmount;
46
+ Amount premiumPaidAmount; // when lower than premium amount: max payout decreased accordingly
47
47
  Seconds lifetime;
48
48
  bytes applicationData;
49
49
  bytes policyData;
50
50
  uint16 claimsCount;
51
51
  uint16 openClaimsCount;
52
- Amount payoutAmount;
52
+ Amount claimAmount; // sum of confirmed claim amounts (max = sum insured amount)
53
+ Amount payoutAmount; // sum of payouts (max = sum confirmed claim amountst)
53
54
  Timestamp activatedAt; // time of underwriting
54
55
  Timestamp expiredAt; // no new claims (activatedAt + lifetime)
55
56
  Timestamp closedAt; // no locked capital (or declinedAt)
@@ -70,7 +71,6 @@ interface IPolicy {
70
71
  struct PayoutInfo {
71
72
  ClaimId claimId;
72
73
  Amount amount;
73
- // TODO consider to add a beneficiary address that will be the receiver of the payout tokens
74
74
  bytes data;
75
75
  Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
76
76
  }