@etherisc/gif-next 0.0.2-f30e0eb-805 → 0.0.2-f398177-971
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 +47 -6
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +70 -13
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +137 -6
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +144 -13
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +161 -20
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +151 -20
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +71 -20
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +62 -21
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +310 -2004
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +101 -52
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +425 -2757
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +95 -58
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +348 -58
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +153 -207
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +38 -83
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +113 -34
- 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 +8 -8
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +6 -6
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +6 -6
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +186 -236
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +38 -55
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +377 -182
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +74 -39
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +713 -83
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +147 -32
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +266 -442
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +82 -107
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +111 -174
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +233 -128
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +385 -51
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +109 -282
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +210 -99
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +682 -33
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +85 -27
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +420 -160
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +104 -53
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +880 -82
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +90 -39
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +144 -57
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +28 -37
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +5 -37
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +2 -2
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +22 -49
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +21 -34
- 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 +10 -23
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +3 -3
- 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/INftOwnable.sol/INftOwnable.json +0 -13
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +69 -9
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +0 -13
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +85 -27
- 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 +6 -19
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +80 -26
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +14 -27
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +6 -19
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +91 -28
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +6 -19
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +106 -39
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/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 +74 -19
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/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/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +25 -4
- package/contracts/components/Distribution.sol +11 -6
- package/contracts/components/IComponent.sol +19 -3
- package/contracts/components/IPoolComponent.sol +8 -7
- package/contracts/components/IProductComponent.sol +5 -4
- package/contracts/components/Pool.sol +17 -14
- package/contracts/components/Product.sol +144 -62
- package/contracts/instance/BundleManager.sol +3 -4
- package/contracts/instance/IInstance.sol +32 -53
- package/contracts/instance/IInstanceService.sol +15 -14
- package/contracts/instance/Instance.sol +107 -205
- package/contracts/instance/InstanceAccessManager.sol +44 -25
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +85 -7
- package/contracts/instance/InstanceService.sol +102 -289
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +1 -1
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +8 -34
- package/contracts/instance/base/Lifecycle.sol +15 -4
- package/contracts/instance/module/IAccess.sol +2 -2
- package/contracts/instance/module/IBundle.sol +6 -4
- package/contracts/instance/module/IComponents.sol +7 -1
- package/contracts/instance/module/IDistribution.sol +3 -2
- package/contracts/instance/module/IPolicy.sol +13 -8
- package/contracts/instance/service/ApplicationService.sol +62 -226
- package/contracts/instance/service/BundleService.sol +172 -126
- package/contracts/instance/service/ClaimService.sol +318 -32
- package/contracts/instance/service/DistributionService.sol +71 -190
- package/contracts/instance/service/IApplicationService.sol +8 -28
- package/contracts/instance/service/IBundleService.sol +82 -26
- package/contracts/instance/service/IClaimService.sol +52 -23
- package/contracts/instance/service/IDistributionService.sol +11 -22
- package/contracts/instance/service/IPolicyService.sol +24 -16
- package/contracts/instance/service/IPoolService.sol +82 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +152 -179
- package/contracts/instance/service/PoolService.sol +239 -56
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +27 -58
- package/contracts/registry/IRegistryService.sol +2 -3
- package/contracts/registry/RegistryService.sol +24 -21
- package/contracts/registry/ReleaseManager.sol +20 -18
- package/contracts/shared/IPolicyHolder.sol +23 -9
- package/contracts/shared/IRegistryLinked.sol +0 -1
- package/contracts/shared/IService.sol +6 -6
- package/contracts/shared/NftOwnable.sol +0 -2
- package/contracts/shared/PolicyHolder.sol +30 -17
- package/contracts/shared/Registerable.sol +10 -9
- package/contracts/shared/RegistryLinked.sol +0 -5
- package/contracts/shared/Service.sol +21 -7
- package/contracts/shared/TokenHandler.sol +4 -2
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/ClaimId.sol +25 -2
- package/contracts/types/Fee.sol +16 -8
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +33 -5
- package/contracts/types/StateId.sol +6 -2
- package/contracts/types/Timestamp.sol +5 -0
- package/package.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- /package/contracts/{instance → shared}/AccessManagerUpgradeableInitializeable.sol +0 -0
@@ -16,6 +16,7 @@ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
|
16
16
|
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
17
17
|
import {Pool} from "../../components/Pool.sol";
|
18
18
|
|
19
|
+
import {Amount, AmountLib} from "../../types/Amount.sol";
|
19
20
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
21
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
|
21
22
|
import {Seconds} from "../../types/Seconds.sol";
|
@@ -57,41 +58,73 @@ contract BundleService is
|
|
57
58
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
58
59
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
59
60
|
// owner is PoolServiceManager deployer
|
60
|
-
initializeService(registryAddress, owner);
|
61
|
+
initializeService(registryAddress, address(0), owner);
|
61
62
|
registerInterface(type(IBundleService).interfaceId);
|
62
63
|
}
|
63
64
|
|
64
|
-
function getDomain() public pure override
|
65
|
+
function getDomain() public pure override returns(ObjectType) {
|
65
66
|
return BUNDLE();
|
66
67
|
}
|
67
68
|
|
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
|
+
Amount stakingAmount
|
79
|
+
)
|
80
|
+
internal
|
81
|
+
returns (
|
82
|
+
TokenHandler tokenHandler,
|
83
|
+
address wallet,
|
84
|
+
Amount netStakingAmount
|
85
|
+
)
|
86
|
+
{
|
87
|
+
if(stakingAmount.gtz()) {
|
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
|
+
Amount 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 = poolInfo.balanceAmount + netStakingAmount;
|
102
|
+
|
103
|
+
if(poolFeeAmount.gtz()) {
|
104
|
+
poolInfo.feeAmount = 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
|
+
|
68
114
|
function create(
|
115
|
+
IInstance instance,
|
116
|
+
NftId poolNftId,
|
69
117
|
address owner,
|
70
|
-
Fee memory
|
71
|
-
|
118
|
+
Fee memory bundleFee,
|
119
|
+
Amount stakingAmount,
|
72
120
|
Seconds lifetime,
|
73
121
|
bytes calldata filter
|
74
122
|
)
|
75
123
|
external
|
76
124
|
override
|
125
|
+
// TODO add restricted and add authz for pool service
|
77
126
|
returns(NftId bundleNftId)
|
78
127
|
{
|
79
|
-
(IRegistry.ObjectInfo memory info, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
80
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
81
|
-
NftId poolNftId = info.nftId;
|
82
|
-
|
83
|
-
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
84
|
-
poolNftId,
|
85
|
-
fee,
|
86
|
-
filter,
|
87
|
-
stakingAmount,
|
88
|
-
0,
|
89
|
-
stakingAmount,
|
90
|
-
lifetime,
|
91
|
-
zeroTimestamp(),
|
92
|
-
zeroTimestamp()
|
93
|
-
);
|
94
|
-
|
95
128
|
// register bundle with registry
|
96
129
|
bundleNftId = getRegistryService().registerBundle(
|
97
130
|
IRegistry.ObjectInfo(
|
@@ -101,25 +134,32 @@ contract BundleService is
|
|
101
134
|
false, // intercepting property for bundles is defined on pool
|
102
135
|
address(0),
|
103
136
|
owner,
|
104
|
-
|
137
|
+
"" // bundle data to be stored in registry
|
105
138
|
)
|
106
139
|
);
|
107
140
|
|
108
141
|
// create bundle info in instance
|
109
|
-
instance.createBundle(
|
110
|
-
|
142
|
+
instance.getInstanceStore().createBundle(
|
143
|
+
bundleNftId,
|
144
|
+
IBundle.BundleInfo(
|
145
|
+
poolNftId,
|
146
|
+
bundleFee,
|
147
|
+
filter,
|
148
|
+
stakingAmount,
|
149
|
+
AmountLib.zero(),
|
150
|
+
AmountLib.zero(),
|
151
|
+
lifetime,
|
152
|
+
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
153
|
+
zeroTimestamp()));
|
154
|
+
|
155
|
+
// put bundle under bundle managemet
|
111
156
|
BundleManager bundleManager = instance.getBundleManager();
|
112
157
|
bundleManager.add(bundleNftId);
|
113
|
-
|
114
|
-
_processStakingByTreasury(
|
115
|
-
instanceReader,
|
116
|
-
poolNftId,
|
117
|
-
bundleNftId,
|
118
|
-
stakingAmount);
|
119
158
|
|
120
159
|
// TODO add logging
|
121
160
|
}
|
122
161
|
|
162
|
+
|
123
163
|
function setFee(
|
124
164
|
NftId bundleNftId,
|
125
165
|
Fee memory fee
|
@@ -127,56 +167,105 @@ contract BundleService is
|
|
127
167
|
external
|
128
168
|
override
|
129
169
|
{
|
130
|
-
(
|
170
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
131
171
|
InstanceReader instanceReader = instance.getInstanceReader();
|
132
|
-
NftId poolNftId = info.nftId;
|
133
|
-
|
134
172
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
135
|
-
|
136
|
-
|
173
|
+
if(bundleInfo.poolNftId.eqz()) {
|
174
|
+
revert ErrorBundleServiceBundleUnknown(bundleNftId);
|
175
|
+
}
|
137
176
|
|
138
|
-
bundleInfo.
|
177
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
178
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
179
|
+
}
|
139
180
|
|
140
|
-
|
181
|
+
bundleInfo.fee = fee;
|
182
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
141
183
|
}
|
142
184
|
|
143
185
|
|
186
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
144
187
|
function lockCollateral(
|
145
188
|
IInstance instance,
|
146
189
|
NftId policyNftId,
|
147
190
|
NftId bundleNftId,
|
148
|
-
|
149
|
-
|
191
|
+
Amount collateralAmount, // required amount to collateralize policy
|
192
|
+
Amount premiumAmount // premium part that reaches bundle for this policy
|
150
193
|
)
|
151
194
|
external
|
152
|
-
onlyService
|
153
|
-
returns (
|
154
|
-
IBundle.BundleInfo memory bundleInfo
|
155
|
-
)
|
195
|
+
onlyService // TODO replace with restricted + appropriate granting
|
156
196
|
{
|
157
197
|
InstanceReader instanceReader = instance.getInstanceReader();
|
158
|
-
|
198
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
199
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
200
|
+
|
201
|
+
// ensure bundle is active and not yet expired
|
202
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
203
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
204
|
+
}
|
159
205
|
|
160
|
-
//
|
206
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
207
|
+
Amount capacity = bundleInfo.capitalAmount + premiumAmount - bundleInfo.lockedAmount;
|
208
|
+
if(capacity < collateralAmount) {
|
209
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
210
|
+
}
|
161
211
|
|
162
|
-
//
|
163
|
-
|
164
|
-
|
212
|
+
// TODO add more validation
|
213
|
+
|
214
|
+
// updated locked amount
|
215
|
+
bundleInfo.lockedAmount = bundleInfo.lockedAmount + collateralAmount;
|
165
216
|
|
166
|
-
|
217
|
+
// update capital and fees when premiums are involved
|
218
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
167
219
|
|
168
|
-
|
220
|
+
// link policy to bundle in bundle manger
|
221
|
+
_linkPolicy(instance, policyNftId);
|
169
222
|
}
|
170
223
|
|
171
224
|
|
225
|
+
function _updateBundleWithPremium(
|
226
|
+
IInstance instance,
|
227
|
+
NftId bundleNftId,
|
228
|
+
IBundle.BundleInfo memory bundleInfo,
|
229
|
+
Amount premiumAmount
|
230
|
+
)
|
231
|
+
internal
|
232
|
+
{
|
233
|
+
// update bundle capital and fee amounts
|
234
|
+
if(premiumAmount.gtz()) {
|
235
|
+
// calculate fees and net premium amounts
|
236
|
+
(
|
237
|
+
,
|
238
|
+
Amount netPremiumAmount
|
239
|
+
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
240
|
+
|
241
|
+
// update bundle info with additional capital
|
242
|
+
bundleInfo.capitalAmount = bundleInfo.capitalAmount + netPremiumAmount;
|
243
|
+
}
|
244
|
+
|
245
|
+
// save updated bundle info
|
246
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
247
|
+
}
|
248
|
+
|
249
|
+
function updateBundleFees(
|
250
|
+
IInstance instance,
|
251
|
+
NftId bundleNftId,
|
252
|
+
Amount feeAmount
|
253
|
+
)
|
254
|
+
external
|
255
|
+
{
|
256
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
257
|
+
bundleInfo.feeAmount = bundleInfo.feeAmount.add(feeAmount);
|
258
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
259
|
+
}
|
260
|
+
|
172
261
|
function lock(NftId bundleNftId)
|
173
262
|
external
|
174
263
|
virtual
|
175
264
|
{
|
176
|
-
(
|
265
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
177
266
|
|
178
267
|
// udpate bundle state
|
179
|
-
instance.updateBundleState(bundleNftId, PAUSED());
|
268
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
180
269
|
|
181
270
|
// update set of active bundles
|
182
271
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -190,10 +279,10 @@ contract BundleService is
|
|
190
279
|
external
|
191
280
|
virtual
|
192
281
|
{
|
193
|
-
(
|
282
|
+
(,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
194
283
|
|
195
284
|
// udpate bundle state
|
196
|
-
instance.updateBundleState(bundleNftId, ACTIVE());
|
285
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
197
286
|
|
198
287
|
// update set of active bundles
|
199
288
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -203,14 +292,16 @@ contract BundleService is
|
|
203
292
|
}
|
204
293
|
|
205
294
|
|
206
|
-
function close(
|
295
|
+
function close(
|
296
|
+
IInstance instance,
|
297
|
+
NftId bundleNftId
|
298
|
+
)
|
207
299
|
external
|
208
300
|
virtual
|
301
|
+
// TODO add restricted and autz for pool service
|
209
302
|
{
|
210
|
-
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
211
|
-
|
212
303
|
// udpate bundle state
|
213
|
-
instance.updateBundleState(bundleNftId, CLOSED());
|
304
|
+
instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
|
214
305
|
|
215
306
|
// ensure no open policies attached to bundle
|
216
307
|
BundleManager bundleManager = instance.getBundleManager();
|
@@ -221,14 +312,13 @@ contract BundleService is
|
|
221
312
|
|
222
313
|
// update set of active bundles
|
223
314
|
bundleManager.lock(bundleNftId);
|
224
|
-
|
225
|
-
emit LogBundleServiceBundleClosed(bundleNftId);
|
226
315
|
}
|
227
316
|
|
228
317
|
|
229
|
-
function increaseBalance(
|
318
|
+
function increaseBalance(
|
319
|
+
IInstance instance,
|
230
320
|
NftId bundleNftId,
|
231
|
-
|
321
|
+
Amount premiumAmount
|
232
322
|
)
|
233
323
|
external
|
234
324
|
onlyService
|
@@ -236,15 +326,16 @@ contract BundleService is
|
|
236
326
|
InstanceReader instanceReader = instance.getInstanceReader();
|
237
327
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
238
328
|
|
239
|
-
|
329
|
+
// update capital and fees when premiums are involved
|
330
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
240
331
|
|
241
|
-
|
332
|
+
// TODO add logging (?)
|
242
333
|
}
|
243
334
|
|
244
|
-
function
|
335
|
+
function releaseCollateral(IInstance instance,
|
245
336
|
NftId policyNftId,
|
246
337
|
NftId bundleNftId,
|
247
|
-
|
338
|
+
Amount collateralAmount
|
248
339
|
)
|
249
340
|
external
|
250
341
|
onlyService
|
@@ -252,24 +343,20 @@ contract BundleService is
|
|
252
343
|
InstanceReader instanceReader = instance.getInstanceReader();
|
253
344
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
254
345
|
|
255
|
-
//
|
256
|
-
bundleInfo.lockedAmount
|
257
|
-
|
258
|
-
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
259
|
-
|
260
|
-
unlinkPolicy(instance, policyNftId);
|
346
|
+
// reduce locked amount by released collateral amount
|
347
|
+
bundleInfo.lockedAmount = bundleInfo.lockedAmount - collateralAmount;
|
348
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
261
349
|
}
|
262
350
|
|
263
351
|
/// @dev links policy to bundle
|
264
|
-
function
|
352
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
265
353
|
internal
|
266
|
-
onlyService
|
267
354
|
{
|
268
355
|
InstanceReader instanceReader = instance.getInstanceReader();
|
269
356
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
270
357
|
|
271
|
-
// ensure policy has not yet been activated
|
272
|
-
if (policyInfo.activatedAt.gtz()) {
|
358
|
+
// ensure policy has not yet been activated in a previous tx already
|
359
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
273
360
|
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
274
361
|
}
|
275
362
|
|
@@ -277,60 +364,19 @@ contract BundleService is
|
|
277
364
|
bundleManager.linkPolicy(policyNftId);
|
278
365
|
}
|
279
366
|
|
280
|
-
|
281
|
-
function unlinkPolicy(
|
282
|
-
|
283
|
-
|
367
|
+
/// @dev unlinks policy from bundle
|
368
|
+
function unlinkPolicy(
|
369
|
+
IInstance instance,
|
370
|
+
NftId policyNftId
|
371
|
+
)
|
372
|
+
external
|
373
|
+
virtual
|
284
374
|
{
|
285
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
286
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
287
|
-
|
288
|
-
// ensure policy has no open claims
|
289
|
-
if (policyInfo.openClaimsCount > 0) {
|
290
|
-
revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
|
291
|
-
policyNftId,
|
292
|
-
policyInfo.openClaimsCount);
|
293
|
-
}
|
294
|
-
|
295
375
|
// ensure policy is closeable
|
296
|
-
if (
|
297
|
-
|
298
|
-
{
|
299
|
-
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
376
|
+
if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
|
377
|
+
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
300
378
|
}
|
301
|
-
|
302
|
-
BundleManager bundleManager = instance.getBundleManager();
|
303
|
-
bundleManager.unlinkPolicy(policyNftId);
|
304
|
-
}
|
305
379
|
|
306
|
-
|
307
|
-
InstanceReader instanceReader,
|
308
|
-
NftId poolNftId,
|
309
|
-
NftId bundleNftId,
|
310
|
-
uint256 stakingAmount
|
311
|
-
)
|
312
|
-
internal
|
313
|
-
{
|
314
|
-
// process token transfer(s)
|
315
|
-
if(stakingAmount > 0) {
|
316
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
317
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(
|
318
|
-
componentInfo.data, (IComponents.PoolInfo));
|
319
|
-
|
320
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
321
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
322
|
-
Fee memory stakingFee = poolInfo.stakingFee;
|
323
|
-
|
324
|
-
tokenHandler.transfer(
|
325
|
-
bundleOwner,
|
326
|
-
componentInfo.wallet,
|
327
|
-
stakingAmount
|
328
|
-
);
|
329
|
-
|
330
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
331
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
332
|
-
// TODO: track staking fees in pool's state (issue #177)
|
333
|
-
}
|
334
|
-
}
|
380
|
+
instance.getBundleManager().unlinkPolicy(policyNftId);
|
335
381
|
}
|
336
382
|
}
|