@etherisc/gif-next 0.0.2-f18fb8b-243 → 0.0.2-f1e0c66-773
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 +14 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- 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 +16 -16
- 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 +237 -74
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -38
- 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 +9 -9
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +73 -73
- 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 +54 -59
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +15 -15
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +6 -6
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +66 -76
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- 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/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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
- 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 +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +221 -55
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +55 -23
- 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 +2 -2
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +2 -2
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +2 -2
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +2 -2
- 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 +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +2 -2
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +2 -2
- 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/IPolicyService.sol/IPolicyService.json +13 -0
- 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 +64 -51
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +26 -26
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +2 -2
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/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 +95 -23
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- 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 +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- 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 -62
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +60 -32
- 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 +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/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
- 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/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
- 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 +2 -2
- 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 +12 -2
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +36 -36
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +19 -19
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +2 -2
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +2 -2
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +20 -15
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- 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/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- 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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- 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 +39 -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/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- 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/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +22 -10
- package/contracts/distribution/DistributionService.sol +61 -26
- 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/InstanceStore.sol +2 -1
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IComponents.sol +0 -1
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +15 -6
- package/contracts/oracle/OracleServiceManager.sol +2 -5
- package/contracts/pool/BasicPoolAuthorization.sol +6 -0
- package/contracts/pool/BundleService.sol +72 -27
- 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 +11 -29
- 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 +3 -33
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +7 -32
- package/contracts/product/ClaimServiceManager.sol +2 -2
- package/contracts/product/IPolicyService.sol +2 -0
- package/contracts/product/IProductComponent.sol +1 -0
- package/contracts/product/PolicyService.sol +28 -4
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +10 -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 -50
- 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 +82 -12
- package/contracts/shared/ComponentServiceManager.sol +2 -2
- package/contracts/shared/IComponentService.sol +15 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
- package/contracts/shared/InstanceLinkedComponent.sol +21 -0
- 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/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 +12 -5
- package/contracts/type/ObjectType.sol +3 -7
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/UFixed.sol +29 -10
- 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 +1 -1
- 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/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- 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/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- 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
@@ -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
|
|
@@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol";
|
|
7
7
|
import {Key32} from "../type/Key32.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
9
|
import {ClaimId} from "../type/ClaimId.sol";
|
10
|
-
import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR
|
10
|
+
import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
|
11
11
|
import {RequestId} from "../type/RequestId.sol";
|
12
12
|
import {RiskId} from "../type/RiskId.sol";
|
13
13
|
import {StateId} from "../type/StateId.sol";
|
@@ -116,6 +116,7 @@ contract InstanceStore is
|
|
116
116
|
|
117
117
|
//--- Distributor -------------------------------------------------------//
|
118
118
|
function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
|
119
|
+
_registerBalanceTarget(distributorNftId);
|
119
120
|
_create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
|
120
121
|
}
|
121
122
|
|
@@ -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,19 +1,17 @@
|
|
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
|
-
import {
|
10
|
-
import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
|
11
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
12
|
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
13
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
13
|
import {RequestId} from "../type/RequestId.sol";
|
15
|
-
import {Timestamp
|
16
|
-
import {UFixed} from "../type/UFixed.sol";
|
14
|
+
import {Timestamp} from "../type/Timestamp.sol";
|
17
15
|
|
18
16
|
|
19
17
|
abstract contract Oracle is
|
@@ -73,6 +71,17 @@ abstract contract Oracle is
|
|
73
71
|
return false;
|
74
72
|
}
|
75
73
|
|
74
|
+
function withdrawFees(Amount amount)
|
75
|
+
external
|
76
|
+
virtual
|
77
|
+
override(IInstanceLinkedComponent, InstanceLinkedComponent)
|
78
|
+
onlyOwner()
|
79
|
+
restricted()
|
80
|
+
returns (Amount withdrawnAmount)
|
81
|
+
{
|
82
|
+
revert ErrorOracleNotImplemented("withdrawFees");
|
83
|
+
}
|
84
|
+
|
76
85
|
|
77
86
|
function _initializeOracle(
|
78
87
|
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
|
|
@@ -39,8 +30,7 @@ contract BundleService is
|
|
39
30
|
ComponentVerifyingService,
|
40
31
|
IBundleService
|
41
32
|
{
|
42
|
-
|
43
|
-
|
33
|
+
|
44
34
|
string public constant NAME = "BundleService";
|
45
35
|
|
46
36
|
address private _registryAddress;
|
@@ -139,7 +129,7 @@ contract BundleService is
|
|
139
129
|
AmountLib.zero()); // fee amount
|
140
130
|
|
141
131
|
// put bundle under bundle managemet
|
142
|
-
|
132
|
+
BundleSet bundleManager = instance.getBundleSet();
|
143
133
|
bundleManager.add(bundleNftId);
|
144
134
|
|
145
135
|
// TODO add logging
|
@@ -197,7 +187,7 @@ contract BundleService is
|
|
197
187
|
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
198
188
|
|
199
189
|
// update set of active bundles
|
200
|
-
|
190
|
+
BundleSet bundleManager = instance.getBundleSet();
|
201
191
|
bundleManager.lock(bundleNftId);
|
202
192
|
|
203
193
|
emit LogBundleServiceBundleLocked(bundleNftId);
|
@@ -214,7 +204,7 @@ contract BundleService is
|
|
214
204
|
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
215
205
|
|
216
206
|
// update set of active bundles
|
217
|
-
|
207
|
+
BundleSet bundleManager = instance.getBundleSet();
|
218
208
|
bundleManager.unlock(bundleNftId);
|
219
209
|
|
220
210
|
emit LogBundleServiceBundleActivated(bundleNftId);
|
@@ -233,7 +223,7 @@ contract BundleService is
|
|
233
223
|
instance.getInstanceStore().updateBundleState(bundleNftId, CLOSED());
|
234
224
|
|
235
225
|
// ensure no open policies attached to bundle
|
236
|
-
|
226
|
+
BundleSet bundleManager = instance.getBundleSet();
|
237
227
|
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
238
228
|
if(openPolicies > 0) {
|
239
229
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
@@ -271,7 +261,62 @@ contract BundleService is
|
|
271
261
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
272
262
|
}
|
273
263
|
|
274
|
-
instance.
|
264
|
+
instance.getBundleSet().unlinkPolicy(policyNftId);
|
265
|
+
}
|
266
|
+
|
267
|
+
/// @inheritdoc IBundleService
|
268
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
269
|
+
public
|
270
|
+
virtual
|
271
|
+
// TODO: restricted() (once #462 is done)
|
272
|
+
returns (Amount withdrawnAmount)
|
273
|
+
{
|
274
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
275
|
+
InstanceReader reader = instance.getInstanceReader();
|
276
|
+
|
277
|
+
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
278
|
+
address poolWallet = poolInfo.wallet;
|
279
|
+
|
280
|
+
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
281
|
+
|
282
|
+
// determine withdrawn amount
|
283
|
+
withdrawnAmount = amount;
|
284
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
285
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
286
|
+
} else {
|
287
|
+
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
288
|
+
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
289
|
+
}
|
290
|
+
}
|
291
|
+
|
292
|
+
if (withdrawnAmount.eqz()) {
|
293
|
+
revert ErrorBundleServiceFeesWithdrawAmountIsZero();
|
294
|
+
}
|
295
|
+
|
296
|
+
// check allowance
|
297
|
+
IERC20Metadata token = IERC20Metadata(poolInfo.token);
|
298
|
+
uint256 tokenAllowance = token.allowance(poolWallet, address(poolInfo.tokenHandler));
|
299
|
+
if (tokenAllowance < withdrawnAmount.toInt()) {
|
300
|
+
revert ErrorBundleServiceWalletAllowanceTooSmall(poolWallet, address(poolInfo.tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
301
|
+
}
|
302
|
+
|
303
|
+
// decrease fee counters by withdrawnAmount
|
304
|
+
{
|
305
|
+
InstanceStore store = instance.getInstanceStore();
|
306
|
+
// decrease fee amount of the bundle
|
307
|
+
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
308
|
+
// decrease pool balance
|
309
|
+
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
310
|
+
}
|
311
|
+
|
312
|
+
// transfer amount to bundle owner
|
313
|
+
{
|
314
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
315
|
+
// TODO: centralize token handling (issue #471)
|
316
|
+
poolInfo.tokenHandler.transfer(poolWallet, owner, withdrawnAmount);
|
317
|
+
|
318
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(token), withdrawnAmount);
|
319
|
+
}
|
275
320
|
}
|
276
321
|
|
277
322
|
/// @dev links policy to bundle
|
@@ -283,10 +328,10 @@ contract BundleService is
|
|
283
328
|
|
284
329
|
// ensure policy has not yet been activated in a previous tx already
|
285
330
|
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
286
|
-
revert
|
331
|
+
revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
|
287
332
|
}
|
288
333
|
|
289
|
-
|
334
|
+
BundleSet bundleManager = instance.getBundleSet();
|
290
335
|
bundleManager.linkPolicy(policyNftId);
|
291
336
|
}
|
292
337
|
|
@@ -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 {
|