@etherisc/gif-next 0.0.2-92cdbc9-533 → 0.0.2-9346c9b-763
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 +13 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -33
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +8 -8
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +8 -8
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +4 -4
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +69 -26
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +19 -19
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +240 -74
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +87 -55
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +102 -0
- 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 -6
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -17
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +80 -80
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -58
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -39
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -35
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -72
- 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 +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
- 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 +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +46 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +21 -21
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -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 +30 -0
- 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 +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +43 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +18 -18
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +220 -54
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -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 +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +19 -19
- 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 +19 -0
- 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 +58 -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 +19 -0
- 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 -2
- 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 -29
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +95 -95
- 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 +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
- 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 +7 -7
- 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 +215 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -49
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
- 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 +97 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- 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 +32 -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 +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
- 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 +134 -134
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -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 +32 -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 +12 -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 +2 -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 +14 -14
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -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/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +20 -2
- package/contracts/distribution/DistributionService.sol +60 -17
- package/contracts/distribution/DistributionServiceManager.sol +2 -5
- package/contracts/distribution/IDistributionComponent.sol +8 -4
- package/contracts/distribution/IDistributionService.sol +12 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +5 -5
- package/contracts/instance/IInstanceService.sol +5 -5
- package/contracts/instance/Instance.sol +4 -4
- package/contracts/instance/InstanceAdmin.sol +2 -2
- package/contracts/instance/InstanceAuthorizationV3.sol +13 -11
- package/contracts/instance/InstanceService.sol +10 -10
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +13 -0
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPoolAuthorization.sol +6 -0
- package/contracts/pool/BundleService.sol +71 -25
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +14 -0
- package/contracts/pool/IPoolComponent.sol +6 -0
- package/contracts/pool/Pool.sol +18 -1
- package/contracts/pool/PoolService.sol +10 -26
- package/contracts/pool/PoolServiceManager.sol +2 -5
- package/contracts/product/ApplicationService.sol +12 -36
- package/contracts/product/ApplicationServiceManager.sol +2 -2
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +5 -31
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IProductComponent.sol +1 -0
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +1 -1
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/IRegistry.sol +26 -13
- package/contracts/registry/IRegistryService.sol +6 -6
- package/contracts/registry/Registry.sol +80 -82
- package/contracts/registry/RegistryAdmin.sol +23 -23
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -48
- package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +13 -14
- package/contracts/shared/ComponentService.sol +52 -11
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/IComponentService.sol +10 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +21 -0
- package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- 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 +17 -16
- 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 +12 -22
- package/contracts/type/Amount.sol +7 -2
- package/contracts/type/ObjectType.sol +3 -7
- 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 +3 -3
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- 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/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -23,7 +23,7 @@ contract InstanceAdmin is
|
|
23
23
|
string public constant INSTANCE_TARGET_NAME = "Instance";
|
24
24
|
string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
|
25
25
|
string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
|
26
|
-
string public constant
|
26
|
+
string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
|
27
27
|
|
28
28
|
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
|
29
29
|
|
@@ -248,7 +248,7 @@ contract InstanceAdmin is
|
|
248
248
|
_checkAndCreateTargetWithRole(address(_instance), INSTANCE_TARGET_NAME);
|
249
249
|
_checkAndCreateTargetWithRole(address(_instance.getInstanceStore()), INSTANCE_STORE_TARGET_NAME);
|
250
250
|
_checkAndCreateTargetWithRole(address(_instance.getInstanceAdmin()), INSTANCE_ADMIN_TARGET_NAME);
|
251
|
-
_checkAndCreateTargetWithRole(address(_instance.
|
251
|
+
_checkAndCreateTargetWithRole(address(_instance.getBundleSet()), BUNDLE_SET_TARGET_NAME);
|
252
252
|
|
253
253
|
// create targets for services that need to access the module targets
|
254
254
|
ObjectType[] memory serviceDomains = _instanceAuthorization.getServiceDomains();
|
@@ -9,7 +9,7 @@ import {
|
|
9
9
|
ADMIN_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
|
10
10
|
} from "../../contracts/type/RoleId.sol";
|
11
11
|
|
12
|
-
import {
|
12
|
+
import {BundleSet} from "../instance/BundleSet.sol";
|
13
13
|
import {IAccess} from "../authorization/IAccess.sol";
|
14
14
|
import {Instance} from "../instance/Instance.sol";
|
15
15
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
@@ -26,7 +26,7 @@ contract InstanceAuthorizationV3
|
|
26
26
|
string public constant INSTANCE_TARGET_NAME = "Instance";
|
27
27
|
string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
|
28
28
|
string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
|
29
|
-
string public constant
|
29
|
+
string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
|
30
30
|
|
31
31
|
string public constant INSTANCE_ROLE_NAME = "InstanceRole";
|
32
32
|
string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
|
@@ -61,7 +61,7 @@ contract InstanceAuthorizationV3
|
|
61
61
|
// instance supporting targets
|
62
62
|
_addTarget(INSTANCE_STORE_TARGET_NAME);
|
63
63
|
_addTarget(INSTANCE_ADMIN_TARGET_NAME);
|
64
|
-
_addTarget(
|
64
|
+
_addTarget(BUNDLE_SET_TARGET_NAME);
|
65
65
|
|
66
66
|
// service targets relevant to instance
|
67
67
|
_addServiceTargetWithRole(INSTANCE());
|
@@ -84,22 +84,22 @@ contract InstanceAuthorizationV3
|
|
84
84
|
_setupInstanceAuthorization();
|
85
85
|
_setupInstanceAdminAuthorization();
|
86
86
|
_setupInstanceStoreAuthorization();
|
87
|
-
|
87
|
+
_setupBundleSetAuthorization();
|
88
88
|
}
|
89
89
|
|
90
90
|
|
91
|
-
function
|
91
|
+
function _setupBundleSetAuthorization()
|
92
92
|
internal
|
93
93
|
{
|
94
94
|
IAccess.FunctionInfo[] storage functions;
|
95
95
|
|
96
96
|
// authorize bundle service role
|
97
|
-
functions = _authorizeForTarget(
|
98
|
-
_authorize(functions,
|
99
|
-
_authorize(functions,
|
100
|
-
_authorize(functions,
|
101
|
-
_authorize(functions,
|
102
|
-
_authorize(functions,
|
97
|
+
functions = _authorizeForTarget(BUNDLE_SET_TARGET_NAME, getServiceRole(BUNDLE()));
|
98
|
+
_authorize(functions, BundleSet.linkPolicy.selector, "linkPolicy");
|
99
|
+
_authorize(functions, BundleSet.unlinkPolicy.selector, "unlinkPolicy");
|
100
|
+
_authorize(functions, BundleSet.add.selector, "add");
|
101
|
+
_authorize(functions, BundleSet.lock.selector, "lock");
|
102
|
+
_authorize(functions, BundleSet.unlock.selector, "unlock");
|
103
103
|
}
|
104
104
|
|
105
105
|
|
@@ -141,7 +141,9 @@ contract InstanceAuthorizationV3
|
|
141
141
|
_authorize(functions, InstanceStore.createProduct.selector, "createProduct");
|
142
142
|
_authorize(functions, InstanceStore.updateProduct.selector, "updateProduct");
|
143
143
|
_authorize(functions, InstanceStore.increaseBalance.selector, "increaseBalance");
|
144
|
+
_authorize(functions, InstanceStore.decreaseBalance.selector, "decreaseBalance");
|
144
145
|
_authorize(functions, InstanceStore.increaseFees.selector, "increaseFees");
|
146
|
+
_authorize(functions, InstanceStore.decreaseFees.selector, "decreaseFees");
|
145
147
|
|
146
148
|
// authorize distribution service role
|
147
149
|
functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(DISTRIBUTION()));
|
@@ -6,7 +6,7 @@ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStri
|
|
6
6
|
|
7
7
|
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
8
8
|
import {Amount} from "../type/Amount.sol";
|
9
|
-
import {
|
9
|
+
import {BundleSet} from "./BundleSet.sol";
|
10
10
|
import {ChainNft} from "../registry/ChainNft.sol";
|
11
11
|
import {NftId} from "../type/NftId.sol";
|
12
12
|
import {RoleId} from "../type/RoleId.sol";
|
@@ -54,7 +54,7 @@ contract InstanceService is
|
|
54
54
|
address internal _masterInstanceAdmin;
|
55
55
|
address internal _masterInstance;
|
56
56
|
address internal _masterInstanceReader;
|
57
|
-
address internal
|
57
|
+
address internal _masterInstanceBundleSet;
|
58
58
|
address internal _masterInstanceStore;
|
59
59
|
|
60
60
|
|
@@ -94,7 +94,7 @@ contract InstanceService is
|
|
94
94
|
_;
|
95
95
|
}
|
96
96
|
|
97
|
-
function
|
97
|
+
function createInstance()
|
98
98
|
external
|
99
99
|
returns (
|
100
100
|
Instance clonedInstance,
|
@@ -118,7 +118,7 @@ contract InstanceService is
|
|
118
118
|
InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
|
119
119
|
|
120
120
|
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
121
|
-
|
121
|
+
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
122
122
|
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
123
123
|
|
124
124
|
// clone instance
|
@@ -126,7 +126,7 @@ contract InstanceService is
|
|
126
126
|
clonedInstance.initialize(
|
127
127
|
clonedInstanceAdmin,
|
128
128
|
clonedInstanceStore,
|
129
|
-
|
129
|
+
clonedBundleSet,
|
130
130
|
clonedInstanceReader,
|
131
131
|
getRegistry(),
|
132
132
|
instanceOwner);
|
@@ -238,7 +238,7 @@ contract InstanceService is
|
|
238
238
|
{
|
239
239
|
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
240
240
|
if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
|
241
|
-
if(
|
241
|
+
if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
|
242
242
|
|
243
243
|
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
244
244
|
|
@@ -248,7 +248,7 @@ contract InstanceService is
|
|
248
248
|
address instanceAdminAddress = address(instanceAdmin);
|
249
249
|
InstanceReader instanceReader = instance.getInstanceReader();
|
250
250
|
address instanceReaderAddress = address(instanceReader);
|
251
|
-
|
251
|
+
BundleSet bundleManager = instance.getBundleSet();
|
252
252
|
address bundleManagerAddress = address(bundleManager);
|
253
253
|
InstanceStore instanceStore = instance.getInstanceStore();
|
254
254
|
address instanceStoreAddress = address(instanceStore);
|
@@ -256,11 +256,11 @@ contract InstanceService is
|
|
256
256
|
if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
|
257
257
|
if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
|
258
258
|
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
259
|
-
if(bundleManagerAddress == address(0)) { revert
|
259
|
+
if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
|
260
260
|
if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
|
261
261
|
|
262
262
|
if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
263
|
-
if(bundleManager.authority() != instanceAdmin.authority()) { revert
|
263
|
+
if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
|
264
264
|
if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
|
265
265
|
if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
|
266
266
|
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
@@ -269,7 +269,7 @@ contract InstanceService is
|
|
269
269
|
_masterInstanceAdmin = instanceAdminAddress;
|
270
270
|
_masterInstance = instanceAddress;
|
271
271
|
_masterInstanceReader = instanceReaderAddress;
|
272
|
-
|
272
|
+
_masterInstanceBundleSet = bundleManagerAddress;
|
273
273
|
_masterInstanceStore = instanceStoreAddress;
|
274
274
|
|
275
275
|
IInstance masterInstance = IInstance(_masterInstance);
|
@@ -1,13 +1,9 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import {ProxyManager} from "../shared/ProxyManager.sol";
|
4
|
+
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
|
+
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
7
6
|
import {InstanceService} from "./InstanceService.sol";
|
8
|
-
import {Registry} from "../registry/Registry.sol";
|
9
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
10
|
-
import {REGISTRY} from "../type/ObjectType.sol";
|
11
7
|
|
12
8
|
contract InstanceServiceManager is ProxyManager {
|
13
9
|
|
@@ -10,17 +10,17 @@ import {IRegistry} from "../../registry/IRegistry.sol";
|
|
10
10
|
import {LibNftIdSet} from "../../type/NftIdSet.sol";
|
11
11
|
import {NftId} from "../../type/NftId.sol";
|
12
12
|
|
13
|
-
contract
|
13
|
+
contract ObjectSet is
|
14
14
|
Cloneable
|
15
15
|
{
|
16
16
|
|
17
|
-
event
|
17
|
+
event LogObjectSetInitialized(address instance);
|
18
18
|
|
19
|
-
error
|
19
|
+
error ErrorObjectSetNftIdInvalid(NftId instanceNftId);
|
20
20
|
|
21
21
|
mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _activeObjects;
|
22
22
|
mapping(NftId compnentNftId => LibNftIdSet.Set objects) internal _allObjects;
|
23
|
-
IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during
|
23
|
+
IInstance internal _instance; // store instance address -> more flexible, instance may not be registered during ObjectSet initialization
|
24
24
|
|
25
25
|
/// @dev This initializer needs to be called from the instance itself.
|
26
26
|
function initialize()
|
@@ -30,7 +30,7 @@ contract ObjectManager is
|
|
30
30
|
_instance = IInstance(msg.sender);
|
31
31
|
__Cloneable_init(_instance.authority(), address(_instance.getRegistry()));
|
32
32
|
|
33
|
-
emit
|
33
|
+
emit LogObjectSetInitialized(address(_instance));
|
34
34
|
}
|
35
35
|
|
36
36
|
function getInstance() external view returns (IInstance) {
|
@@ -11,7 +11,8 @@ import {UFixed} from "../type/UFixed.sol";
|
|
11
11
|
import {Timestamp} from "../type/Timestamp.sol";
|
12
12
|
|
13
13
|
interface IOracleComponent is IInstanceLinkedComponent {
|
14
|
-
|
14
|
+
error ErrorOracleNotImplemented(string methodName);
|
15
|
+
|
15
16
|
/// @dev callback method for requesting some data from the oracle
|
16
17
|
function request(
|
17
18
|
RequestId requestId,
|
@@ -1,9 +1,11 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
4
5
|
import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
|
5
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
6
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
9
|
import {IOracleComponent} from "./IOracleComponent.sol";
|
8
10
|
import {IOracleService} from "./IOracleService.sol";
|
9
11
|
import {IRegistry} from "../registry/IRegistry.sol";
|
@@ -73,6 +75,17 @@ abstract contract Oracle is
|
|
73
75
|
return false;
|
74
76
|
}
|
75
77
|
|
78
|
+
function withdrawFees(Amount amount)
|
79
|
+
external
|
80
|
+
virtual
|
81
|
+
override(IInstanceLinkedComponent, InstanceLinkedComponent)
|
82
|
+
onlyOwner()
|
83
|
+
restricted()
|
84
|
+
returns (Amount withdrawnAmount)
|
85
|
+
{
|
86
|
+
revert ErrorOracleNotImplemented("withdrawFees");
|
87
|
+
}
|
88
|
+
|
76
89
|
|
77
90
|
function _initializeOracle(
|
78
91
|
address registry,
|
@@ -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 {OracleService} from "./OracleService.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 OracleServiceManager is ProxyManager {
|
12
9
|
|
@@ -4,6 +4,8 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Authorization} from "../authorization/Authorization.sol";
|
5
5
|
import {BasicPool} from "./BasicPool.sol";
|
6
6
|
import {IAccess} from "../authorization/IAccess.sol";
|
7
|
+
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
8
|
+
import {IPoolComponent} from "./IPoolComponent.sol";
|
7
9
|
import {POOL} from "../type/ObjectType.sol";
|
8
10
|
import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
|
9
11
|
import {RoleId} from "../type/RoleId.sol";
|
@@ -44,6 +46,10 @@ contract BasicPoolAuthorization
|
|
44
46
|
_authorize(functions, BasicPool.setMaxCapitalAmount.selector, "setMaxCapitalAmount");
|
45
47
|
_authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
|
46
48
|
_authorize(functions, BasicPool.setFees.selector, "setFees");
|
49
|
+
|
50
|
+
_authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
|
51
|
+
|
52
|
+
_authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
|
47
53
|
}
|
48
54
|
}
|
49
55
|
|
@@ -1,37 +1,28 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
4
6
|
import {IBundle} from "../instance/module/IBundle.sol";
|
7
|
+
import {IBundleService} from "./IBundleService.sol";
|
5
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
6
9
|
import {IComponentService} from "../shared/IComponentService.sol";
|
7
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
11
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
8
12
|
import {IInstance} from "../instance/IInstance.sol";
|
9
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
10
14
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
15
|
|
12
|
-
import {
|
13
|
-
import {
|
16
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
+
import {BundleSet} from "../instance/BundleSet.sol";
|
18
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
19
|
+
import {Fee} from "../type/Fee.sol";
|
20
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
21
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
22
|
import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
|
16
|
-
import {POOL_OWNER_ROLE, RoleId} from "../type/RoleId.sol";
|
17
|
-
import {Pool} from "./Pool.sol";
|
18
|
-
|
19
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
20
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
23
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
22
24
|
import {Seconds} from "../type/Seconds.sol";
|
23
25
|
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
24
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
25
|
-
import {Versionable} from "../shared/Versionable.sol";
|
26
|
-
|
27
|
-
import {IService} from "../shared/IService.sol";
|
28
|
-
import {Service} from "../shared/Service.sol";
|
29
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
30
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
31
|
-
import {IBundleService} from "./IBundleService.sol";
|
32
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
33
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
34
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
35
26
|
|
36
27
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
37
28
|
|
@@ -40,6 +31,7 @@ contract BundleService is
|
|
40
31
|
IBundleService
|
41
32
|
{
|
42
33
|
using NftIdLib for NftId;
|
34
|
+
using AmountLib for Amount;
|
43
35
|
|
44
36
|
string public constant NAME = "BundleService";
|
45
37
|
|
@@ -139,7 +131,7 @@ contract BundleService is
|
|
139
131
|
AmountLib.zero()); // fee amount
|
140
132
|
|
141
133
|
// put bundle under bundle managemet
|
142
|
-
|
134
|
+
BundleSet bundleManager = instance.getBundleSet();
|
143
135
|
bundleManager.add(bundleNftId);
|
144
136
|
|
145
137
|
// TODO add logging
|
@@ -197,7 +189,7 @@ contract BundleService is
|
|
197
189
|
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
198
190
|
|
199
191
|
// update set of active bundles
|
200
|
-
|
192
|
+
BundleSet bundleManager = instance.getBundleSet();
|
201
193
|
bundleManager.lock(bundleNftId);
|
202
194
|
|
203
195
|
emit LogBundleServiceBundleLocked(bundleNftId);
|
@@ -214,7 +206,7 @@ contract BundleService is
|
|
214
206
|
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
215
207
|
|
216
208
|
// update set of active bundles
|
217
|
-
|
209
|
+
BundleSet bundleManager = instance.getBundleSet();
|
218
210
|
bundleManager.unlock(bundleNftId);
|
219
211
|
|
220
212
|
emit LogBundleServiceBundleActivated(bundleNftId);
|
@@ -233,7 +225,7 @@ contract BundleService is
|
|
233
225
|
instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
|
234
226
|
|
235
227
|
// ensure no open policies attached to bundle
|
236
|
-
|
228
|
+
BundleSet bundleManager = instance.getBundleSet();
|
237
229
|
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
238
230
|
if(openPolicies > 0) {
|
239
231
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
@@ -271,7 +263,61 @@ contract BundleService is
|
|
271
263
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
272
264
|
}
|
273
265
|
|
274
|
-
instance.
|
266
|
+
instance.getBundleSet().unlinkPolicy(policyNftId);
|
267
|
+
}
|
268
|
+
|
269
|
+
/// @inheritdoc IBundleService
|
270
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
271
|
+
public
|
272
|
+
virtual
|
273
|
+
// TODO: restricted() (once #462 is done)
|
274
|
+
returns (Amount withdrawnAmount)
|
275
|
+
{
|
276
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
277
|
+
InstanceReader reader = instance.getInstanceReader();
|
278
|
+
|
279
|
+
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
280
|
+
address poolWallet = poolInfo.wallet;
|
281
|
+
|
282
|
+
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
283
|
+
|
284
|
+
// determine withdrawn amount
|
285
|
+
withdrawnAmount = amount;
|
286
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
287
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
288
|
+
} else {
|
289
|
+
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
290
|
+
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
291
|
+
}
|
292
|
+
}
|
293
|
+
|
294
|
+
if (withdrawnAmount.eqz()) {
|
295
|
+
revert ErrorBundleServiceFeesWithdrawAmountIsZero();
|
296
|
+
}
|
297
|
+
|
298
|
+
// check allowance
|
299
|
+
IERC20Metadata token = IERC20Metadata(poolInfo.token);
|
300
|
+
uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
|
301
|
+
if (tokenAllowance < withdrawnAmount.toInt()) {
|
302
|
+
revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
303
|
+
}
|
304
|
+
|
305
|
+
// decrease fee counters by withdrawnAmount
|
306
|
+
{
|
307
|
+
InstanceStore store = instance.getInstanceStore();
|
308
|
+
// decrease fee amount of the bundle
|
309
|
+
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
310
|
+
// decrease pool balance
|
311
|
+
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
312
|
+
}
|
313
|
+
|
314
|
+
// transfer amount to bundle owner
|
315
|
+
{
|
316
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
317
|
+
poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
|
318
|
+
|
319
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
|
320
|
+
}
|
275
321
|
}
|
276
322
|
|
277
323
|
/// @dev links policy to bundle
|
@@ -283,10 +329,10 @@ contract BundleService is
|
|
283
329
|
|
284
330
|
// ensure policy has not yet been activated in a previous tx already
|
285
331
|
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
286
|
-
revert
|
332
|
+
revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
|
287
333
|
}
|
288
334
|
|
289
|
-
|
335
|
+
BundleSet bundleManager = instance.getBundleSet();
|
290
336
|
bundleManager.linkPolicy(policyNftId);
|
291
337
|
}
|
292
338
|
|
@@ -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 {BundleService} from "./BundleService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
|
10
7
|
|
11
8
|
contract BundleServiceManager is ProxyManager {
|
12
9
|
|
@@ -26,6 +26,13 @@ interface IBundleService is IService {
|
|
26
26
|
|
27
27
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
28
28
|
|
29
|
+
// error ErrorBundleServiceBundleNotActive(NftId distributorNftId);
|
30
|
+
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
31
|
+
error ErrorBundleServiceFeesWithdrawAmountIsZero();
|
32
|
+
error ErrorBundleServiceWalletAllowanceTooSmall(address wallet, address tokenHandler, uint256 allowance, uint256 amount);
|
33
|
+
|
34
|
+
event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
|
35
|
+
|
29
36
|
/// @dev create a new bundle for the specified attributes
|
30
37
|
/// may only be called by pool service
|
31
38
|
function create(
|
@@ -103,4 +110,11 @@ interface IBundleService is IService {
|
|
103
110
|
IInstance instance,
|
104
111
|
NftId policyNftId
|
105
112
|
) external;
|
113
|
+
|
114
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
115
|
+
/// @param bundleNftId the bundle Nft Id
|
116
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
117
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
118
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
119
|
+
|
106
120
|
}
|
@@ -46,6 +46,12 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
46
|
view
|
47
47
|
returns (bool isMatching);
|
48
48
|
|
49
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
50
|
+
/// @param bundleNftId the bundle Nft Id
|
51
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
52
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
53
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
54
|
+
|
49
55
|
/// @dev returns initial pool specific infos for this pool
|
50
56
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
51
57
|
|
package/contracts/pool/Pool.sol
CHANGED
@@ -91,6 +91,18 @@ abstract contract Pool is
|
|
91
91
|
onlyOwner()
|
92
92
|
{
|
93
93
|
_getPoolStorage()._componentService.registerPool();
|
94
|
+
_approveTokenHandler(type(uint256).max);
|
95
|
+
}
|
96
|
+
|
97
|
+
/// @inheritdoc IPoolComponent
|
98
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
99
|
+
external
|
100
|
+
virtual
|
101
|
+
restricted()
|
102
|
+
onlyBundleOwner(bundleNftId)
|
103
|
+
returns (Amount withdrawnAmount)
|
104
|
+
{
|
105
|
+
return _withdrawBundleFees(bundleNftId, amount);
|
94
106
|
}
|
95
107
|
|
96
108
|
|
@@ -296,12 +308,17 @@ abstract contract Pool is
|
|
296
308
|
// TODO add logging
|
297
309
|
}
|
298
310
|
|
299
|
-
|
300
311
|
// TODO remove function once this is no longer used to produce contract locations on the fly ...
|
301
312
|
function getContractLocation(bytes memory name) external pure returns (bytes32 hash) {
|
302
313
|
return keccak256(abi.encode(uint256(keccak256(name)) - 1)) & ~bytes32(uint256(0xff));
|
303
314
|
}
|
304
315
|
|
316
|
+
function _withdrawBundleFees(NftId bundleNftId, Amount amount)
|
317
|
+
internal
|
318
|
+
returns (Amount withdrawnAmount)
|
319
|
+
{
|
320
|
+
return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
|
321
|
+
}
|
305
322
|
|
306
323
|
function _getPoolStorage() private pure returns (PoolStorage storage $) {
|
307
324
|
assembly {
|
@@ -1,46 +1,30 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
-
import {IInstance} from "../instance/IInstance.sol";
|
7
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
4
|
+
import {IBundleService} from "./IBundleService.sol";
|
8
5
|
import {IComponents} from "../instance/module/IComponents.sol";
|
6
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
7
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
9
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {
|
10
|
+
import {IPoolService} from "./IPoolService.sol";
|
11
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
12
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
13
|
+
import {IStaking} from "../staking/IStaking.sol";
|
14
14
|
|
15
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
16
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
17
17
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
18
|
-
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY
|
18
|
+
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
19
19
|
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
20
20
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
|
-
import {
|
22
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
21
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
23
22
|
import {Seconds} from "../type/Seconds.sol";
|
24
|
-
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
25
23
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
26
24
|
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
25
|
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
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
41
27
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
42
|
-
import {IComponent} from "../shared/IComponent.sol";
|
43
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
44
28
|
|
45
29
|
string constant POOL_SERVICE_NAME = "PoolService";
|
46
30
|
|
@@ -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
|
|