@etherisc/gif-next 0.0.2-bc11089-132 → 0.0.2-bca28f1-935
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 +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +897 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +896 -235
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +137 -86
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +798 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +662 -43
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +661 -5
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +603 -204
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +529 -122
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
- 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 +706 -56
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -19
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +560 -272
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +103 -176
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +460 -191
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +187 -85
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +321 -9
- 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/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +24 -13
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.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 +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +495 -100
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +172 -26
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +554 -62
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +197 -23
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IApplicationService.sol/IApplicationService.json} +221 -104
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +181 -52
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +229 -19
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +152 -32
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +32 -19
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +32 -19
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +481 -87
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +203 -25
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +301 -62
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +169 -23
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +301 -62
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +169 -15
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +185 -77
- 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 +238 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +243 -129
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +181 -97
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +150 -29
- 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/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +37 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +18 -5
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +32 -19
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +156 -11
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +156 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -11
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +178 -19
- 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/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +152 -11
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +196 -37
- 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/TestVersionable.sol/TestVersionable.json +8 -8
- 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/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- 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/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- 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 +236 -0
- package/contracts/components/Distribution.sol +209 -64
- package/contracts/components/IComponent.sol +50 -0
- package/contracts/components/IDistributionComponent.sol +59 -3
- package/contracts/components/IPoolComponent.sol +50 -29
- package/contracts/components/IProductComponent.sol +7 -3
- package/contracts/components/Pool.sol +135 -152
- package/contracts/components/Product.sol +103 -117
- package/contracts/instance/BundleManager.sol +7 -11
- package/contracts/instance/IInstance.sol +35 -11
- package/contracts/instance/IInstanceService.sol +23 -2
- package/contracts/instance/Instance.sol +67 -62
- package/contracts/instance/InstanceAccessManager.sol +31 -38
- package/contracts/instance/InstanceReader.sol +3 -25
- package/contracts/instance/InstanceService.sol +198 -56
- package/contracts/instance/InstanceServiceManager.sol +5 -8
- package/contracts/instance/ObjectManager.sol +7 -24
- package/contracts/instance/base/ComponentService.sol +134 -0
- package/contracts/instance/module/IAccess.sol +4 -5
- package/contracts/instance/module/ISetup.sol +5 -4
- package/contracts/instance/service/ApplicationService.sol +268 -0
- package/contracts/instance/service/BundleService.sol +52 -14
- package/contracts/instance/service/BundleServiceManager.sol +5 -8
- package/contracts/instance/service/DistributionService.sol +208 -49
- package/contracts/instance/service/DistributionServiceManager.sol +6 -9
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +12 -3
- package/contracts/instance/service/IDistributionService.sol +53 -0
- package/contracts/instance/service/IPolicyService.sol +17 -16
- package/contracts/instance/service/PolicyService.sol +148 -132
- package/contracts/instance/service/PoolService.sol +27 -42
- package/contracts/instance/service/PoolServiceManager.sol +5 -8
- package/contracts/instance/service/ProductService.sol +100 -40
- package/contracts/registry/ChainNft.sol +1 -1
- package/contracts/registry/IRegistry.sol +37 -19
- package/contracts/registry/IRegistryService.sol +30 -13
- package/contracts/registry/Registry.sol +233 -217
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +81 -162
- package/contracts/registry/RegistryServiceManager.sol +18 -36
- package/contracts/registry/ReleaseManager.sol +331 -0
- package/contracts/registry/TokenRegistry.sol +11 -9
- package/contracts/shared/ERC165.sol +12 -11
- package/contracts/shared/INftOwnable.sol +12 -6
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +15 -0
- package/contracts/shared/IService.sol +2 -1
- package/contracts/shared/IVersionable.sol +2 -2
- package/contracts/shared/NftOwnable.sol +113 -57
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +6 -5
- package/contracts/shared/Registerable.sol +15 -24
- package/contracts/shared/RegistryLinked.sol +64 -0
- package/contracts/shared/Service.sol +18 -13
- package/contracts/shared/Versionable.sol +3 -2
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +4 -3
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +6 -2
- package/contracts/types/RoleId.sol +4 -5
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -148
- package/contracts/components/IBaseComponent.sol +0 -32
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -72
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -4,7 +4,6 @@ pragma solidity ^0.8.19;
|
|
4
4
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
5
|
import {IProductComponent} from "../../components/IProductComponent.sol";
|
6
6
|
import {Product} from "../../components/Product.sol";
|
7
|
-
import {IBaseComponent} from "../../components/IBaseComponent.sol";
|
8
7
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
9
8
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
10
9
|
import {IInstance} from "../IInstance.sol";
|
@@ -20,11 +19,11 @@ import {TokenHandler} from "../../shared/TokenHandler.sol";
|
|
20
19
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
21
20
|
import {Versionable} from "../../shared/Versionable.sol";
|
22
21
|
|
23
|
-
import {Timestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
22
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
23
|
import {UFixed, UFixedLib} from "../../types/UFixed.sol";
|
25
24
|
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
26
|
-
import {ObjectType, INSTANCE, PRODUCT, POLICY} from "../../types/ObjectType.sol";
|
27
|
-
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE} from "../../types/StateId.sol";
|
25
|
+
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, BUNDLE} from "../../types/ObjectType.sol";
|
26
|
+
import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
|
28
27
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
29
28
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
30
29
|
import {ReferralId} from "../../types/Referral.sol";
|
@@ -35,20 +34,19 @@ import {Version, VersionLib} from "../../types/Version.sol";
|
|
35
34
|
|
36
35
|
import {IService} from "../../shared/IService.sol";
|
37
36
|
import {Service} from "../../shared/Service.sol";
|
38
|
-
import {
|
37
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
39
38
|
import {IPolicyService} from "./IPolicyService.sol";
|
40
39
|
import {InstanceReader} from "../InstanceReader.sol";
|
41
40
|
import {IPoolService} from "./IPoolService.sol";
|
42
41
|
import {IBundleService} from "./IBundleService.sol";
|
43
|
-
import {POOL_SERVICE_NAME} from "./PoolService.sol";
|
44
|
-
import {BUNDLE_SERVICE_NAME} from "./BundleService.sol";
|
45
42
|
|
46
|
-
string constant POLICY_SERVICE_NAME = "PolicyService";
|
47
43
|
|
48
|
-
contract PolicyService is
|
44
|
+
contract PolicyService is
|
45
|
+
ComponentService,
|
46
|
+
IPolicyService
|
47
|
+
{
|
49
48
|
using NftIdLib for NftId;
|
50
|
-
|
51
|
-
string public constant NAME = "PolicyService";
|
49
|
+
using TimestampLib for Timestamp;
|
52
50
|
|
53
51
|
IPoolService internal _poolService;
|
54
52
|
IBundleService internal _bundleService;
|
@@ -67,17 +65,17 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
67
65
|
address initialOwner;
|
68
66
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
69
67
|
|
70
|
-
|
68
|
+
initializeService(registryAddress, owner);
|
71
69
|
|
72
|
-
_poolService = IPoolService(
|
73
|
-
_bundleService = IBundleService(
|
70
|
+
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getMajorVersion()));
|
71
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getMajorVersion()));
|
74
72
|
|
75
|
-
|
73
|
+
registerInterface(type(IPolicyService).interfaceId);
|
76
74
|
}
|
77
75
|
|
78
76
|
|
79
|
-
function
|
80
|
-
return
|
77
|
+
function getDomain() public pure override(IService, Service) returns(ObjectType) {
|
78
|
+
return POLICY();
|
81
79
|
}
|
82
80
|
|
83
81
|
|
@@ -86,7 +84,8 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
86
84
|
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
87
85
|
product = Product(productInfo.objectAddress);
|
88
86
|
}
|
89
|
-
|
87
|
+
|
88
|
+
// TODO: no access restrictions
|
90
89
|
function calculatePremium(
|
91
90
|
RiskId riskId,
|
92
91
|
uint256 sumInsuredAmount,
|
@@ -97,7 +96,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
97
96
|
)
|
98
97
|
public
|
99
98
|
view
|
100
|
-
override
|
99
|
+
virtual override
|
101
100
|
returns (
|
102
101
|
uint256 premiumAmount,
|
103
102
|
uint256 productFeeAmount,
|
@@ -182,9 +181,13 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
182
181
|
bytes memory applicationData,
|
183
182
|
NftId bundleNftId,
|
184
183
|
ReferralId referralId
|
185
|
-
)
|
184
|
+
)
|
185
|
+
external
|
186
|
+
virtual override
|
187
|
+
returns (NftId policyNftId)
|
188
|
+
{
|
186
189
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
187
|
-
// TODO add validations (see create bundle in pool service)
|
190
|
+
// TODO: add validations (see create bundle in pool service)
|
188
191
|
|
189
192
|
policyNftId = getRegistryService().registerPolicy(
|
190
193
|
IRegistry.ObjectInfo(
|
@@ -229,7 +232,7 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
229
232
|
instance.createPolicy(policyNftId, policyInfo);
|
230
233
|
instance.updatePolicyState(policyNftId, APPLIED());
|
231
234
|
|
232
|
-
// TODO add logging
|
235
|
+
// TODO: add logging
|
233
236
|
}
|
234
237
|
|
235
238
|
function _getAndVerifyUnderwritingSetup(
|
@@ -241,118 +244,78 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
241
244
|
internal
|
242
245
|
view
|
243
246
|
returns (
|
247
|
+
NftId poolNftId,
|
244
248
|
NftId bundleNftId,
|
245
249
|
IBundle.BundleInfo memory bundleInfo,
|
246
250
|
uint256 collateralAmount
|
247
251
|
)
|
248
252
|
{
|
249
253
|
// check match between policy and bundle (via pool)
|
254
|
+
poolNftId = productSetupInfo.poolNftId;
|
250
255
|
bundleNftId = policyInfo.bundleNftId;
|
251
256
|
bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
252
|
-
require(bundleInfo.poolNftId ==
|
257
|
+
require(bundleInfo.poolNftId == poolNftId, "POLICY_BUNDLE_MISMATCH");
|
253
258
|
|
254
259
|
// calculate required collateral
|
255
|
-
NftId poolNftId = productSetupInfo.poolNftId;
|
256
260
|
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
257
261
|
|
258
262
|
// obtain remaining return values
|
263
|
+
// TODO required collateral amount should be calculated by pool service, not policy service
|
259
264
|
collateralAmount = calculateRequiredCollateral(poolInfo.collateralizationLevel, policyInfo.sumInsuredAmount);
|
260
265
|
}
|
261
266
|
|
262
|
-
function _lockCollateralInBundle(
|
263
|
-
IInstance instance,
|
264
|
-
NftId bundleNftId,
|
265
|
-
IBundle.BundleInfo memory bundleInfo,
|
266
|
-
NftId policyNftId,
|
267
|
-
uint256 collateralAmount
|
268
|
-
)
|
269
|
-
internal
|
270
|
-
returns (IBundle.BundleInfo memory)
|
271
|
-
{
|
272
|
-
bundleInfo.lockedAmount += collateralAmount;
|
273
|
-
// TODO: track policy associated to bundle in bundlemanager (tbd) and how much is locked for it
|
274
|
-
return bundleInfo;
|
275
|
-
}
|
276
|
-
|
277
|
-
function _underwriteByPool(
|
278
|
-
NftId poolNftId,
|
279
|
-
NftId policyNftId,
|
280
|
-
IPolicy.PolicyInfo memory policyInfo,
|
281
|
-
bytes memory bundleFilter,
|
282
|
-
uint256 collateralAmount
|
283
|
-
)
|
284
|
-
internal
|
285
|
-
{
|
286
|
-
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
287
|
-
IPoolComponent pool = IPoolComponent(poolAddress);
|
288
|
-
pool.underwrite(
|
289
|
-
policyNftId,
|
290
|
-
policyInfo.applicationData,
|
291
|
-
bundleFilter,
|
292
|
-
collateralAmount);
|
293
|
-
}
|
294
|
-
|
295
267
|
|
296
|
-
function
|
268
|
+
function decline(
|
297
269
|
NftId policyNftId
|
298
270
|
)
|
299
271
|
external
|
300
272
|
override
|
301
273
|
{
|
302
|
-
require(false, "ERROR:PRS-
|
274
|
+
require(false, "ERROR:PRS-235:NOT_YET_IMPLEMENTED");
|
303
275
|
}
|
304
276
|
|
305
277
|
|
278
|
+
/// @dev underwites application which includes the locking of the required collateral from the pool.
|
306
279
|
function underwrite(
|
307
|
-
NftId policyNftId
|
280
|
+
NftId applicationNftId, // = policyNftId
|
308
281
|
bool requirePremiumPayment,
|
309
282
|
Timestamp activateAt
|
310
283
|
)
|
311
284
|
external
|
312
|
-
override
|
285
|
+
virtual override
|
313
286
|
{
|
314
287
|
// check caller is registered product
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
288
|
+
IInstance instance;
|
289
|
+
InstanceReader instanceReader;
|
290
|
+
NftId productNftId;
|
291
|
+
{
|
292
|
+
IRegistry.ObjectInfo memory productInfo;
|
293
|
+
(productInfo, instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
294
|
+
instanceReader = instance.getInstanceReader();
|
295
|
+
productNftId = productInfo.nftId;
|
296
|
+
}
|
320
297
|
|
321
|
-
// check
|
322
|
-
|
323
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
298
|
+
// check policy matches with calling product
|
299
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(applicationNftId);
|
324
300
|
require(policyInfo.productNftId == productNftId, "POLICY_PRODUCT_MISMATCH");
|
325
|
-
require(instanceReader.getPolicyState(policyNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
326
301
|
|
327
|
-
|
328
|
-
|
329
|
-
uint256 collateralAmount;
|
330
|
-
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
331
|
-
{
|
332
|
-
ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
|
333
|
-
IBundle.BundleInfo memory bundleInfo;
|
334
|
-
|
335
|
-
(
|
336
|
-
bundleNftId,
|
337
|
-
bundleInfo,
|
338
|
-
collateralAmount
|
339
|
-
) = _getAndVerifyUnderwritingSetup(
|
340
|
-
instance,
|
341
|
-
instanceReader,
|
342
|
-
policyInfo,
|
343
|
-
productSetupInfo
|
344
|
-
);
|
345
|
-
}
|
302
|
+
// check policy is in state applied
|
303
|
+
require(instanceReader.getPolicyState(applicationNftId) == APPLIED(), "ERROR:PRS-021:STATE_NOT_APPLIED");
|
346
304
|
|
347
|
-
|
348
|
-
|
305
|
+
(
|
306
|
+
NftId poolNftId,
|
307
|
+
NftId bundleNftId,
|
308
|
+
IBundle.BundleInfo memory bundleInfo,
|
309
|
+
uint256 collateralAmount
|
310
|
+
) = _getAndVerifyUnderwritingSetup(
|
349
311
|
instance,
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
StateId newPolicyState = UNDERWRITTEN();
|
312
|
+
instanceReader,
|
313
|
+
policyInfo,
|
314
|
+
instanceReader.getProductSetupInfo(productNftId)
|
315
|
+
);
|
355
316
|
|
317
|
+
StateId newPolicyState = UNDERWRITTEN();
|
318
|
+
|
356
319
|
// optional activation of policy
|
357
320
|
if(activateAt > zeroTimestamp()) {
|
358
321
|
newPolicyState = ACTIVE();
|
@@ -360,38 +323,56 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
360
323
|
policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
|
361
324
|
}
|
362
325
|
|
326
|
+
// lock bundle collateral
|
327
|
+
uint256 netPremiumAmount = 0; // > 0 if immediate premium payment
|
328
|
+
|
363
329
|
// optional collection of premium
|
364
330
|
if(requirePremiumPayment) {
|
365
331
|
netPremiumAmount = _processPremiumByTreasury(
|
366
332
|
instance,
|
367
|
-
|
368
|
-
|
333
|
+
productNftId,
|
334
|
+
applicationNftId,
|
369
335
|
policyInfo.premiumAmount);
|
370
336
|
|
371
337
|
policyInfo.premiumPaidAmount += policyInfo.premiumAmount;
|
372
338
|
}
|
373
339
|
|
374
|
-
|
375
|
-
|
340
|
+
// lock collateral and update bundle book keeping
|
341
|
+
// TODO introduct indirection via pool service?
|
342
|
+
// well pool would only need to be involved when a part of the collateral
|
343
|
+
// is provided by a "re insurance policy" of the pool
|
344
|
+
// but then again the policiy would likely best be attached to the bundle. really? why?
|
345
|
+
// retention level: fraction of sum insured that product will cover from pool funds directly
|
346
|
+
// eg retention level 30%, payouts up to 30% of the sum insured will be made from the product's pool directly
|
347
|
+
// for the remaining 70% the pool owns a policy that will cover claims that exceed the 30% of the sum insured
|
348
|
+
// open points:
|
349
|
+
// - do we need a link of a bundle to this policy or is it enough to know that the pool has an active policy?
|
350
|
+
// - when to buy such policies and for which amount? manual trigger or link to bundle creation and/or funding?
|
351
|
+
bundleInfo = _bundleService.lockCollateral(
|
352
|
+
instance,
|
353
|
+
applicationNftId,
|
354
|
+
bundleNftId,
|
355
|
+
collateralAmount,
|
356
|
+
netPremiumAmount);
|
376
357
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
);
|
389
|
-
}
|
358
|
+
instance.updatePolicy(applicationNftId, policyInfo, newPolicyState);
|
359
|
+
|
360
|
+
// also verify/confirm application by pool if necessary
|
361
|
+
if(instanceReader.getPoolSetupInfo(poolNftId).isVerifyingApplications) {
|
362
|
+
IPoolComponent pool = IPoolComponent(
|
363
|
+
getRegistry().getObjectInfo(poolNftId).objectAddress);
|
364
|
+
|
365
|
+
pool.verifyApplication(
|
366
|
+
applicationNftId,
|
367
|
+
policyInfo.applicationData,
|
368
|
+
bundleInfo.filter,
|
369
|
+
collateralAmount);
|
390
370
|
}
|
391
371
|
|
392
|
-
// TODO add logging
|
372
|
+
// TODO: add logging
|
393
373
|
}
|
394
374
|
|
375
|
+
|
395
376
|
function calculateRequiredCollateral(UFixed collateralizationLevel, uint256 sumInsuredAmount) public pure override returns(uint256 collateralAmount) {
|
396
377
|
UFixed sumInsuredUFixed = UFixedLib.toUFixed(sumInsuredAmount);
|
397
378
|
UFixed collateralUFixed = collateralizationLevel * sumInsuredUFixed;
|
@@ -402,28 +383,30 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
402
383
|
// check caller is registered product
|
403
384
|
(IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
404
385
|
InstanceReader instanceReader = instance.getInstanceReader();
|
386
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
405
387
|
|
406
|
-
|
407
|
-
|
408
|
-
|
388
|
+
if (policyInfo.premiumPaidAmount == policyInfo.premiumAmount) {
|
389
|
+
revert ErrorIPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
|
390
|
+
}
|
409
391
|
|
410
|
-
|
411
|
-
// IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
412
|
-
|
413
|
-
// uint256 premiumAmount = policyInfo.premiumAmount;
|
414
|
-
// _processPremiumByTreasury(instance, productInfo.nftId, policyNftId, premiumAmount);
|
392
|
+
uint256 unpaidPremiumAmount = policyInfo.premiumAmount - policyInfo.premiumPaidAmount;
|
415
393
|
|
416
|
-
|
417
|
-
|
394
|
+
uint256 netPremiumAmount = _processPremiumByTreasury(
|
395
|
+
instance,
|
396
|
+
productInfo.nftId,
|
397
|
+
policyNftId,
|
398
|
+
unpaidPremiumAmount);
|
399
|
+
|
400
|
+
policyInfo.premiumPaidAmount += unpaidPremiumAmount;
|
418
401
|
|
419
|
-
|
402
|
+
_bundleService.increaseBalance(instance, policyInfo.bundleNftId, netPremiumAmount);
|
403
|
+
instance.updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
420
404
|
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
// }
|
405
|
+
if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
|
406
|
+
activate(policyNftId, activateAt);
|
407
|
+
}
|
425
408
|
|
426
|
-
// TODO add logging
|
409
|
+
// TODO: add logging
|
427
410
|
}
|
428
411
|
|
429
412
|
function activate(NftId policyNftId, Timestamp activateAt) public override {
|
@@ -442,14 +425,47 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
442
425
|
|
443
426
|
instance.updatePolicy(policyNftId, policyInfo, ACTIVE());
|
444
427
|
|
445
|
-
// TODO add logging
|
428
|
+
// TODO: add logging
|
446
429
|
}
|
447
430
|
|
448
431
|
function close(
|
449
432
|
NftId policyNftId
|
450
433
|
) external override // solhint-disable-next-line no-empty-blocks
|
451
434
|
{
|
435
|
+
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
436
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
437
|
+
|
438
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
439
|
+
|
440
|
+
if (policyInfo.activatedAt.eqz()) {
|
441
|
+
revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
|
442
|
+
}
|
443
|
+
|
444
|
+
StateId state = instanceReader.getPolicyState(policyNftId);
|
445
|
+
if (state != ACTIVE()) {
|
446
|
+
revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
|
447
|
+
}
|
448
|
+
|
449
|
+
if (policyInfo.closedAt.gtz()) {
|
450
|
+
revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
|
451
|
+
}
|
452
|
+
|
453
|
+
if (policyInfo.premiumAmount != policyInfo.premiumPaidAmount) {
|
454
|
+
revert ErrorIPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
|
455
|
+
}
|
456
|
+
|
457
|
+
if (policyInfo.openClaimsCount > 0) {
|
458
|
+
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
459
|
+
}
|
460
|
+
|
461
|
+
if (TimestampLib.blockTimestamp().lte(policyInfo.expiredAt) && (policyInfo.payoutAmount < policyInfo.sumInsuredAmount)) {
|
462
|
+
revert ErrorIPolicyServicePolicyHasNotExpired(policyNftId, policyInfo.expiredAt);
|
463
|
+
}
|
464
|
+
|
465
|
+
policyInfo.closedAt = TimestampLib.blockTimestamp();
|
452
466
|
|
467
|
+
_bundleService.closePolicy(instance, policyNftId, policyInfo.bundleNftId, policyInfo.sumInsuredAmount);
|
468
|
+
instance.updatePolicy(policyNftId, policyInfo, CLOSED());
|
453
469
|
}
|
454
470
|
|
455
471
|
function _getPoolNftId(
|
@@ -503,6 +519,6 @@ contract PolicyService is ComponentServiceBase, IPolicyService {
|
|
503
519
|
}
|
504
520
|
}
|
505
521
|
|
506
|
-
// TODO add logging
|
522
|
+
// TODO: add logging
|
507
523
|
}
|
508
524
|
}
|
@@ -14,7 +14,7 @@ import {Versionable} from "../../shared/Versionable.sol";
|
|
14
14
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
15
|
|
16
16
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
|
-
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
17
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
18
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
19
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
20
|
import {Version, VersionLib} from "../../types/Version.sol";
|
@@ -24,23 +24,22 @@ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
|
24
24
|
import {IService} from "../../shared/IService.sol";
|
25
25
|
import {Service} from "../../shared/Service.sol";
|
26
26
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
27
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
28
28
|
import {IPoolService} from "./IPoolService.sol";
|
29
29
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
30
|
import {InstanceService} from "../InstanceService.sol";
|
31
31
|
import {InstanceReader} from "../InstanceReader.sol";
|
32
|
-
import {
|
32
|
+
import {IComponent} from "../../components/IComponent.sol";
|
33
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
33
34
|
|
34
35
|
string constant POOL_SERVICE_NAME = "PoolService";
|
35
36
|
|
36
37
|
contract PoolService is
|
37
|
-
|
38
|
+
ComponentService,
|
38
39
|
IPoolService
|
39
40
|
{
|
40
41
|
using NftIdLib for NftId;
|
41
42
|
|
42
|
-
string public constant NAME = "PoolService";
|
43
|
-
|
44
43
|
address internal _registryAddress;
|
45
44
|
|
46
45
|
function _initialize(
|
@@ -56,50 +55,36 @@ contract PoolService is
|
|
56
55
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
56
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
57
|
// owner is PoolServiceManager deployer
|
59
|
-
|
60
|
-
|
61
|
-
_registerInterface(type(IPoolService).interfaceId);
|
58
|
+
initializeService(registryAddress, owner);
|
59
|
+
registerInterface(type(IPoolService).interfaceId);
|
62
60
|
}
|
63
61
|
|
64
|
-
function
|
65
|
-
return
|
62
|
+
function getDomain() public pure override(Service, IService) returns(ObjectType) {
|
63
|
+
return POOL();
|
66
64
|
}
|
67
65
|
|
68
66
|
function register(address poolAddress)
|
69
67
|
external
|
70
68
|
returns(NftId poolNftId)
|
71
69
|
{
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
poolNftId = info.nftId;
|
91
|
-
ISetup.PoolSetupInfo memory initialSetup = _decodeAndVerifyPoolSetup(data);
|
92
|
-
instance.createPoolSetup(poolNftId, initialSetup);
|
93
|
-
}
|
94
|
-
|
95
|
-
function _decodeAndVerifyPoolSetup(bytes memory data) internal returns(ISetup.PoolSetupInfo memory setup)
|
96
|
-
{
|
97
|
-
setup = abi.decode(
|
98
|
-
data,
|
99
|
-
(ISetup.PoolSetupInfo)
|
100
|
-
);
|
101
|
-
|
102
|
-
// TODO add checks if applicable
|
70
|
+
(
|
71
|
+
IComponent component,
|
72
|
+
address owner,
|
73
|
+
IInstance instance,
|
74
|
+
NftId instanceNftId
|
75
|
+
) = _checkComponentForRegistration(
|
76
|
+
poolAddress,
|
77
|
+
POOL(),
|
78
|
+
POOL_OWNER_ROLE());
|
79
|
+
|
80
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
81
|
+
IRegistry.ObjectInfo memory poolInfo = getRegistryService().registerPool(pool, owner);
|
82
|
+
pool.linkToRegisteredNftId();
|
83
|
+
poolNftId = poolInfo.nftId;
|
84
|
+
|
85
|
+
instance.createPoolSetup(poolNftId, pool.getSetupInfo());
|
86
|
+
getInstanceService().createGifTarget(instanceNftId, poolAddress, pool.getName());
|
87
|
+
getInstanceService().grantPoolDefaultPermissions(instanceNftId, poolAddress, pool.getName());
|
103
88
|
}
|
104
89
|
|
105
90
|
function setFees(
|
@@ -6,7 +6,7 @@ import {ProxyManager} from "../../shared/ProxyManager.sol";
|
|
6
6
|
import {PoolService} from "./PoolService.sol";
|
7
7
|
import {Registry} from "../../registry/Registry.sol";
|
8
8
|
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
-
import {
|
9
|
+
import {REGISTRY} from "../../types/ObjectType.sol";
|
10
10
|
|
11
11
|
contract PoolServiceManager is ProxyManager {
|
12
12
|
|
@@ -26,10 +26,10 @@ contract PoolServiceManager is ProxyManager {
|
|
26
26
|
|
27
27
|
_poolService = PoolService(address(versionable));
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
//
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
33
|
//registryService.registerService(_poolService);
|
34
34
|
|
35
35
|
// TODO no nft to link yet
|
@@ -37,9 +37,6 @@ contract PoolServiceManager is ProxyManager {
|
|
37
37
|
//_linkToNftOwnable(
|
38
38
|
// address(registryAddress),
|
39
39
|
// address(_poolService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
_isDeployed = true;
|
43
40
|
}
|
44
41
|
|
45
42
|
//--- view functions ----------------------------------------------------//
|