@etherisc/gif-next 0.0.2-7b86057-523 → 0.0.2-7bdebe2-893
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 +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +315 -98
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +489 -163
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +250 -137
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +626 -189
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +427 -178
- 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 +1562 -814
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +227 -213
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +1119 -785
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +463 -167
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +418 -230
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +439 -379
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +355 -104
- 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 +197 -169
- 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 +58 -75
- 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 +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1092 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +672 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +527 -338
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +344 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1400 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +760 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1282 -256
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +619 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +279 -264
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +800 -159
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +159 -274
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +701 -118
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -160
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +338 -412
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +299 -128
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1062 -198
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +384 -89
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +231 -223
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
- 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 +34 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
- 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 +47 -15
- 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 +182 -232
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
- 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 +128 -37
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -29
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +71 -160
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +100 -33
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +283 -76
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +172 -160
- 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/shared/Versionable.sol/Versionable.json +2 -152
- 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 +115 -58
- 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 +190 -210
- 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 +8 -190
- 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 +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
- 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 +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- 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 +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- 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 +134 -78
- package/contracts/components/Distribution.sol +190 -57
- package/contracts/components/IComponent.sol +62 -15
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +84 -31
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +223 -148
- package/contracts/components/Product.sol +221 -115
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +51 -19
- package/contracts/instance/IInstanceService.sol +33 -11
- package/contracts/instance/Instance.sol +143 -94
- package/contracts/instance/InstanceAccessManager.sol +389 -160
- package/contracts/instance/InstanceReader.sol +85 -12
- package/contracts/instance/InstanceService.sol +273 -224
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +28 -32
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +22 -16
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +41 -9
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +356 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +224 -132
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +444 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +344 -19
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +78 -0
- package/contracts/instance/service/IBundleService.sol +93 -22
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +36 -50
- package/contracts/instance/service/IPoolService.sol +106 -3
- package/contracts/instance/service/PolicyService.sol +166 -346
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +312 -19
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +35 -58
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +5 -2
- package/contracts/registry/IRegistryService.sol +12 -11
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +43 -28
- package/contracts/registry/RegistryService.sol +70 -50
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +32 -40
- package/contracts/registry/TokenRegistry.sol +16 -12
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +64 -85
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -27
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +32 -20
- package/contracts/shared/TokenHandler.sol +11 -5
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +80 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +13 -5
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +11 -6
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +16 -9
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -1,25 +1,28 @@
|
|
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
|
-
import {Versionable} from "../../shared/Versionable.sol";
|
14
13
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
|
-
|
16
14
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
15
|
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
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";
|
19
20
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
|
-
import {
|
21
|
-
import {
|
21
|
+
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../../types/StateId.sol";
|
22
|
+
import {Seconds} from "../../types/Seconds.sol";
|
22
23
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
24
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
25
|
+
import {Versionable} from "../../shared/Versionable.sol";
|
23
26
|
|
24
27
|
import {IService} from "../../shared/IService.sol";
|
25
28
|
import {Service} from "../../shared/Service.sol";
|
@@ -55,42 +58,73 @@ contract BundleService is
|
|
55
58
|
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
56
59
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
57
60
|
// owner is PoolServiceManager deployer
|
58
|
-
|
59
|
-
|
60
|
-
_registerInterface(type(IBundleService).interfaceId);
|
61
|
+
initializeService(registryAddress, address(0), owner);
|
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
|
-
Fee memory
|
70
|
-
|
71
|
-
|
118
|
+
Fee memory bundleFee,
|
119
|
+
Amount stakingAmount,
|
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
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
80
|
-
NftId poolNftId = info.nftId;
|
81
|
-
|
82
|
-
IBundle.BundleInfo memory bundleInfo = IBundle.BundleInfo(
|
83
|
-
poolNftId,
|
84
|
-
fee,
|
85
|
-
filter,
|
86
|
-
stakingAmount,
|
87
|
-
0,
|
88
|
-
stakingAmount,
|
89
|
-
lifetime,
|
90
|
-
zeroTimestamp(),
|
91
|
-
zeroTimestamp()
|
92
|
-
);
|
93
|
-
|
94
128
|
// register bundle with registry
|
95
129
|
bundleNftId = getRegistryService().registerBundle(
|
96
130
|
IRegistry.ObjectInfo(
|
@@ -100,94 +134,194 @@ contract BundleService is
|
|
100
134
|
false, // intercepting property for bundles is defined on pool
|
101
135
|
address(0),
|
102
136
|
owner,
|
103
|
-
|
137
|
+
"" // bundle data to be stored in registry
|
104
138
|
)
|
105
139
|
);
|
106
140
|
|
107
141
|
// create bundle info in instance
|
108
|
-
instance.createBundle(
|
109
|
-
|
142
|
+
instance.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
|
110
156
|
BundleManager bundleManager = instance.getBundleManager();
|
111
157
|
bundleManager.add(bundleNftId);
|
112
|
-
|
113
|
-
_processStakingByTreasury(
|
114
|
-
instanceReader,
|
115
|
-
poolNftId,
|
116
|
-
bundleNftId,
|
117
|
-
stakingAmount);
|
118
158
|
|
119
159
|
// TODO add logging
|
120
160
|
}
|
121
161
|
|
122
|
-
|
162
|
+
|
163
|
+
function setFee(
|
123
164
|
NftId bundleNftId,
|
124
165
|
Fee memory fee
|
125
166
|
)
|
126
167
|
external
|
127
168
|
override
|
128
169
|
{
|
129
|
-
(IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
170
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
130
171
|
InstanceReader instanceReader = instance.getInstanceReader();
|
131
|
-
NftId poolNftId = info.nftId;
|
132
172
|
|
133
173
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
134
|
-
|
135
|
-
|
174
|
+
if(bundleInfo.poolNftId.eqz()) {
|
175
|
+
revert ErrorBundleServiceBundleUnknown(bundleNftId);
|
176
|
+
}
|
177
|
+
|
178
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
179
|
+
revert ErrorBundleServiceBundlePoolMismatch(poolNftId, bundleInfo.poolNftId );
|
180
|
+
}
|
136
181
|
|
137
182
|
bundleInfo.fee = fee;
|
138
183
|
|
139
184
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
140
185
|
}
|
141
186
|
|
142
|
-
|
187
|
+
|
188
|
+
// the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
|
189
|
+
function lockCollateral(
|
190
|
+
IInstance instance,
|
191
|
+
NftId policyNftId,
|
192
|
+
NftId bundleNftId,
|
193
|
+
uint256 collateralAmount, // required amount to collateralize policy
|
194
|
+
uint256 premiumAmount // premium part that reaches bundle for this policy
|
195
|
+
)
|
143
196
|
external
|
144
|
-
onlyService
|
197
|
+
onlyService // TODO replace with restricted + appropriate granting
|
145
198
|
{
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
}
|
199
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
200
|
+
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
201
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
150
202
|
|
151
|
-
|
203
|
+
// ensure bundle is active and not yet expired
|
204
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
205
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
206
|
+
}
|
207
|
+
|
208
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
209
|
+
uint capacity = bundleInfo.capitalAmount.toInt() + premiumAmount - bundleInfo.lockedAmount.toInt();
|
210
|
+
if(capacity < collateralAmount) {
|
211
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
212
|
+
}
|
213
|
+
|
214
|
+
// TODO add more validation
|
215
|
+
|
216
|
+
// updated locked amount
|
217
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() + collateralAmount);
|
218
|
+
|
219
|
+
// update capital and fees when premiums are involved
|
220
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
221
|
+
|
222
|
+
// link policy to bundle in bundle manger
|
223
|
+
_linkPolicy(instance, policyNftId);
|
224
|
+
}
|
225
|
+
|
226
|
+
|
227
|
+
function _updateBundleWithPremium(
|
228
|
+
IInstance instance,
|
229
|
+
NftId bundleNftId,
|
230
|
+
IBundle.BundleInfo memory bundleInfo,
|
231
|
+
uint256 premiumAmount
|
232
|
+
)
|
233
|
+
internal
|
234
|
+
{
|
235
|
+
// update bundle capital and fee amounts
|
236
|
+
if(premiumAmount > 0) {
|
237
|
+
// calculate fees and net premium amounts
|
238
|
+
(
|
239
|
+
,
|
240
|
+
uint256 netPremiumAmount
|
241
|
+
) = FeeLib.calculateFee(bundleInfo.fee, premiumAmount);
|
242
|
+
|
243
|
+
// update bundle info with additional capital
|
244
|
+
bundleInfo.capitalAmount = AmountLib.toAmount(bundleInfo.capitalAmount.toInt() + netPremiumAmount);
|
245
|
+
}
|
246
|
+
|
247
|
+
// save updated bundle info
|
248
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
249
|
+
}
|
250
|
+
|
251
|
+
function updateBundleFees(
|
252
|
+
IInstance instance,
|
253
|
+
NftId bundleNftId,
|
254
|
+
Amount feeAmount
|
255
|
+
)
|
152
256
|
external
|
153
257
|
{
|
154
|
-
|
258
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
259
|
+
bundleInfo.feeAmount = bundleInfo.feeAmount.add(feeAmount);
|
260
|
+
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
261
|
+
}
|
262
|
+
|
263
|
+
|
264
|
+
function lock(NftId bundleNftId)
|
265
|
+
external
|
266
|
+
virtual
|
267
|
+
{
|
268
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
269
|
+
|
270
|
+
// udpate bundle state
|
271
|
+
instance.updateBundleState(bundleNftId, PAUSED());
|
272
|
+
|
273
|
+
// update set of active bundles
|
155
274
|
BundleManager bundleManager = instance.getBundleManager();
|
156
275
|
bundleManager.lock(bundleNftId);
|
276
|
+
|
277
|
+
emit LogBundleServiceBundleLocked(bundleNftId);
|
157
278
|
}
|
158
279
|
|
159
|
-
|
280
|
+
|
281
|
+
function unlock(NftId bundleNftId)
|
160
282
|
external
|
283
|
+
virtual
|
161
284
|
{
|
162
|
-
(
|
285
|
+
(,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
286
|
+
|
287
|
+
// udpate bundle state
|
288
|
+
instance.updateBundleState(bundleNftId, ACTIVE());
|
289
|
+
|
290
|
+
// update set of active bundles
|
163
291
|
BundleManager bundleManager = instance.getBundleManager();
|
164
292
|
bundleManager.unlock(bundleNftId);
|
293
|
+
|
294
|
+
emit LogBundleServiceBundleActivated(bundleNftId);
|
165
295
|
}
|
166
296
|
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
uint256 netPremiumAmount
|
297
|
+
|
298
|
+
function close(
|
299
|
+
IInstance instance,
|
300
|
+
NftId bundleNftId
|
172
301
|
)
|
173
302
|
external
|
174
|
-
|
303
|
+
virtual
|
304
|
+
// TODO add restricted and autz for pool service
|
175
305
|
{
|
176
|
-
|
177
|
-
|
306
|
+
// udpate bundle state
|
307
|
+
instance.updateBundleState(bundleNftId, CLOSED());
|
178
308
|
|
179
|
-
//
|
180
|
-
|
181
|
-
|
309
|
+
// ensure no open policies attached to bundle
|
310
|
+
BundleManager bundleManager = instance.getBundleManager();
|
311
|
+
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
312
|
+
if(openPolicies > 0) {
|
313
|
+
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
314
|
+
}
|
182
315
|
|
183
|
-
|
184
|
-
|
185
|
-
linkPolicy(instance, policyNftId);
|
316
|
+
// update set of active bundles
|
317
|
+
bundleManager.lock(bundleNftId);
|
186
318
|
}
|
187
319
|
|
188
|
-
|
320
|
+
|
321
|
+
function increaseBalance(
|
322
|
+
IInstance instance,
|
189
323
|
NftId bundleNftId,
|
190
|
-
uint256
|
324
|
+
uint256 premiumAmount
|
191
325
|
)
|
192
326
|
external
|
193
327
|
onlyService
|
@@ -195,12 +329,13 @@ contract BundleService is
|
|
195
329
|
InstanceReader instanceReader = instance.getInstanceReader();
|
196
330
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
197
331
|
|
198
|
-
|
332
|
+
// update capital and fees when premiums are involved
|
333
|
+
_updateBundleWithPremium(instance, bundleNftId, bundleInfo, premiumAmount);
|
199
334
|
|
200
|
-
|
335
|
+
// TODO add logging (?)
|
201
336
|
}
|
202
337
|
|
203
|
-
function
|
338
|
+
function releaseCollateral(IInstance instance,
|
204
339
|
NftId policyNftId,
|
205
340
|
NftId bundleNftId,
|
206
341
|
uint256 collateralAmount
|
@@ -211,83 +346,40 @@ contract BundleService is
|
|
211
346
|
InstanceReader instanceReader = instance.getInstanceReader();
|
212
347
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
213
348
|
|
214
|
-
//
|
215
|
-
bundleInfo.lockedAmount
|
216
|
-
|
349
|
+
// reduce locked amount by released collateral amount
|
350
|
+
bundleInfo.lockedAmount = AmountLib.toAmount(bundleInfo.lockedAmount.toInt() - collateralAmount);
|
217
351
|
instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
218
|
-
|
219
|
-
unlinkPolicy(instance, policyNftId);
|
220
352
|
}
|
221
353
|
|
222
354
|
/// @dev links policy to bundle
|
223
|
-
function
|
355
|
+
function _linkPolicy(IInstance instance, NftId policyNftId)
|
224
356
|
internal
|
225
|
-
onlyService
|
226
357
|
{
|
227
358
|
InstanceReader instanceReader = instance.getInstanceReader();
|
228
359
|
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
229
360
|
|
230
|
-
// ensure policy has not yet been activated
|
231
|
-
if (policyInfo.activatedAt.gtz()) {
|
232
|
-
revert BundleManager.
|
361
|
+
// ensure policy has not yet been activated in a previous tx already
|
362
|
+
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
363
|
+
revert BundleManager.ErrorBundleManagerPolicyAlreadyActivated(policyNftId);
|
233
364
|
}
|
234
365
|
|
235
366
|
BundleManager bundleManager = instance.getBundleManager();
|
236
367
|
bundleManager.linkPolicy(policyNftId);
|
237
368
|
}
|
238
369
|
|
239
|
-
|
240
|
-
function unlinkPolicy(
|
241
|
-
|
242
|
-
|
370
|
+
/// @dev unlinks policy from bundle
|
371
|
+
function unlinkPolicy(
|
372
|
+
IInstance instance,
|
373
|
+
NftId policyNftId
|
374
|
+
)
|
375
|
+
external
|
376
|
+
virtual
|
243
377
|
{
|
244
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
245
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
246
|
-
|
247
|
-
// ensure policy has no open claims
|
248
|
-
if (policyInfo.openClaimsCount > 0) {
|
249
|
-
revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
|
250
|
-
policyNftId,
|
251
|
-
policyInfo.openClaimsCount);
|
252
|
-
}
|
253
|
-
|
254
378
|
// ensure policy is closeable
|
255
|
-
if (
|
256
|
-
|
257
|
-
{
|
258
|
-
revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
|
379
|
+
if (!instance.getInstanceReader().policyIsCloseable(policyNftId)) {
|
380
|
+
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
259
381
|
}
|
260
|
-
|
261
|
-
BundleManager bundleManager = instance.getBundleManager();
|
262
|
-
bundleManager.unlinkPolicy(policyNftId);
|
263
|
-
}
|
264
|
-
|
265
|
-
function _processStakingByTreasury(
|
266
|
-
InstanceReader instanceReader,
|
267
|
-
NftId poolNftId,
|
268
|
-
NftId bundleNftId,
|
269
|
-
uint256 stakingAmount
|
270
|
-
)
|
271
|
-
internal
|
272
|
-
{
|
273
|
-
// process token transfer(s)
|
274
|
-
if(stakingAmount > 0) {
|
275
|
-
ISetup.PoolSetupInfo memory poolInfo = instanceReader.getPoolSetupInfo(poolNftId);
|
276
|
-
TokenHandler tokenHandler = poolInfo.tokenHandler;
|
277
|
-
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
278
|
-
Fee memory stakingFee = poolInfo.stakingFee;
|
279
|
-
|
280
|
-
tokenHandler.transfer(
|
281
|
-
bundleOwner,
|
282
|
-
poolInfo.wallet,
|
283
|
-
stakingAmount
|
284
|
-
);
|
285
382
|
|
286
|
-
|
287
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
288
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
289
|
-
// TODO: track staking fees in pool's state (issue #177)
|
290
|
-
}
|
291
|
-
}
|
383
|
+
instance.getBundleManager().unlinkPolicy(policyNftId);
|
292
384
|
}
|
293
385
|
}
|
@@ -16,7 +16,7 @@ contract BundleServiceManager is ProxyManager {
|
|
16
16
|
constructor(
|
17
17
|
address registryAddress
|
18
18
|
)
|
19
|
-
ProxyManager()
|
19
|
+
ProxyManager(registryAddress)
|
20
20
|
{
|
21
21
|
BundleService bundleSrv = new BundleService();
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|