@etherisc/gif-next 0.0.2-e922e07-736 → 0.0.2-e94f4c7-084

Sign up to get free protection for your applications and to get access to all the features.
Files changed (262) 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 +84 -0
  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 +158 -0
  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 +457 -268
  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 +426 -476
  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 +217 -169
  34. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +304 -210
  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 +175 -83
  60. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -13
  62. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +426 -233
  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 +372 -86
  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 +189 -139
  72. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +48 -56
  74. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -40
  76. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +246 -170
  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 +101 -24
  82. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +470 -41
  84. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +627 -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 +607 -85
  90. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +71 -19
  92. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +777 -55
  94. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +72 -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 +209 -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 +2 -2
  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 +1 -1
  190. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  192. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +17 -4
  194. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  196. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  198. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  199. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  200. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  202. package/contracts/components/Component.sol +42 -10
  203. package/contracts/components/Distribution.sol +6 -2
  204. package/contracts/components/IComponent.sol +9 -1
  205. package/contracts/components/IPoolComponent.sol +6 -44
  206. package/contracts/components/Pool.sol +50 -126
  207. package/contracts/components/Product.sol +141 -59
  208. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  209. package/contracts/instance/BundleManager.sol +9 -8
  210. package/contracts/instance/Cloneable.sol +7 -2
  211. package/contracts/instance/IInstance.sol +37 -27
  212. package/contracts/instance/IInstanceService.sol +18 -9
  213. package/contracts/instance/Instance.sol +117 -98
  214. package/contracts/instance/InstanceAccessManager.sol +388 -158
  215. package/contracts/instance/InstanceReader.sol +36 -12
  216. package/contracts/instance/InstanceService.sol +193 -204
  217. package/contracts/instance/ObjectManager.sol +6 -8
  218. package/contracts/instance/base/ComponentService.sol +17 -30
  219. package/contracts/instance/base/KeyValueStore.sol +13 -5
  220. package/contracts/instance/base/Lifecycle.sol +23 -6
  221. package/contracts/instance/module/IAccess.sol +21 -14
  222. package/contracts/instance/module/IBundle.sol +6 -4
  223. package/contracts/instance/module/IComponents.sol +41 -0
  224. package/contracts/instance/module/IPolicy.sol +11 -6
  225. package/contracts/instance/module/ISetup.sol +3 -16
  226. package/contracts/instance/service/ApplicationService.sol +25 -19
  227. package/contracts/instance/service/BundleService.sol +224 -80
  228. package/contracts/instance/service/ClaimService.sol +114 -26
  229. package/contracts/instance/service/DistributionService.sol +58 -77
  230. package/contracts/instance/service/IApplicationService.sol +3 -7
  231. package/contracts/instance/service/IBundleService.sol +72 -25
  232. package/contracts/instance/service/IClaimService.sol +46 -15
  233. package/contracts/instance/service/IDistributionService.sol +1 -0
  234. package/contracts/instance/service/IPolicyService.sol +72 -5
  235. package/contracts/instance/service/IPoolService.sol +85 -3
  236. package/contracts/instance/service/PolicyService.sol +320 -143
  237. package/contracts/instance/service/PoolService.sol +245 -18
  238. package/contracts/instance/service/ProductService.sol +31 -54
  239. package/contracts/registry/ChainNft.sol +8 -0
  240. package/contracts/registry/IRegistry.sol +2 -0
  241. package/contracts/registry/IRegistryService.sol +4 -3
  242. package/contracts/registry/ITransferInterceptor.sol +1 -0
  243. package/contracts/registry/Registry.sol +23 -20
  244. package/contracts/registry/RegistryService.sol +10 -11
  245. package/contracts/registry/ReleaseManager.sol +20 -18
  246. package/contracts/shared/IService.sol +4 -6
  247. package/contracts/shared/Service.sol +21 -7
  248. package/contracts/shared/TokenHandler.sol +11 -5
  249. package/contracts/test/TestService.sol +1 -1
  250. package/contracts/types/Amount.sol +70 -0
  251. package/contracts/types/Blocknumber.sol +1 -0
  252. package/contracts/types/ClaimId.sol +25 -2
  253. package/contracts/types/Fee.sol +13 -5
  254. package/contracts/types/NftId.sol +8 -0
  255. package/contracts/types/ObjectType.sol +6 -5
  256. package/contracts/types/PayoutId.sol +33 -5
  257. package/contracts/types/RoleId.sol +6 -4
  258. package/contracts/types/StateId.sol +7 -2
  259. package/contracts/types/Timestamp.sol +6 -0
  260. package/contracts/types/UFixed.sol +1 -0
  261. package/contracts/types/Version.sol +1 -0
  262. package/package.json +1 -1
@@ -3,6 +3,10 @@ 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";
@@ -10,20 +14,20 @@ import {IProductService} from "../instance/service/IProductService.sol";
10
14
  import {IClaimService} from "../instance/service/IClaimService.sol";
11
15
  import {IProductComponent} from "./IProductComponent.sol";
12
16
  import {NftId, NftIdLib} from "../types/NftId.sol";
17
+ import {PayoutId} from "../types/PayoutId.sol";
13
18
  import {PRODUCT, APPLICATION, POLICY, CLAIM } from "../types/ObjectType.sol";
14
19
  import {ReferralId} from "../types/Referral.sol";
15
20
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
16
21
  import {Seconds} from "../types/Seconds.sol";
17
22
  import {StateId} from "../types/StateId.sol";
18
23
  import {Timestamp} from "../types/Timestamp.sol";
19
- import {Fee} from "../types/Fee.sol";
20
- import {Component} from "./Component.sol";
21
24
 
22
25
  import {TokenHandler} from "../shared/TokenHandler.sol";
23
26
 
24
27
  import {InstanceReader} from "../instance/InstanceReader.sol";
25
28
  import {IPolicy} from "../instance/module/IPolicy.sol";
26
29
  import {ISetup} from "../instance/module/ISetup.sol";
30
+ import {IComponents} from "../instance/module/IComponents.sol";
27
31
  import {Pool} from "../components/Pool.sol";
28
32
  import {Distribution} from "../components/Distribution.sol";
29
33
 
@@ -69,7 +73,7 @@ abstract contract Product is
69
73
 
70
74
  ProductStorage storage $ = _getProductStorage();
71
75
  // TODO add validation
72
- // TODO refactor to go via registry
76
+ // TODO refactor to go via registry ?
73
77
  $._productService = IProductService(_getServiceAddress(PRODUCT()));
74
78
  $._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
75
79
  $._policyService = IPolicyService(_getServiceAddress(POLICY()));
@@ -85,50 +89,17 @@ abstract contract Product is
85
89
  registerInterface(type(IProductComponent).interfaceId);
86
90
  }
87
91
 
88
-
89
- function calculatePremium(
90
- uint256 sumInsuredAmount,
91
- RiskId riskId,
92
- Seconds lifetime,
93
- bytes memory applicationData,
94
- NftId bundleNftId,
95
- ReferralId referralId
96
- )
97
- external
98
- view
99
- override
100
- returns (uint256 premiumAmount)
101
- {
102
- IPolicy.Premium memory premium = _getProductStorage()._applicationService.calculatePremium(
103
- getNftId(),
104
- riskId,
105
- sumInsuredAmount,
106
- lifetime,
107
- applicationData,
108
- bundleNftId,
109
- referralId
110
- );
111
- premiumAmount = premium.premiumAmount;
112
- }
113
-
114
-
115
- function calculateNetPremium(
116
- uint256 sumInsuredAmount,
117
- RiskId riskId,
118
- Seconds lifetime,
119
- bytes memory applicationData
92
+ // from product component
93
+ function setFees(
94
+ Fee memory productFee,
95
+ Fee memory processingFee
120
96
  )
121
97
  external
122
- view
123
- virtual override
124
- returns (uint256 netPremiumAmount)
98
+ onlyOwner
99
+ restricted()
100
+ override
125
101
  {
126
- // default 10% of sum insured
127
- return sumInsuredAmount / 10;
128
- }
129
-
130
- function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
131
- return RiskIdLib.toRiskId(riskName);
102
+ _getProductService().setFees(productFee, processingFee);
132
103
  }
133
104
 
134
105
  function _createRisk(
@@ -188,14 +159,14 @@ abstract contract Product is
188
159
  );
189
160
  }
190
161
 
191
- function _underwrite(
162
+ function _collateralize(
192
163
  NftId policyNftId,
193
164
  bool requirePremiumPayment,
194
165
  Timestamp activateAt
195
166
  )
196
167
  internal
197
168
  {
198
- _getProductStorage()._policyService.underwrite(
169
+ _getProductStorage()._policyService.collateralize(
199
170
  policyNftId,
200
171
  requirePremiumPayment,
201
172
  activateAt);
@@ -228,28 +199,136 @@ abstract contract Product is
228
199
  )
229
200
  internal
230
201
  {
231
- _getProductStorage()._policyService.close(policyNftId);
202
+ _getProductStorage()._policyService.close(
203
+ policyNftId);
232
204
  }
233
205
 
234
- function getPoolNftId() external view override returns (NftId poolNftId) {
235
- 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);
236
218
  }
237
219
 
238
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
239
- 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);
240
231
  }
241
232
 
242
- // from product component
243
- function setFees(
244
- Fee memory productFee,
245
- 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
246
312
  )
247
313
  external
248
- onlyOwner
249
- restricted()
250
- override
314
+ view
315
+ virtual override
316
+ returns (uint256 netPremiumAmount)
251
317
  {
252
- _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));
253
332
  }
254
333
 
255
334
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
@@ -265,6 +344,9 @@ abstract contract Product is
265
344
  function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
266
345
  ProductStorage storage $ = _getProductStorage();
267
346
 
347
+ ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
348
+ IComponents.PoolInfo memory poolInfo = $._pool.getPoolInfo();
349
+
268
350
  return ISetup.ProductSetupInfo(
269
351
  getToken(),
270
352
  $._tokenHandler,
@@ -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);
@@ -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