@etherisc/gif-next 0.0.2-e922e07-736 → 0.0.2-e94f4c7-084
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -83
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +68 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +84 -0
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +158 -0
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +158 -0
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +184 -149
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +158 -0
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +114 -189
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +68 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +457 -268
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +175 -51
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +426 -476
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +472 -126
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +217 -169
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +304 -210
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +71 -23
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +85 -30
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +56 -73
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +175 -83
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +29 -13
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +426 -233
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +78 -14
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +372 -86
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +55 -7
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +189 -139
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +48 -56
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -40
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +246 -170
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +251 -58
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +101 -24
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +470 -41
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +627 -14
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +607 -85
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +71 -19
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +777 -55
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +72 -12
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +114 -51
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +16 -12
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +19 -0
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -24
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +31 -12
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +17 -36
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +7 -7
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +80 -14
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +86 -15
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- 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/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/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 +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +101 -26
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/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 +2 -2
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +83 -4
- 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/Fee.sol/FeeLib.json +40 -9
- 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 +17 -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/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/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +116 -7
- 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/Seconds.sol/SecondsLib.dbg.json +1 -1
- 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/Timestamp.sol/TimestampLib.json +17 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -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/Component.sol +42 -10
- package/contracts/components/Distribution.sol +6 -2
- package/contracts/components/IComponent.sol +9 -1
- package/contracts/components/IPoolComponent.sol +6 -44
- package/contracts/components/Pool.sol +50 -126
- package/contracts/components/Product.sol +141 -59
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +9 -8
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +37 -27
- package/contracts/instance/IInstanceService.sol +18 -9
- package/contracts/instance/Instance.sol +117 -98
- package/contracts/instance/InstanceAccessManager.sol +388 -158
- package/contracts/instance/InstanceReader.sol +36 -12
- package/contracts/instance/InstanceService.sol +193 -204
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +17 -30
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +23 -6
- package/contracts/instance/module/IAccess.sol +21 -14
- package/contracts/instance/module/IBundle.sol +6 -4
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IPolicy.sol +11 -6
- package/contracts/instance/module/ISetup.sol +3 -16
- package/contracts/instance/service/ApplicationService.sol +25 -19
- package/contracts/instance/service/BundleService.sol +224 -80
- package/contracts/instance/service/ClaimService.sol +114 -26
- package/contracts/instance/service/DistributionService.sol +58 -77
- package/contracts/instance/service/IApplicationService.sol +3 -7
- package/contracts/instance/service/IBundleService.sol +72 -25
- package/contracts/instance/service/IClaimService.sol +46 -15
- package/contracts/instance/service/IDistributionService.sol +1 -0
- package/contracts/instance/service/IPolicyService.sol +72 -5
- package/contracts/instance/service/IPoolService.sol +85 -3
- package/contracts/instance/service/PolicyService.sol +320 -143
- package/contracts/instance/service/PoolService.sol +245 -18
- package/contracts/instance/service/ProductService.sol +31 -54
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +2 -0
- package/contracts/registry/IRegistryService.sol +4 -3
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +23 -20
- package/contracts/registry/RegistryService.sol +10 -11
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/Service.sol +21 -7
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +70 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +25 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +6 -5
- package/contracts/types/PayoutId.sol +33 -5
- package/contracts/types/RoleId.sol +6 -4
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +6 -0
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
@@ -1,22 +1,24 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.19;
|
3
3
|
|
4
|
-
import {
|
4
|
+
import {IBundle} from "../../instance/module/IBundle.sol";
|
5
|
+
import {IComponents} from "../module/IComponents.sol";
|
5
6
|
import {IRegistry} from "../../registry/IRegistry.sol";
|
6
7
|
import {IInstance} from "../../instance/IInstance.sol";
|
7
|
-
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
8
|
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
9
|
import {ISetup} from "../module/ISetup.sol";
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
11
11
|
|
12
12
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
13
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
14
|
-
|
15
14
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
16
15
|
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
17
16
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
17
|
+
import {Pool} from "../../components/Pool.sol";
|
18
|
+
|
19
|
+
import {Amount, AmountLib} from "../../types/Amount.sol";
|
18
20
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
19
|
-
import {
|
21
|
+
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
|
20
22
|
import {Seconds} from "../../types/Seconds.sol";
|
21
23
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
22
24
|
import {Version, VersionLib} from "../../types/Version.sol";
|
@@ -56,38 +58,85 @@ contract BundleService is
|
|
56
58
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
57
59
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
58
60
|
// owner is PoolServiceManager deployer
|
59
|
-
initializeService(registryAddress, owner);
|
61
|
+
initializeService(registryAddress, address(0), owner);
|
60
62
|
registerInterface(type(IBundleService).interfaceId);
|
61
63
|
}
|
62
64
|
|
63
|
-
function getDomain() public pure override
|
65
|
+
function getDomain() public pure override returns(ObjectType) {
|
64
66
|
return BUNDLE();
|
65
67
|
}
|
66
68
|
|
67
|
-
|
69
|
+
// TODO staking/unstaking as well as collateralize need to go to pool service
|
70
|
+
// it will also be the pool service that is updating the pool info data
|
71
|
+
// collateralize -> potentially accumulate pool fees
|
72
|
+
// collateralize: additional reason to move to pool, pool might has retential level < 1 ...
|
73
|
+
// staking -> potentially accumulate staking fees
|
74
|
+
// unstaking -> potentially accumulate performance fees
|
75
|
+
function _updatePoolWithStakes(
|
76
|
+
IInstance instance,
|
77
|
+
NftId poolNftId,
|
78
|
+
uint256 stakingAmount
|
79
|
+
)
|
80
|
+
internal
|
81
|
+
returns (
|
82
|
+
TokenHandler tokenHandler,
|
83
|
+
address wallet,
|
84
|
+
uint256 netStakingAmount
|
85
|
+
)
|
86
|
+
{
|
87
|
+
if(stakingAmount > 0) {
|
88
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
89
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
90
|
+
|
91
|
+
tokenHandler = componentInfo.tokenHandler;
|
92
|
+
wallet = componentInfo.wallet;
|
93
|
+
|
94
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
95
|
+
uint256 poolFeeAmount;
|
96
|
+
|
97
|
+
// calculate pool fee and net staking amount
|
98
|
+
(poolFeeAmount, netStakingAmount) = FeeLib.calculateFee(poolInfo.stakingFee, stakingAmount);
|
99
|
+
|
100
|
+
// update pool balance and fee amount
|
101
|
+
poolInfo.balanceAmount += netStakingAmount;
|
102
|
+
|
103
|
+
if(poolFeeAmount > 0) {
|
104
|
+
poolInfo.feeAmount += poolFeeAmount;
|
105
|
+
}
|
106
|
+
|
107
|
+
// save updated pool info
|
108
|
+
componentInfo.data = abi.encode(poolInfo);
|
109
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
|
114
|
+
function create(
|
115
|
+
IInstance instance,
|
116
|
+
NftId poolNftId,
|
68
117
|
address owner,
|
69
118
|
Fee memory fee,
|
70
|
-
|
119
|
+
Amount stakingAmount,
|
71
120
|
Seconds lifetime,
|
72
121
|
bytes calldata filter
|
73
122
|
)
|
74
123
|
external
|
75
124
|
override
|
125
|
+
// TODO add restricted and add authz for pool service
|
76
126
|
returns(NftId bundleNftId)
|
77
127
|
{
|
78
|
-
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
79
128
|
InstanceReader instanceReader = instance.getInstanceReader();
|
80
|
-
NftId poolNftId = info.nftId;
|
81
129
|
|
130
|
+
// create initial bundle info
|
82
131
|
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
83
132
|
poolNftId,
|
84
133
|
fee,
|
85
134
|
filter,
|
86
135
|
stakingAmount,
|
87
|
-
|
88
|
-
|
136
|
+
AmountLib.zero(),
|
137
|
+
AmountLib.zero(),
|
89
138
|
lifetime,
|
90
|
-
|
139
|
+
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
91
140
|
zeroTimestamp()
|
92
141
|
);
|
93
142
|
|
@@ -100,100 +149,190 @@ contract BundleService is
|
|
100
149
|
false, // intercepting property for bundles is defined on pool
|
101
150
|
address(0),
|
102
151
|
owner,
|
103
|
-
|
152
|
+
"" // bundle data to be stored in registry
|
104
153
|
)
|
105
154
|
);
|
106
155
|
|
107
156
|
// create bundle info in instance
|
108
157
|
instance.createBundle(bundleNftId, bundleInfo);
|
109
158
|
|
159
|
+
// put bundle under bundle managemet
|
110
160
|
BundleManager bundleManager = instance.getBundleManager();
|
111
161
|
bundleManager.add(bundleNftId);
|
112
162
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
163
|
+
// transfer full staking amount to pool wallet
|
164
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
165
|
+
componentInfo.tokenHandler.transfer(
|
166
|
+
owner,
|
167
|
+
componentInfo.wallet,
|
168
|
+
stakingAmount.toInt()
|
169
|
+
);
|
118
170
|
|
119
171
|
// TODO add logging
|
120
172
|
}
|
121
173
|
|
122
|
-
function
|
174
|
+
function setFee(
|
123
175
|
NftId bundleNftId,
|
124
176
|
Fee memory fee
|
125
177
|
)
|
126
178
|
external
|
127
179
|
override
|
128
180
|
{
|
129
|
-
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
181
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
130
182
|
InstanceReader instanceReader = instance.getInstanceReader();
|
131
|
-
NftId poolNftId = info.nftId;
|
132
183
|
|
133
184
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
134
|
-
|
135
|
-
|
185
|
+
if(bundleInfo.poolNftId.eqz()) {
|
186
|
+
revert ErrorBundleServiceBundleUnknown(bundleNftId);
|
187
|
+
}
|
188
|
+
|
189
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
190
|
+
revert ErrorBundleServiceBundlePoolMismatch(poolNftId, bundleInfo.poolNftId );
|
191
|
+
}
|
136
192
|
|
137
193
|
bundleInfo.fee = fee;
|
138
194
|
|
139
195
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
140
196
|
}
|
141
197
|
|
142
|
-
|
198
|
+
|
199
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
200
|
+
function lockCollateral(
|
201
|
+
IInstance instance,
|
202
|
+
NftId policyNftId,
|
203
|
+
NftId bundleNftId,
|
204
|
+
uint256 collateralAmount, // required amount to collateralize policy
|
205
|
+
uint256 premiumAmount // premium part that reaches bundle for this policy
|
206
|
+
)
|
207
|
+
external
|
208
|
+
onlyService // TODO replace with restricted + appropriate granting
|
209
|
+
{
|
210
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
211
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
212
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
213
|
+
|
214
|
+
// ensure bundle is active and not yet expired
|
215
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
216
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
217
|
+
}
|
218
|
+
|
219
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
220
|
+
uint capacity = bundleInfo.capitalAmount.toInt() + premiumAmount - bundleInfo.lockedAmount.toInt();
|
221
|
+
if(capacity < collateralAmount) {
|
222
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
223
|
+
}
|
224
|
+
|
225
|
+
// TODO add more validation
|
226
|
+
|
227
|
+
// updated locked amount
|
228
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() + collateralAmount);
|
229
|
+
|
230
|
+
// update capital and fees when premiums are involved
|
231
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
232
|
+
|
233
|
+
// link policy to bundle in bundle manger
|
234
|
+
_linkPolicy(instance, policyNftId);
|
235
|
+
}
|
236
|
+
|
237
|
+
|
238
|
+
function _updateBundleWithPremium(
|
239
|
+
IInstance instance,
|
240
|
+
NftId bundleNftId,
|
241
|
+
IBundle.BundleInfo memory bundleInfo,
|
242
|
+
uint256 premiumAmount
|
243
|
+
)
|
244
|
+
internal
|
245
|
+
{
|
246
|
+
// update bundle capital and fee amounts
|
247
|
+
if(premiumAmount > 0) {
|
248
|
+
// calculate fees and net premium amounts
|
249
|
+
(
|
250
|
+
,
|
251
|
+
uint256 netPremiumAmount
|
252
|
+
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
253
|
+
|
254
|
+
// update bundle info with additional capital
|
255
|
+
bundleInfo.capitalAmount = AmountLib.toAmount(bundleInfo.capitalAmount.toInt() + netPremiumAmount);
|
256
|
+
}
|
257
|
+
|
258
|
+
// save updated bundle info
|
259
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
260
|
+
}
|
261
|
+
|
262
|
+
function updateBundleFees(
|
263
|
+
IInstance instance,
|
264
|
+
NftId bundleNftId,
|
265
|
+
Amount feeAmount
|
266
|
+
)
|
143
267
|
external
|
144
|
-
onlyService
|
145
268
|
{
|
146
|
-
|
147
|
-
|
148
|
-
instance.updateBundle(bundleNftId, bundleInfo,
|
149
|
-
}
|
269
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
270
|
+
bundleInfo.feeAmount = bundleInfo.feeAmount.add(feeAmount);
|
271
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
272
|
+
}
|
273
|
+
|
150
274
|
|
151
|
-
function
|
275
|
+
function lock(NftId bundleNftId)
|
152
276
|
external
|
277
|
+
virtual
|
153
278
|
{
|
154
|
-
(
|
279
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
280
|
+
|
281
|
+
// udpate bundle state
|
282
|
+
instance.updateBundleState(bundleNftId, PAUSED());
|
283
|
+
|
284
|
+
// update set of active bundles
|
155
285
|
BundleManager bundleManager = instance.getBundleManager();
|
156
286
|
bundleManager.lock(bundleNftId);
|
287
|
+
|
288
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
157
289
|
}
|
158
290
|
|
159
|
-
|
291
|
+
|
292
|
+
function unlock(NftId bundleNftId)
|
160
293
|
external
|
294
|
+
virtual
|
161
295
|
{
|
162
|
-
(
|
296
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
297
|
+
|
298
|
+
// udpate bundle state
|
299
|
+
instance.updateBundleState(bundleNftId, ACTIVE());
|
300
|
+
|
301
|
+
// update set of active bundles
|
163
302
|
BundleManager bundleManager = instance.getBundleManager();
|
164
303
|
bundleManager.unlock(bundleNftId);
|
304
|
+
|
305
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
165
306
|
}
|
166
307
|
|
167
|
-
|
308
|
+
|
309
|
+
function close(
|
168
310
|
IInstance instance,
|
169
|
-
NftId
|
170
|
-
NftId bundleNftId,
|
171
|
-
uint256 collateralAmount,
|
172
|
-
uint256 netPremiumAmount
|
311
|
+
NftId bundleNftId
|
173
312
|
)
|
174
313
|
external
|
175
|
-
|
176
|
-
|
177
|
-
IBundle.BundleInfo memory bundleInfo
|
178
|
-
)
|
314
|
+
virtual
|
315
|
+
// TODO add restricted and autz for pool service
|
179
316
|
{
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
// TODO add validation
|
317
|
+
// udpate bundle state
|
318
|
+
instance.updateBundleState(bundleNftId, CLOSED());
|
184
319
|
|
185
|
-
//
|
186
|
-
|
187
|
-
|
320
|
+
// ensure no open policies attached to bundle
|
321
|
+
BundleManager bundleManager = instance.getBundleManager();
|
322
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
323
|
+
if(openPolicies > 0) {
|
324
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
325
|
+
}
|
188
326
|
|
189
|
-
|
190
|
-
|
191
|
-
linkPolicy(instance, policyNftId);
|
327
|
+
// update set of active bundles
|
328
|
+
bundleManager.lock(bundleNftId);
|
192
329
|
}
|
193
330
|
|
194
|
-
|
331
|
+
|
332
|
+
function increaseBalance(
|
333
|
+
IInstance instance,
|
195
334
|
NftId bundleNftId,
|
196
|
-
uint256
|
335
|
+
uint256 premiumAmount
|
197
336
|
)
|
198
337
|
external
|
199
338
|
onlyService
|
@@ -201,12 +340,13 @@ contract BundleService is
|
|
201
340
|
InstanceReader instanceReader = instance.getInstanceReader();
|
202
341
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
203
342
|
|
204
|
-
|
343
|
+
// update capital and fees when premiums are involved
|
344
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
205
345
|
|
206
|
-
|
346
|
+
// TODO add logging (?)
|
207
347
|
}
|
208
348
|
|
209
|
-
function
|
349
|
+
function releaseCollateral(IInstance instance,
|
210
350
|
NftId policyNftId,
|
211
351
|
NftId bundleNftId,
|
212
352
|
uint256 collateralAmount
|
@@ -217,25 +357,24 @@ contract BundleService is
|
|
217
357
|
InstanceReader instanceReader = instance.getInstanceReader();
|
218
358
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
219
359
|
|
220
|
-
//
|
221
|
-
bundleInfo.lockedAmount
|
360
|
+
// reduce locked amount by released collateral amount
|
361
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() - collateralAmount);
|
222
362
|
|
223
363
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
224
364
|
|
225
|
-
|
365
|
+
_unlinkPolicy(instance, policyNftId);
|
226
366
|
}
|
227
367
|
|
228
368
|
/// @dev links policy to bundle
|
229
|
-
function
|
369
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
230
370
|
internal
|
231
|
-
onlyService
|
232
371
|
{
|
233
372
|
InstanceReader instanceReader = instance.getInstanceReader();
|
234
373
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
235
374
|
|
236
|
-
// ensure policy has not yet been activated
|
237
|
-
if (policyInfo.activatedAt.gtz()) {
|
238
|
-
revert BundleManager.
|
375
|
+
// ensure policy has not yet been activated in a previous tx already
|
376
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
377
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
239
378
|
}
|
240
379
|
|
241
380
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -243,9 +382,8 @@ contract BundleService is
|
|
243
382
|
}
|
244
383
|
|
245
384
|
/// @dev unlinks policy from bundle
|
246
|
-
function
|
385
|
+
function _unlinkPolicy(IInstance instance, NftId policyNftId)
|
247
386
|
internal
|
248
|
-
onlyService
|
249
387
|
{
|
250
388
|
InstanceReader instanceReader = instance.getInstanceReader();
|
251
389
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -259,7 +397,7 @@ contract BundleService is
|
|
259
397
|
|
260
398
|
// ensure policy is closeable
|
261
399
|
if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
|
262
|
-
&& policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
|
400
|
+
&& policyInfo.payoutAmount.toInt() < policyInfo.sumInsuredAmount)
|
263
401
|
{
|
264
402
|
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
265
403
|
}
|
@@ -268,32 +406,38 @@ contract BundleService is
|
|
268
406
|
bundleManager.unlinkPolicy(policyNftId);
|
269
407
|
}
|
270
408
|
|
409
|
+
// TODO move this to pool service
|
271
410
|
function _processStakingByTreasury(
|
272
411
|
InstanceReader instanceReader,
|
273
412
|
NftId poolNftId,
|
274
413
|
NftId bundleNftId,
|
275
|
-
|
414
|
+
Amount stakingAmount
|
276
415
|
)
|
277
416
|
internal
|
278
417
|
{
|
279
418
|
// process token transfer(s)
|
280
|
-
if(stakingAmount
|
281
|
-
|
282
|
-
|
419
|
+
if(stakingAmount.gtz()) {
|
420
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
421
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
422
|
+
|
423
|
+
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
283
424
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
284
425
|
Fee memory stakingFee = poolInfo.stakingFee;
|
285
426
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
stakingAmount
|
290
|
-
);
|
427
|
+
// pool fee and bundle capital book keeping
|
428
|
+
if (FeeLib.gtz(stakingFee)) {
|
429
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount.toInt());
|
291
430
|
|
292
431
|
|
293
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
294
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
295
432
|
// TODO: track staking fees in pool's state (issue #177)
|
296
433
|
}
|
434
|
+
|
435
|
+
// transfer full staking amount to pool wallet
|
436
|
+
tokenHandler.transfer(
|
437
|
+
bundleOwner,
|
438
|
+
componentInfo.wallet,
|
439
|
+
stakingAmount.toInt()
|
440
|
+
);
|
297
441
|
}
|
298
442
|
}
|
299
443
|
}
|