@etherisc/gif-next 0.0.2-e510b92-393 → 0.0.2-e545d2c-624

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 (231) hide show
  1. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +29 -0
  3. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.json +33 -102
  5. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +29 -0
  7. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  8. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  10. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  11. package/artifacts/contracts/components/Pool.sol/Pool.json +33 -130
  12. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  13. package/artifacts/contracts/components/Product.sol/Product.json +33 -113
  14. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  15. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  16. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  17. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  18. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  34. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  36. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +45 -32
  38. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  40. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +116 -0
  41. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  42. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  43. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +99 -14
  45. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  46. package/artifacts/contracts/instance/Instance.sol/Instance.json +79 -665
  47. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +244 -114
  49. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  50. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  52. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2 -2
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  54. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +166 -173
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +26 -78
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  58. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +15 -2
  59. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +24 -32
  61. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  64. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1031 -0
  76. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
  78. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +39 -52
  80. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +49 -72
  82. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +13 -37
  84. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
  86. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +13 -13
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +13 -13
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +12 -241
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +17 -241
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1156 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +32 -354
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +13 -57
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +40 -410
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +13 -81
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +132 -133
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +94 -65
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +145 -227
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +30 -128
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +38 -104
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +14 -27
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  132. package/artifacts/contracts/shared/IService.sol/IService.json +13 -13
  133. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  136. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
  138. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  140. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  142. package/artifacts/contracts/shared/Service.sol/Service.json +13 -13
  143. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  144. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  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/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  151. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestService.sol/TestService.json +31 -31
  153. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  157. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  163. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  165. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  170. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  171. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  177. package/contracts/components/BaseComponent.sol +35 -8
  178. package/contracts/components/Distribution.sol +2 -1
  179. package/contracts/components/IBaseComponent.sol +3 -0
  180. package/contracts/components/Pool.sol +11 -6
  181. package/contracts/components/Product.sol +22 -10
  182. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  183. package/contracts/instance/IInstance.sol +7 -1
  184. package/contracts/instance/IInstanceBase.sol +26 -0
  185. package/contracts/instance/IInstanceService.sol +10 -2
  186. package/contracts/instance/Instance.sol +32 -214
  187. package/contracts/instance/InstanceAccessManager.sol +93 -78
  188. package/contracts/instance/InstanceBase.sol +41 -0
  189. package/contracts/instance/InstanceService.sol +228 -115
  190. package/contracts/instance/InstanceServiceManager.sol +5 -8
  191. package/contracts/instance/ObjectManager.sol +7 -1
  192. package/contracts/instance/base/ComponentServiceBase.sol +29 -87
  193. package/contracts/instance/module/IAccess.sol +27 -17
  194. package/contracts/instance/service/BundleService.sol +294 -0
  195. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  196. package/contracts/instance/service/ComponentOwnerService.sol +4 -6
  197. package/contracts/instance/service/DistributionService.sol +53 -21
  198. package/contracts/instance/service/DistributionServiceManager.sol +6 -9
  199. package/contracts/instance/service/IBundleService.sol +44 -0
  200. package/contracts/instance/service/IPolicyService.sol +94 -0
  201. package/contracts/instance/service/IPoolService.sol +2 -33
  202. package/contracts/instance/service/IProductService.sol +2 -72
  203. package/contracts/instance/service/PolicyService.sol +539 -0
  204. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  205. package/contracts/instance/service/PoolService.sol +65 -207
  206. package/contracts/instance/service/PoolServiceManager.sol +5 -8
  207. package/contracts/instance/service/ProductService.sol +100 -457
  208. package/contracts/registry/ChainNft.sol +1 -1
  209. package/contracts/registry/IRegistry.sol +26 -16
  210. package/contracts/registry/IRegistryService.sol +13 -5
  211. package/contracts/registry/Registry.sol +149 -201
  212. package/contracts/registry/RegistryAccessManager.sol +210 -0
  213. package/contracts/registry/RegistryService.sol +50 -88
  214. package/contracts/registry/RegistryServiceManager.sol +18 -36
  215. package/contracts/registry/ReleaseManager.sol +342 -0
  216. package/contracts/registry/TokenRegistry.sol +5 -6
  217. package/contracts/shared/IService.sol +2 -1
  218. package/contracts/shared/ProxyManager.sol +1 -1
  219. package/contracts/shared/Service.sol +10 -7
  220. package/contracts/test/TestService.sol +3 -2
  221. package/contracts/types/RoleId.sol +10 -10
  222. package/package.json +1 -1
  223. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  224. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  225. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  226. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  227. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  228. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  229. package/contracts/instance/AccessManagedSimple.sol +0 -115
  230. package/contracts/instance/AccessManagerSimple.sol +0 -692
  231. package/contracts/instance/IAccessManagerSimple.sol +0 -391
@@ -1,15 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
+
4
7
  import {IBaseComponent} from "./IBaseComponent.sol";
5
8
  import {IComponentOwnerService} from "../instance/service/IComponentOwnerService.sol";
6
- import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
7
10
  import {IInstance} from "../instance/IInstance.sol";
11
+ import {InstanceAccessManager} from "../instance/InstanceAccessManager.sol";
8
12
  import {IRegistry} from "../registry/IRegistry.sol";
9
13
  import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
10
- import {ObjectType} from "../types/ObjectType.sol";
14
+ import {ObjectType, INSTANCE} from "../types/ObjectType.sol";
15
+ import {VersionLib} from "../types/Version.sol";
11
16
  import {Registerable} from "../shared/Registerable.sol";
12
- import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
17
+ import {RoleId, RoleIdLib} from "../types/RoleId.sol";
18
+ import {IAccess} from "../instance/module/IAccess.sol";
13
19
 
14
20
  abstract contract BaseComponent is
15
21
  Registerable,
@@ -18,6 +24,7 @@ abstract contract BaseComponent is
18
24
  using NftIdLib for NftId;
19
25
 
20
26
  IComponentOwnerService internal _componentOwnerService;
27
+ IInstanceService internal _instanceService;
21
28
 
22
29
  address internal _deployer;
23
30
  address internal _wallet;
@@ -25,6 +32,23 @@ abstract contract BaseComponent is
25
32
  IInstance internal _instance;
26
33
  NftId internal _productNftId;
27
34
 
35
+ modifier onlyInstanceRole(uint64 roleIdNum) {
36
+ RoleId roleId = RoleIdLib.toRoleId(roleIdNum);
37
+ InstanceAccessManager accessManager = InstanceAccessManager(_instance.authority());
38
+ if( !accessManager.hasRole(roleId, msg.sender)) {
39
+ revert ErrorBaseComponentUnauthorized(msg.sender, roleIdNum);
40
+ }
41
+ _;
42
+ }
43
+
44
+ modifier isNotLocked() {
45
+ InstanceAccessManager accessManager = InstanceAccessManager(_instance.authority());
46
+ if (accessManager.isTargetLocked(address(this))) {
47
+ revert IAccess.ErrorIAccessTargetLocked(address(this));
48
+ }
49
+ _;
50
+ }
51
+
28
52
  constructor(
29
53
  address registry,
30
54
  NftId instanceNftId,
@@ -45,21 +69,24 @@ abstract contract BaseComponent is
45
69
  );
46
70
 
47
71
  _componentOwnerService = _instance.getComponentOwnerService();
72
+ _instanceService = IInstanceService(getRegistry().getServiceAddress(INSTANCE(), VersionLib.toVersion(3, 0, 0).toMajorPart()));
48
73
  _wallet = address(this);
49
74
  _token = IERC20Metadata(token);
50
75
 
51
76
  _registerInterface(type(IBaseComponent).interfaceId);
52
77
  }
53
78
 
79
+ function getName() public pure virtual returns (string memory name);
80
+
54
81
  // from component contract
55
- // TODO consider to remove/replace with access manager contract locking
82
+ // TODO only owner and instance owner
56
83
  function lock() external onlyOwner override {
57
- _componentOwnerService.lock(this);
84
+ _instanceService.setTargetLocked(getName(), true);
58
85
  }
59
-
60
- // TODO consider to remove/replace with access manager contract locking
86
+
87
+ // TODO only owner and instance owner
61
88
  function unlock() external onlyOwner override {
62
- _componentOwnerService.unlock(this);
89
+ _instanceService.setTargetLocked(getName(), false);
63
90
  }
64
91
 
65
92
  function getWallet()
@@ -16,7 +16,7 @@ import {Registerable} from "../shared/Registerable.sol";
16
16
  import {TokenHandler} from "../shared/TokenHandler.sol";
17
17
  import {InstanceReader} from "../instance/InstanceReader.sol";
18
18
 
19
- contract Distribution is
19
+ abstract contract Distribution is
20
20
  BaseComponent,
21
21
  IDistributionComponent
22
22
  {
@@ -150,6 +150,7 @@ contract Distribution is
150
150
  return (
151
151
  info,
152
152
  abi.encode(
153
+ getName(),
153
154
  ISetup.DistributionSetupInfo(
154
155
  _productNftId,
155
156
  _tokenHandler,
@@ -10,10 +10,13 @@ import {NftId} from "../types/NftId.sol";
10
10
  interface IBaseComponent is IRegisterable {
11
11
  error ErrorBaseComponentWalletAddressIsSameAsCurrent(address newWallet);
12
12
  error ErrorBaseComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
13
+ error ErrorBaseComponentUnauthorized(address caller, uint64 requiredRoleIdNum);
13
14
 
14
15
  event LogBaseComponentWalletAddressChanged(address newWallet);
15
16
  event LogBaseComponentWalletTokensTransferred(address from, address to, uint256 amount);
16
17
 
18
+ function getName() external pure virtual returns (string memory name);
19
+
17
20
  function lock() external;
18
21
 
19
22
  function unlock() external;
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {ObjectType, POOL} from "../types/ObjectType.sol";
5
5
  import {IProductService} from "../instance/service/IProductService.sol";
6
6
  import {IPoolService} from "../instance/service/IPoolService.sol";
7
+ import {IBundleService} from "../instance/service/IBundleService.sol";
7
8
  import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
8
9
  import {Fee} from "../types/Fee.sol";
9
10
  import {UFixed} from "../types/UFixed.sol";
@@ -22,7 +23,7 @@ import {InstanceReader} from "../instance/InstanceReader.sol";
22
23
  import {IRegisterable} from "../shared/IRegisterable.sol";
23
24
  import {Registerable} from "../shared/Registerable.sol";
24
25
 
25
- contract Pool is BaseComponent, IPoolComponent {
26
+ abstract contract Pool is BaseComponent, IPoolComponent {
26
27
  using NftIdLib for NftId;
27
28
 
28
29
  bool internal _isConfirmingApplication;
@@ -40,6 +41,8 @@ contract Pool is BaseComponent, IPoolComponent {
40
41
  // only relevant to protect callback functions for "active" pools
41
42
  IProductService private _productService;
42
43
 
44
+ IBundleService private _bundleService;
45
+
43
46
  modifier onlyPoolService() {
44
47
  require(
45
48
  msg.sender == address(_poolService),
@@ -80,6 +83,7 @@ contract Pool is BaseComponent, IPoolComponent {
80
83
 
81
84
  _poolService = _instance.getPoolService();
82
85
  _productService = _instance.getProductService();
86
+ _bundleService = _instance.getBundleService();
83
87
 
84
88
  _registerInterface(type(IPoolComponent).interfaceId);
85
89
  }
@@ -95,7 +99,7 @@ contract Pool is BaseComponent, IPoolComponent {
95
99
  returns(NftId bundleNftId)
96
100
  {
97
101
  address owner = msg.sender;
98
- bundleNftId = _poolService.createBundle(
102
+ bundleNftId = _bundleService.createBundle(
99
103
  owner,
100
104
  fee,
101
105
  initialAmount,
@@ -168,7 +172,7 @@ contract Pool is BaseComponent, IPoolComponent {
168
172
  override
169
173
  // TODO add onlyBundleOwner
170
174
  {
171
- _poolService.setBundleFee(bundleNftId, fee);
175
+ _bundleService.setBundleFee(bundleNftId, fee);
172
176
  }
173
177
 
174
178
  function lockBundle(
@@ -178,7 +182,7 @@ contract Pool is BaseComponent, IPoolComponent {
178
182
  override
179
183
  // TODO add onlyBundleOwner
180
184
  {
181
- _poolService.lockBundle(bundleNftId);
185
+ _bundleService.lockBundle(bundleNftId);
182
186
  }
183
187
 
184
188
  function unlockBundle(
@@ -188,7 +192,7 @@ contract Pool is BaseComponent, IPoolComponent {
188
192
  override
189
193
  // TODO add onlyBundleOwner
190
194
  {
191
- _poolService.unlockBundle(bundleNftId);
195
+ _bundleService.unlockBundle(bundleNftId);
192
196
  }
193
197
 
194
198
  function getSetupInfo() public view returns (ISetup.PoolSetupInfo memory setupInfo) {
@@ -213,6 +217,7 @@ contract Pool is BaseComponent, IPoolComponent {
213
217
  return (
214
218
  info,
215
219
  abi.encode(
220
+ getName(),
216
221
  ISetup.PoolSetupInfo(
217
222
  _productNftId,
218
223
  _tokenHandler,
@@ -256,7 +261,7 @@ contract Pool is BaseComponent, IPoolComponent {
256
261
  internal
257
262
  returns(NftId bundleNftId)
258
263
  {
259
- bundleNftId = _poolService.createBundle(
264
+ bundleNftId = _bundleService.createBundle(
260
265
  bundleOwner,
261
266
  fee,
262
267
  amount,
@@ -6,6 +6,7 @@ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IER
6
6
  import {IRisk} from "../instance/module/IRisk.sol";
7
7
  import {ITreasury} from "../instance/module/ITreasury.sol";
8
8
  import {IProductService} from "../instance/service/IProductService.sol";
9
+ import {IPolicyService} from "../instance/service/IPolicyService.sol";
9
10
  import {IProductComponent} from "./IProductComponent.sol";
10
11
  import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
11
12
  import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
@@ -28,10 +29,11 @@ import {Distribution} from "../components/Distribution.sol";
28
29
 
29
30
  import {zeroNftId} from "../types/NftId.sol";
30
31
 
31
- contract Product is BaseComponent, IProductComponent {
32
+ abstract contract Product is BaseComponent, IProductComponent {
32
33
  using NftIdLib for NftId;
33
34
 
34
35
  IProductService internal _productService;
36
+ IPolicyService internal _policyService;
35
37
  Pool internal _pool;
36
38
  Distribution internal _distribution;
37
39
  Fee internal _initialProductFee;
@@ -54,6 +56,7 @@ contract Product is BaseComponent, IProductComponent {
54
56
  ) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
55
57
  // TODO add validation
56
58
  _productService = _instance.getProductService();
59
+ _policyService = _instance.getPolicyService();
57
60
  _pool = Pool(pool);
58
61
  _distribution = Distribution(distribution);
59
62
  _initialProductFee = productFee;
@@ -81,7 +84,7 @@ contract Product is BaseComponent, IProductComponent {
81
84
  override
82
85
  returns (uint256 premiumAmount)
83
86
  {
84
- (premiumAmount,,,,) = _productService.calculatePremium(
87
+ (premiumAmount,,,,) = _policyService.calculatePremium(
85
88
  riskId,
86
89
  sumInsuredAmount,
87
90
  lifetime,
@@ -154,7 +157,7 @@ contract Product is BaseComponent, IProductComponent {
154
157
  NftId bundleNftId,
155
158
  ReferralId referralId
156
159
  ) internal returns (NftId nftId) {
157
- nftId = _productService.createApplication(
160
+ nftId = _policyService.createApplication(
158
161
  applicationOwner,
159
162
  riskId,
160
163
  sumInsuredAmount,
@@ -172,7 +175,7 @@ contract Product is BaseComponent, IProductComponent {
172
175
  )
173
176
  internal
174
177
  {
175
- _productService.underwrite(
178
+ _policyService.underwrite(
176
179
  policyNftId,
177
180
  requirePremiumPayment,
178
181
  activateAt);
@@ -184,7 +187,7 @@ contract Product is BaseComponent, IProductComponent {
184
187
  )
185
188
  internal
186
189
  {
187
- _productService.collectPremium(
190
+ _policyService.collectPremium(
188
191
  policyNftId,
189
192
  activateAt);
190
193
  }
@@ -195,11 +198,19 @@ contract Product is BaseComponent, IProductComponent {
195
198
  )
196
199
  internal
197
200
  {
198
- _productService.activate(
201
+ _policyService.activate(
199
202
  policyNftId,
200
203
  activateAt);
201
204
  }
202
205
 
206
+ function _close(
207
+ NftId policyNftId
208
+ )
209
+ internal
210
+ {
211
+ _policyService.close(policyNftId);
212
+ }
213
+
203
214
  function getPoolNftId() external view override returns (NftId poolNftId) {
204
215
  return getRegistry().getNftId(address(_pool));
205
216
  }
@@ -253,8 +264,8 @@ contract Product is BaseComponent, IProductComponent {
253
264
  ) = _pool.getInitialInfo();
254
265
 
255
266
  (
256
- ISetup.PoolSetupInfo memory poolSetupInfo
257
- ) = abi.decode(poolData, (ISetup.PoolSetupInfo));
267
+ , ISetup.PoolSetupInfo memory poolSetupInfo
268
+ ) = abi.decode(poolData, (string, ISetup.PoolSetupInfo));
258
269
 
259
270
  // from DistributionComponent
260
271
  (
@@ -263,12 +274,13 @@ contract Product is BaseComponent, IProductComponent {
263
274
  ) = _distribution.getInitialInfo();
264
275
 
265
276
  (
266
- ISetup.DistributionSetupInfo memory distributionSetupInfo
267
- ) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
277
+ , ISetup.DistributionSetupInfo memory distributionSetupInfo
278
+ ) = abi.decode(distributionData, (string, ISetup.DistributionSetupInfo));
268
279
 
269
280
  return (
270
281
  productInfo,
271
282
  abi.encode(
283
+ getName(),
272
284
  ISetup.ProductSetupInfo(
273
285
  _token,
274
286
  _tokenHandler,
@@ -0,0 +1,23 @@
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
+ bool private _initialized;
10
+
11
+ function __AccessManagerUpgradeableInitializeable_init(address initialAdmin) public {
12
+ require(!_initialized, "AccessManager: already initialized");
13
+
14
+ if (initialAdmin == address(0)) {
15
+ revert AccessManagerInvalidInitialAdmin(address(0));
16
+ }
17
+
18
+ // admin is active immediately and without any execution delay.
19
+ _grantRole(ADMIN_ROLE, initialAdmin, 0, 0);
20
+ _initialized = true;
21
+ }
22
+
23
+ }
@@ -2,14 +2,18 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
6
 
6
7
  import {BundleManager} from "./BundleManager.sol";
7
8
  import {InstanceReader} from "./InstanceReader.sol";
8
9
 
10
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
9
11
  import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
10
12
  import {IDistributionService} from "./service/IDistributionService.sol";
11
13
  import {IPoolService} from "./service/IPoolService.sol";
12
14
  import {IProductService} from "./service/IProductService.sol";
15
+ import {IPolicyService} from "./service/IPolicyService.sol";
16
+ import {IBundleService} from "./service/IBundleService.sol";
13
17
  import {IBundle} from "./module/IBundle.sol";
14
18
  import {ISetup} from "./module/ISetup.sol";
15
19
  import {NftId} from "../types/NftId.sol";
@@ -20,12 +24,14 @@ import {IPolicy} from "./module/IPolicy.sol";
20
24
  import {IKeyValueStore} from "./base/IKeyValueStore.sol";
21
25
 
22
26
 
23
- interface IInstance is IERC165, IKeyValueStore {
27
+ interface IInstance is IERC165, IKeyValueStore, IAccessManaged {
24
28
 
25
29
  function getComponentOwnerService() external view returns (IComponentOwnerService);
26
30
  function getDistributionService() external view returns (IDistributionService);
27
31
  function getProductService() external view returns (IProductService);
28
32
  function getPoolService() external view returns (IPoolService);
33
+ function getPolicyService() external view returns (IPolicyService);
34
+ function getBundleService() external view returns (IBundleService);
29
35
 
30
36
  function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
31
37
  function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
+
6
+ import {BundleManager} from "./BundleManager.sol";
7
+ import {InstanceReader} from "./InstanceReader.sol";
8
+
9
+ import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
10
+ import {IDistributionService} from "./service/IDistributionService.sol";
11
+ import {IPoolService} from "./service/IPoolService.sol";
12
+ import {IProductService} from "./service/IProductService.sol";
13
+ import {IBundle} from "./module/IBundle.sol";
14
+ import {ISetup} from "./module/ISetup.sol";
15
+ import {NftId} from "../types/NftId.sol";
16
+ import {StateId} from "../types/StateId.sol";
17
+ import {RiskId} from "../types/RiskId.sol";
18
+ import {IRisk} from "./module/IRisk.sol";
19
+ import {IPolicy} from "./module/IPolicy.sol";
20
+ import {IKeyValueStore} from "./base/IKeyValueStore.sol";
21
+
22
+
23
+ interface IInstanceBase is IERC165, IKeyValueStore {
24
+
25
+
26
+ }
@@ -10,23 +10,31 @@ import {IRegistry} from "../registry/IRegistry.sol";
10
10
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
11
  import {IBaseComponent} from "../components/IBaseComponent.sol";
12
12
 
13
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
13
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
14
14
  import {Instance} from "./Instance.sol";
15
15
  import {InstanceReader} from "./InstanceReader.sol";
16
16
  import {BundleManager} from "./BundleManager.sol";
17
17
 
18
18
  interface IInstanceService is IService {
19
19
 
20
+ error ErrorInstanceServiceRequestUnauhorized(address caller);
21
+ error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
22
+ error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
23
+
20
24
  event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
21
25
 
22
26
  function createInstanceClone()
23
27
  external
24
28
  returns (
25
- AccessManagerSimple clonedAccessManager,
29
+ InstanceAccessManager clonedAccessManager,
26
30
  Instance clonedInstance,
27
31
  NftId instanceNftId,
28
32
  InstanceReader clonedInstanceReader,
29
33
  BundleManager clonedBundleManager
30
34
  );
35
+
36
+ function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
37
+ function setTargetLocked(string memory targetName, bool locked) external;
38
+
31
39
  }
32
40