@etherisc/gif-next 0.0.2-c0457ac-280 → 0.0.2-c0ca5fe-234
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 +30 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1548 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -228
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -16
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -19
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +112 -83
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +88 -105
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1185 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +43 -96
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1520 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +404 -55
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +108 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +213 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +189 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -296
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +289 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +68 -36
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +32 -153
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +218 -0
- package/contracts/authorization/IAccess.sol +48 -0
- package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
- package/contracts/authorization/IAuthorization.sol +54 -0
- package/contracts/authorization/IModuleAuthorization.sol +21 -0
- package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
- package/contracts/authorization/ModuleAuthorization.sol +78 -0
- package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
- package/contracts/distribution/BasicDistribution.sol +138 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +144 -110
- package/contracts/distribution/DistributionService.sol +71 -31
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +25 -39
- package/contracts/distribution/IDistributionService.sol +17 -1
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +8 -9
- package/contracts/instance/IInstanceService.sol +13 -18
- package/contracts/instance/Instance.sol +61 -70
- package/contracts/instance/InstanceAdmin.sol +202 -267
- package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
- package/contracts/instance/InstanceReader.sol +22 -9
- package/contracts/instance/InstanceService.sol +74 -70
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +13 -5
- package/contracts/instance/base/ObjectLifecycle.sol +106 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/BasicOracle.sol +48 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +16 -0
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +72 -51
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPool.sol +164 -0
- package/contracts/pool/BasicPoolAuthorization.sol +58 -0
- package/contracts/pool/BundleService.sol +157 -29
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +25 -3
- package/contracts/pool/IPoolComponent.sol +6 -60
- package/contracts/pool/IPoolService.sol +12 -4
- package/contracts/pool/Pool.sol +167 -134
- package/contracts/pool/PoolService.sol +136 -32
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +12 -36
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProduct.sol +82 -0
- package/contracts/product/BasicProductAuthorization.sol +43 -0
- package/contracts/product/ClaimService.sol +7 -32
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IProductComponent.sol +7 -9
- package/contracts/product/PolicyService.sol +1 -0
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +103 -88
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -16
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +81 -87
- package/contracts/registry/RegistryAdmin.sol +118 -86
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +27 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +102 -68
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/ComponentVerifyingService.sol +1 -1
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
- package/contracts/shared/IKeyValueStore.sol +1 -0
- package/contracts/shared/ILifecycle.sol +1 -2
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +47 -19
- package/contracts/shared/KeyValueStore.sol +6 -2
- package/contracts/shared/Lifecycle.sol +16 -69
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/staking/IStaking.sol +1 -2
- package/contracts/staking/IStakingService.sol +12 -5
- package/contracts/staking/Staking.sol +20 -17
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +2 -6
- package/contracts/staking/StakingReader.sol +12 -16
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +15 -23
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/ObjectType.sol +37 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RoleId.sol +55 -82
- package/contracts/type/Seconds.sol +13 -1
- package/contracts/type/UFixed.sol +34 -9
- package/contracts/type/Version.sol +3 -1
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +6 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
- package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
- package/contracts/registry/ReleaseManager.sol +0 -527
- package/contracts/shared/AccessManagerCustom.sol +0 -741
- package/contracts/shared/AccessManagerExtended.sol +0 -481
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
package/contracts/pool/Pool.sol
CHANGED
@@ -2,17 +2,19 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
-
import {
|
6
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
5
|
+
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
7
6
|
import {IBundleService} from "./IBundleService.sol";
|
7
|
+
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
8
8
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
9
9
|
import {IPoolService} from "./IPoolService.sol";
|
10
10
|
import {IComponents} from "../instance/module/IComponents.sol";
|
11
11
|
import {IComponentService} from "../shared/IComponentService.sol";
|
12
|
+
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
13
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
12
14
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
13
|
-
import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
|
14
15
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
15
16
|
import {Seconds} from "../type/Seconds.sol";
|
17
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
16
18
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
17
19
|
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
18
20
|
|
@@ -38,29 +40,122 @@ abstract contract Pool is
|
|
38
40
|
}
|
39
41
|
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
/// @dev see {IPoolComponent.verifyApplication}
|
44
|
+
function verifyApplication(
|
45
|
+
NftId applicationNftId,
|
46
|
+
bytes memory applicationData,
|
47
|
+
NftId bundleNftId,
|
48
|
+
bytes memory bundleFilter,
|
49
|
+
Amount collateralizationAmount
|
50
|
+
)
|
51
|
+
public
|
52
|
+
virtual
|
53
|
+
restricted()
|
54
|
+
{
|
55
|
+
if(!applicationMatchesBundle(
|
56
|
+
applicationNftId,
|
57
|
+
applicationData,
|
58
|
+
bundleNftId,
|
59
|
+
bundleFilter,
|
60
|
+
collateralizationAmount)
|
61
|
+
)
|
62
|
+
{
|
63
|
+
revert ErrorPoolApplicationBundleMismatch(applicationNftId);
|
44
64
|
}
|
45
|
-
|
65
|
+
|
66
|
+
emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
/// @dev see {IPoolComponent.applicationMatchesBundle}
|
71
|
+
/// Override this function to implement any custom application verification
|
72
|
+
/// Default implementation always returns true
|
73
|
+
function applicationMatchesBundle(
|
74
|
+
NftId applicationNftId,
|
75
|
+
bytes memory applicationData,
|
76
|
+
NftId bundleNftId,
|
77
|
+
bytes memory bundleFilter,
|
78
|
+
Amount collateralizationAmount
|
79
|
+
)
|
80
|
+
public
|
81
|
+
virtual
|
82
|
+
view
|
83
|
+
returns (bool isMatching)
|
84
|
+
{
|
85
|
+
return true;
|
46
86
|
}
|
47
87
|
|
48
88
|
|
49
|
-
function
|
89
|
+
function register()
|
90
|
+
external
|
91
|
+
virtual
|
92
|
+
onlyOwner()
|
93
|
+
{
|
94
|
+
_getPoolStorage()._componentService.registerPool();
|
95
|
+
_approveTokenHandler(type(uint256).max);
|
96
|
+
}
|
97
|
+
|
98
|
+
/// @inheritdoc IPoolComponent
|
99
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
100
|
+
external
|
101
|
+
virtual
|
102
|
+
restricted()
|
103
|
+
onlyBundleOwner(bundleNftId)
|
104
|
+
returns (Amount withdrawnAmount)
|
105
|
+
{
|
106
|
+
return _withdrawBundleFees(bundleNftId, amount);
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
function getInitialPoolInfo()
|
111
|
+
public
|
112
|
+
virtual
|
113
|
+
view
|
114
|
+
returns (IComponents.PoolInfo memory poolInfo)
|
115
|
+
{
|
116
|
+
return IComponents.PoolInfo(
|
117
|
+
NftIdLib.zero(), // will be set when GIF registers the related product
|
118
|
+
PUBLIC_ROLE(), // bundleOwnerRole
|
119
|
+
AmountLib.max(), // maxCapitalAmount,
|
120
|
+
isNftInterceptor(), // isInterceptingBundleTransfers
|
121
|
+
false, // isExternallyManaged,
|
122
|
+
false, // isVerifyingApplications,
|
123
|
+
UFixedLib.toUFixed(1), // collateralizationLevel,
|
124
|
+
UFixedLib.toUFixed(1), // retentionLevel,
|
125
|
+
FeeLib.zero(), // initialPoolFee,
|
126
|
+
FeeLib.zero(), // initialStakingFee,
|
127
|
+
FeeLib.zero() // initialPerformanceFee,
|
128
|
+
);
|
129
|
+
}
|
130
|
+
|
131
|
+
// Internals
|
132
|
+
|
133
|
+
function _initializePool(
|
50
134
|
address registry,
|
51
135
|
NftId instanceNftId,
|
52
136
|
string memory name,
|
53
137
|
address token,
|
138
|
+
IAuthorization authorization,
|
54
139
|
bool isInterceptingNftTransfers,
|
55
140
|
address initialOwner,
|
56
141
|
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
57
142
|
bytes memory componentData // component specifidc data
|
58
143
|
)
|
59
|
-
|
144
|
+
internal
|
60
145
|
virtual
|
61
146
|
onlyInitializing()
|
62
147
|
{
|
63
|
-
|
148
|
+
_initializeInstanceLinkedComponent(
|
149
|
+
registry,
|
150
|
+
instanceNftId,
|
151
|
+
name,
|
152
|
+
token,
|
153
|
+
POOL(),
|
154
|
+
authorization,
|
155
|
+
isInterceptingNftTransfers,
|
156
|
+
initialOwner,
|
157
|
+
registryData,
|
158
|
+
componentData);
|
64
159
|
|
65
160
|
PoolStorage storage $ = _getPoolStorage();
|
66
161
|
$._poolService = IPoolService(_getServiceAddress(POOL()));
|
@@ -70,201 +165,133 @@ abstract contract Pool is
|
|
70
165
|
registerInterface(type(IPoolComponent).interfaceId);
|
71
166
|
}
|
72
167
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
virtual
|
77
|
-
onlyOwner()
|
78
|
-
{
|
79
|
-
_getPoolStorage()._componentService.registerPool();
|
80
|
-
}
|
81
|
-
|
82
|
-
|
83
|
-
function stake(
|
168
|
+
/// @dev increases the staked tokens by the specified amount
|
169
|
+
/// bundle MUST be in active or locked state
|
170
|
+
function _stake(
|
84
171
|
NftId bundleNftId,
|
85
172
|
Amount amount
|
86
173
|
)
|
87
|
-
|
174
|
+
internal
|
88
175
|
virtual
|
89
|
-
|
90
|
-
onlyBundleOwner(bundleNftId)
|
176
|
+
returns(Amount netAmount)
|
91
177
|
{
|
92
|
-
|
178
|
+
_getPoolStorage()._poolService.stake(bundleNftId, amount);
|
93
179
|
}
|
94
180
|
|
95
181
|
|
96
|
-
|
182
|
+
/// @dev decreases the staked tokens by the specified amount
|
183
|
+
/// bundle MUST be in active, locked or closed state
|
184
|
+
function _unstake(
|
97
185
|
NftId bundleNftId,
|
98
186
|
Amount amount
|
99
187
|
)
|
100
|
-
|
188
|
+
internal
|
101
189
|
virtual
|
102
|
-
|
103
|
-
onlyBundleOwner(bundleNftId)
|
190
|
+
returns(Amount netAmount)
|
104
191
|
{
|
105
|
-
|
192
|
+
return _getPoolStorage()._poolService.unstake(bundleNftId, amount);
|
106
193
|
}
|
107
194
|
|
108
195
|
|
109
|
-
|
196
|
+
/// @dev extends the bundle lifetime of the bundle by the specified time
|
197
|
+
/// bundle MUST be in active or locked state
|
198
|
+
function _extend(
|
110
199
|
NftId bundleNftId,
|
111
200
|
Seconds lifetimeExtension
|
112
201
|
)
|
113
|
-
|
202
|
+
internal
|
114
203
|
virtual
|
115
|
-
|
116
|
-
onlyBundleOwner(bundleNftId)
|
204
|
+
returns (Timestamp extendedExpiredAt)
|
117
205
|
{
|
118
|
-
|
206
|
+
return _getPoolStorage()._bundleService.extend(bundleNftId, lifetimeExtension);
|
119
207
|
}
|
120
208
|
|
121
209
|
|
122
|
-
|
123
|
-
|
210
|
+
/// @dev Locks the specified bundle.
|
211
|
+
/// A bundle to be locked MUST be in active state.
|
212
|
+
/// Locked bundles may not be used to collateralize any new policy.
|
213
|
+
function _lockBundle(NftId bundleNftId)
|
214
|
+
internal
|
124
215
|
virtual
|
125
|
-
//restricted() // TODO consider adding this back
|
126
|
-
onlyBundleOwner(bundleNftId)
|
127
216
|
{
|
128
217
|
_getPoolStorage()._bundleService.lock(bundleNftId);
|
129
218
|
}
|
130
219
|
|
131
220
|
|
132
|
-
|
133
|
-
|
221
|
+
/// @dev Unlocks the specified bundle.
|
222
|
+
/// A bundle to be unlocked MUST be in locked state.
|
223
|
+
function _unlockBundle(NftId bundleNftId)
|
224
|
+
internal
|
134
225
|
virtual
|
135
|
-
//restricted()
|
136
|
-
onlyBundleOwner(bundleNftId)
|
137
226
|
{
|
138
227
|
_getPoolStorage()._bundleService.unlock(bundleNftId);
|
139
228
|
}
|
140
229
|
|
141
230
|
|
142
|
-
|
143
|
-
|
231
|
+
/// @dev Close the specified bundle.
|
232
|
+
/// A bundle to be closed MUST be in active or locked state.
|
233
|
+
/// To close a bundle all all linked policies MUST be in closed state as well.
|
234
|
+
/// Closing a bundle finalizes the bundle bookkeeping including overall profit calculation.
|
235
|
+
/// Once a bundle is closed this action cannot be reversed.
|
236
|
+
function _close(NftId bundleNftId)
|
237
|
+
internal
|
144
238
|
virtual
|
145
|
-
//restricted()
|
146
|
-
onlyBundleOwner(bundleNftId)
|
147
239
|
{
|
148
240
|
_getPoolStorage()._poolService.closeBundle(bundleNftId);
|
149
241
|
}
|
150
242
|
|
151
243
|
|
152
|
-
|
244
|
+
/// @dev Sets the fee for the specified bundle.
|
245
|
+
/// The fee is added on top of the poolFee and deducted from the premium amounts
|
246
|
+
/// Via these fees individual bundler owner may earn income per policy in the context of peer to peer pools.
|
247
|
+
function _setBundleFee(
|
153
248
|
NftId bundleNftId,
|
154
249
|
Fee memory fee
|
155
250
|
)
|
156
|
-
|
251
|
+
internal
|
157
252
|
virtual
|
158
|
-
//restricted()
|
159
|
-
onlyBundleOwner(bundleNftId)
|
160
253
|
{
|
161
254
|
_getPoolStorage()._bundleService.setFee(bundleNftId, fee);
|
162
255
|
}
|
163
256
|
|
164
257
|
|
165
|
-
|
166
|
-
|
258
|
+
/// @dev Sets the maximum overall capital amound held by this pool.
|
259
|
+
/// Function may only be called by pool owner.
|
260
|
+
function _setMaxCapitalAmount(Amount maxCapitalAmount)
|
261
|
+
internal
|
167
262
|
virtual
|
168
|
-
restricted()
|
169
|
-
onlyOwner()
|
170
263
|
{
|
171
264
|
_getPoolStorage()._poolService.setMaxCapitalAmount(maxCapitalAmount);
|
172
265
|
}
|
173
266
|
|
174
|
-
|
175
|
-
|
176
|
-
|
267
|
+
/// @dev Sets the required role to create/own bundles.
|
268
|
+
/// May only be called once after setting up a pool.
|
269
|
+
/// May only be called by pool owner.
|
270
|
+
function _setBundleOwnerRole(RoleId bundleOwnerRole)
|
271
|
+
internal
|
177
272
|
virtual
|
178
|
-
restricted()
|
179
|
-
onlyOwner()
|
180
273
|
{
|
181
274
|
_getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
|
182
275
|
}
|
183
276
|
|
184
277
|
|
185
|
-
|
278
|
+
/// @dev Update pool fees to the specified values.
|
279
|
+
/// Pool fee: are deducted from the premium amount and goes to the pool owner.
|
280
|
+
/// Staking fee: are deducted from the staked tokens by a bundle owner and goes to the pool owner.
|
281
|
+
/// Performance fee: when a bundle is closed a bundle specific profit is calculated.
|
282
|
+
/// The performance fee is deducted from this profit and goes to the pool owner.
|
283
|
+
function _setPoolFees(
|
186
284
|
Fee memory poolFee,
|
187
285
|
Fee memory stakingFee,
|
188
286
|
Fee memory performanceFee
|
189
287
|
)
|
190
|
-
|
288
|
+
internal
|
191
289
|
virtual
|
192
|
-
restricted()
|
193
|
-
onlyOwner()
|
194
290
|
{
|
195
291
|
_getPoolStorage()._componentService.setPoolFees(poolFee, stakingFee, performanceFee);
|
196
292
|
}
|
197
293
|
|
198
|
-
|
199
|
-
/// @dev see {IPool.verifyApplication}
|
200
|
-
function verifyApplication(
|
201
|
-
NftId applicationNftId,
|
202
|
-
bytes memory applicationData,
|
203
|
-
NftId bundleNftId,
|
204
|
-
bytes memory bundleFilter,
|
205
|
-
Amount collateralizationAmount
|
206
|
-
)
|
207
|
-
public
|
208
|
-
virtual
|
209
|
-
restricted()
|
210
|
-
{
|
211
|
-
if(!applicationMatchesBundle(
|
212
|
-
applicationNftId,
|
213
|
-
applicationData,
|
214
|
-
bundleNftId,
|
215
|
-
bundleFilter,
|
216
|
-
collateralizationAmount)
|
217
|
-
)
|
218
|
-
{
|
219
|
-
revert ErrorPoolApplicationBundleMismatch(applicationNftId);
|
220
|
-
}
|
221
|
-
|
222
|
-
emit LogPoolVerifiedByPool(address(this), applicationNftId, collateralizationAmount);
|
223
|
-
}
|
224
|
-
|
225
|
-
|
226
|
-
/// @dev see {IPoolComponent.applicationMatchesBundle}
|
227
|
-
/// Override this function to implement any custom application verification
|
228
|
-
/// Default implementation always returns true
|
229
|
-
function applicationMatchesBundle(
|
230
|
-
NftId applicationNftId,
|
231
|
-
bytes memory applicationData,
|
232
|
-
NftId bundleNftId,
|
233
|
-
bytes memory bundleFilter,
|
234
|
-
Amount collateralizationAmount
|
235
|
-
)
|
236
|
-
public
|
237
|
-
view
|
238
|
-
virtual override
|
239
|
-
returns (bool isMatching)
|
240
|
-
{
|
241
|
-
return true;
|
242
|
-
}
|
243
|
-
|
244
|
-
|
245
|
-
function getInitialPoolInfo()
|
246
|
-
public
|
247
|
-
virtual
|
248
|
-
view
|
249
|
-
returns (IComponents.PoolInfo memory poolInfo)
|
250
|
-
{
|
251
|
-
return IComponents.PoolInfo(
|
252
|
-
NftIdLib.zero(), // will be set when GIF registers the related product
|
253
|
-
PUBLIC_ROLE(), // bundleOwnerRole
|
254
|
-
AmountLib.max(), // maxCapitalAmount,
|
255
|
-
isNftInterceptor(), // isInterceptingBundleTransfers
|
256
|
-
false, // isExternallyManaged,
|
257
|
-
false, // isVerifyingApplications,
|
258
|
-
UFixedLib.toUFixed(1), // collateralizationLevel,
|
259
|
-
UFixedLib.toUFixed(1), // retentionLevel,
|
260
|
-
FeeLib.zero(), // initialPoolFee,
|
261
|
-
FeeLib.zero(), // initialStakingFee,
|
262
|
-
FeeLib.zero() // initialPerformanceFee,
|
263
|
-
);
|
264
|
-
}
|
265
|
-
|
266
|
-
// Internals
|
267
|
-
|
294
|
+
/// @dev Creates a new bundle using the provided parameter values.
|
268
295
|
function _createBundle(
|
269
296
|
address bundleOwner,
|
270
297
|
Fee memory fee,
|
@@ -290,6 +317,12 @@ abstract contract Pool is
|
|
290
317
|
return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
|
291
318
|
}
|
292
319
|
|
320
|
+
function _withdrawBundleFees(NftId bundleNftId, Amount amount)
|
321
|
+
internal
|
322
|
+
returns (Amount withdrawnAmount)
|
323
|
+
{
|
324
|
+
return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
|
325
|
+
}
|
293
326
|
|
294
327
|
function _getPoolStorage() private pure returns (PoolStorage storage $) {
|
295
328
|
assembly {
|
@@ -1,46 +1,33 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {IInstance} from "../instance/IInstance.sol";
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
7
6
|
import {IBundle} from "../instance/module/IBundle.sol";
|
7
|
+
import {IBundleService} from "./IBundleService.sol";
|
8
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
12
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {
|
13
|
+
import {IPoolService} from "./IPoolService.sol";
|
14
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
16
|
+
import {IStaking} from "../staking/IStaking.sol";
|
14
17
|
|
15
18
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
20
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
|
-
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY
|
19
|
-
import {
|
21
|
+
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
22
|
+
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
20
23
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
|
-
import {
|
22
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
24
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
23
25
|
import {Seconds} from "../type/Seconds.sol";
|
24
|
-
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
25
26
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
26
27
|
import {UFixed} from "../type/UFixed.sol";
|
27
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
28
|
-
|
29
|
-
import {IService} from "../shared/IService.sol";
|
30
|
-
import {Service} from "../shared/Service.sol";
|
31
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
32
28
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
33
|
-
import {IBundleService} from "./IBundleService.sol";
|
34
|
-
import {IComponentService} from "../shared/IComponentService.sol";
|
35
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
36
|
-
import {IPoolService} from "./IPoolService.sol";
|
37
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
38
|
-
import {IStaking} from "../staking/IStaking.sol";
|
39
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
40
29
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
41
30
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
42
|
-
import {IComponent} from "../shared/IComponent.sol";
|
43
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
44
31
|
|
45
32
|
string constant POOL_SERVICE_NAME = "PoolService";
|
46
33
|
|
@@ -48,9 +35,6 @@ contract PoolService is
|
|
48
35
|
ComponentVerifyingService,
|
49
36
|
IPoolService
|
50
37
|
{
|
51
|
-
using NftIdLib for NftId;
|
52
|
-
using AmountLib for Amount;
|
53
|
-
|
54
38
|
IBundleService internal _bundleService;
|
55
39
|
IComponentService internal _componentService;
|
56
40
|
IInstanceService private _instanceService;
|
@@ -146,6 +130,7 @@ contract PoolService is
|
|
146
130
|
// TODO add logging
|
147
131
|
}
|
148
132
|
|
133
|
+
/// @inheritdoc IPoolService
|
149
134
|
function createBundle(
|
150
135
|
address bundleOwner, // initial bundle owner
|
151
136
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
@@ -167,6 +152,8 @@ contract PoolService is
|
|
167
152
|
_getStakingFee(instanceReader, poolNftId),
|
168
153
|
stakingAmount);
|
169
154
|
|
155
|
+
// TODO: staking amount must be be > maxCapitalAmount
|
156
|
+
|
170
157
|
bundleNftId = _bundleService.create(
|
171
158
|
instance,
|
172
159
|
poolNftId,
|
@@ -180,7 +167,7 @@ contract PoolService is
|
|
180
167
|
_componentService.increasePoolBalance(
|
181
168
|
instance.getInstanceStore(),
|
182
169
|
poolNftId,
|
183
|
-
|
170
|
+
stakingNetAmount,
|
184
171
|
stakingFeeAmount);
|
185
172
|
|
186
173
|
// pool bookkeeping and collect tokens from bundle owner
|
@@ -199,8 +186,8 @@ contract PoolService is
|
|
199
186
|
view
|
200
187
|
returns (Fee memory stakingFee)
|
201
188
|
{
|
202
|
-
NftId productNftId = instanceReader.
|
203
|
-
return instanceReader.
|
189
|
+
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
190
|
+
return instanceReader.getProductInfo(productNftId).stakingFee;
|
204
191
|
}
|
205
192
|
|
206
193
|
function closeBundle(NftId bundleNftId)
|
@@ -219,6 +206,115 @@ contract PoolService is
|
|
219
206
|
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
220
207
|
}
|
221
208
|
|
209
|
+
/// @inheritdoc IPoolService
|
210
|
+
function stake(NftId bundleNftId, Amount amount)
|
211
|
+
external
|
212
|
+
virtual
|
213
|
+
// TODO: restricted() (once #462 is done)
|
214
|
+
returns(Amount netAmount)
|
215
|
+
{
|
216
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
217
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
218
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
219
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
220
|
+
|
221
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
222
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
223
|
+
}
|
224
|
+
|
225
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
226
|
+
if (amount + currentPoolBalance > poolInfo.maxCapitalAmount) {
|
227
|
+
revert ErrorPoolServiceMaxCapitalAmountExceeded(poolNftId, poolInfo.maxCapitalAmount, currentPoolBalance, amount);
|
228
|
+
}
|
229
|
+
|
230
|
+
// calculate fees
|
231
|
+
(
|
232
|
+
Amount feeAmount,
|
233
|
+
Amount netAmount
|
234
|
+
) = FeeLib.calculateFee(
|
235
|
+
_getStakingFee(instanceReader, poolNftId),
|
236
|
+
amount);
|
237
|
+
|
238
|
+
// do all the bookkeeping
|
239
|
+
_componentService.increasePoolBalance(
|
240
|
+
instance.getInstanceStore(),
|
241
|
+
poolNftId,
|
242
|
+
netAmount,
|
243
|
+
feeAmount);
|
244
|
+
|
245
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
246
|
+
|
247
|
+
// collect tokens from bundle owner
|
248
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
249
|
+
_collectStakingAmount(
|
250
|
+
instanceReader,
|
251
|
+
poolNftId,
|
252
|
+
bundleOwner,
|
253
|
+
amount);
|
254
|
+
|
255
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
256
|
+
}
|
257
|
+
|
258
|
+
/// @inheritdoc IPoolService
|
259
|
+
function unstake(NftId bundleNftId, Amount amount)
|
260
|
+
external
|
261
|
+
virtual
|
262
|
+
// TODO: restricted() (once #462 is done)
|
263
|
+
returns(Amount netAmount)
|
264
|
+
{
|
265
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
266
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
267
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
268
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
269
|
+
|
270
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
271
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
272
|
+
}
|
273
|
+
|
274
|
+
if (amount.eqz()) {
|
275
|
+
revert ErrorPoolServiceAmountIsZero();
|
276
|
+
}
|
277
|
+
|
278
|
+
// call bundle service for bookkeeping and additional checks
|
279
|
+
_bundleService.unstake(instance, bundleNftId, amount);
|
280
|
+
|
281
|
+
// TODO: handle performance fees (issue #477)
|
282
|
+
|
283
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
284
|
+
_componentService.decreasePoolBalance(
|
285
|
+
instanceStore,
|
286
|
+
poolNftId,
|
287
|
+
amount,
|
288
|
+
AmountLib.zero());
|
289
|
+
|
290
|
+
// check allowance
|
291
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
292
|
+
address poolWallet = poolComponentInfo.wallet;
|
293
|
+
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
294
|
+
uint256 tokenAllowance = token.allowance(poolWallet, address(poolComponentInfo.tokenHandler));
|
295
|
+
if (tokenAllowance < amount.toInt()) {
|
296
|
+
revert ErrorPoolServiceWalletAllowanceTooSmall(poolWallet, address(poolComponentInfo.tokenHandler), tokenAllowance, amount.toInt());
|
297
|
+
}
|
298
|
+
|
299
|
+
// transfer amount to bundle owner
|
300
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
301
|
+
// TODO: centralize token handling (issue #471)
|
302
|
+
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, amount);
|
303
|
+
|
304
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, amount);
|
305
|
+
|
306
|
+
return amount;
|
307
|
+
}
|
308
|
+
|
309
|
+
function _getPerformanceFee(InstanceReader instanceReader, NftId poolNftId)
|
310
|
+
internal
|
311
|
+
virtual
|
312
|
+
view
|
313
|
+
returns (Fee memory performanceFee)
|
314
|
+
{
|
315
|
+
NftId productNftId = instanceReader.getPoolInfo(poolNftId).productNftId;
|
316
|
+
return instanceReader.getPoolInfo(productNftId).performanceFee;
|
317
|
+
}
|
222
318
|
|
223
319
|
function processSale(
|
224
320
|
NftId bundleNftId,
|
@@ -439,10 +535,18 @@ contract PoolService is
|
|
439
535
|
address poolWallet = componentInfo.wallet;
|
440
536
|
|
441
537
|
if(amount.gtz()) {
|
538
|
+
uint256 allowance = IERC20Metadata(componentInfo.token).allowance(bundleOwner, address(tokenHandler));
|
539
|
+
if (allowance < amount.toInt()) {
|
540
|
+
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
541
|
+
}
|
542
|
+
|
543
|
+
// TODO: centralize token handling (issue #471)
|
442
544
|
tokenHandler.transfer(
|
443
545
|
bundleOwner,
|
444
546
|
poolWallet,
|
445
547
|
amount);
|
548
|
+
} else {
|
549
|
+
revert ErrorPoolServiceAmountIsZero();
|
446
550
|
}
|
447
551
|
}
|
448
552
|
|
@@ -1,12 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IVersionable} from "../
|
5
|
-
import {ProxyManager} from "../
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
6
|
import {PoolService} from "./PoolService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {REGISTRY} from "../type/ObjectType.sol";
|
10
7
|
|
11
8
|
contract PoolServiceManager is ProxyManager {
|
12
9
|
|