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

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 (269) hide show
  1. package/README.md +6 -83
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +78 -89
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +139 -140
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +156 -64
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +181 -112
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +353 -176
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +162 -138
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +299 -245
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +83 -162
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +527 -400
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +175 -51
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +500 -612
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
  32. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +253 -236
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +305 -211
  36. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -23
  38. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
  40. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +86 -31
  42. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  53. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  57. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  58. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +291 -100
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +46 -22
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +422 -252
  64. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +78 -14
  66. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +373 -87
  68. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +55 -7
  70. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +579 -123
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +71 -47
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +200 -46
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +241 -188
  78. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +251 -58
  80. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +444 -25
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +430 -76
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +511 -14
  86. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
  88. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +544 -153
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +51 -27
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +562 -52
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +24 -12
  96. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +115 -52
  98. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  101. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  105. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  107. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  108. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  109. package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
  110. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  112. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -37
  114. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
  116. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  120. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  121. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  122. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  123. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  127. package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +3 -3
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +87 -16
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  149. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +3 -3
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  152. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestService.sol/TestService.json +102 -27
  154. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  157. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +2 -2
  159. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  160. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  161. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/Amount.sol/AmountLib.json +185 -0
  163. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  165. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
  168. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  170. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  171. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  172. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  173. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  174. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  176. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  177. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  178. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  181. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
  183. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  185. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  189. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  190. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  191. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  197. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  199. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  201. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  202. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  203. package/contracts/components/Component.sol +99 -87
  204. package/contracts/components/Distribution.sol +18 -21
  205. package/contracts/components/IComponent.sol +40 -18
  206. package/contracts/components/IDistributionComponent.sol +1 -22
  207. package/contracts/components/IPoolComponent.sol +73 -47
  208. package/contracts/components/IProductComponent.sol +3 -2
  209. package/contracts/components/Pool.sol +178 -130
  210. package/contracts/components/Product.sol +157 -71
  211. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  212. package/contracts/instance/BundleManager.sol +10 -9
  213. package/contracts/instance/Cloneable.sol +7 -2
  214. package/contracts/instance/IInstance.sol +37 -27
  215. package/contracts/instance/IInstanceService.sol +18 -9
  216. package/contracts/instance/Instance.sol +117 -98
  217. package/contracts/instance/InstanceAccessManager.sol +388 -158
  218. package/contracts/instance/InstanceReader.sol +36 -12
  219. package/contracts/instance/InstanceService.sol +193 -191
  220. package/contracts/instance/ObjectManager.sol +6 -8
  221. package/contracts/instance/base/ComponentService.sol +17 -30
  222. package/contracts/instance/base/KeyValueStore.sol +13 -5
  223. package/contracts/instance/base/Lifecycle.sol +23 -6
  224. package/contracts/instance/module/IAccess.sol +21 -14
  225. package/contracts/instance/module/IBundle.sol +8 -5
  226. package/contracts/instance/module/IComponents.sol +41 -0
  227. package/contracts/instance/module/IDistribution.sol +2 -1
  228. package/contracts/instance/module/IPolicy.sol +37 -7
  229. package/contracts/instance/module/ISetup.sol +7 -22
  230. package/contracts/instance/service/ApplicationService.sol +137 -50
  231. package/contracts/instance/service/BundleService.sol +221 -83
  232. package/contracts/instance/service/ClaimService.sol +114 -26
  233. package/contracts/instance/service/DistributionService.sol +174 -118
  234. package/contracts/instance/service/IApplicationService.sol +9 -13
  235. package/contracts/instance/service/IBundleService.sol +68 -26
  236. package/contracts/instance/service/IClaimService.sol +46 -15
  237. package/contracts/instance/service/IDistributionService.sol +20 -4
  238. package/contracts/instance/service/IPolicyService.sol +69 -21
  239. package/contracts/instance/service/IPoolService.sol +82 -3
  240. package/contracts/instance/service/PolicyService.sol +297 -232
  241. package/contracts/instance/service/PoolService.sol +214 -20
  242. package/contracts/instance/service/ProductService.sol +31 -54
  243. package/contracts/registry/ChainNft.sol +8 -0
  244. package/contracts/registry/IRegistry.sol +2 -0
  245. package/contracts/registry/IRegistryService.sol +4 -3
  246. package/contracts/registry/ITransferInterceptor.sol +1 -0
  247. package/contracts/registry/Registry.sol +23 -20
  248. package/contracts/registry/RegistryService.sol +15 -16
  249. package/contracts/registry/ReleaseManager.sol +20 -18
  250. package/contracts/shared/IService.sol +4 -6
  251. package/contracts/shared/Registerable.sol +2 -2
  252. package/contracts/shared/Service.sol +21 -7
  253. package/contracts/shared/TokenHandler.sol +11 -5
  254. package/contracts/test/TestService.sol +1 -1
  255. package/contracts/types/Amount.sol +65 -0
  256. package/contracts/types/Blocknumber.sol +1 -0
  257. package/contracts/types/ClaimId.sol +25 -2
  258. package/contracts/types/Fee.sol +13 -5
  259. package/contracts/types/NftId.sol +8 -0
  260. package/contracts/types/ObjectType.sol +6 -5
  261. package/contracts/types/PayoutId.sol +33 -5
  262. package/contracts/types/Referral.sol +4 -0
  263. package/contracts/types/RoleId.sol +13 -6
  264. package/contracts/types/Seconds.sol +54 -0
  265. package/contracts/types/StateId.sol +7 -2
  266. package/contracts/types/Timestamp.sol +18 -13
  267. package/contracts/types/UFixed.sol +1 -0
  268. package/contracts/types/Version.sol +1 -0
  269. package/package.json +1 -1
@@ -3,24 +3,31 @@ pragma solidity ^0.8.19;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
+ import {Amount} from "../types/Amount.sol";
7
+ import {ClaimId} from "../types/ClaimId.sol";
8
+ import {Component} from "./Component.sol";
9
+ import {Fee} from "../types/Fee.sol";
6
10
  import {IRisk} from "../instance/module/IRisk.sol";
7
11
  import {IApplicationService} from "../instance/service/IApplicationService.sol";
8
12
  import {IPolicyService} from "../instance/service/IPolicyService.sol";
13
+ import {IProductService} from "../instance/service/IProductService.sol";
9
14
  import {IClaimService} from "../instance/service/IClaimService.sol";
10
15
  import {IProductComponent} from "./IProductComponent.sol";
11
16
  import {NftId, NftIdLib} from "../types/NftId.sol";
17
+ import {PayoutId} from "../types/PayoutId.sol";
12
18
  import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
13
19
  import {ReferralId} from "../types/Referral.sol";
14
20
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
21
+ import {Seconds} from "../types/Seconds.sol";
15
22
  import {StateId} from "../types/StateId.sol";
16
23
  import {Timestamp} from "../types/Timestamp.sol";
17
- import {Fee} from "../types/Fee.sol";
18
- import {Component} from "./Component.sol";
19
24
 
20
25
  import {TokenHandler} from "../shared/TokenHandler.sol";
21
26
 
22
27
  import {InstanceReader} from "../instance/InstanceReader.sol";
28
+ import {IPolicy} from "../instance/module/IPolicy.sol";
23
29
  import {ISetup} from "../instance/module/ISetup.sol";
30
+ import {IComponents} from "../instance/module/IComponents.sol";
24
31
  import {Pool} from "../components/Pool.sol";
25
32
  import {Distribution} from "../components/Distribution.sol";
26
33
 
@@ -32,6 +39,7 @@ abstract contract Product is
32
39
  bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
33
40
 
34
41
  struct ProductStorage {
42
+ IProductService _productService;
35
43
  IApplicationService _applicationService;
36
44
  IPolicyService _policyService;
37
45
  IClaimService _claimService;
@@ -55,20 +63,21 @@ abstract contract Product is
55
63
  Fee memory productFee,
56
64
  Fee memory processingFee,
57
65
  address initialOwner,
58
- bytes memory data
66
+ bytes memory registryData // writeonly data that will saved in the object info record of the registry
59
67
  )
60
68
  public
61
69
  virtual
62
70
  onlyInitializing()
63
71
  {
64
- initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, data);
72
+ initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData);
65
73
 
66
74
  ProductStorage storage $ = _getProductStorage();
67
75
  // TODO add validation
68
- // TODO refactor to go via registry
69
- $._applicationService = IApplicationService(getServiceAddress(APPLICATION()));
70
- $._policyService = IPolicyService(getServiceAddress(POLICY()));
71
- $._claimService = IClaimService(getServiceAddress(CLAIM()));
76
+ // TODO refactor to go via registry ?
77
+ $._productService = IProductService(_getServiceAddress(PRODUCT()));
78
+ $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
79
+ $._policyService = IPolicyService(_getServiceAddress(POLICY()));
80
+ $._claimService = IClaimService(_getServiceAddress(CLAIM()));
72
81
  $._pool = Pool(pool);
73
82
  $._distribution = Distribution(distribution);
74
83
  $._initialProductFee = productFee;
@@ -80,55 +89,24 @@ abstract contract Product is
80
89
  registerInterface(type(IProductComponent).interfaceId);
81
90
  }
82
91
 
83
-
84
- function calculatePremium(
85
- uint256 sumInsuredAmount,
86
- RiskId riskId,
87
- uint256 lifetime,
88
- bytes memory applicationData,
89
- NftId bundleNftId,
90
- ReferralId referralId
91
- )
92
- external
93
- view
94
- override
95
- returns (uint256 premiumAmount)
96
- {
97
- (premiumAmount,,,,) = _getProductStorage()._policyService.calculatePremium(
98
- riskId,
99
- sumInsuredAmount,
100
- lifetime,
101
- applicationData,
102
- bundleNftId,
103
- referralId
104
- );
105
- }
106
-
107
-
108
- function calculateNetPremium(
109
- uint256 sumInsuredAmount,
110
- RiskId riskId,
111
- uint256 lifetime,
112
- bytes memory applicationData
92
+ // from product component
93
+ function setFees(
94
+ Fee memory productFee,
95
+ Fee memory processingFee
113
96
  )
114
97
  external
115
- view
116
- virtual override
117
- returns (uint256 netPremiumAmount)
98
+ onlyOwner
99
+ restricted()
100
+ override
118
101
  {
119
- // default 10% of sum insured
120
- return sumInsuredAmount / 10;
121
- }
122
-
123
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
124
- return RiskIdLib.toRiskId(riskName);
102
+ _getProductService().setFees(productFee, processingFee);
125
103
  }
126
104
 
127
105
  function _createRisk(
128
106
  RiskId id,
129
107
  bytes memory data
130
108
  ) internal {
131
- getProductService().createRisk(
109
+ _getProductService().createRisk(
132
110
  id,
133
111
  data
134
112
  );
@@ -138,7 +116,7 @@ abstract contract Product is
138
116
  RiskId id,
139
117
  bytes memory data
140
118
  ) internal {
141
- getProductService().updateRisk(
119
+ _getProductService().updateRisk(
142
120
  id,
143
121
  data
144
122
  );
@@ -148,7 +126,7 @@ abstract contract Product is
148
126
  RiskId id,
149
127
  StateId state
150
128
  ) internal {
151
- getProductService().updateRiskState(
129
+ _getProductService().updateRiskState(
152
130
  id,
153
131
  state
154
132
  );
@@ -162,7 +140,7 @@ abstract contract Product is
162
140
  address applicationOwner,
163
141
  RiskId riskId,
164
142
  uint256 sumInsuredAmount,
165
- uint256 lifetime,
143
+ Seconds lifetime,
166
144
  NftId bundleNftId,
167
145
  ReferralId referralId,
168
146
  bytes memory applicationData
@@ -181,14 +159,14 @@ abstract contract Product is
181
159
  );
182
160
  }
183
161
 
184
- function _underwrite(
162
+ function _collateralize(
185
163
  NftId policyNftId,
186
164
  bool requirePremiumPayment,
187
165
  Timestamp activateAt
188
166
  )
189
167
  internal
190
168
  {
191
- _getProductStorage()._policyService.underwrite(
169
+ _getProductStorage()._policyService.collateralize(
192
170
  policyNftId,
193
171
  requirePremiumPayment,
194
172
  activateAt);
@@ -221,28 +199,136 @@ abstract contract Product is
221
199
  )
222
200
  internal
223
201
  {
224
- _getProductStorage()._policyService.close(policyNftId);
202
+ _getProductStorage()._policyService.close(
203
+ policyNftId);
225
204
  }
226
205
 
227
- function getPoolNftId() external view override returns (NftId poolNftId) {
228
- return getRegistry().getNftId(address(_getProductStorage()._pool));
206
+ function _submitClaim(
207
+ NftId policyNftId,
208
+ Amount claimAmount,
209
+ bytes memory claimData
210
+ )
211
+ internal
212
+ returns(ClaimId)
213
+ {
214
+ return _getProductStorage()._policyService.submitClaim(
215
+ policyNftId,
216
+ claimAmount,
217
+ claimData);
229
218
  }
230
219
 
231
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
232
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
220
+ function _confirmClaim(
221
+ NftId policyNftId,
222
+ ClaimId claimId,
223
+ Amount confirmedAmount
224
+ )
225
+ internal
226
+ {
227
+ _getProductStorage()._policyService.confirmClaim(
228
+ policyNftId,
229
+ claimId,
230
+ confirmedAmount);
233
231
  }
234
232
 
235
- // from product component
236
- function setFees(
237
- Fee memory productFee,
238
- Fee memory processingFee
233
+ function _declineClaim(
234
+ NftId policyNftId,
235
+ ClaimId claimId
236
+ )
237
+ internal
238
+ {
239
+ _getProductStorage()._policyService.declineClaim(
240
+ policyNftId,
241
+ claimId);
242
+ }
243
+
244
+ function _closeClaim(
245
+ NftId policyNftId,
246
+ ClaimId claimId
247
+ )
248
+ internal
249
+ {
250
+ _getProductStorage()._policyService.closeClaim(
251
+ policyNftId,
252
+ claimId);
253
+ }
254
+
255
+ function _createPayout(
256
+ NftId policyNftId,
257
+ ClaimId claimId,
258
+ Amount amount,
259
+ bytes memory data
260
+ )
261
+ internal
262
+ returns (PayoutId)
263
+ {
264
+ return _getProductStorage()._policyService.createPayout(
265
+ policyNftId,
266
+ claimId,
267
+ amount,
268
+ data);
269
+ }
270
+
271
+ function _processPayout(
272
+ NftId policyNftId,
273
+ PayoutId payoutId
274
+ )
275
+ internal
276
+ {
277
+ _getProductStorage()._policyService.processPayout(
278
+ policyNftId,
279
+ payoutId);
280
+ }
281
+
282
+ function calculatePremium(
283
+ uint256 sumInsuredAmount,
284
+ RiskId riskId,
285
+ Seconds lifetime,
286
+ bytes memory applicationData,
287
+ NftId bundleNftId,
288
+ ReferralId referralId
289
+ )
290
+ external
291
+ view
292
+ override
293
+ returns (uint256 premiumAmount)
294
+ {
295
+ IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
296
+ getNftId(),
297
+ riskId,
298
+ sumInsuredAmount,
299
+ lifetime,
300
+ applicationData,
301
+ bundleNftId,
302
+ referralId
303
+ );
304
+ premiumAmount = premium.premiumAmount;
305
+ }
306
+
307
+ function calculateNetPremium(
308
+ uint256 sumInsuredAmount,
309
+ RiskId riskId,
310
+ Seconds lifetime,
311
+ bytes memory applicationData
239
312
  )
240
313
  external
241
- onlyOwner
242
- restricted()
243
- override
314
+ view
315
+ virtual override
316
+ returns (uint256 netPremiumAmount)
244
317
  {
245
- getProductService().setFees(productFee, processingFee);
318
+ // default 10% of sum insured
319
+ return sumInsuredAmount / 10;
320
+ }
321
+
322
+ function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
323
+ return RiskIdLib.toRiskId(riskName);
324
+ }
325
+
326
+ function getPoolNftId() external view override returns (NftId poolNftId) {
327
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
328
+ }
329
+
330
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
331
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
246
332
  }
247
333
 
248
334
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
@@ -259,19 +345,15 @@ abstract contract Product is
259
345
  ProductStorage storage $ = _getProductStorage();
260
346
 
261
347
  ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
262
- ISetup.PoolSetupInfo memory poolSetupInfo = $._pool.getSetupInfo();
348
+ IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
263
349
 
264
350
  return ISetup.ProductSetupInfo(
265
351
  getToken(),
266
352
  $._tokenHandler,
267
353
  $._distributionNftId,
268
354
  $._poolNftId,
269
- distributionSetupInfo.distributionFee,
270
355
  $._initialProductFee,
271
356
  $._initialProcessingFee,
272
- poolSetupInfo.poolFee,
273
- poolSetupInfo.stakingFee,
274
- poolSetupInfo.performanceFee,
275
357
  false,
276
358
  getWallet()
277
359
  );
@@ -282,4 +364,8 @@ abstract contract Product is
282
364
  $.slot := PRODUCT_STORAGE_LOCATION_V1
283
365
  }
284
366
  }
367
+
368
+ function _getProductService() internal view returns (IProductService) {
369
+ return _getProductStorage()._productService;
370
+ }
285
371
  }
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {AccessManagerUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagerUpgradeable.sol";
5
+
6
+
7
+ contract AccessManagerUpgradeableInitializeable is AccessManagerUpgradeable {
8
+
9
+ function initialize(address initialAdmin) initializer public {
10
+ __AccessManager_init(initialAdmin);
11
+ }
12
+
13
+ }
@@ -22,9 +22,10 @@ contract BundleManager is
22
22
  event LogBundleManagerBundleAdded(NftId poolNftId, NftId bundleNftId);
23
23
  event LogBundleManagerBundleUnlocked(NftId poolNftId, NftId bundleNftId);
24
24
  event LogBundleManagerBundleLocked(NftId poolNftId, NftId bundleNftId);
25
+ event LogBundleManagerBundleClosed(NftId poolNftId, NftId bundleNftId);
25
26
 
26
- error ErrorBundleManagerErrorPolicyAlreadyActivated(NftId policyNftId);
27
- error ErrorBundleManagerErrorBundleLocked(NftId bundleNftId, NftId policyNftId);
27
+ error ErrorBundleManagerPolicyAlreadyActivated(NftId policyNftId);
28
+ error ErrorBundleManagerBundleLocked(NftId bundleNftId, NftId policyNftId);
28
29
  error ErrorBundleManagerPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
29
30
  error ErrorBundleManagerPolicyNotCloseable(NftId policyNftId);
30
31
  error ErrorBundleManagerBundleUnknown(NftId bundleNftId);
@@ -32,9 +33,8 @@ contract BundleManager is
32
33
 
33
34
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
34
35
 
35
- /// @dev links a policy with its bundle
36
- // to link a policy it MUST NOT yet have been activated
37
- // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
36
+ /// @dev links a policy to its bundle
37
+ // to link a policy it MUST NOT yet have been linked
38
38
  function linkPolicy(NftId policyNftId) external restricted() {
39
39
  NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
40
40
  // decision will likely depend on the decision what to check here and what in the service
@@ -42,7 +42,7 @@ contract BundleManager is
42
42
 
43
43
  // ensure bundle is unlocked (in active set) and registered with this instance
44
44
  if (!_isActive(poolNftId, bundleNftId)) {
45
- revert ErrorBundleManagerErrorBundleLocked(bundleNftId, policyNftId);
45
+ revert ErrorBundleManagerBundleLocked(bundleNftId, policyNftId);
46
46
  }
47
47
 
48
48
  LibNftIdSet.add(_activePolicies[bundleNftId], policyNftId);
@@ -71,7 +71,7 @@ contract BundleManager is
71
71
  }
72
72
 
73
73
 
74
- /// @dev add a new bundle to a riskpool registerd with this instance
74
+ /// @dev add a new bundle to a pool registerd with this instance
75
75
  // the corresponding pool is fetched via instance reader
76
76
  function add(NftId bundleNftId) external restricted() {
77
77
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
@@ -85,14 +85,15 @@ contract BundleManager is
85
85
  emit LogBundleManagerBundleAdded(poolNftId, bundleNftId);
86
86
  }
87
87
 
88
- /// @dev unlocked (active) bundles are available to underwrite new policies
88
+
89
+ /// @dev unlocked (active) bundles are available to collateralize new policies
89
90
  function unlock(NftId bundleNftId) external restricted() {
90
91
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
91
92
  _activate(poolNftId, bundleNftId);
92
93
  emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
93
94
  }
94
95
 
95
- /// @dev locked (deactivated) bundles may not underwrite any new policies
96
+ /// @dev locked (deactivated) bundles may not collateralize any new policies
96
97
  function lock(NftId bundleNftId) external restricted() {
97
98
  NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
98
99
  _deactivate(poolNftId, bundleNftId);
@@ -10,7 +10,8 @@ abstract contract Cloneable is
10
10
  AccessManagedUpgradeable
11
11
  {
12
12
  event CloneableInitialized(address authority, address registry);
13
-
13
+
14
+ error CloneableAuthorityZero();
14
15
  error CloneableRegistryInvalid(address registry);
15
16
 
16
17
  IRegistry internal _registry;
@@ -25,9 +26,13 @@ abstract contract Cloneable is
25
26
  address registry
26
27
  )
27
28
  public
28
- initializer
29
+ onlyInitializing
29
30
  {
30
31
  // check/handle access managed
32
+ if(authority == address(0)) {
33
+ revert CloneableAuthorityZero();
34
+ }
35
+
31
36
  __AccessManaged_init(authority);
32
37
 
33
38
  // check/handle registry
@@ -3,53 +3,57 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
+ import {ClaimId} from "../types/ClaimId.sol";
7
+ import {DistributorType} from "../types/DistributorType.sol";
8
+ import {PayoutId} from "../types/PayoutId.sol";
6
9
  import {NftId} from "../types/NftId.sol";
7
10
  import {StateId} from "../types/StateId.sol";
11
+ import {ReferralId} from "../types/Referral.sol";
8
12
  import {RiskId} from "../types/RiskId.sol";
13
+ import {VersionPart} from "../types/Version.sol";
14
+ import {Key32} from "../types/Key32.sol";
9
15
 
10
16
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
17
 
18
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
19
+
12
20
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
13
21
  import {BundleManager} from "./BundleManager.sol";
14
22
  import {InstanceReader} from "./InstanceReader.sol";
15
23
 
16
24
  import {IBundle} from "./module/IBundle.sol";
17
25
  import {IBundleService} from "./service/IBundleService.sol";
18
- import {IDistributionService} from "./service/IDistributionService.sol";
26
+ import {IComponents} from "./module/IComponents.sol";
19
27
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
20
28
  import {IKeyValueStore} from "./base/IKeyValueStore.sol";
21
29
  import {IPolicy} from "./module/IPolicy.sol";
22
30
  import {IDistribution} from "./module/IDistribution.sol";
23
- import {IPolicyService} from "./service/IPolicyService.sol";
24
- import {IPoolService} from "./service/IPoolService.sol";
25
- import {IProductService} from "./service/IProductService.sol";
26
- import {IPolicyService} from "./service/IPolicyService.sol";
27
- import {IBundleService} from "./service/IBundleService.sol";
28
31
  import {IRisk} from "./module/IRisk.sol";
29
32
  import {ISetup} from "./module/ISetup.sol";
30
- import {NftId} from "../types/NftId.sol";
31
- import {RiskId} from "../types/RiskId.sol";
32
- import {StateId} from "../types/StateId.sol";
33
- import {VersionPart} from "../types/Version.sol";
34
- import {Key32} from "../types/Key32.sol";
35
33
 
36
34
 
37
35
 
36
+ interface IInstance is
37
+ IRegisterable,
38
+ ITransferInterceptor,
39
+ IAccessManaged,
40
+ IKeyValueStore
41
+ {
42
+ error ErrorInstanceInstanceAccessManagerAlreadySet(address instanceAccessManager);
43
+ error ErrorInstanceInstanceAccessManagerAuthorityMismatch(address instanceAuthority);
38
44
 
39
- interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
45
+ error ErrorInstanceBundleManagerAlreadySet(address instanceBundleManager);
46
+ error ErrorInstanceBundleManagerInstanceMismatch(address instance);
47
+ error ErrorInstanceBundleManagerAuthorityMismatch(address instanceAuthority);
40
48
 
41
- function getDistributionService() external view returns (IDistributionService);
42
- function getProductService() external view returns (IProductService);
43
- function getPoolService() external view returns (IPoolService);
44
- function getPolicyService() external view returns (IPolicyService);
45
- function getBundleService() external view returns (IBundleService);
49
+ error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
46
50
 
47
51
  function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
48
52
  function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
49
53
  function updateDistributionSetupState(NftId distributionNftId, StateId newState) external;
50
54
 
51
- function createPoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup) external;
52
- function updatePoolSetup(NftId poolNftId, ISetup.PoolSetupInfo memory setup, StateId newState) external;
55
+ function createPoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info) external;
56
+ function updatePoolSetup(NftId poolNftId, IComponents.ComponentInfo memory info, StateId newState) external;
53
57
  function updatePoolSetupState(NftId poolNftId, StateId newState) external;
54
58
 
55
59
  function createBundle(NftId bundleNftId, IBundle.BundleInfo memory bundle) external;
@@ -60,17 +64,17 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
60
64
  function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
61
65
  function updateProductSetupState(NftId productNftId, StateId newState) external;
62
66
 
63
- function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external;
64
- function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
65
- function updateDistributorTypeState(Key32 distributorKey, StateId newState) external;
67
+ function createDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info) external;
68
+ function updateDistributorType(DistributorType distributorType, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
69
+ function updateDistributorTypeState(DistributorType distributorType, StateId newState) external;
66
70
 
67
71
  function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
68
72
  function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
69
73
  function updateDistributorState(NftId nftId, StateId newState) external;
70
74
 
71
- function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external;
72
- function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
73
- function updateReferralState(Key32 referralKey, StateId newState) external;
75
+ function createReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo) external;
76
+ function updateReferral(ReferralId referralId, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
77
+ function updateReferralState(ReferralId referralId, StateId newState) external;
74
78
 
75
79
  function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
76
80
  function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
@@ -83,10 +87,16 @@ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
83
87
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
84
88
  function updatePolicyState(NftId policyNftId, StateId newState) external;
85
89
 
86
- // TODO add claims/payouts function to instance
87
- // function updateClaims(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
90
+ function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external;
91
+ function updateClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim, StateId newState) external;
92
+ function updateClaimState(NftId policyNftId, ClaimId claimId, StateId newState) external;
93
+
94
+ function createPayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory claim) external;
95
+ function updatePayout(NftId policyNftId, PayoutId payoutId, IPolicy.PayoutInfo memory claim, StateId newState) external;
96
+ function updatePayoutState(NftId policyNftId, PayoutId payoutId, StateId newState) external;
88
97
 
89
98
  function getMajorVersion() external pure returns (VersionPart majorVersion);
90
99
  function getInstanceReader() external view returns (InstanceReader);
91
100
  function getBundleManager() external view returns (BundleManager);
101
+ function getInstanceAccessManager() external view returns (InstanceAccessManager);
92
102
  }
@@ -5,11 +5,8 @@ import {NftId} from "../types/NftId.sol";
5
5
  import {ObjectType} from "../types/ObjectType.sol";
6
6
  import {RoleId} from "../types/RoleId.sol";
7
7
  import {IService} from "../shared/IService.sol";
8
- import {IRegistry} from "../registry/IRegistry.sol";
9
-
10
- import {IRegisterable} from "../shared/IRegisterable.sol";
11
- import {IComponent} from "../components/IComponent.sol";
12
8
 
9
+ import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
13
10
  import {InstanceAccessManager} from "./InstanceAccessManager.sol";
14
11
  import {Instance} from "./Instance.sol";
15
12
  import {InstanceReader} from "./InstanceReader.sol";
@@ -18,6 +15,7 @@ import {BundleManager} from "./BundleManager.sol";
18
15
  interface IInstanceService is IService {
19
16
 
20
17
  error ErrorInstanceServiceMasterInstanceAlreadySet();
18
+ error ErrorInstanceServiceMasterOzAccessManagerAlreadySet();
21
19
  error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
22
20
  error ErrorInstanceServiceMasterBundleManagerAlreadySet();
23
21
  error ErrorInstanceServiceInstanceAddressZero();
@@ -27,33 +25,44 @@ interface IInstanceService is IService {
27
25
  error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
28
26
  error ErrorInstanceServiceInstanceReaderInstanceMismatch();
29
27
 
30
- error ErrorInstanceServiceAccessManagerZero();
28
+ error ErrorInstanceServiceOzAccessManagerZero();
29
+ error ErrorInstanceServiceInstanceAccessManagerZero();
31
30
  error ErrorInstanceServiceInstanceReaderZero();
32
31
  error ErrorInstanceServiceBundleManagerZero();
33
32
 
34
33
  error ErrorInstanceServiceInstanceAuthorityMismatch();
34
+ error ErrorInstanceServiceBundleManagerAuthorityMismatch();
35
35
  error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
36
36
  error ErrorInstanceServiceBundleMangerInstanceMismatch();
37
37
 
38
38
  error ErrorInstanceServiceRequestUnauhorized(address caller);
39
39
  error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
40
+ error ErrorInstanceServiceNotInstance(NftId nftId);
40
41
  error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
42
+ error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
41
43
  error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
42
44
 
43
- event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
45
+ event LogInstanceCloned(address clonedOzAccessManager, address clonedInstanceAccessManager, address clonedInstance, address clonedBundleManager, address clonedInstanceReader, NftId clonedInstanceNftId);
44
46
 
45
47
  function createInstanceClone()
46
48
  external
47
49
  returns (
48
- InstanceAccessManager clonedAccessManager,
50
+ AccessManagerUpgradeableInitializeable clonedOzAccessManager,
51
+ InstanceAccessManager clonedInstanceAccessManager,
49
52
  Instance clonedInstance,
50
53
  NftId instanceNftId,
51
54
  InstanceReader clonedInstanceReader,
52
55
  BundleManager clonedBundleManager
53
56
  );
54
57
 
55
- function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
56
- function setTargetLocked(string memory targetName, bool locked) external;
58
+ function createGifTarget(
59
+ NftId instanceNftId,
60
+ address targetAddress,
61
+ string memory targetName,
62
+ bytes4[][] memory selectors,
63
+ RoleId[] memory roles
64
+ ) external;
57
65
 
66
+ function setComponentLocked(bool locked) external;
58
67
  }
59
68