@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.
- package/README.md +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +10 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +10 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +100 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +100 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +110 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +100 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +20 -0
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +10 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +34 -14
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +80 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +90 -70
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +76 -57
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +21 -11
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +208 -62
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +62 -22
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +85 -30
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +124 -53
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +21 -13
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +298 -160
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -14
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +104 -41
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +11 -7
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +189 -123
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +48 -48
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +80 -14
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +142 -113
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +80 -14
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +101 -24
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +90 -24
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +430 -14
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +136 -65
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +27 -19
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +468 -55
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +18 -14
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -36
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +101 -26
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +4 -2
- package/contracts/components/IComponent.sol +3 -1
- package/contracts/components/Pool.sol +8 -4
- package/contracts/instance/Instance.sol +1 -0
- package/contracts/instance/InstanceAccessManager.sol +16 -11
- package/contracts/instance/InstanceReader.sol +1 -0
- package/contracts/instance/InstanceService.sol +19 -19
- package/contracts/instance/base/ComponentService.sol +17 -30
- package/contracts/instance/base/KeyValueStore.sol +8 -3
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +6 -4
- package/contracts/instance/module/IComponents.sol +6 -0
- package/contracts/instance/service/ApplicationService.sol +9 -9
- package/contracts/instance/service/BundleService.sol +155 -60
- package/contracts/instance/service/ClaimService.sol +3 -3
- package/contracts/instance/service/DistributionService.sol +24 -56
- package/contracts/instance/service/IBundleService.sol +53 -22
- package/contracts/instance/service/IDistributionService.sol +1 -0
- package/contracts/instance/service/IPoolService.sol +65 -1
- package/contracts/instance/service/PolicyService.sol +60 -101
- package/contracts/instance/service/PoolService.sol +132 -49
- package/contracts/instance/service/ProductService.sol +20 -51
- package/contracts/registry/IRegistryService.sol +4 -3
- package/contracts/registry/RegistryService.sol +10 -11
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/Service.sol +21 -7
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Fee.sol +12 -5
- 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(),
|
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(),
|
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(),
|
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(),
|
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(),
|
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(),
|
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(),
|
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(),
|
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(),
|
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(),
|
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
|
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
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
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
|
-
|
37
|
-
return IRegistryService(service);
|
35
|
+
return IRegistryService(_getServiceAddress(REGISTRY()));
|
38
36
|
}
|
39
37
|
|
40
38
|
function getInstanceService() public view returns (InstanceService) {
|
41
|
-
|
42
|
-
|
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
|
-
|
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
|
-
|
127
|
-
instance =
|
108
|
+
nftId = info.nftId;
|
109
|
+
instance = _getInstance(info.parentNftId);
|
128
110
|
|
129
|
-
|
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
|
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
|
-
|
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(
|
46
|
+
error ErrorIAccessTargetDoesNotExist(address target);
|
47
47
|
error ErrorIAccessTargetExists(address target, ShortString name);
|
48
|
-
error ErrorIAccessTargetTypeInvalid(
|
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
|
-
|
15
|
-
|
16
|
-
|
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(),
|
71
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart()));
|
72
72
|
}
|
73
73
|
|
74
74
|
|
75
|
-
function getDomain() public pure override
|
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
|
-
(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
(
|
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
|
|