@etherisc/gif-next 0.0.2-f5a74cc-201 → 0.0.2-f626d92-602
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 +4 -0
- package/artifacts/contracts/components/Component.sol/Component.json +842 -0
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +753 -168
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +233 -81
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +846 -57
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +695 -258
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +529 -217
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +1 -1
- package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +15 -15
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +69 -66
- 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 +1063 -394
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +315 -167
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +937 -1191
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +583 -193
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +137 -270
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +482 -286
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +328 -99
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +11 -27
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +247 -180
- 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 +71 -45
- 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 +1039 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +673 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1231 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +817 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1341 -259
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +440 -79
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +622 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +217 -208
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +804 -160
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/service/IPolicyService.sol/IPolicyService.json} +328 -164
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +429 -313
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +78 -388
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1092 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +614 -426
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +302 -105
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +257 -564
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +289 -124
- 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 +244 -133
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -230
- 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 +257 -235
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +200 -335
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
- 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 +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +86 -172
- 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 +120 -27
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +191 -163
- 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 +129 -51
- 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 +210 -214
- 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 +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 +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -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 +100 -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 +25 -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 +253 -0
- package/contracts/components/Distribution.sol +200 -83
- package/contracts/components/IComponent.sol +76 -0
- package/contracts/components/IDistributionComponent.sol +44 -17
- package/contracts/components/IPoolComponent.sol +88 -41
- package/contracts/components/IProductComponent.sol +10 -5
- package/contracts/components/Pool.sol +218 -182
- package/contracts/components/Product.sol +125 -121
- package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +2 -12
- package/contracts/instance/BundleManager.sol +14 -16
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +56 -14
- package/contracts/instance/IInstanceService.sol +43 -3
- package/contracts/instance/Instance.sol +133 -261
- package/contracts/instance/InstanceAccessManager.sol +414 -175
- package/contracts/instance/InstanceReader.sol +10 -34
- package/contracts/instance/InstanceService.sol +400 -144
- package/contracts/instance/InstanceServiceManager.sol +6 -9
- package/contracts/instance/ObjectManager.sol +11 -24
- package/contracts/instance/base/ComponentService.sol +121 -0
- package/contracts/instance/base/KeyValueStore.sol +13 -5
- package/contracts/instance/base/Lifecycle.sol +11 -2
- package/contracts/instance/module/IAccess.sol +36 -20
- 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 +30 -3
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +350 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +431 -0
- package/contracts/instance/service/BundleServiceManager.sol +51 -0
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +378 -31
- package/contracts/instance/service/DistributionServiceManager.sol +7 -10
- package/contracts/instance/service/IApplicationService.sol +82 -0
- package/contracts/instance/service/IBundleService.sol +93 -0
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +87 -0
- package/contracts/instance/service/IPolicyService.sol +72 -0
- package/contracts/instance/service/IPoolService.sol +73 -25
- package/contracts/instance/service/IProductService.sol +2 -72
- package/contracts/instance/service/PolicyService.sol +362 -0
- package/contracts/instance/service/PolicyServiceManager.sol +54 -0
- package/contracts/instance/service/PoolService.sol +203 -187
- package/contracts/instance/service/PoolServiceManager.sol +6 -9
- package/contracts/instance/service/ProductService.sol +104 -464
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +39 -19
- package/contracts/registry/IRegistryService.sol +31 -13
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +243 -224
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +97 -173
- package/contracts/registry/RegistryServiceManager.sol +21 -39
- package/contracts/registry/ReleaseManager.sol +324 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +5 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -80
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -32
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +41 -24
- 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 +4 -3
- package/contracts/types/Amount.sol +60 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +52 -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 +10 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +26 -19
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +1 -0
- package/contracts/types/Timestamp.sol +13 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
- 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/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- 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/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -132
- package/contracts/components/IBaseComponent.sol +0 -31
- 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
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/IInstanceBase.sol +0 -26
- package/contracts/instance/InstanceBase.sol +0 -41
- package/contracts/instance/base/ComponentServiceBase.sol +0 -134
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -6,41 +6,46 @@ import {IRegistry} from "../../registry/IRegistry.sol";
|
|
6
6
|
import {IInstance} from "../../instance/IInstance.sol";
|
7
7
|
import {IBundle} from "../../instance/module/IBundle.sol";
|
8
8
|
import {TokenHandler} from "../../instance/module/ITreasury.sol";
|
9
|
-
import {
|
9
|
+
import {IComponents} from "../module/IComponents.sol";
|
10
10
|
import {IPolicy} from "../module/IPolicy.sol";
|
11
11
|
|
12
12
|
import {IVersionable} from "../../shared/IVersionable.sol";
|
13
13
|
import {Versionable} from "../../shared/Versionable.sol";
|
14
14
|
import {INftOwnable} from "../../shared/INftOwnable.sol";
|
15
15
|
|
16
|
+
import {Amount} from "../../types/Amount.sol";
|
17
|
+
import {Fee, FeeLib} from "../../types/Fee.sol";
|
16
18
|
import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
|
17
|
-
import {POOL, BUNDLE} from "../../types/ObjectType.sol";
|
18
|
-
import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
|
+
import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
|
20
|
+
import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../../types/RoleId.sol";
|
19
21
|
import {Fee, FeeLib} from "../../types/Fee.sol";
|
20
22
|
import {Version, VersionLib} from "../../types/Version.sol";
|
21
23
|
import {KEEP_STATE, StateId} from "../../types/StateId.sol";
|
24
|
+
import {Seconds} from "../../types/Seconds.sol";
|
22
25
|
import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
|
26
|
+
import {Version, VersionLib} from "../../types/Version.sol";
|
23
27
|
|
24
28
|
import {IService} from "../../shared/IService.sol";
|
25
29
|
import {Service} from "../../shared/Service.sol";
|
26
30
|
import {BundleManager} from "../BundleManager.sol";
|
27
|
-
import {
|
31
|
+
import {ComponentService} from "../base/ComponentService.sol";
|
32
|
+
import {IBundleService} from "./IBundleService.sol";
|
28
33
|
import {IPoolService} from "./IPoolService.sol";
|
29
34
|
import {IRegistryService} from "../../registry/IRegistryService.sol";
|
30
35
|
import {InstanceService} from "../InstanceService.sol";
|
31
36
|
import {InstanceReader} from "../InstanceReader.sol";
|
37
|
+
import {IComponent} from "../../components/IComponent.sol";
|
38
|
+
import {IPoolComponent} from "../../components/IPoolComponent.sol";
|
32
39
|
|
33
40
|
string constant POOL_SERVICE_NAME = "PoolService";
|
34
41
|
|
35
42
|
contract PoolService is
|
36
|
-
|
43
|
+
ComponentService,
|
37
44
|
IPoolService
|
38
45
|
{
|
39
46
|
using NftIdLib for NftId;
|
40
47
|
|
41
|
-
|
42
|
-
|
43
|
-
address internal _registryAddress;
|
48
|
+
IBundleService internal _bundleService;
|
44
49
|
|
45
50
|
function _initialize(
|
46
51
|
address owner,
|
@@ -50,238 +55,249 @@ contract PoolService is
|
|
50
55
|
initializer
|
51
56
|
virtual override
|
52
57
|
{
|
53
|
-
address
|
54
|
-
|
58
|
+
address registryAddress;
|
59
|
+
address initialOwner;
|
60
|
+
(registryAddress, initialOwner) = abi.decode(data, (address, address));
|
55
61
|
// TODO while PoolService is not deployed in PoolServiceManager constructor
|
56
62
|
// owner is PoolServiceManager deployer
|
57
|
-
|
63
|
+
initializeService(registryAddress, address(0), owner);
|
58
64
|
|
59
|
-
|
60
|
-
|
65
|
+
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart()));
|
66
|
+
|
67
|
+
registerInterface(type(IPoolService).interfaceId);
|
68
|
+
}
|
69
|
+
|
70
|
+
function getDomain() public pure override returns(ObjectType) {
|
71
|
+
return POOL();
|
72
|
+
}
|
73
|
+
|
74
|
+
function register(address poolAddress)
|
75
|
+
external
|
76
|
+
returns(NftId poolNftId)
|
77
|
+
{
|
78
|
+
(
|
79
|
+
IComponent component,
|
80
|
+
address owner,
|
81
|
+
IInstance instance,
|
82
|
+
NftId instanceNftId
|
83
|
+
) = _checkComponentForRegistration(
|
84
|
+
poolAddress,
|
85
|
+
POOL(),
|
86
|
+
POOL_OWNER_ROLE());
|
87
|
+
|
88
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
89
|
+
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
90
|
+
pool.linkToRegisteredNftId();
|
91
|
+
poolNftId = registryInfo.nftId;
|
92
|
+
|
93
|
+
// amend component info with pool specific token handler
|
94
|
+
IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
|
95
|
+
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
96
|
+
|
97
|
+
// save amended component info with instance
|
98
|
+
instance.createPoolSetup(poolNftId, componentInfo);
|
99
|
+
|
100
|
+
bytes4[][] memory selectors = new bytes4[][](2);
|
101
|
+
selectors[0] = new bytes4[](1);
|
102
|
+
selectors[1] = new bytes4[](1);
|
103
|
+
|
104
|
+
selectors[0][0] = IPoolComponent.setFees.selector;
|
105
|
+
selectors[1][0] = IPoolComponent.verifyApplication.selector;
|
106
|
+
|
107
|
+
RoleId[] memory roles = new RoleId[](2);
|
108
|
+
roles[0] = POOL_OWNER_ROLE();
|
109
|
+
roles[1] = POLICY_SERVICE_ROLE();
|
110
|
+
|
111
|
+
getInstanceService().createGifTarget(
|
112
|
+
instanceNftId,
|
113
|
+
poolAddress,
|
114
|
+
pool.getName(),
|
115
|
+
selectors,
|
116
|
+
roles);
|
61
117
|
}
|
62
118
|
|
63
|
-
|
64
|
-
|
119
|
+
|
120
|
+
function setMaxCapitalAmount(uint256 maxCapitalAmount)
|
121
|
+
external
|
122
|
+
virtual
|
123
|
+
{
|
124
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
125
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
126
|
+
|
127
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
128
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
129
|
+
uint256 previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
130
|
+
|
131
|
+
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
132
|
+
componentInfo.data = abi.encode(poolInfo);
|
133
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
134
|
+
|
135
|
+
emit LogPoolServiceMaxCapitalAmountUpdated(poolNftId, previousMaxCapitalAmount, maxCapitalAmount);
|
65
136
|
}
|
66
137
|
|
67
|
-
function
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
);
|
72
|
-
instance.
|
138
|
+
function setBundleOwnerRole(RoleId bundleOwnerRole)
|
139
|
+
external
|
140
|
+
virtual
|
141
|
+
{
|
142
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
143
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
144
|
+
|
145
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
146
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
147
|
+
|
148
|
+
// bundle owner role may only be set once per pool
|
149
|
+
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
150
|
+
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
151
|
+
}
|
152
|
+
|
153
|
+
poolInfo.bundleOwnerRole = bundleOwnerRole;
|
154
|
+
componentInfo.data = abi.encode(poolInfo);
|
155
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
156
|
+
|
157
|
+
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
73
158
|
}
|
74
159
|
|
160
|
+
|
75
161
|
function setFees(
|
76
162
|
Fee memory poolFee,
|
77
163
|
Fee memory stakingFee,
|
78
164
|
Fee memory performanceFee
|
79
165
|
)
|
80
166
|
external
|
81
|
-
|
167
|
+
virtual
|
82
168
|
{
|
83
|
-
(IRegistry.ObjectInfo memory
|
169
|
+
(NftId poolNftId, IRegistry.ObjectInfo memory registryInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
84
170
|
InstanceReader instanceReader = instance.getInstanceReader();
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
171
|
+
|
172
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
173
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
174
|
+
|
175
|
+
poolInfo.poolFee = poolFee;
|
176
|
+
poolInfo.stakingFee = stakingFee;
|
177
|
+
poolInfo.performanceFee = performanceFee;
|
178
|
+
componentInfo.data = abi.encode(poolInfo);
|
179
|
+
instance.updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
180
|
+
|
181
|
+
// TODO add logging
|
93
182
|
}
|
94
183
|
|
184
|
+
|
95
185
|
function createBundle(
|
96
|
-
address owner,
|
97
|
-
Fee memory fee,
|
98
|
-
|
99
|
-
|
100
|
-
bytes calldata filter
|
186
|
+
address owner, // initial bundle owner
|
187
|
+
Fee memory fee, // fees deducted from premium that go to bundle owner
|
188
|
+
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
189
|
+
Seconds lifetime, // initial duration for which new policies are covered
|
190
|
+
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
101
191
|
)
|
102
|
-
external
|
103
|
-
|
192
|
+
external
|
193
|
+
virtual
|
104
194
|
returns(NftId bundleNftId)
|
105
195
|
{
|
106
|
-
(
|
196
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
107
197
|
InstanceReader instanceReader = instance.getInstanceReader();
|
108
|
-
NftId poolNftId = info.nftId;
|
109
198
|
|
110
|
-
|
199
|
+
// TODO add implementation that takes care of staking fees
|
200
|
+
Amount stakingAfterFeesAmount = stakingAmount;
|
201
|
+
|
202
|
+
bundleNftId = _bundleService.create(
|
203
|
+
instance,
|
111
204
|
poolNftId,
|
205
|
+
owner,
|
112
206
|
fee,
|
113
|
-
|
114
|
-
stakingAmount,
|
115
|
-
0,
|
116
|
-
stakingAmount,
|
207
|
+
stakingAfterFeesAmount,
|
117
208
|
lifetime,
|
118
|
-
|
119
|
-
zeroTimestamp()
|
120
|
-
);
|
121
|
-
|
122
|
-
// register bundle with registry
|
123
|
-
bundleNftId = getRegistryService().registerBundle(
|
124
|
-
IRegistry.ObjectInfo(
|
125
|
-
zeroNftId(),
|
126
|
-
poolNftId,
|
127
|
-
BUNDLE(),
|
128
|
-
false, // intercepting property for bundles is defined on pool
|
129
|
-
address(0),
|
130
|
-
owner,
|
131
|
-
abi.encode(bundleInfo)
|
132
|
-
)
|
133
|
-
);
|
134
|
-
|
135
|
-
// create bundle info in instance
|
136
|
-
instance.createBundle(bundleNftId, bundleInfo);
|
137
|
-
|
138
|
-
BundleManager bundleManager = instance.getBundleManager();
|
139
|
-
bundleManager.add(bundleNftId);
|
140
|
-
|
141
|
-
_processStakingByTreasury(
|
142
|
-
instanceReader,
|
143
|
-
poolNftId,
|
144
|
-
bundleNftId,
|
145
|
-
stakingAmount);
|
209
|
+
filter);
|
146
210
|
|
147
|
-
|
211
|
+
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
148
212
|
}
|
149
213
|
|
150
|
-
|
151
|
-
|
152
|
-
Fee memory fee
|
153
|
-
)
|
214
|
+
|
215
|
+
function closeBundle(NftId bundleNftId)
|
154
216
|
external
|
155
|
-
|
217
|
+
virtual
|
156
218
|
{
|
157
|
-
(
|
158
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
159
|
-
NftId poolNftId = info.nftId;
|
219
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
160
220
|
|
161
|
-
|
162
|
-
require(bundleInfo.poolNftId.gtz(), "ERROR:PLS-010:BUNDLE_UNKNOWN");
|
163
|
-
require(poolNftId == bundleInfo.poolNftId, "ERROR:PLS-011:BUNDLE_POOL_MISMATCH");
|
221
|
+
// TODO book keeping for pool collateral released outside of retention level
|
164
222
|
|
165
|
-
|
223
|
+
// releasing collateral in bundle
|
224
|
+
_bundleService.close(instance, bundleNftId);
|
166
225
|
|
167
|
-
|
168
|
-
}
|
169
|
-
|
170
|
-
function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state)
|
171
|
-
external
|
172
|
-
onlyService
|
173
|
-
{
|
174
|
-
IRegistry.ObjectInfo memory instanceInfo = getRegistry().getObjectInfo(instanceNftId);
|
175
|
-
IInstance instance = IInstance(instanceInfo.objectAddress);
|
176
|
-
instance.updateBundle(bundleNftId, bundleInfo, state);
|
177
|
-
}
|
226
|
+
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
178
227
|
|
179
|
-
|
180
|
-
external
|
181
|
-
{
|
182
|
-
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
183
|
-
BundleManager bundleManager = instance.getBundleManager();
|
184
|
-
bundleManager.lock(bundleNftId);
|
228
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
185
229
|
}
|
186
230
|
|
187
|
-
function unlockBundle(NftId bundleNftId)
|
188
|
-
external
|
189
|
-
{
|
190
|
-
(, IInstance instance) = _getAndVerifyComponentInfoAndInstance(POOL());
|
191
|
-
BundleManager bundleManager = instance.getBundleManager();
|
192
|
-
bundleManager.unlock(bundleNftId);
|
193
|
-
}
|
194
231
|
|
195
|
-
function
|
196
|
-
|
197
|
-
NftId
|
198
|
-
|
199
|
-
|
200
|
-
|
232
|
+
function lockCollateral(
|
233
|
+
IInstance instance,
|
234
|
+
NftId productNftId,
|
235
|
+
NftId applicationNftId,
|
236
|
+
IPolicy.PolicyInfo memory applicationInfo,
|
237
|
+
uint256 premiumAmount // premium amount after product and distribution fees
|
238
|
+
)
|
201
239
|
external
|
202
|
-
|
240
|
+
virtual
|
241
|
+
// TODO add restricted and granting for policy service
|
203
242
|
{
|
204
243
|
InstanceReader instanceReader = instance.getInstanceReader();
|
244
|
+
NftId poolNftId = instanceReader.getProductSetupInfo(productNftId).poolNftId;
|
245
|
+
NftId bundleNftId = applicationInfo.bundleNftId;
|
246
|
+
|
247
|
+
// TODO move this check to application creation and don't repeat this here
|
248
|
+
// ensure that pool for bundle from application matches with pool for product of application
|
205
249
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
250
|
+
if(bundleInfo.poolNftId != poolNftId) {
|
251
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleInfo.poolNftId, poolNftId);
|
252
|
+
}
|
206
253
|
|
207
|
-
|
208
|
-
|
209
|
-
bundleInfo.balanceAmount += netPremiumAmount;
|
254
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
255
|
+
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
210
256
|
|
211
|
-
|
212
|
-
|
213
|
-
linkPolicy(instance, policyNftId);
|
214
|
-
}
|
257
|
+
// TODO add correct required collateral calculation (collateralization level mibht be != 1, retention level might be < 1)
|
258
|
+
uint256 collateralAmount = applicationInfo.sumInsuredAmount;
|
215
259
|
|
216
|
-
|
217
|
-
|
218
|
-
internal
|
219
|
-
onlyService
|
220
|
-
{
|
221
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
222
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
260
|
+
// TODO add correct net premium calculation (pool fee might be > 0)
|
261
|
+
uint256 premiumAfterPoolFeeAmount = premiumAmount;
|
223
262
|
|
224
|
-
//
|
225
|
-
|
226
|
-
|
263
|
+
// lock collateral amount from involvedd bundle
|
264
|
+
_bundleService.lockCollateral(
|
265
|
+
instance,
|
266
|
+
applicationNftId,
|
267
|
+
bundleNftId,
|
268
|
+
collateralAmount,
|
269
|
+
premiumAfterPoolFeeAmount);
|
270
|
+
|
271
|
+
// also verify/confirm application by pool if necessary
|
272
|
+
if(poolInfo.isVerifyingApplications) {
|
273
|
+
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
274
|
+
IPoolComponent(poolAddress).verifyApplication(
|
275
|
+
applicationNftId,
|
276
|
+
applicationInfo.applicationData,
|
277
|
+
bundleNftId,
|
278
|
+
bundleInfo.filter,
|
279
|
+
collateralAmount);
|
227
280
|
}
|
228
|
-
|
229
|
-
BundleManager bundleManager = instance.getBundleManager();
|
230
|
-
bundleManager.linkPolicy(policyNftId);
|
231
281
|
}
|
232
282
|
|
233
|
-
/// @dev unlinks policy from bundle
|
234
|
-
function unlinkPolicy(IInstance instance, NftId policyNftId)
|
235
|
-
internal
|
236
|
-
onlyService
|
237
|
-
{
|
238
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
239
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
240
|
-
|
241
|
-
// ensure policy has no open claims
|
242
|
-
if (policyInfo.openClaimsCount > 0) {
|
243
|
-
revert BundleManager.ErrorBundleManagerPolicyWithOpenClaims(
|
244
|
-
policyNftId,
|
245
|
-
policyInfo.openClaimsCount);
|
246
|
-
}
|
247
283
|
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
BundleManager bundleManager = instance.getBundleManager();
|
256
|
-
bundleManager.unlinkPolicy(policyNftId);
|
257
|
-
}
|
258
|
-
|
259
|
-
function _processStakingByTreasury(
|
260
|
-
InstanceReader instanceReader,
|
261
|
-
NftId poolNftId,
|
262
|
-
NftId bundleNftId,
|
263
|
-
uint256 stakingAmount
|
284
|
+
/// @dev releases the remaining collateral linked to the specified policy
|
285
|
+
/// may only be called by the policy service for unlocked pool components
|
286
|
+
function releaseCollateral(
|
287
|
+
IInstance instance,
|
288
|
+
NftId policyNftId,
|
289
|
+
IPolicy.PolicyInfo memory policyInfo
|
264
290
|
)
|
265
|
-
|
291
|
+
external
|
292
|
+
virtual
|
293
|
+
// TODO add restricted and granting for policy service
|
266
294
|
{
|
267
|
-
//
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
tokenHandler.transfer(
|
275
|
-
bundleOwner,
|
276
|
-
poolInfo.wallet,
|
277
|
-
stakingAmount
|
278
|
-
);
|
279
|
-
|
280
|
-
|
281
|
-
if (! FeeLib.feeIsZero(stakingFee)) {
|
282
|
-
(uint256 stakingFeeAmount, uint256 netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
283
|
-
// TODO: track staking fees in pool's state (issue #177)
|
284
|
-
}
|
285
|
-
}
|
295
|
+
// release collateral from involved bundle
|
296
|
+
_bundleService.releaseCollateral(
|
297
|
+
instance,
|
298
|
+
policyNftId,
|
299
|
+
policyInfo.bundleNftId,
|
300
|
+
policyInfo.sumInsuredAmount);
|
286
301
|
}
|
302
|
+
|
287
303
|
}
|
@@ -6,7 +6,7 @@ import {ProxyManager} from "../../shared/ProxyManager.sol";
|
|
6
6
|
import {PoolService} from "./PoolService.sol";
|
7
7
|
import {Registry} from "../../registry/Registry.sol";
|
8
8
|
import {RegistryService} from "../../registry/RegistryService.sol";
|
9
|
-
import {
|
9
|
+
import {REGISTRY} from "../../types/ObjectType.sol";
|
10
10
|
|
11
11
|
contract PoolServiceManager is ProxyManager {
|
12
12
|
|
@@ -16,7 +16,7 @@ contract PoolServiceManager is ProxyManager {
|
|
16
16
|
constructor(
|
17
17
|
address registryAddress
|
18
18
|
)
|
19
|
-
ProxyManager()
|
19
|
+
ProxyManager(registryAddress)
|
20
20
|
{
|
21
21
|
PoolService poolSrv = new PoolService();
|
22
22
|
bytes memory data = abi.encode(registryAddress, address(this));
|
@@ -26,10 +26,10 @@ contract PoolServiceManager is ProxyManager {
|
|
26
26
|
|
27
27
|
_poolService = PoolService(address(versionable));
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
//
|
29
|
+
// TODO `this` must have a role or own nft to register service
|
30
|
+
//Registry registry = Registry(registryAddress);
|
31
|
+
//address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _poolService.getMajorVersion());
|
32
|
+
//RegistryService registryService = RegistryService(registryServiceAddress);
|
33
33
|
//registryService.registerService(_poolService);
|
34
34
|
|
35
35
|
// TODO no nft to link yet
|
@@ -37,9 +37,6 @@ contract PoolServiceManager is ProxyManager {
|
|
37
37
|
//_linkToNftOwnable(
|
38
38
|
// address(registryAddress),
|
39
39
|
// address(_poolService));
|
40
|
-
|
41
|
-
// implies that after this constructor call only upgrade functionality is available
|
42
|
-
_isDeployed = true;
|
43
40
|
}
|
44
41
|
|
45
42
|
//--- view functions ----------------------------------------------------//
|