@etherisc/gif-next 0.0.2-dc7e4cb-141 → 0.0.2-de0a1d3-009
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 +58 -11
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +131 -0
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +109 -18
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +194 -3
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +160 -21
- 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/SM.sol/SM.json +2 -2
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
- 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/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +709 -678
- package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +916 -717
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{InstanceBase.sol/InstanceBase.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +102 -28
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/{module/lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
- package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
- package/artifacts/contracts/instance/{service → base}/IService.sol/IService.json +58 -17
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +463 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
- package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{module/compensation/ICompensation.sol/ICompensation.json → base/ModuleBase.sol/ModuleBase.json} +2 -2
- package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
- package/artifacts/contracts/instance/{service → base}/ServiceBase.sol/ServiceBase.json +88 -1
- package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +71 -50
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +71 -50
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +22 -93
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +22 -93
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
- package/artifacts/contracts/instance/module/{compensation/ICompensation.sol/ICompensationModule.json → distribution/IDistribution.sol/IDistribution.json} +2 -2
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
- package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +61 -38
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +61 -38
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -5
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -5
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +104 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +126 -5
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +209 -231
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +1 -1
- package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +209 -231
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +145 -18
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +507 -0
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +57 -16
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{ComponentServiceBase.sol/ComponentServiceBase.json → IDistributionService.sol/IDistributionService.json} +91 -25
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +122 -17
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +210 -16
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +171 -12
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +303 -31
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.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/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +724 -0
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +53 -12
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyDeployer.json +248 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
- package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +87 -0
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +228 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
- package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
- 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/TestPool.sol/TestPool.dbg.json +1 -1
- package/artifacts/contracts/test/TestPool.sol/TestPool.json +194 -3
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +1 -1
- package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +209 -27
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +2 -2
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +38 -4
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +95 -8
- 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/TestVersion.sol/TestVersion.json +2 -2
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +95 -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/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +50 -11
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
- 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/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/BaseComponent.sol +7 -2
- package/contracts/components/Distribution.sol +132 -0
- package/contracts/components/IDistributionComponent.sol +47 -0
- package/contracts/components/IPoolComponent.sol +14 -0
- package/contracts/components/IProductComponent.sol +24 -5
- package/contracts/components/Pool.sol +64 -3
- package/contracts/components/Product.sol +123 -13
- package/contracts/instance/IInstance.sol +14 -14
- package/contracts/instance/Instance.sol +20 -12
- package/contracts/instance/{service → base}/ComponentServiceBase.sol +1 -0
- package/contracts/instance/base/IInstanceBase.sol +22 -0
- package/contracts/instance/base/IKeyValueStore.sol +50 -0
- package/contracts/instance/base/ILifecycle.sol +30 -0
- package/contracts/instance/{InstanceBase.sol → base/InstanceBase.sol} +33 -13
- package/contracts/instance/base/KeyValueStore.sol +161 -0
- package/contracts/instance/{module/lifecycle/LifecycleModule.sol → base/Lifecycle.sol} +50 -39
- package/contracts/instance/base/ModuleBase.sol +57 -0
- package/contracts/instance/{service → base}/ServiceBase.sol +0 -2
- package/contracts/instance/module/access/Access.sol +6 -6
- package/contracts/instance/module/bundle/BundleModule.sol +24 -118
- package/contracts/instance/module/bundle/IBundle.sol +9 -9
- package/contracts/instance/module/component/ComponentModule.sol +27 -60
- package/contracts/instance/module/component/IComponent.sol +5 -30
- package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
- package/contracts/instance/module/distribution/IDistribution.sol +10 -0
- package/contracts/instance/module/policy/IPolicy.sol +12 -9
- package/contracts/instance/module/policy/PolicyModule.sol +33 -26
- package/contracts/instance/module/pool/IPoolModule.sol +0 -1
- package/contracts/instance/module/pool/PoolModule.sol +12 -9
- package/contracts/instance/module/risk/IRisk.sol +18 -2
- package/contracts/instance/module/risk/RiskModule.sol +56 -2
- package/contracts/instance/module/treasury/ITreasury.sol +29 -50
- package/contracts/instance/module/treasury/TreasuryModule.sol +71 -85
- package/contracts/instance/service/ComponentOwnerService.sol +30 -44
- package/contracts/instance/service/DistributionService.sol +59 -0
- package/contracts/instance/service/IComponentOwnerService.sol +1 -1
- package/contracts/instance/service/IDistributionService.sol +12 -0
- package/contracts/instance/service/IPoolService.sol +8 -1
- package/contracts/instance/service/IProductService.sol +56 -7
- package/contracts/instance/service/PoolService.sol +31 -5
- package/contracts/instance/service/ProductService.sol +231 -77
- package/contracts/registry/Registry.sol +4 -4
- package/contracts/registry/RegistryUpgradeable.sol +473 -0
- package/contracts/shared/IVersionable.sol +17 -4
- package/contracts/shared/Proxy.sol +94 -0
- package/contracts/shared/Versionable.sol +13 -3
- package/contracts/shared/VersionableUpgradeable.sol +133 -0
- package/contracts/test/TestDistribution.sol +21 -0
- package/contracts/test/TestPool.sol +5 -2
- package/contracts/test/TestProduct.sol +35 -7
- package/contracts/test/TestRoleId.sol +2 -2
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Fee.sol +8 -3
- package/contracts/types/Key32.sol +45 -0
- package/contracts/types/NftId.sol +16 -1
- package/contracts/types/ObjectType.sol +24 -8
- package/contracts/types/ReferralId.sol +48 -0
- package/contracts/types/RiskId.sol +43 -0
- package/contracts/types/RoleId.sol +12 -10
- package/contracts/types/StateId.sol +7 -1
- package/contracts/types/Version.sol +8 -0
- package/package.json +1 -1
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.dbg.json +0 -4
- package/artifacts/contracts/instance/IServiceLinked.sol/IServiceLinked.json +0 -50
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
- package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
- package/artifacts/contracts/instance/module/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
- package/artifacts/contracts/instance/module/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
- package/artifacts/contracts/instance/service/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IService.sol/IService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ServiceBase.sol/ServiceBase.dbg.json +0 -4
- package/contracts/instance/IServiceLinked.sol +0 -12
- package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
- package/contracts/instance/module/compensation/ICompensation.sol +0 -10
- package/contracts/instance/module/lifecycle/ILifecycle.sol +0 -47
- /package/contracts/instance/{service → base}/IService.sol +0 -0
@@ -0,0 +1,161 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
|
5
|
+
import {Key32, KeyId, Key32Lib} from "../../types/Key32.sol";
|
6
|
+
import {NftId} from "../../types/NftId.sol";
|
7
|
+
import {ObjectType} from "../../types/ObjectType.sol";
|
8
|
+
import {StateId, ACTIVE} from "../../types/StateId.sol";
|
9
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
10
|
+
|
11
|
+
import {Lifecycle} from "./Lifecycle.sol";
|
12
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
13
|
+
|
14
|
+
contract KeyValueStore is Lifecycle, IKeyValueStore {
|
15
|
+
|
16
|
+
mapping(Key32 key32 => Value value) private _value;
|
17
|
+
address private _owner;
|
18
|
+
|
19
|
+
modifier onlyOwner() {
|
20
|
+
require(
|
21
|
+
msg.sender == _owner,
|
22
|
+
"ERROR:KVS-001:NOT_OWNER");
|
23
|
+
_;
|
24
|
+
}
|
25
|
+
|
26
|
+
constructor() {
|
27
|
+
_owner = msg.sender;
|
28
|
+
}
|
29
|
+
|
30
|
+
function create(
|
31
|
+
Key32 key32,
|
32
|
+
ObjectType objectType,
|
33
|
+
bytes memory data
|
34
|
+
)
|
35
|
+
public
|
36
|
+
onlyOwner
|
37
|
+
{
|
38
|
+
require(objectType.gtz(), "ERROR:KVS-010:TYPE_UNDEFINED");
|
39
|
+
|
40
|
+
Metadata storage metadata = _value[key32].metadata;
|
41
|
+
require(metadata.state.eqz(), "ERROR:KVS-012:ALREADY_CREATED");
|
42
|
+
|
43
|
+
address createdBy = msg.sender;
|
44
|
+
Blocknumber blocknumber = blockBlocknumber();
|
45
|
+
StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
|
46
|
+
|
47
|
+
// set metadata
|
48
|
+
metadata.objectType = objectType;
|
49
|
+
metadata.state = initialState;
|
50
|
+
metadata.updatedBy = createdBy;
|
51
|
+
metadata.updatedIn = blocknumber;
|
52
|
+
metadata.createdIn = blocknumber;
|
53
|
+
|
54
|
+
// set data
|
55
|
+
_value[key32].data = data;
|
56
|
+
|
57
|
+
// solhint-disable-next-line avoid-tx-origin
|
58
|
+
emit LogInfoCreated(toKey(key32), initialState, createdBy, tx.origin);
|
59
|
+
}
|
60
|
+
|
61
|
+
function update(Key32 key32, StateId state, bytes memory data)
|
62
|
+
public
|
63
|
+
onlyOwner
|
64
|
+
{
|
65
|
+
require(state.gtz(), "ERROR:KVS-020:STATE_UNDEFINED");
|
66
|
+
Metadata storage metadata = _value[key32].metadata;
|
67
|
+
StateId stateOld = metadata.state;
|
68
|
+
require(stateOld.gtz(), "ERROR:KVS-021:NOT_EXISTING");
|
69
|
+
|
70
|
+
// update data
|
71
|
+
_value[key32].data = data;
|
72
|
+
|
73
|
+
// update metadata (and state)
|
74
|
+
address updatedBy = msg.sender;
|
75
|
+
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
76
|
+
metadata.state = state;
|
77
|
+
metadata.updatedBy = updatedBy;
|
78
|
+
metadata.updatedIn = blockBlocknumber();
|
79
|
+
|
80
|
+
// create log entries
|
81
|
+
Key memory key = toKey(key32);
|
82
|
+
// solhint-disable-next-line avoid-tx-origin
|
83
|
+
emit LogStateUpdated(key, state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
|
84
|
+
// solhint-disable-next-line avoid-tx-origin
|
85
|
+
emit LogInfoUpdated(key, state, updatedBy, tx.origin, lastUpdatedIn);
|
86
|
+
}
|
87
|
+
|
88
|
+
function updateData(Key32 key32, bytes memory data)
|
89
|
+
public
|
90
|
+
onlyOwner
|
91
|
+
{
|
92
|
+
Metadata storage metadata = _value[key32].metadata;
|
93
|
+
StateId state = metadata.state;
|
94
|
+
require(state.gtz(), "ERROR:KVS-030:NOT_EXISTING");
|
95
|
+
|
96
|
+
// update data
|
97
|
+
_value[key32].data = data;
|
98
|
+
|
99
|
+
// update metadata
|
100
|
+
address updatedBy = msg.sender;
|
101
|
+
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
102
|
+
metadata.updatedBy = updatedBy;
|
103
|
+
metadata.updatedIn = blockBlocknumber();
|
104
|
+
|
105
|
+
// create log entry
|
106
|
+
Key memory key = toKey(key32);
|
107
|
+
// solhint-disable-next-line avoid-tx-origin
|
108
|
+
emit LogInfoUpdated(key, state, updatedBy, tx.origin, lastUpdatedIn);
|
109
|
+
}
|
110
|
+
|
111
|
+
function updateState(Key32 key32, StateId state)
|
112
|
+
public
|
113
|
+
onlyOwner
|
114
|
+
{
|
115
|
+
require(state.gtz(), "ERROR:KVS-040:STATE_UNDEFINED");
|
116
|
+
Metadata storage metadata = _value[key32].metadata;
|
117
|
+
StateId stateOld = metadata.state;
|
118
|
+
require(stateOld.gtz(), "ERROR:KVS-041:NOT_EXISTING");
|
119
|
+
|
120
|
+
// update metadata (and state)
|
121
|
+
address updatedBy = msg.sender;
|
122
|
+
Blocknumber lastUpdatedIn = metadata.updatedIn;
|
123
|
+
metadata.state = state;
|
124
|
+
metadata.updatedBy = updatedBy;
|
125
|
+
metadata.updatedIn = blockBlocknumber();
|
126
|
+
|
127
|
+
// create log entry
|
128
|
+
Key memory key = toKey(key32);
|
129
|
+
// solhint-disable-next-line avoid-tx-origin
|
130
|
+
emit LogStateUpdated(key, state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
|
131
|
+
}
|
132
|
+
|
133
|
+
function exists(Key32 key32) public view returns (bool) {
|
134
|
+
return _value[key32].metadata.state.gtz();
|
135
|
+
}
|
136
|
+
|
137
|
+
function get(Key32 key32) public view returns (Value memory value) {
|
138
|
+
return _value[key32];
|
139
|
+
}
|
140
|
+
|
141
|
+
function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
|
142
|
+
return _value[key32].metadata;
|
143
|
+
}
|
144
|
+
|
145
|
+
function getData(Key32 key32) public view returns (bytes memory data) {
|
146
|
+
return _value[key32].data;
|
147
|
+
}
|
148
|
+
|
149
|
+
function getState(Key32 key32) public view returns (StateId state) {
|
150
|
+
return _value[key32].metadata.state;
|
151
|
+
}
|
152
|
+
|
153
|
+
function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
|
154
|
+
return Key32Lib.toKey32(objectType, id);
|
155
|
+
}
|
156
|
+
|
157
|
+
function toKey(Key32 key32) public pure override returns (Key memory key) {
|
158
|
+
(ObjectType objectType, KeyId id) = key32.toKey();
|
159
|
+
return Key(objectType, id);
|
160
|
+
}
|
161
|
+
}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {NftId} from "
|
5
|
-
import {ObjectType,
|
6
|
-
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "
|
7
|
-
import {
|
4
|
+
import {NftId} from "../../types/NftId.sol";
|
5
|
+
import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
|
6
|
+
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
|
7
|
+
import {ILifecycle} from "./ILifecycle.sol";
|
8
8
|
|
9
|
-
contract
|
9
|
+
contract Lifecycle is ILifecycle {
|
10
10
|
mapping(ObjectType objectType => StateId initialState)
|
11
11
|
private _initialState;
|
12
12
|
|
@@ -14,46 +14,50 @@ contract LifecycleModule is ILifecycleModule {
|
|
14
14
|
private _isValidTransition;
|
15
15
|
|
16
16
|
constructor() {
|
17
|
-
_setupComponentLifecycle(PRODUCT());
|
18
|
-
_setupComponentLifecycle(ORACLE());
|
19
|
-
_setupComponentLifecycle(POOL());
|
20
|
-
|
21
17
|
_setupBundleLifecycle();
|
18
|
+
_setupComponentLifecycle();
|
22
19
|
_setupPolicyLifecycle();
|
20
|
+
_setupRiskLifecycle();
|
21
|
+
}
|
22
|
+
|
23
|
+
function hasLifecycle(
|
24
|
+
ObjectType objectType
|
25
|
+
)
|
26
|
+
public
|
27
|
+
view
|
28
|
+
override
|
29
|
+
returns (bool)
|
30
|
+
{
|
31
|
+
return _initialState[objectType].gtz();
|
32
|
+
}
|
33
|
+
|
34
|
+
function getInitialState(
|
35
|
+
ObjectType objectType
|
36
|
+
)
|
37
|
+
public
|
38
|
+
view
|
39
|
+
returns (StateId)
|
40
|
+
{
|
41
|
+
return _initialState[objectType];
|
23
42
|
}
|
24
43
|
|
25
|
-
function
|
26
|
-
NftId nftId,
|
44
|
+
function checkTransition(
|
27
45
|
ObjectType objectType,
|
28
46
|
StateId fromId,
|
29
47
|
StateId toId
|
30
|
-
)
|
48
|
+
)
|
49
|
+
public
|
50
|
+
view
|
31
51
|
{
|
32
|
-
if
|
33
|
-
|
52
|
+
// return if no life cycle support
|
53
|
+
if (_initialState[objectType].eqz()) {
|
54
|
+
return;
|
34
55
|
}
|
35
56
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
emit LogBundleStateChanged(nftId, fromId, toId);
|
40
|
-
} else if (
|
41
|
-
objectType == PRODUCT() ||
|
42
|
-
objectType == ORACLE() ||
|
43
|
-
objectType == POOL()
|
44
|
-
) {
|
45
|
-
emit LogComponentStateChanged(nftId, objectType, fromId, toId);
|
46
|
-
} else {
|
47
|
-
revert ErrorNoLifecycle(nftId, objectType);
|
57
|
+
// enforce valid state transition
|
58
|
+
if (!_isValidTransition[objectType][fromId][toId]) {
|
59
|
+
revert ErrorInvalidStateTransition(objectType, fromId, toId);
|
48
60
|
}
|
49
|
-
|
50
|
-
return toId;
|
51
|
-
}
|
52
|
-
|
53
|
-
function getInitialState(
|
54
|
-
ObjectType objectType
|
55
|
-
) public view returns (StateId) {
|
56
|
-
return _initialState[objectType];
|
57
61
|
}
|
58
62
|
|
59
63
|
function isValidTransition(
|
@@ -64,11 +68,11 @@ contract LifecycleModule is ILifecycleModule {
|
|
64
68
|
return _isValidTransition[objectType][fromId][toId];
|
65
69
|
}
|
66
70
|
|
67
|
-
function _setupComponentLifecycle(
|
68
|
-
_initialState[
|
69
|
-
_isValidTransition[
|
70
|
-
_isValidTransition[
|
71
|
-
_isValidTransition[
|
71
|
+
function _setupComponentLifecycle() internal {
|
72
|
+
_initialState[COMPONENT()] = ACTIVE();
|
73
|
+
_isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
|
74
|
+
_isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
|
75
|
+
_isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
|
72
76
|
}
|
73
77
|
|
74
78
|
function _setupBundleLifecycle() internal {
|
@@ -86,4 +90,11 @@ contract LifecycleModule is ILifecycleModule {
|
|
86
90
|
_isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
|
87
91
|
_isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
|
88
92
|
}
|
93
|
+
|
94
|
+
function _setupRiskLifecycle() internal {
|
95
|
+
_initialState[RISK()] = ACTIVE();
|
96
|
+
_isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
|
97
|
+
_isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
|
98
|
+
_isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
|
99
|
+
}
|
89
100
|
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.19;
|
3
|
+
|
4
|
+
import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
+
|
6
|
+
import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
|
7
|
+
import {Key32, KeyId} from "../../types/Key32.sol";
|
8
|
+
import {LibNftIdSet} from "../../types/NftIdSet.sol";
|
9
|
+
import {NftId} from "../../types/NftId.sol";
|
10
|
+
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../types/ObjectType.sol";
|
11
|
+
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../types/StateId.sol";
|
12
|
+
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../types/Timestamp.sol";
|
13
|
+
|
14
|
+
import {IKeyValueStore} from "./IKeyValueStore.sol";
|
15
|
+
|
16
|
+
abstract contract ModuleBase {
|
17
|
+
|
18
|
+
IKeyValueStore private _store;
|
19
|
+
|
20
|
+
function _initialize(IKeyValueStore keyValueStore) internal {
|
21
|
+
_store = keyValueStore;
|
22
|
+
}
|
23
|
+
|
24
|
+
function _create(ObjectType objectType, Key32 key, bytes memory data) internal {
|
25
|
+
_store.create(
|
26
|
+
key,
|
27
|
+
objectType,
|
28
|
+
data);
|
29
|
+
}
|
30
|
+
|
31
|
+
function _create(ObjectType objectType, NftId nftId, bytes memory data) internal {
|
32
|
+
_store.create(
|
33
|
+
nftId.toKey32(objectType),
|
34
|
+
objectType,
|
35
|
+
data);
|
36
|
+
}
|
37
|
+
|
38
|
+
function _updateData(ObjectType objectType, NftId nftId, bytes memory data) internal {
|
39
|
+
_store.updateData(nftId.toKey32(objectType), data);
|
40
|
+
}
|
41
|
+
|
42
|
+
function _updateState(ObjectType objectType, NftId nftId, StateId state) internal {
|
43
|
+
_store.updateState(nftId.toKey32(objectType), state);
|
44
|
+
}
|
45
|
+
|
46
|
+
function _exists(ObjectType objectType, NftId nftId) internal view returns (bool hasData) {
|
47
|
+
return _store.exists(nftId.toKey32(objectType));
|
48
|
+
}
|
49
|
+
|
50
|
+
function _getData(ObjectType objectType, NftId nftId) internal view returns(bytes memory data) {
|
51
|
+
return _store.getData(nftId.toKey32(objectType));
|
52
|
+
}
|
53
|
+
|
54
|
+
function _getState(ObjectType objectType, NftId nftId) internal view returns(StateId) {
|
55
|
+
return _store.getState(nftId.toKey32(objectType));
|
56
|
+
}
|
57
|
+
}
|
@@ -1,8 +1,6 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
// import {IRegistry} from "../../registry/IRegistry.sol";
|
5
|
-
// import {ITreasury, ITreasuryModule, TokenHandler} from "../../instance/module/treasury/ITreasury.sol";
|
6
4
|
import {NftId, zeroNftId} from "../../types/NftId.sol";
|
7
5
|
import {ObjectType, SERVICE} from "../../types/ObjectType.sol";
|
8
6
|
import {Version, VersionPart} from "../../types/Version.sol";
|
@@ -5,9 +5,9 @@ pragma solidity ^0.8.19;
|
|
5
5
|
// import {AccessControlEnumerable} from "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
|
6
6
|
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
7
7
|
|
8
|
-
import {RoleId,
|
9
|
-
import {
|
10
|
-
import {
|
8
|
+
import {RoleId, RoleIdLib} from "../../../types/RoleId.sol";
|
9
|
+
import {DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../../../types/RoleId.sol";
|
10
|
+
import {DISTRIBUTION_OWNER_ROLE_NAME, ORACLE_OWNER_ROLE_NAME, POOL_OWNER_ROLE_NAME, PRODUCT_OWNER_ROLE_NAME} from "../../../types/RoleId.sol";
|
11
11
|
import {IAccessModule} from "./IAccess.sol";
|
12
12
|
|
13
13
|
abstract contract AccessModule is IAccessModule {
|
@@ -36,7 +36,7 @@ abstract contract AccessModule is IAccessModule {
|
|
36
36
|
}
|
37
37
|
|
38
38
|
constructor() {
|
39
|
-
_createRole(
|
39
|
+
_createRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME());
|
40
40
|
_createRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME());
|
41
41
|
_createRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME());
|
42
42
|
_createRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME());
|
@@ -45,7 +45,7 @@ abstract contract AccessModule is IAccessModule {
|
|
45
45
|
function createRole(
|
46
46
|
string memory roleName
|
47
47
|
) public override onlyAccessOwner returns (RoleId role) {
|
48
|
-
role = toRoleId(roleName);
|
48
|
+
role = RoleIdLib.toRoleId(roleName);
|
49
49
|
require(
|
50
50
|
!roleExists(role),
|
51
51
|
"ERROR:ACS-010:ROLE_ALREADY_EXISTS");
|
@@ -95,7 +95,7 @@ abstract contract AccessModule is IAccessModule {
|
|
95
95
|
}
|
96
96
|
|
97
97
|
function getRoleId(string memory roleName) external pure override returns (RoleId role) {
|
98
|
-
return toRoleId(roleName);
|
98
|
+
return RoleIdLib.toRoleId(roleName);
|
99
99
|
}
|
100
100
|
|
101
101
|
function getRoleInfo(
|
@@ -3,32 +3,33 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
5
|
|
6
|
-
import {LifecycleModule} from "../lifecycle/LifecycleModule.sol";
|
7
6
|
import {IProductService} from "../../service/IProductService.sol";
|
8
7
|
import {IPoolService} from "../../service/IPoolService.sol";
|
9
8
|
|
9
|
+
import {Fee} from "../../../types/Fee.sol";
|
10
10
|
import {NftId} from "../../../types/NftId.sol";
|
11
|
+
import {Key32, KeyId} from "../../../types/Key32.sol";
|
11
12
|
import {LibNftIdSet} from "../../../types/NftIdSet.sol";
|
12
13
|
import {ObjectType, PRODUCT, ORACLE, POOL, BUNDLE, POLICY} from "../../../types/ObjectType.sol";
|
13
14
|
import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, REVOKED, DECLINED} from "../../../types/StateId.sol";
|
14
15
|
import {Timestamp, blockTimestamp, zeroTimestamp} from "../../../types/Timestamp.sol";
|
15
16
|
import {Blocknumber, blockNumber} from "../../../types/Blocknumber.sol";
|
16
17
|
|
17
|
-
import {
|
18
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
19
|
+
import {ModuleBase} from "../../base/ModuleBase.sol";
|
20
|
+
|
18
21
|
import {IBundleModule} from "./IBundle.sol";
|
19
22
|
|
20
|
-
abstract contract BundleModule is
|
23
|
+
abstract contract BundleModule is
|
24
|
+
ModuleBase,
|
21
25
|
IBundleModule
|
22
26
|
{
|
23
27
|
|
24
28
|
using LibNftIdSet for LibNftIdSet.Set;
|
25
29
|
|
26
|
-
mapping(NftId bundleNftId => BundleInfo info) private _bundleInfo;
|
27
30
|
mapping(NftId bundleNftId => LibNftIdSet.Set policies) private _collateralizedPolicies;
|
28
31
|
mapping(NftId bundleNftId => mapping(NftId policyNftId => uint256 amount)) private _collateralizationAmount;
|
29
32
|
|
30
|
-
LifecycleModule private _lifecycleModule;
|
31
|
-
|
32
33
|
modifier onlyBundlePoolService() {
|
33
34
|
require(
|
34
35
|
msg.sender == address(this.getPoolService()),
|
@@ -54,13 +55,14 @@ abstract contract BundleModule is
|
|
54
55
|
_;
|
55
56
|
}
|
56
57
|
|
57
|
-
|
58
|
-
|
58
|
+
function initializeBundleModule(IKeyValueStore keyValueStore) internal {
|
59
|
+
_initialize(keyValueStore);
|
59
60
|
}
|
60
61
|
|
61
62
|
function createBundleInfo(
|
62
63
|
NftId bundleNftId,
|
63
64
|
NftId poolNftId,
|
65
|
+
Fee memory fee,
|
64
66
|
uint256 amount,
|
65
67
|
uint256 lifetime,
|
66
68
|
bytes calldata filter
|
@@ -69,101 +71,35 @@ abstract contract BundleModule is
|
|
69
71
|
onlyBundlePoolService
|
70
72
|
override
|
71
73
|
{
|
72
|
-
|
73
|
-
_bundleInfo[bundleNftId] = BundleInfo(
|
74
|
-
bundleNftId,
|
74
|
+
BundleInfo memory info = BundleInfo(
|
75
75
|
poolNftId,
|
76
|
-
|
76
|
+
fee,
|
77
77
|
filter,
|
78
78
|
amount, // capital
|
79
79
|
0, // locked capital
|
80
80
|
amount, // balance
|
81
|
-
blockTimestamp(), // createdAt
|
82
81
|
blockTimestamp().addSeconds(lifetime), // expiredAt
|
83
|
-
zeroTimestamp()
|
84
|
-
blockNumber() // updatedIn
|
82
|
+
zeroTimestamp() // closedAt
|
85
83
|
);
|
86
84
|
|
87
|
-
|
85
|
+
_create(BUNDLE(), bundleNftId, abi.encode(info));
|
88
86
|
}
|
89
87
|
|
90
|
-
function setBundleInfo(BundleInfo memory
|
88
|
+
function setBundleInfo(NftId bundleNftId, BundleInfo memory info)
|
91
89
|
external
|
92
90
|
override
|
93
91
|
onlyPoolOrProductService
|
94
92
|
{
|
95
|
-
|
93
|
+
_updateData(BUNDLE(), bundleNftId, abi.encode(info));
|
96
94
|
}
|
97
95
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
// {
|
106
|
-
// BundleInfo storage info = _bundleInfo[bundleNftId];
|
107
|
-
// info.state = newState;
|
108
|
-
// info.updatedIn = blockNumber();
|
109
|
-
// }
|
110
|
-
|
111
|
-
// function extendBundle(
|
112
|
-
// NftId bundleNftId,
|
113
|
-
// uint256 lifetimeExtension
|
114
|
-
// )
|
115
|
-
// external
|
116
|
-
// onlyBundlePoolService
|
117
|
-
// override
|
118
|
-
// {
|
119
|
-
// BundleInfo storage info = _bundleInfo[bundleNftId];
|
120
|
-
// info.expiredAt = info.expiredAt.addSeconds(lifetimeExtension);
|
121
|
-
// info.updatedIn = blockNumber();
|
122
|
-
// }
|
123
|
-
|
124
|
-
// function closeBundle(
|
125
|
-
// NftId bundleNftId
|
126
|
-
// )
|
127
|
-
// external
|
128
|
-
// onlyBundlePoolService
|
129
|
-
// override
|
130
|
-
// {
|
131
|
-
// BundleInfo storage info = _bundleInfo[bundleNftId];
|
132
|
-
// info.state = CLOSED();
|
133
|
-
// info.closedAt = blockTimestamp();
|
134
|
-
// info.updatedIn = blockNumber();
|
135
|
-
// }
|
136
|
-
|
137
|
-
// function processStake(
|
138
|
-
// NftId nftId,
|
139
|
-
// uint256 amount
|
140
|
-
// )
|
141
|
-
// external
|
142
|
-
// onlyBundlePoolService
|
143
|
-
// override
|
144
|
-
// {
|
145
|
-
// BundleInfo storage info = _bundleInfo[nftId];
|
146
|
-
// info.capitalAmount += amount;
|
147
|
-
// info.balanceAmount += amount;
|
148
|
-
// info.updatedIn = blockNumber();
|
149
|
-
// }
|
150
|
-
|
151
|
-
// function processUnstake(
|
152
|
-
// NftId nftId,
|
153
|
-
// uint256 amount
|
154
|
-
// )
|
155
|
-
// external
|
156
|
-
// onlyBundlePoolService
|
157
|
-
// override
|
158
|
-
// {
|
159
|
-
// BundleInfo storage info = _bundleInfo[nftId];
|
160
|
-
// // TODO fix book keeping in a way that provides
|
161
|
-
// // continuous infor regarding profitability
|
162
|
-
// // this is needed to properly apply performance fees
|
163
|
-
// info.capitalAmount -= amount;
|
164
|
-
// info.balanceAmount -= amount;
|
165
|
-
// info.updatedIn = blockNumber();
|
166
|
-
// }
|
96
|
+
function updateBundleState(NftId bundleNftId, StateId state)
|
97
|
+
external
|
98
|
+
override
|
99
|
+
onlyBundlePoolService
|
100
|
+
{
|
101
|
+
_updateState(BUNDLE(), bundleNftId, state);
|
102
|
+
}
|
167
103
|
|
168
104
|
function collateralizePolicy(
|
169
105
|
NftId bundleNftId,
|
@@ -187,42 +123,12 @@ abstract contract BundleModule is
|
|
187
123
|
override
|
188
124
|
returns(uint256 collateralAmount)
|
189
125
|
{
|
190
|
-
// BundleInfo storage info = _bundleInfo[bundleNftId];
|
191
|
-
// info.lockedAmount -= collateralAmount;
|
192
|
-
// info.updatedIn = blockNumber();
|
193
|
-
|
194
126
|
collateralAmount = _collateralizationAmount[bundleNftId][policyNftId];
|
195
127
|
delete _collateralizationAmount[bundleNftId][policyNftId];
|
196
128
|
_collateralizedPolicies[bundleNftId].remove(policyNftId);
|
197
129
|
}
|
198
130
|
|
199
|
-
// function addPremium(NftId bundleNftId, uint256 amount)
|
200
|
-
// external
|
201
|
-
// onlyBundleProductService
|
202
|
-
// override
|
203
|
-
// {
|
204
|
-
// BundleInfo storage info = _bundleInfo[bundleNftId];
|
205
|
-
// info.capitalAmount += amount;
|
206
|
-
// info.balanceAmount += amount;
|
207
|
-
// info.updatedIn = blockNumber();
|
208
|
-
// }
|
209
|
-
|
210
|
-
// function subtractPayout(NftId bundleNftId, NftId policyNftId, uint256 amount)
|
211
|
-
// external
|
212
|
-
// onlyBundleProductService
|
213
|
-
// override
|
214
|
-
// {
|
215
|
-
// BundleInfo storage info = _bundleInfo[bundleNftId];
|
216
|
-
// info.capitalAmount -= amount;
|
217
|
-
// info.lockedAmount -= amount;
|
218
|
-
// info.balanceAmount -= amount;
|
219
|
-
// info.updatedIn = blockNumber();
|
220
|
-
|
221
|
-
// // deduct amount from sum insured for this policy
|
222
|
-
// _collateralizationAmount[bundleNftId][policyNftId] -= amount;
|
223
|
-
// }
|
224
|
-
|
225
131
|
function getBundleInfo(NftId bundleNftId) external view override returns(BundleInfo memory bundleInfo) {
|
226
|
-
return
|
132
|
+
return abi.decode(_getData(BUNDLE(), bundleNftId), (BundleInfo));
|
227
133
|
}
|
228
134
|
}
|
@@ -3,28 +3,28 @@ pragma solidity ^0.8.19;
|
|
3
3
|
|
4
4
|
import {IRegistry} from "../../../registry/IRegistry.sol";
|
5
5
|
import {IInstance} from "../../IInstance.sol";
|
6
|
+
import {Fee} from "../../../types/Fee.sol";
|
7
|
+
import {Key32} from "../../../types/Key32.sol";
|
6
8
|
import {NftId} from "../../../types/NftId.sol";
|
7
9
|
import {StateId} from "../../../types/StateId.sol";
|
8
10
|
import {Timestamp} from "../../../types/Timestamp.sol";
|
9
11
|
import {Blocknumber} from "../../../types/Blocknumber.sol";
|
10
12
|
|
13
|
+
import {IKeyValueStore} from "../../base/IKeyValueStore.sol";
|
11
14
|
import {IProductService} from "../../service/IProductService.sol";
|
12
15
|
import {IPoolService} from "../../service/IPoolService.sol";
|
13
16
|
|
14
17
|
interface IBundle {
|
15
18
|
|
16
19
|
struct BundleInfo {
|
17
|
-
NftId nftId;
|
18
20
|
NftId poolNftId;
|
19
|
-
|
21
|
+
Fee fee; // bundle fee on net premium amounts
|
20
22
|
bytes filter; // required conditions for applications to be considered for collateralization by this bundle
|
21
23
|
uint256 capitalAmount; // net investment capital amount (<= balance)
|
22
24
|
uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
|
23
25
|
uint256 balanceAmount; // total amount of funds: net investment capital + net premiums - payouts
|
24
|
-
Timestamp createdAt;
|
25
26
|
Timestamp expiredAt; // no new policies
|
26
27
|
Timestamp closedAt;
|
27
|
-
Blocknumber updatedIn;
|
28
28
|
}
|
29
29
|
}
|
30
30
|
|
@@ -33,19 +33,19 @@ interface IBundleModule is IBundle {
|
|
33
33
|
function createBundleInfo(
|
34
34
|
NftId bundleNftId,
|
35
35
|
NftId poolNftId,
|
36
|
+
Fee memory fee,
|
36
37
|
uint256 amount,
|
37
38
|
uint256 lifetime,
|
38
39
|
bytes calldata filter
|
39
40
|
) external;
|
40
41
|
|
41
|
-
function setBundleInfo(BundleInfo memory bundleInfo) external;
|
42
|
+
function setBundleInfo(NftId nftId, BundleInfo memory bundleInfo) external;
|
43
|
+
function updateBundleState(NftId nftId, StateId state) external;
|
44
|
+
|
42
45
|
function collateralizePolicy(NftId bundleNftId, NftId policyNftId, uint256 amount) external;
|
43
46
|
function releasePolicy(NftId bundleNftId, NftId policyNftId) external returns(uint256 collateralAmount);
|
44
47
|
|
45
|
-
function getBundleInfo(NftId
|
46
|
-
|
47
|
-
// repeat registry linked signature
|
48
|
-
function getRegistry() external view returns (IRegistry registry);
|
48
|
+
function getBundleInfo(NftId nftId) external view returns(BundleInfo memory bundleInfo);
|
49
49
|
|
50
50
|
// repeat service linked signatures to avoid linearization issues
|
51
51
|
function getProductService() external returns(IProductService);
|