@etherisc/gif-next 0.0.2-e922e07-736 → 0.0.2-e9a637d-547
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 +0 -71
- 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 +68 -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 +214 -2063
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +196 -51
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +363 -2832
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +491 -127
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +101 -167
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +333 -171
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -23
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2677 -0
- 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 +124 -53
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +21 -13
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +384 -249
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -14
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +104 -41
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +11 -7
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +195 -121
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +51 -47
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +80 -14
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +212 -186
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +80 -14
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +101 -24
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +90 -24
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +511 -14
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +80 -14
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +136 -65
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +27 -19
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +561 -51
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +24 -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 +161 -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/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/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 +2 -2
- 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/IComponent.sol +9 -1
- package/contracts/components/IPoolComponent.sol +5 -43
- package/contracts/components/Pool.sol +47 -122
- package/contracts/components/Product.sol +4 -0
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +6 -4
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +23 -55
- package/contracts/instance/IInstanceService.sol +31 -6
- package/contracts/instance/Instance.sol +90 -182
- package/contracts/instance/InstanceAccessManager.sol +402 -159
- package/contracts/instance/InstanceReader.sol +12 -12
- package/contracts/instance/InstanceService.sol +287 -246
- package/contracts/instance/InstanceStore.sol +219 -0
- 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 +11 -2
- 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/ISetup.sol +3 -16
- package/contracts/instance/service/ApplicationService.sol +18 -16
- package/contracts/instance/service/BundleService.sol +213 -81
- package/contracts/instance/service/ClaimService.sol +3 -3
- package/contracts/instance/service/DistributionService.sol +57 -70
- package/contracts/instance/service/IBundleService.sol +63 -25
- package/contracts/instance/service/IDistributionService.sol +1 -0
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/PolicyService.sol +68 -100
- package/contracts/instance/service/PoolService.sol +214 -20
- package/contracts/instance/service/ProductService.sol +34 -58
- 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 +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +1 -0
- package/contracts/types/RoleId.sol +6 -4
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +1 -0
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +1 -1
@@ -10,6 +10,7 @@ import {Product} from "../../components/Product.sol";
|
|
10
10
|
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
11
11
|
import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
|
12
12
|
import {IInstance} from "../IInstance.sol";
|
13
|
+
import {IComponents} from "../module/IComponents.sol";
|
13
14
|
import {IPolicy} from "../module/IPolicy.sol";
|
14
15
|
import {IRisk} from "../module/IRisk.sol";
|
15
16
|
import {IBundle} from "../module/IBundle.sol";
|
@@ -43,6 +44,7 @@ import {IDistributionService} from "./IDistributionService.sol";
|
|
43
44
|
import {IPoolService} from "./IPoolService.sol";
|
44
45
|
import {IService} from "../../shared/IService.sol";
|
45
46
|
import {Service} from "../../shared/Service.sol";
|
47
|
+
import {InstanceStore} from "../InstanceStore.sol";
|
46
48
|
|
47
49
|
|
48
50
|
contract ApplicationService is
|
@@ -64,14 +66,14 @@ contract ApplicationService is
|
|
64
66
|
address initialOwner;
|
65
67
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
66
68
|
|
67
|
-
initializeService(registryAddress, owner);
|
69
|
+
initializeService(registryAddress, address(0), owner);
|
68
70
|
registerInterface(type(IApplicationService).interfaceId);
|
69
71
|
|
70
|
-
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(),
|
72
|
+
_distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), getVersion().toMajorPart()));
|
71
73
|
}
|
72
74
|
|
73
75
|
|
74
|
-
function getDomain() public pure override
|
76
|
+
function getDomain() public pure override returns(ObjectType) {
|
75
77
|
return APPLICATION();
|
76
78
|
}
|
77
79
|
|
@@ -89,13 +91,13 @@ contract ApplicationService is
|
|
89
91
|
virtual
|
90
92
|
returns (NftId applicationNftId)
|
91
93
|
{
|
92
|
-
(
|
94
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
93
95
|
// TODO: add validations (see create bundle in pool service)
|
94
96
|
|
95
97
|
applicationNftId = getRegistryService().registerPolicy(
|
96
98
|
IRegistry.ObjectInfo(
|
97
99
|
zeroNftId(),
|
98
|
-
|
100
|
+
productNftId,
|
99
101
|
POLICY(),
|
100
102
|
false, // intercepting property for policies is defined on product
|
101
103
|
address(0),
|
@@ -106,7 +108,7 @@ contract ApplicationService is
|
|
106
108
|
|
107
109
|
// (uint256 premiumAmount,,,,,) = calculatePremium(
|
108
110
|
IPolicy.Premium memory premium = calculatePremium(
|
109
|
-
|
111
|
+
productNftId,
|
110
112
|
riskId,
|
111
113
|
sumInsuredAmount,
|
112
114
|
lifetime,
|
@@ -116,7 +118,7 @@ contract ApplicationService is
|
|
116
118
|
);
|
117
119
|
|
118
120
|
IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
|
119
|
-
|
121
|
+
productNftId,
|
120
122
|
bundleNftId,
|
121
123
|
referralId,
|
122
124
|
riskId,
|
@@ -134,8 +136,7 @@ contract ApplicationService is
|
|
134
136
|
zeroTimestamp()
|
135
137
|
);
|
136
138
|
|
137
|
-
instance.createApplication(applicationNftId, policyInfo);
|
138
|
-
instance.updateApplicationState(applicationNftId, APPLIED());
|
139
|
+
instance.getInstanceStore().createApplication(applicationNftId, policyInfo);
|
139
140
|
|
140
141
|
// TODO: add logging
|
141
142
|
}
|
@@ -172,8 +173,8 @@ contract ApplicationService is
|
|
172
173
|
external
|
173
174
|
virtual override
|
174
175
|
{
|
175
|
-
(
|
176
|
-
instance.updateApplicationState(applicationNftId, REVOKED());
|
176
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
177
|
+
instance.getInstanceStore().updateApplicationState(applicationNftId, REVOKED());
|
177
178
|
}
|
178
179
|
|
179
180
|
// TODO: maybe move this to a pricing service later
|
@@ -254,8 +255,8 @@ contract ApplicationService is
|
|
254
255
|
premium.fullPremiumAmount += t;
|
255
256
|
}
|
256
257
|
{
|
257
|
-
|
258
|
-
uint256 t =
|
258
|
+
bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
|
259
|
+
uint256 t = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fixedFee;
|
259
260
|
premium.poolFeeFixAmount = t;
|
260
261
|
premium.fullPremiumAmount += t;
|
261
262
|
}
|
@@ -307,8 +308,9 @@ contract ApplicationService is
|
|
307
308
|
premium.fullPremiumAmount += t;
|
308
309
|
}
|
309
310
|
{
|
310
|
-
|
311
|
-
|
311
|
+
bytes memory componentData = instanceReader.getComponentInfo(poolNftId).data;
|
312
|
+
UFixed poolFractionalFee = abi.decode(componentData, (IComponents.PoolInfo)).poolFee.fractionalFee;
|
313
|
+
uint256 t = (UFixedLib.toUFixed(netPremiumAmount) * poolFractionalFee).toInt();
|
312
314
|
premium.poolFeeVarAmount = t;
|
313
315
|
premium.fullPremiumAmount += t;
|
314
316
|
}
|
@@ -336,7 +338,7 @@ contract ApplicationService is
|
|
336
338
|
|
337
339
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
338
340
|
IRegistry.ObjectInfo memory productInfo;
|
339
|
-
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
341
|
+
(, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
340
342
|
product = Product(productInfo.objectAddress);
|
341
343
|
}
|
342
344
|
|
@@ -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.getInstanceStore().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,35 +149,37 @@ 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
|
-
instance.createBundle(bundleNftId, bundleInfo);
|
157
|
+
instance.getInstanceStore().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
185
|
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
@@ -136,64 +187,140 @@ contract BundleService is
|
|
136
187
|
|
137
188
|
bundleInfo.fee = fee;
|
138
189
|
|
139
|
-
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
190
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
140
191
|
}
|
141
192
|
|
142
|
-
|
193
|
+
|
194
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
195
|
+
function lockCollateral(
|
196
|
+
IInstance instance,
|
197
|
+
NftId policyNftId,
|
198
|
+
NftId bundleNftId,
|
199
|
+
uint256 collateralAmount, // required amount to collateralize policy
|
200
|
+
uint256 premiumAmount // premium part that reaches bundle for this policy
|
201
|
+
)
|
143
202
|
external
|
144
|
-
onlyService
|
203
|
+
onlyService // TODO replace with restricted + appropriate granting
|
145
204
|
{
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
205
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
206
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
207
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
208
|
+
|
209
|
+
// ensure bundle is active and not yet expired
|
210
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
211
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
212
|
+
}
|
213
|
+
|
214
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
215
|
+
uint capacity = bundleInfo.capitalAmount.toInt() + premiumAmount - bundleInfo.lockedAmount.toInt();
|
216
|
+
if(capacity < collateralAmount) {
|
217
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
218
|
+
}
|
219
|
+
|
220
|
+
// TODO add more validation
|
221
|
+
|
222
|
+
// updated locked amount
|
223
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() + collateralAmount);
|
224
|
+
|
225
|
+
// update capital and fees when premiums are involved
|
226
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
227
|
+
|
228
|
+
// link policy to bundle in bundle manger
|
229
|
+
_linkPolicy(instance, policyNftId);
|
230
|
+
}
|
150
231
|
|
151
|
-
|
232
|
+
|
233
|
+
function _updateBundleWithPremium(
|
234
|
+
IInstance instance,
|
235
|
+
NftId bundleNftId,
|
236
|
+
IBundle.BundleInfo memory bundleInfo,
|
237
|
+
uint256 premiumAmount
|
238
|
+
)
|
239
|
+
internal
|
240
|
+
{
|
241
|
+
// update bundle capital and fee amounts
|
242
|
+
if(premiumAmount > 0) {
|
243
|
+
// calculate fees and net premium amounts
|
244
|
+
(
|
245
|
+
uint256 feeAmount,
|
246
|
+
uint256 netPremiumAmount
|
247
|
+
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
248
|
+
|
249
|
+
// update bundle info with additional capital
|
250
|
+
bundleInfo.capitalAmount = AmountLib.toAmount(bundleInfo.capitalAmount.toInt() + netPremiumAmount);
|
251
|
+
|
252
|
+
// update bundle info with additional fees
|
253
|
+
if(feeAmount > 0) {
|
254
|
+
bundleInfo.feeAmount = AmountLib.toAmount(bundleInfo.feeAmount.toInt() + feeAmount);
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
// save updated bundle info
|
259
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
260
|
+
}
|
261
|
+
|
262
|
+
|
263
|
+
function lock(NftId bundleNftId)
|
152
264
|
external
|
265
|
+
virtual
|
153
266
|
{
|
154
|
-
(
|
267
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
268
|
+
|
269
|
+
// udpate bundle state
|
270
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
271
|
+
|
272
|
+
// update set of active bundles
|
155
273
|
BundleManager bundleManager = instance.getBundleManager();
|
156
274
|
bundleManager.lock(bundleNftId);
|
275
|
+
|
276
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
157
277
|
}
|
158
278
|
|
159
|
-
|
279
|
+
|
280
|
+
function unlock(NftId bundleNftId)
|
160
281
|
external
|
282
|
+
virtual
|
161
283
|
{
|
162
|
-
(
|
284
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
285
|
+
|
286
|
+
// udpate bundle state
|
287
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
288
|
+
|
289
|
+
// update set of active bundles
|
163
290
|
BundleManager bundleManager = instance.getBundleManager();
|
164
291
|
bundleManager.unlock(bundleNftId);
|
292
|
+
|
293
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
165
294
|
}
|
166
295
|
|
167
|
-
|
296
|
+
|
297
|
+
function close(
|
168
298
|
IInstance instance,
|
169
|
-
NftId
|
170
|
-
NftId bundleNftId,
|
171
|
-
uint256 collateralAmount,
|
172
|
-
uint256 netPremiumAmount
|
299
|
+
NftId bundleNftId
|
173
300
|
)
|
174
301
|
external
|
175
|
-
|
176
|
-
|
177
|
-
IBundle.BundleInfo memory bundleInfo
|
178
|
-
)
|
302
|
+
virtual
|
303
|
+
// TODO add restricted and autz for pool service
|
179
304
|
{
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
// TODO add validation
|
305
|
+
// udpate bundle state
|
306
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
|
184
307
|
|
185
|
-
//
|
186
|
-
|
187
|
-
|
308
|
+
// ensure no open policies attached to bundle
|
309
|
+
BundleManager bundleManager = instance.getBundleManager();
|
310
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
311
|
+
if(openPolicies > 0) {
|
312
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
313
|
+
}
|
188
314
|
|
189
|
-
|
190
|
-
|
191
|
-
linkPolicy(instance, policyNftId);
|
315
|
+
// update set of active bundles
|
316
|
+
bundleManager.lock(bundleNftId);
|
192
317
|
}
|
193
318
|
|
194
|
-
|
319
|
+
|
320
|
+
function increaseBalance(
|
321
|
+
IInstance instance,
|
195
322
|
NftId bundleNftId,
|
196
|
-
uint256
|
323
|
+
uint256 premiumAmount
|
197
324
|
)
|
198
325
|
external
|
199
326
|
onlyService
|
@@ -201,12 +328,13 @@ contract BundleService is
|
|
201
328
|
InstanceReader instanceReader = instance.getInstanceReader();
|
202
329
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
203
330
|
|
204
|
-
|
331
|
+
// update capital and fees when premiums are involved
|
332
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
205
333
|
|
206
|
-
|
334
|
+
// TODO add logging (?)
|
207
335
|
}
|
208
336
|
|
209
|
-
function
|
337
|
+
function releaseCollateral(IInstance instance,
|
210
338
|
NftId policyNftId,
|
211
339
|
NftId bundleNftId,
|
212
340
|
uint256 collateralAmount
|
@@ -217,35 +345,33 @@ contract BundleService is
|
|
217
345
|
InstanceReader instanceReader = instance.getInstanceReader();
|
218
346
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
219
347
|
|
220
|
-
//
|
221
|
-
bundleInfo.lockedAmount
|
348
|
+
// reduce locked amount by released collateral amount
|
349
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() - collateralAmount);
|
222
350
|
|
223
|
-
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
351
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
224
352
|
|
225
|
-
|
353
|
+
_unlinkPolicy(instance, policyNftId);
|
226
354
|
}
|
227
355
|
|
228
356
|
/// @dev links policy to bundle
|
229
|
-
function
|
357
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
230
358
|
internal
|
231
|
-
onlyService
|
232
359
|
{
|
233
360
|
InstanceReader instanceReader = instance.getInstanceReader();
|
234
361
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
235
362
|
|
236
|
-
// ensure policy has not yet been activated
|
237
|
-
if (policyInfo.activatedAt.gtz()) {
|
238
|
-
revert BundleManager.
|
363
|
+
// ensure policy has not yet been activated in a previous tx already
|
364
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
365
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
239
366
|
}
|
240
|
-
|
367
|
+
|
241
368
|
BundleManager bundleManager = instance.getBundleManager();
|
242
369
|
bundleManager.linkPolicy(policyNftId);
|
243
370
|
}
|
244
371
|
|
245
372
|
/// @dev unlinks policy from bundle
|
246
|
-
function
|
373
|
+
function _unlinkPolicy(IInstance instance, NftId policyNftId)
|
247
374
|
internal
|
248
|
-
onlyService
|
249
375
|
{
|
250
376
|
InstanceReader instanceReader = instance.getInstanceReader();
|
251
377
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
@@ -268,32 +394,38 @@ contract BundleService is
|
|
268
394
|
bundleManager.unlinkPolicy(policyNftId);
|
269
395
|
}
|
270
396
|
|
397
|
+
// TODO move this to pool service
|
271
398
|
function _processStakingByTreasury(
|
272
399
|
InstanceReader instanceReader,
|
273
400
|
NftId poolNftId,
|
274
401
|
NftId bundleNftId,
|
275
|
-
|
402
|
+
Amount stakingAmount
|
276
403
|
)
|
277
404
|
internal
|
278
405
|
{
|
279
406
|
// process token transfer(s)
|
280
|
-
if(stakingAmount
|
281
|
-
|
282
|
-
|
407
|
+
if(stakingAmount.gtz()) {
|
408
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
409
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
410
|
+
|
411
|
+
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
283
412
|
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
284
413
|
Fee memory stakingFee = poolInfo.stakingFee;
|
285
414
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
stakingAmount
|
290
|
-
);
|
415
|
+
// pool fee and bundle capital book keeping
|
416
|
+
if (FeeLib.gtz(stakingFee)) {
|
417
|
+
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount.toInt());
|
291
418
|
|
292
419
|
|
293
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
294
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
295
420
|
// TODO: track staking fees in pool's state (issue #177)
|
296
421
|
}
|
422
|
+
|
423
|
+
// transfer full staking amount to pool wallet
|
424
|
+
tokenHandler.transfer(
|
425
|
+
bundleOwner,
|
426
|
+
componentInfo.wallet,
|
427
|
+
stakingAmount.toInt()
|
428
|
+
);
|
297
429
|
}
|
298
430
|
}
|
299
431
|
}
|
@@ -64,12 +64,12 @@ contract ClaimService is
|
|
64
64
|
address initialOwner;
|
65
65
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
66
66
|
|
67
|
-
initializeService(registryAddress, owner);
|
67
|
+
initializeService(registryAddress, address(0), owner);
|
68
68
|
registerInterface(type(IClaimService).interfaceId);
|
69
69
|
}
|
70
70
|
|
71
71
|
|
72
|
-
function getDomain() public pure override
|
72
|
+
function getDomain() public pure override returns(ObjectType) {
|
73
73
|
return CLAIM();
|
74
74
|
}
|
75
75
|
|
@@ -145,7 +145,7 @@ contract ClaimService is
|
|
145
145
|
|
146
146
|
function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
|
147
147
|
IRegistry.ObjectInfo memory productInfo;
|
148
|
-
(productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
148
|
+
(, productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
|
149
149
|
product = Product(productInfo.objectAddress);
|
150
150
|
}
|
151
151
|
}
|