@etherisc/gif-next 0.0.2-f30e0eb-805 → 0.0.2-f4f2d93-430

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 (196) 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 +10 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +10 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +100 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +100 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +110 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +100 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +20 -0
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +10 -0
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +34 -14
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +80 -14
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +90 -70
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +76 -57
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +21 -11
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +208 -62
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +62 -22
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
  39. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +85 -30
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
  47. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  55. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +124 -53
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  57. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +21 -13
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +298 -160
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -14
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +104 -41
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +11 -7
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +189 -123
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +48 -48
  70. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +80 -14
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +142 -113
  74. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +80 -14
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +101 -24
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +90 -24
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +430 -14
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +136 -65
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +27 -19
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +468 -55
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +18 -14
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  98. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
  100. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  101. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
  103. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
  105. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -36
  107. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
  109. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
  111. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  112. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  113. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  114. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  115. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  116. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  117. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  118. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  119. package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
  120. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  121. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  124. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  125. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  126. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  127. package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
  128. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  129. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  130. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  131. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  132. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  133. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  134. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  135. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  136. package/artifacts/contracts/test/TestService.sol/TestService.json +101 -26
  137. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  138. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  139. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  140. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  141. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  142. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  143. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  144. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  145. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  146. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  147. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  148. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  149. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  150. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  151. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  152. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  153. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  154. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  155. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  156. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  157. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  158. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  162. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  166. package/contracts/components/Component.sol +4 -2
  167. package/contracts/components/IComponent.sol +3 -1
  168. package/contracts/components/Pool.sol +8 -4
  169. package/contracts/instance/Instance.sol +1 -0
  170. package/contracts/instance/InstanceAccessManager.sol +16 -11
  171. package/contracts/instance/InstanceReader.sol +1 -0
  172. package/contracts/instance/InstanceService.sol +19 -19
  173. package/contracts/instance/base/ComponentService.sol +17 -30
  174. package/contracts/instance/base/KeyValueStore.sol +8 -3
  175. package/contracts/instance/module/IAccess.sol +2 -2
  176. package/contracts/instance/module/IBundle.sol +6 -4
  177. package/contracts/instance/module/IComponents.sol +6 -0
  178. package/contracts/instance/service/ApplicationService.sol +9 -9
  179. package/contracts/instance/service/BundleService.sol +155 -60
  180. package/contracts/instance/service/ClaimService.sol +3 -3
  181. package/contracts/instance/service/DistributionService.sol +24 -56
  182. package/contracts/instance/service/IBundleService.sol +53 -22
  183. package/contracts/instance/service/IDistributionService.sol +1 -0
  184. package/contracts/instance/service/IPoolService.sol +65 -1
  185. package/contracts/instance/service/PolicyService.sol +60 -101
  186. package/contracts/instance/service/PoolService.sol +132 -49
  187. package/contracts/instance/service/ProductService.sol +20 -51
  188. package/contracts/registry/IRegistryService.sol +4 -3
  189. package/contracts/registry/RegistryService.sol +10 -11
  190. package/contracts/registry/ReleaseManager.sol +20 -18
  191. package/contracts/shared/IService.sol +4 -6
  192. package/contracts/shared/Service.sol +21 -7
  193. package/contracts/test/TestService.sol +1 -1
  194. package/contracts/types/Amount.sol +60 -0
  195. package/contracts/types/Fee.sol +12 -5
  196. package/package.json +1 -1
@@ -74,7 +74,7 @@ contract InstanceService is
74
74
  IRegistry registry = getRegistry();
75
75
  address registryAddress = address(registry);
76
76
  NftId registryNftId = registry.getNftId(registryAddress);
77
- address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getMajorVersion());
77
+ address registryServiceAddress = registry.getServiceAddress(REGISTRY(), getVersion().toMajorPart());
78
78
  IRegistryService registryService = IRegistryService(registryServiceAddress);
79
79
 
80
80
  clonedOzAccessManager = AccessManagerUpgradeableInitializeable(
@@ -169,7 +169,7 @@ contract InstanceService is
169
169
 
170
170
  function _grantDistributionServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
171
171
  // configure authorization for distribution service on instance
172
- address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion());
172
+ address distributionServiceAddress = getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart());
173
173
  clonedAccessManager.grantRole(DISTRIBUTION_SERVICE_ROLE(), distributionServiceAddress);
174
174
  bytes4[] memory instanceDistributionServiceSelectors = new bytes4[](11);
175
175
  instanceDistributionServiceSelectors[0] = clonedInstance.createDistributionSetup.selector;
@@ -191,7 +191,7 @@ contract InstanceService is
191
191
 
192
192
  function _grantPoolServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
193
193
  // configure authorization for pool service on instance
194
- address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getMajorVersion());
194
+ address poolServiceAddress = getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart());
195
195
  clonedAccessManager.grantRole(POOL_SERVICE_ROLE(), address(poolServiceAddress));
196
196
  bytes4[] memory instancePoolServiceSelectors = new bytes4[](4);
197
197
  instancePoolServiceSelectors[0] = clonedInstance.createPoolSetup.selector;
@@ -204,7 +204,7 @@ contract InstanceService is
204
204
 
205
205
  function _grantProductServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
206
206
  // configure authorization for product service on instance
207
- address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getMajorVersion());
207
+ address productServiceAddress = getRegistry().getServiceAddress(PRODUCT(), getVersion().toMajorPart());
208
208
  clonedAccessManager.grantRole(PRODUCT_SERVICE_ROLE(), address(productServiceAddress));
209
209
  bytes4[] memory instanceProductServiceSelectors = new bytes4[](5);
210
210
  instanceProductServiceSelectors[0] = clonedInstance.createProductSetup.selector;
@@ -220,7 +220,7 @@ contract InstanceService is
220
220
 
221
221
  function _grantApplicationServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
222
222
  // configure authorization for application services on instance
223
- address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getMajorVersion());
223
+ address applicationServiceAddress = getRegistry().getServiceAddress(APPLICATION(), getVersion().toMajorPart());
224
224
  clonedAccessManager.grantRole(APPLICATION_SERVICE_ROLE(), applicationServiceAddress);
225
225
  bytes4[] memory instanceApplicationServiceSelectors = new bytes4[](3);
226
226
  instanceApplicationServiceSelectors[0] = clonedInstance.createApplication.selector;
@@ -234,7 +234,7 @@ contract InstanceService is
234
234
 
235
235
  function _grantPolicyServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
236
236
  // configure authorization for policy services on instance
237
- address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getMajorVersion());
237
+ address policyServiceAddress = getRegistry().getServiceAddress(POLICY(), getVersion().toMajorPart());
238
238
  clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), policyServiceAddress);
239
239
  bytes4[] memory instancePolicyServiceSelectors = new bytes4[](2);
240
240
  instancePolicyServiceSelectors[0] = clonedInstance.updatePolicy.selector;
@@ -247,7 +247,7 @@ contract InstanceService is
247
247
 
248
248
  function _grantClaimServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
249
249
  // configure authorization for claim/payout services on instance
250
- address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getMajorVersion());
250
+ address claimServiceAddress = getRegistry().getServiceAddress(CLAIM(), getVersion().toMajorPart());
251
251
  clonedAccessManager.grantRole(POLICY_SERVICE_ROLE(), claimServiceAddress);
252
252
  // TODO add claims function authz
253
253
  bytes4[] memory instanceClaimServiceSelectors = new bytes4[](0);
@@ -261,7 +261,7 @@ contract InstanceService is
261
261
 
262
262
  function _grantBundleServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance, BundleManager clonedBundleManager) internal {
263
263
  // configure authorization for bundle service on instance
264
- address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getMajorVersion());
264
+ address bundleServiceAddress = getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart());
265
265
  clonedAccessManager.grantRole(BUNDLE_SERVICE_ROLE(), address(bundleServiceAddress));
266
266
  bytes4[] memory instanceBundleServiceSelectors = new bytes4[](3);
267
267
  instanceBundleServiceSelectors[0] = clonedInstance.createBundle.selector;
@@ -287,7 +287,7 @@ contract InstanceService is
287
287
 
288
288
  function _grantInstanceServiceAuthorizations(InstanceAccessManager clonedAccessManager, Instance clonedInstance) internal {
289
289
  // configure authorization for instance service on instance
290
- address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
290
+ address instanceServiceAddress = getRegistry().getServiceAddress(INSTANCE(), getVersion().toMajorPart());
291
291
  clonedAccessManager.grantRole(INSTANCE_SERVICE_ROLE(), instanceServiceAddress);
292
292
  bytes4[] memory instanceInstanceServiceSelectors = new bytes4[](1);
293
293
  instanceInstanceServiceSelectors[0] = clonedInstance.setInstanceReader.selector;
@@ -359,7 +359,7 @@ contract InstanceService is
359
359
  _masterInstanceReader = instanceReaderAddress;
360
360
  _masterInstanceBundleManager = bundleManagerAddress;
361
361
 
362
- IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getMajorVersion()));
362
+ IRegistryService registryService = IRegistryService(getRegistry().getServiceAddress(REGISTRY(), getVersion().toMajorPart()));
363
363
  IInstance masterInstance = IInstance(_masterInstance);
364
364
  IRegistry.ObjectInfo memory info = registryService.registerInstance(masterInstance, getOwner());
365
365
  masterInstanceNftId = info.nftId;
@@ -408,7 +408,7 @@ contract InstanceService is
408
408
  }
409
409
 
410
410
  // From IService
411
- function getDomain() public pure override(Service, IService) returns(ObjectType) {
411
+ function getDomain() public pure override returns(ObjectType) {
412
412
  return INSTANCE();
413
413
  }
414
414
 
@@ -426,7 +426,7 @@ contract InstanceService is
426
426
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
427
427
  // TODO while InstanceService is not deployed in InstanceServiceManager constructor
428
428
  // owner is InstanceServiceManager deployer
429
- initializeService(registryAddress, owner);
429
+ initializeService(registryAddress, address(0), owner);
430
430
  registerInterface(type(IInstanceService).interfaceId);
431
431
  }
432
432
 
@@ -459,18 +459,18 @@ contract InstanceService is
459
459
 
460
460
  // TODO called by component, but target can be component helper...so needs target name
461
461
  // TODO check that targetName associated with component...how???
462
- //function setTargetLocked(string memory targetName, bool locked) onlyComponent external {
463
462
  function setComponentLocked(bool locked) onlyComponent external {
464
463
  address componentAddress = msg.sender;
465
464
  IRegistry registry = getRegistry();
466
465
  NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
467
- address instanceAddress = registry.getObjectInfo(instanceNftId).objectAddress;
468
- IInstance instance = IInstance(instanceAddress);
469
466
 
470
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
471
- // TODO setLocked by target address?
472
- string memory componentName = ShortStrings.toString(accessManager.getTargetInfo(componentAddress).name);
473
- accessManager.setTargetLocked(componentName, locked);
467
+ IInstance instance = IInstance(
468
+ registry.getObjectInfo(
469
+ instanceNftId).objectAddress);
470
+
471
+ instance.getInstanceAccessManager().setTargetLocked(
472
+ componentAddress,
473
+ locked);
474
474
  }
475
475
 
476
476
  function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
@@ -16,7 +16,6 @@ import {InstanceAccessManager} from "../InstanceAccessManager.sol";
16
16
 
17
17
  abstract contract ComponentService is Service {
18
18
 
19
- error ErrorComponentServiceAlreadyRegistered(address component, NftId nftId);
20
19
  error ErrorComponentServiceNotComponent(address component);
21
20
  error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
22
21
  error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
@@ -33,13 +32,15 @@ abstract contract ComponentService is Service {
33
32
  // view functions
34
33
 
35
34
  function getRegistryService() public view virtual returns (IRegistryService) {
36
- address service = getRegistry().getServiceAddress(REGISTRY(), getMajorVersion());
37
- return IRegistryService(service);
35
+ return IRegistryService(_getServiceAddress(REGISTRY()));
38
36
  }
39
37
 
40
38
  function getInstanceService() public view returns (InstanceService) {
41
- address service = getRegistry().getServiceAddress(INSTANCE(), getMajorVersion());
42
- return InstanceService(service);
39
+ return InstanceService(_getServiceAddress(INSTANCE()));
40
+ }
41
+
42
+ function _getServiceAddress(ObjectType domain) internal view returns (address) {
43
+ return getRegistry().getServiceAddress(domain, getVersion().toMajorPart());
43
44
  }
44
45
 
45
46
  // internal functions
@@ -60,12 +61,6 @@ abstract contract ComponentService is Service {
60
61
  // component may only be registerd by initial owner of component
61
62
  owner = msg.sender;
62
63
 
63
- // check component has not already been registerd
64
- NftId compoentNftId = getRegistry().getNftId(componentAddress);
65
- if(compoentNftId.gtz()) {
66
- revert ErrorComponentServiceAlreadyRegistered(componentAddress, compoentNftId);
67
- }
68
-
69
64
  // check this is a component
70
65
  component = IComponent(componentAddress);
71
66
  if(!component.supportsInterface(type(IComponent).interfaceId)) {
@@ -87,48 +82,40 @@ abstract contract ComponentService is Service {
87
82
  // check instance has assigned required role to owner
88
83
  instanceNftId = componentInfo.parentNftId;
89
84
  instance = _getInstance(instanceNftId);
90
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
91
- bool hasRole = accessManager.hasRole(
92
- requiredRole,
93
- owner);
94
-
95
- if(!hasRole) {
85
+ if(!instance.getInstanceAccessManager().hasRole(requiredRole, owner)) {
96
86
  revert ErrorComponentServiceExpectedRoleMissing(instanceNftId, requiredRole, owner);
97
87
  }
98
88
  }
99
89
 
100
90
  // internal view functions
101
91
 
102
- function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
103
- IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
104
- return IInstance(instanceInfo.objectAddress);
105
- }
106
-
107
92
  function _getAndVerifyComponentInfoAndInstance(
108
- //address component,
109
93
  ObjectType expectedType
110
94
  )
111
95
  internal
112
96
  view
113
97
  returns(
98
+ NftId nftId,
114
99
  IRegistry.ObjectInfo memory info,
115
100
  IInstance instance
116
101
  )
117
102
  {
118
103
  IRegistry registry = getRegistry();
119
- //TODO redundant check -> just check type
120
- //NftId componentNftId = registry.getNftId(component);
121
- //require(componentNftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
122
104
 
123
105
  info = registry.getObjectInfo(msg.sender);
124
106
  require(info.objectType == expectedType, "OBJECT_TYPE_INVALID");
125
107
 
126
- address instanceAddress = registry.getObjectInfo(info.parentNftId).objectAddress;
127
- instance = IInstance(instanceAddress);
108
+ nftId = info.nftId;
109
+ instance = _getInstance(info.parentNftId);
128
110
 
129
- InstanceAccessManager accessManager = instance.getInstanceAccessManager();
130
- if (accessManager.isTargetLocked(info.objectAddress)) {
111
+ if (instance.getInstanceAccessManager().isTargetLocked(info.objectAddress)) {
131
112
  revert IAccess.ErrorIAccessTargetLocked(info.objectAddress);
132
113
  }
133
114
  }
115
+
116
+ function _getInstance(NftId instanceNftId) internal view returns (IInstance) {
117
+ return IInstance(
118
+ getRegistry().getObjectInfo(
119
+ instanceNftId).objectAddress);
120
+ }
134
121
  }
@@ -5,7 +5,7 @@ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blockn
5
5
  import {Key32, KeyId, Key32Lib} from "../../types/Key32.sol";
6
6
  import {NftId} from "../../types/NftId.sol";
7
7
  import {ObjectType} from "../../types/ObjectType.sol";
8
- import {StateId, ACTIVE} from "../../types/StateId.sol";
8
+ import {StateId, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
9
9
  import {Timestamp, TimestampLib} from "../../types/Timestamp.sol";
10
10
 
11
11
  import {Lifecycle} from "./Lifecycle.sol";
@@ -79,10 +79,15 @@ contract KeyValueStore is Lifecycle, IKeyValueStore {
79
79
  // update data
80
80
  _value[key32].data = data;
81
81
 
82
- // update metadata (and state)
82
+ // update state
83
+ if(state != KEEP_STATE()) {
84
+ metadata.state = state;
85
+ }
86
+
87
+ // update reest of metadata
83
88
  address updatedBy = msg.sender;
84
89
  Blocknumber lastUpdatedIn = metadata.updatedIn;
85
- metadata.state = state;
90
+
86
91
  metadata.updatedBy = updatedBy;
87
92
  metadata.updatedIn = blockBlocknumber();
88
93
 
@@ -43,9 +43,9 @@ interface IAccess {
43
43
  error ErrorIAccessRoleTypeInvalid(RoleId roleId, Type rtype);
44
44
 
45
45
  error ErrorIAccessTargetAddressZero();
46
- error ErrorIAccessTargetDoesNotExist(ShortString name);
46
+ error ErrorIAccessTargetDoesNotExist(address target);
47
47
  error ErrorIAccessTargetExists(address target, ShortString name);
48
- error ErrorIAccessTargetTypeInvalid(ShortString name, Type ttype);
48
+ error ErrorIAccessTargetTypeInvalid(address target, Type ttype);
49
49
  error ErrorIAccessTargetNameEmpty(address target);
50
50
  error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
51
51
  error ErrorIAccessTargetLocked(address target);
@@ -1,21 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Amount} from "../../types/Amount.sol";
4
5
  import {NftId} from "../../types/NftId.sol";
5
6
  import {Fee} from "../../types/Fee.sol";
6
7
  import {Seconds} from "../../types/Seconds.sol";
7
8
  import {Timestamp} from "../../types/Timestamp.sol";
8
9
 
9
10
  interface IBundle {
11
+
10
12
  struct BundleInfo {
11
13
  NftId poolNftId;
12
14
  Fee fee; // bundle fee on net premium amounts
13
15
  bytes filter; // required conditions for applications to be considered for collateralization by this bundle
14
- uint256 capitalAmount; // net investment capital + net premiums - payouts
15
- uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
16
- uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
16
+ Amount capitalAmount; // net stakings + net premiums - payouts
17
+ Amount lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= capital amount)
18
+ Amount feeAmount; // accumulated fee amount
17
19
  Seconds lifetime;
18
- Timestamp expiredAt; // no new policies
20
+ Timestamp expiredAt; // no new policies starting with this timestamp
19
21
  Timestamp closedAt; // no open policies, locked amount = 0
20
22
  }
21
23
  }
@@ -3,6 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
+ import {Amount} from "../../types/Amount.sol";
6
7
  import {Fee} from "../../types/Fee.sol";
7
8
  import {NftId} from "../../types/NftId.sol";
8
9
  import {RoleId} from "../../types/RoleId.sol";
@@ -16,13 +17,18 @@ interface IComponents {
16
17
  IERC20Metadata token;
17
18
  TokenHandler tokenHandler;
18
19
  address wallet;
20
+ Amount balanceAmount; // calculated balance (may not necessarily match withg wallet balance)
21
+ Amount feeAmount; // accumulated fees belonging to component owner
19
22
  bytes data; // will hold component type specific additional info (eg encoded pool info)
20
23
  }
21
24
 
22
25
  struct PoolInfo {
23
26
  NftId productNftId; // the nft of the product this pool is linked to
24
27
  RoleId bundleOwnerRole; // the required role for bundle owners
28
+ // TODO maxCapitalAmount -> maxBalanceAmount
25
29
  uint256 maxCapitalAmount; // max capital amount allowed for pool
30
+ uint256 balanceAmount; // current pool balance (accounting view)
31
+ uint256 feeAmount; // accumulated fee amount
26
32
  bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
27
33
  bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
28
34
  bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
@@ -65,14 +65,14 @@ contract ApplicationService is
65
65
  address initialOwner;
66
66
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
67
67
 
68
- initializeService(registryAddress, owner);
68
+ initializeService(registryAddress, address(0), owner);
69
69
  registerInterface(type(IApplicationService).interfaceId);
70
70
 
71
- _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getMajorVersion()));
71
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart()));
72
72
  }
73
73
 
74
74
 
75
- function getDomain() public pure override(IService, Service) returns(ObjectType) {
75
+ function getDomain() public pure override returns(ObjectType) {
76
76
  return APPLICATION();
77
77
  }
78
78
 
@@ -90,13 +90,13 @@ contract ApplicationService is
90
90
  virtual
91
91
  returns (NftId applicationNftId)
92
92
  {
93
- (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
93
+ (NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
94
94
  // TODO: add validations (see create bundle in pool service)
95
95
 
96
96
  applicationNftId = getRegistryService().registerPolicy(
97
97
  IRegistry.ObjectInfo(
98
98
  zeroNftId(),
99
- productInfo.nftId,
99
+ productNftId,
100
100
  POLICY(),
101
101
  false, // intercepting property for policies is defined on product
102
102
  address(0),
@@ -107,7 +107,7 @@ contract ApplicationService is
107
107
 
108
108
  // (uint256 premiumAmount,,,,,) = calculatePremium(
109
109
  IPolicy.Premium memory premium = calculatePremium(
110
- productInfo.nftId,
110
+ productNftId,
111
111
  riskId,
112
112
  sumInsuredAmount,
113
113
  lifetime,
@@ -117,7 +117,7 @@ contract ApplicationService is
117
117
  );
118
118
 
119
119
  IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
120
- productInfo.nftId,
120
+ productNftId,
121
121
  bundleNftId,
122
122
  referralId,
123
123
  riskId,
@@ -172,7 +172,7 @@ contract ApplicationService is
172
172
  external
173
173
  virtual override
174
174
  {
175
- (, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
175
+ (,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
176
176
  instance.updateApplicationState(applicationNftId, REVOKED());
177
177
  }
178
178
 
@@ -337,7 +337,7 @@ contract ApplicationService is
337
337
 
338
338
  function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
339
339
  IRegistry.ObjectInfo memory productInfo;
340
- (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
340
+ (, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
341
341
  product = Product(productInfo.objectAddress);
342
342
  }
343
343