@etherisc/gif-next 0.0.2-da0f894-204 → 0.0.2-db1e1e4-828

Sign up to get free protection for your applications and to get access to all the features.
Files changed (258) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +68 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +64 -14
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +150 -10
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +184 -149
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +158 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +114 -189
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +68 -0
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +127 -182
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +175 -51
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +215 -252
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +102 -168
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +304 -171
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -23
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +85 -30
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +145 -53
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +21 -13
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +384 -249
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -14
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +104 -41
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +11 -7
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +356 -111
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +57 -45
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +101 -14
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +212 -186
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +80 -14
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +250 -18
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +106 -19
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +511 -14
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +152 -60
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +27 -19
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +561 -51
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +24 -12
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -36
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +101 -26
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  163. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  165. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  169. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  171. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  173. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  175. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  176. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  177. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  180. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  183. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  185. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  187. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  190. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +2 -2
  192. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  194. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  196. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  198. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  200. package/contracts/components/Component.sol +42 -10
  201. package/contracts/components/Distribution.sol +0 -13
  202. package/contracts/components/IComponent.sol +9 -1
  203. package/contracts/components/IDistributionComponent.sol +0 -8
  204. package/contracts/components/IPoolComponent.sol +5 -43
  205. package/contracts/components/Pool.sol +47 -122
  206. package/contracts/components/Product.sol +4 -0
  207. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  208. package/contracts/instance/BundleManager.sol +6 -4
  209. package/contracts/instance/Cloneable.sol +7 -2
  210. package/contracts/instance/IInstance.sol +16 -10
  211. package/contracts/instance/IInstanceService.sol +18 -5
  212. package/contracts/instance/Instance.sol +46 -9
  213. package/contracts/instance/InstanceAccessManager.sol +388 -158
  214. package/contracts/instance/InstanceReader.sol +8 -10
  215. package/contracts/instance/InstanceService.sol +184 -179
  216. package/contracts/instance/ObjectManager.sol +6 -8
  217. package/contracts/instance/base/ComponentService.sol +17 -30
  218. package/contracts/instance/base/KeyValueStore.sol +13 -5
  219. package/contracts/instance/base/Lifecycle.sol +11 -2
  220. package/contracts/instance/module/IAccess.sol +21 -14
  221. package/contracts/instance/module/IBundle.sol +6 -4
  222. package/contracts/instance/module/IComponents.sol +41 -0
  223. package/contracts/instance/module/ISetup.sol +4 -17
  224. package/contracts/instance/service/ApplicationService.sol +22 -18
  225. package/contracts/instance/service/BundleService.sol +209 -77
  226. package/contracts/instance/service/ClaimService.sol +3 -3
  227. package/contracts/instance/service/DistributionService.sol +118 -77
  228. package/contracts/instance/service/IApplicationService.sol +1 -0
  229. package/contracts/instance/service/IBundleService.sol +63 -25
  230. package/contracts/instance/service/IDistributionService.sol +14 -1
  231. package/contracts/instance/service/IPolicyService.sol +2 -0
  232. package/contracts/instance/service/IPoolService.sol +82 -3
  233. package/contracts/instance/service/PolicyService.sol +96 -138
  234. package/contracts/instance/service/PoolService.sol +214 -20
  235. package/contracts/instance/service/ProductService.sol +30 -53
  236. package/contracts/registry/ChainNft.sol +8 -0
  237. package/contracts/registry/IRegistry.sol +2 -0
  238. package/contracts/registry/IRegistryService.sol +4 -3
  239. package/contracts/registry/ITransferInterceptor.sol +1 -0
  240. package/contracts/registry/Registry.sol +23 -20
  241. package/contracts/registry/RegistryService.sol +10 -11
  242. package/contracts/registry/ReleaseManager.sol +20 -18
  243. package/contracts/shared/IService.sol +4 -6
  244. package/contracts/shared/Service.sol +21 -7
  245. package/contracts/shared/TokenHandler.sol +11 -5
  246. package/contracts/test/TestService.sol +1 -1
  247. package/contracts/types/Amount.sol +60 -0
  248. package/contracts/types/Blocknumber.sol +1 -0
  249. package/contracts/types/Fee.sol +13 -5
  250. package/contracts/types/NftId.sol +8 -0
  251. package/contracts/types/ObjectType.sol +1 -0
  252. package/contracts/types/Referral.sol +4 -0
  253. package/contracts/types/RoleId.sol +6 -4
  254. package/contracts/types/StateId.sol +1 -0
  255. package/contracts/types/Timestamp.sol +1 -0
  256. package/contracts/types/UFixed.sol +1 -0
  257. package/contracts/types/Version.sol +1 -0
  258. package/package.json +1 -1
package/README.md CHANGED
@@ -1,18 +1,6 @@
1
1
  # GIF-Next (Generic Insurance Framework, next version)
2
2
 
3
3
 
4
- ```mermaid
5
- graph TD
6
- IPoolComponent --> IComponent
7
- IComponent --> IRegisterable
8
- IComponent --> ITransferInterceptor
9
- IRegistryService --> IService
10
- IService-->IRegisterable
11
- IService-->IVersionable
12
- IRegisterable-->INftOwnable
13
- INftOwnable-->IERC165
14
- ```
15
-
16
4
  ## Add OpenZeppelin V5 Dependencies
17
5
 
18
6
  ```shell
@@ -40,6 +28,10 @@ This repository uses submodules. To checkout or update to the latest submodules,
40
28
  git submodule update --recursive
41
29
  ```
42
30
 
31
+ ## Example components
32
+
33
+ A (very early) example of a product and a pool can be found in the [gif-next-sandbox repository](https://github.com/etherisc/gif-next-sandbox).
34
+
43
35
  ## Hardhat
44
36
 
45
37
  ### NPM Commands
@@ -232,17 +224,7 @@ https://book.getfoundry.sh/reference/
232
224
 
233
225
  ## Style Guide
234
226
 
235
- Solidity code is to be written according to the [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html).
236
-
237
- Documentation of the code should be written inline using [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html).
238
-
239
- ### Naming conventions
240
-
241
- Additionally, we use the following naming conventions:
242
-
243
- - Function arguments and return types: If using custom data types, make the name include the type by appending the Type to the argument name, e.g. `function getInfo(NftId bundleNftId)` instead of `function getInfo(NftId bundleId)`. Background: Custom data types are lost when using the ABI or Typescript binding classes (e.g. instead of `NftID` a `uint96` is used), so the type needs to be included in the name to make it clear what the argument is without having to look at the documentation or checking the solidity source code.
244
- - When naming a field or an attribute `id` and the context is not clear, call it `nftId` instead so its clear what type if id it is as there will be multiple ids for different kind of objects. Example: if you the function has a bundle nft id and a policy nft id as arguments, call them `bundleNftId` and `policyNftId` instead of `id` and `policyId`. In case of doubt, be a bit more verbose for the sake of clarity.
245
- - When naming things, remember that the code will likely be used in Javascript/Typescript as well, so avoid names that are reserved in Javascript/Typescript. A list of reserved words in Javascript can be found [here](https://www.w3schools.com/js/js_reserved.asp) and a list of reserved words in Typescript can be found [here](https://www.tektutorialshub.com/typescript/identifiers-keywords-in-typescript/).
227
+ Please see https://docs.etherisc.com/gif-next/3.x/ for style guide and general coding rules.
246
228
 
247
229
  ### Automatic code formatting
248
230
 
@@ -257,7 +239,7 @@ We use solhint to lint the code.
257
239
  To execute linting run `npm run lint`.
258
240
 
259
241
 
260
- ### Adding Brownie (Legacy)
242
+ ### Adding Brownie (Legacy - don't do that :wink: )
261
243
 
262
244
  python3 is already installed
263
245
 
@@ -405,65 +387,6 @@ Intercepting property
405
387
 
406
388
  ### Product
407
389
 
408
- ### Payout Handling
409
-
410
- Pool specifies **retention level**.
411
- Retention level defines up to which percentage of the sum insured the pool is payout out using its own/current funds.
412
- Depending on the amount of a new payout the poolService decides to either execute the payout directly or to add the payout as a pending payout with a notification of the pool.
413
-
414
- The sequence below sketches the small payout flow (payout < retention amount)
415
- - retention level: 30%
416
- - sum insured: 1000
417
- - payout: 200
418
-
419
- ```mermaid
420
- sequenceDiagram
421
- participant customer
422
- participant product
423
- participant claimService
424
- participant poolService
425
- participant pool
426
- product->>claimService: createPayout()
427
- claimService ->> poolService: requestPayout()
428
- poolService -->> pool: verifyPayout() *
429
- poolService ->> poolService: processPayout()
430
- poolService ->> customer: transfer token for payout
431
- poolService ->> claimService: payoutExecuted()
432
- poolService -->> customer: payoutExecutedCallback() **
433
- ```
434
-
435
- *: if pool is configured to verify payouts before execution
436
-
437
- **: callback only if customer is contract (IPolicyHolder)
438
-
439
- The sequence below sketches the call flow for payouts larger than the retention amount
440
- - retention level: 30%
441
- - sum insured: 1000
442
- - payout: 500
443
- * locally available: 300
444
- * via policy (re-insurance): 200
445
-
446
- ```mermaid
447
- sequenceDiagram
448
- participant customer
449
- participant product
450
- participant claimService
451
- participant poolService
452
- participant pool
453
- pool ->> reinsuranceProduct: applyForPolicy()
454
- product->>claimService: createPayout()
455
- claimService ->> poolService: requestPayout()
456
- poolService ->> pool: pendingPayoutAdded()
457
- pool ->> pool: getReinsurancePolicy()
458
- pool ->> reinsuranceProduct: claim()
459
- reinsuranceProduct -->> reinsurancePool: createPayout
460
- reinsurancePool ->> pool: transfer token for payout
461
- reinsurancePool ->> pool: payoutExecutedCallback()
462
- pool ->> poolService: processPendingPayout()
463
- poolService ->> customer: transfer token for payout
464
- poolService ->> claimService: payoutExecuted()
465
- ```
466
-
467
390
  ### Pool
468
391
 
469
392
  ### Distribution
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8e549934a666522d6952aa1fb1b75ff3.json"
3
+ "buildInfo": "../../../build-info/19724ea417151985924344f750f0deb4.json"
4
4
  }
@@ -334,6 +334,56 @@
334
334
  "stateMutability": "view",
335
335
  "type": "function"
336
336
  },
337
+ {
338
+ "inputs": [],
339
+ "name": "getComponentInfo",
340
+ "outputs": [
341
+ {
342
+ "components": [
343
+ {
344
+ "internalType": "string",
345
+ "name": "name",
346
+ "type": "string"
347
+ },
348
+ {
349
+ "internalType": "contract IERC20Metadata",
350
+ "name": "token",
351
+ "type": "address"
352
+ },
353
+ {
354
+ "internalType": "contract TokenHandler",
355
+ "name": "tokenHandler",
356
+ "type": "address"
357
+ },
358
+ {
359
+ "internalType": "address",
360
+ "name": "wallet",
361
+ "type": "address"
362
+ },
363
+ {
364
+ "internalType": "Amount",
365
+ "name": "balanceAmount",
366
+ "type": "uint96"
367
+ },
368
+ {
369
+ "internalType": "Amount",
370
+ "name": "feeAmount",
371
+ "type": "uint96"
372
+ },
373
+ {
374
+ "internalType": "bytes",
375
+ "name": "data",
376
+ "type": "bytes"
377
+ }
378
+ ],
379
+ "internalType": "struct IComponents.ComponentInfo",
380
+ "name": "info",
381
+ "type": "tuple"
382
+ }
383
+ ],
384
+ "stateMutability": "view",
385
+ "type": "function"
386
+ },
337
387
  {
338
388
  "inputs": [],
339
389
  "name": "getInitialInfo",
@@ -665,6 +715,24 @@
665
715
  "stateMutability": "nonpayable",
666
716
  "type": "function"
667
717
  },
718
+ {
719
+ "inputs": [
720
+ {
721
+ "internalType": "address",
722
+ "name": "to",
723
+ "type": "address"
724
+ },
725
+ {
726
+ "internalType": "uint256",
727
+ "name": "tokenId",
728
+ "type": "uint256"
729
+ }
730
+ ],
731
+ "name": "nftMint",
732
+ "outputs": [],
733
+ "stateMutability": "nonpayable",
734
+ "type": "function"
735
+ },
668
736
  {
669
737
  "inputs": [
670
738
  {
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8e549934a666522d6952aa1fb1b75ff3.json"
3
+ "buildInfo": "../../../build-info/19724ea417151985924344f750f0deb4.json"
4
4
  }
@@ -478,6 +478,56 @@
478
478
  "stateMutability": "nonpayable",
479
479
  "type": "function"
480
480
  },
481
+ {
482
+ "inputs": [],
483
+ "name": "getComponentInfo",
484
+ "outputs": [
485
+ {
486
+ "components": [
487
+ {
488
+ "internalType": "string",
489
+ "name": "name",
490
+ "type": "string"
491
+ },
492
+ {
493
+ "internalType": "contract IERC20Metadata",
494
+ "name": "token",
495
+ "type": "address"
496
+ },
497
+ {
498
+ "internalType": "contract TokenHandler",
499
+ "name": "tokenHandler",
500
+ "type": "address"
501
+ },
502
+ {
503
+ "internalType": "address",
504
+ "name": "wallet",
505
+ "type": "address"
506
+ },
507
+ {
508
+ "internalType": "Amount",
509
+ "name": "balanceAmount",
510
+ "type": "uint96"
511
+ },
512
+ {
513
+ "internalType": "Amount",
514
+ "name": "feeAmount",
515
+ "type": "uint96"
516
+ },
517
+ {
518
+ "internalType": "bytes",
519
+ "name": "data",
520
+ "type": "bytes"
521
+ }
522
+ ],
523
+ "internalType": "struct IComponents.ComponentInfo",
524
+ "name": "info",
525
+ "type": "tuple"
526
+ }
527
+ ],
528
+ "stateMutability": "view",
529
+ "type": "function"
530
+ },
481
531
  {
482
532
  "inputs": [
483
533
  {
@@ -763,7 +813,7 @@
763
813
  },
764
814
  {
765
815
  "internalType": "uint256",
766
- "name": "sumDistributionFees",
816
+ "name": "sumDistributionOwnerFees",
767
817
  "type": "uint256"
768
818
  }
769
819
  ],
@@ -1071,11 +1121,6 @@
1071
1121
  },
1072
1122
  {
1073
1123
  "inputs": [
1074
- {
1075
- "internalType": "address",
1076
- "name": "from",
1077
- "type": "address"
1078
- },
1079
1124
  {
1080
1125
  "internalType": "address",
1081
1126
  "name": "to",
@@ -1087,7 +1132,7 @@
1087
1132
  "type": "uint256"
1088
1133
  }
1089
1134
  ],
1090
- "name": "nftTransferFrom",
1135
+ "name": "nftMint",
1091
1136
  "outputs": [],
1092
1137
  "stateMutability": "nonpayable",
1093
1138
  "type": "function"
@@ -1095,17 +1140,22 @@
1095
1140
  {
1096
1141
  "inputs": [
1097
1142
  {
1098
- "internalType": "ReferralId",
1099
- "name": "referralId",
1100
- "type": "bytes8"
1143
+ "internalType": "address",
1144
+ "name": "from",
1145
+ "type": "address"
1146
+ },
1147
+ {
1148
+ "internalType": "address",
1149
+ "name": "to",
1150
+ "type": "address"
1101
1151
  },
1102
1152
  {
1103
1153
  "internalType": "uint256",
1104
- "name": "feeAmount",
1154
+ "name": "tokenId",
1105
1155
  "type": "uint256"
1106
1156
  }
1107
1157
  ],
1108
- "name": "processRenewal",
1158
+ "name": "nftTransferFrom",
1109
1159
  "outputs": [],
1110
1160
  "stateMutability": "nonpayable",
1111
1161
  "type": "function"
@@ -1119,11 +1169,11 @@
1119
1169
  },
1120
1170
  {
1121
1171
  "internalType": "uint256",
1122
- "name": "premiumAmount",
1172
+ "name": "feeAmount",
1123
1173
  "type": "uint256"
1124
1174
  }
1125
1175
  ],
1126
- "name": "processSale",
1176
+ "name": "processRenewal",
1127
1177
  "outputs": [],
1128
1178
  "stateMutability": "nonpayable",
1129
1179
  "type": "function"
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8e549934a666522d6952aa1fb1b75ff3.json"
3
+ "buildInfo": "../../../build-info/19724ea417151985924344f750f0deb4.json"
4
4
  }
@@ -3,6 +3,44 @@
3
3
  "contractName": "IComponent",
4
4
  "sourceName": "contracts/components/IComponent.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "authority",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "AccessManagedInvalidAuthority",
15
+ "type": "error"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "caller",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
28
+ }
29
+ ],
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "AccessManagedUnauthorized",
42
+ "type": "error"
43
+ },
6
44
  {
7
45
  "inputs": [
8
46
  {
@@ -126,6 +164,19 @@
126
164
  "name": "ErrorNotRegistry",
127
165
  "type": "error"
128
166
  },
167
+ {
168
+ "anonymous": false,
169
+ "inputs": [
170
+ {
171
+ "indexed": false,
172
+ "internalType": "address",
173
+ "name": "authority",
174
+ "type": "address"
175
+ }
176
+ ],
177
+ "name": "AuthorityUpdated",
178
+ "type": "event"
179
+ },
129
180
  {
130
181
  "anonymous": false,
131
182
  "inputs": [
@@ -170,6 +221,69 @@
170
221
  "name": "LogComponentWalletTokensTransferred",
171
222
  "type": "event"
172
223
  },
224
+ {
225
+ "inputs": [],
226
+ "name": "authority",
227
+ "outputs": [
228
+ {
229
+ "internalType": "address",
230
+ "name": "",
231
+ "type": "address"
232
+ }
233
+ ],
234
+ "stateMutability": "view",
235
+ "type": "function"
236
+ },
237
+ {
238
+ "inputs": [],
239
+ "name": "getComponentInfo",
240
+ "outputs": [
241
+ {
242
+ "components": [
243
+ {
244
+ "internalType": "string",
245
+ "name": "name",
246
+ "type": "string"
247
+ },
248
+ {
249
+ "internalType": "contract IERC20Metadata",
250
+ "name": "token",
251
+ "type": "address"
252
+ },
253
+ {
254
+ "internalType": "contract TokenHandler",
255
+ "name": "tokenHandler",
256
+ "type": "address"
257
+ },
258
+ {
259
+ "internalType": "address",
260
+ "name": "wallet",
261
+ "type": "address"
262
+ },
263
+ {
264
+ "internalType": "Amount",
265
+ "name": "balanceAmount",
266
+ "type": "uint96"
267
+ },
268
+ {
269
+ "internalType": "Amount",
270
+ "name": "feeAmount",
271
+ "type": "uint96"
272
+ },
273
+ {
274
+ "internalType": "bytes",
275
+ "name": "data",
276
+ "type": "bytes"
277
+ }
278
+ ],
279
+ "internalType": "struct IComponents.ComponentInfo",
280
+ "name": "info",
281
+ "type": "tuple"
282
+ }
283
+ ],
284
+ "stateMutability": "view",
285
+ "type": "function"
286
+ },
173
287
  {
174
288
  "inputs": [],
175
289
  "name": "getInitialInfo",
@@ -337,6 +451,19 @@
337
451
  "stateMutability": "view",
338
452
  "type": "function"
339
453
  },
454
+ {
455
+ "inputs": [],
456
+ "name": "isConsumingScheduledOp",
457
+ "outputs": [
458
+ {
459
+ "internalType": "bytes4",
460
+ "name": "",
461
+ "type": "bytes4"
462
+ }
463
+ ],
464
+ "stateMutability": "view",
465
+ "type": "function"
466
+ },
340
467
  {
341
468
  "inputs": [],
342
469
  "name": "isNftInterceptor",
@@ -364,6 +491,24 @@
364
491
  "stateMutability": "nonpayable",
365
492
  "type": "function"
366
493
  },
494
+ {
495
+ "inputs": [
496
+ {
497
+ "internalType": "address",
498
+ "name": "to",
499
+ "type": "address"
500
+ },
501
+ {
502
+ "internalType": "uint256",
503
+ "name": "tokenId",
504
+ "type": "uint256"
505
+ }
506
+ ],
507
+ "name": "nftMint",
508
+ "outputs": [],
509
+ "stateMutability": "nonpayable",
510
+ "type": "function"
511
+ },
367
512
  {
368
513
  "inputs": [
369
514
  {
@@ -387,6 +532,19 @@
387
532
  "stateMutability": "nonpayable",
388
533
  "type": "function"
389
534
  },
535
+ {
536
+ "inputs": [
537
+ {
538
+ "internalType": "address",
539
+ "name": "",
540
+ "type": "address"
541
+ }
542
+ ],
543
+ "name": "setAuthority",
544
+ "outputs": [],
545
+ "stateMutability": "nonpayable",
546
+ "type": "function"
547
+ },
390
548
  {
391
549
  "inputs": [
392
550
  {
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8e549934a666522d6952aa1fb1b75ff3.json"
3
+ "buildInfo": "../../../build-info/19724ea417151985924344f750f0deb4.json"
4
4
  }