@etherisc/gif-next 0.0.2-9620cae-586 → 0.0.2-9678144-986
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 +16 -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 +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +2 -2
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2 -2
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +79 -121
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +2 -2
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +2 -2
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +70 -192
- 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/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- 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 +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 +50 -57
- 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 +462 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +252 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -56
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +188 -53
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -56
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +320 -89
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +67 -19
- 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 +86 -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 +169 -52
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -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/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +2 -2
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2 -2
- 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/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +2 -2
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +2 -2
- 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 +1 -1
- 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/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 +17 -12
- 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/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- 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/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/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/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- 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/InstanceAuthorizationV3.sol +2 -0
- package/contracts/instance/InstanceReader.sol +8 -0
- package/contracts/instance/InstanceServiceManager.sol +2 -6
- package/contracts/instance/InstanceStore.sol +2 -1
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +0 -5
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/mock/Dip.sol +1 -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/BasicPool.sol +3 -1
- package/contracts/pool/BasicPoolAuthorization.sol +9 -0
- package/contracts/pool/BundleService.sol +186 -32
- package/contracts/pool/BundleServiceManager.sol +2 -5
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -0
- package/contracts/pool/IPoolService.sol +12 -13
- package/contracts/pool/Pool.sol +28 -11
- package/contracts/pool/PoolService.sol +164 -65
- 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 +8 -2
- package/contracts/product/IProductComponent.sol +1 -0
- package/contracts/product/PolicyService.sol +72 -18
- package/contracts/product/PolicyServiceManager.sol +2 -5
- package/contracts/product/PricingServiceManager.sol +2 -5
- package/contracts/product/Product.sol +20 -1
- package/contracts/product/ProductService.sol +7 -32
- package/contracts/product/ProductServiceManager.sol +2 -5
- package/contracts/registry/RegistryService.sol +4 -18
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseRegistry.sol +0 -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/NftOwnable.sol +2 -2
- package/contracts/shared/PolicyHolder.sol +2 -5
- package/contracts/shared/Service.sol +3 -4
- package/contracts/staking/IStaking.sol +1 -1
- package/contracts/staking/Staking.sol +19 -14
- package/contracts/staking/StakingManager.sol +2 -5
- package/contracts/staking/StakingReader.sol +6 -9
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/StakingStore.sol +5 -15
- package/contracts/type/Amount.sol +12 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/Seconds.sol +13 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +29 -10
- package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/package.json +1 -1
- 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/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
@@ -1,48 +1,22 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
5
|
-
import {IService} from "./IApplicationService.sol";
|
6
|
-
|
7
4
|
import {IComponents} from "../instance/module/IComponents.sol";
|
8
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IProductComponent} from "./IProductComponent.sol";
|
10
|
-
import {Product} from "./Product.sol";
|
11
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
12
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
13
5
|
import {IInstance} from "../instance/IInstance.sol";
|
14
6
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
15
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
16
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
17
|
-
import {IProductService} from "./IProductService.sol";
|
18
|
-
|
19
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
20
|
-
|
21
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
22
|
-
import {Versionable} from "../shared/Versionable.sol";
|
23
|
-
|
24
7
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
25
|
-
import {
|
26
|
-
import {
|
27
|
-
import {
|
28
|
-
import {
|
29
|
-
import {
|
30
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
31
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
32
|
-
import {ReferralId} from "../type/Referral.sol";
|
33
|
-
import {RiskId} from "../type/RiskId.sol";
|
8
|
+
import {TimestampLib} from "../type/Timestamp.sol";
|
9
|
+
import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
|
10
|
+
import {SUBMITTED, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
|
11
|
+
import {NftId} from "../type/NftId.sol";
|
12
|
+
import {FeeLib} from "../type/Fee.sol";
|
34
13
|
import {StateId} from "../type/StateId.sol";
|
35
14
|
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
36
15
|
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
37
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
38
|
-
|
39
16
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
40
17
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
41
|
-
import {IBundleService} from "../pool/IBundleService.sol";
|
42
18
|
import {IClaimService} from "./IClaimService.sol";
|
43
19
|
import {IPoolService} from "../pool/IPoolService.sol";
|
44
|
-
import {IService} from "../shared/IService.sol";
|
45
|
-
import {Service} from "../shared/Service.sol";
|
46
20
|
|
47
21
|
|
48
22
|
contract ClaimService is
|
@@ -362,7 +336,8 @@ contract ClaimService is
|
|
362
336
|
// TODO transfer processing fees to product wallet
|
363
337
|
// TODO inform product to update fee book keeping
|
364
338
|
}
|
365
|
-
|
339
|
+
|
340
|
+
// TODO: centralize token handling (issue #471)
|
366
341
|
poolInfo.tokenHandler.transfer(
|
367
342
|
poolInfo.wallet,
|
368
343
|
beneficiary,
|
@@ -1,8 +1,8 @@
|
|
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 {ClaimService} from "./ClaimService.sol";
|
7
7
|
|
8
8
|
contract ClaimServiceManager is ProxyManager {
|
@@ -34,10 +34,15 @@ interface IPolicyService is IService {
|
|
34
34
|
error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
|
35
35
|
error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
|
36
36
|
error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
|
37
|
+
error ErrorIPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
|
38
|
+
error ErrorIPolicyServicePolicyExpirationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp expiredAt);
|
37
39
|
|
38
40
|
error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
|
39
41
|
error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
|
40
42
|
|
43
|
+
event LogPolicyServicePolicyDeclined(NftId policyNftId);
|
44
|
+
event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
|
45
|
+
|
41
46
|
/// @dev collateralizes the policy represented by {policyNftId}
|
42
47
|
/// sets the policy state to collateralized
|
43
48
|
/// may set the policy state to activated and set the activation date
|
@@ -64,11 +69,12 @@ interface IPolicyService is IService {
|
|
64
69
|
/// to activate a policy it needs to be in underwritten state
|
65
70
|
function activate(NftId policyNftId, Timestamp activateAt) external;
|
66
71
|
|
67
|
-
/// @dev expires the specified policy and sets the expiry date in the policy metadata
|
72
|
+
/// @dev expires the specified policy and sets the expiry date in the policy metadata. If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
|
68
73
|
/// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
|
69
74
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
70
75
|
/// this function can only be called by a product. the policy needs to match with the calling product
|
71
|
-
|
76
|
+
/// @return expiredAt the effective expiry date
|
77
|
+
function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
|
72
78
|
|
73
79
|
/// @dev closes the specified policy and sets the closed data in the policy metadata
|
74
80
|
/// a policy can only be closed when it has been expired. in addition, it must not have any open claims
|
@@ -4,23 +4,16 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IRegistry} from "../registry/IRegistry.sol";
|
5
5
|
import {Product} from "./Product.sol";
|
6
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
8
7
|
import {IInstance} from "../instance/IInstance.sol";
|
9
8
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
12
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
13
9
|
|
14
10
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
15
11
|
|
16
12
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
-
import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
|
18
13
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
14
|
import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
|
21
|
-
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED
|
15
|
+
import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
|
22
16
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
23
|
-
import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
|
24
17
|
import {ReferralId} from "../type/Referral.sol";
|
25
18
|
import {StateId} from "../type/StateId.sol";
|
26
19
|
import {VersionPart} from "../type/Version.sol";
|
@@ -36,8 +29,6 @@ import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
36
29
|
import {IPolicyService} from "./IPolicyService.sol";
|
37
30
|
import {IPoolService} from "../pool/IPoolService.sol";
|
38
31
|
import {IPricingService} from "./IPricingService.sol";
|
39
|
-
import {IService} from "../shared/IService.sol";
|
40
|
-
import {Service} from "../shared/Service.sol";
|
41
32
|
|
42
33
|
contract PolicyService is
|
43
34
|
ComponentVerifyingService,
|
@@ -90,15 +81,38 @@ contract PolicyService is
|
|
90
81
|
(, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
|
91
82
|
product = Product(productInfo.objectAddress);
|
92
83
|
}
|
93
|
-
|
84
|
+
|
94
85
|
|
95
86
|
function decline(
|
96
|
-
NftId policyNftId
|
87
|
+
NftId applicationNftId // = policyNftId
|
97
88
|
)
|
98
89
|
external
|
99
|
-
override
|
90
|
+
virtual override
|
100
91
|
{
|
101
|
-
|
92
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
93
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
94
|
+
|
95
|
+
// check policy is in state applied
|
96
|
+
if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
|
97
|
+
revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
|
98
|
+
}
|
99
|
+
|
100
|
+
// check policy matches with calling product
|
101
|
+
IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
|
102
|
+
if(applicationInfo.productNftId != productNftId) {
|
103
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
104
|
+
applicationNftId,
|
105
|
+
applicationInfo.productNftId,
|
106
|
+
productNftId);
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
// store updated policy info
|
111
|
+
instance.getInstanceStore().updatePolicyState(
|
112
|
+
applicationNftId,
|
113
|
+
DECLINED());
|
114
|
+
|
115
|
+
emit LogPolicyServicePolicyDeclined(applicationNftId);
|
102
116
|
}
|
103
117
|
|
104
118
|
event LogDebug(uint idx, string message);
|
@@ -230,15 +244,54 @@ contract PolicyService is
|
|
230
244
|
// TODO: add logging
|
231
245
|
}
|
232
246
|
|
233
|
-
|
247
|
+
/// @inheritdoc IPolicyService
|
234
248
|
function expire(
|
235
|
-
NftId policyNftId
|
249
|
+
NftId policyNftId,
|
250
|
+
Timestamp expireAt
|
236
251
|
)
|
237
252
|
external
|
238
253
|
override
|
239
|
-
|
254
|
+
virtual
|
255
|
+
returns (Timestamp)
|
240
256
|
{
|
241
|
-
|
257
|
+
(NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
258
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
259
|
+
|
260
|
+
// check policy is in state applied
|
261
|
+
if (instanceReader.getPolicyState(policyNftId) != ACTIVE()) {
|
262
|
+
revert ErrorIPolicyServicePolicyNotActive(policyNftId, instanceReader.getPolicyState(policyNftId));
|
263
|
+
}
|
264
|
+
|
265
|
+
// check policy matches with calling product
|
266
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
267
|
+
if(policyInfo.productNftId != productNftId) {
|
268
|
+
revert ErrorPolicyServicePolicyProductMismatch(
|
269
|
+
policyNftId,
|
270
|
+
policyInfo.productNftId,
|
271
|
+
productNftId);
|
272
|
+
}
|
273
|
+
|
274
|
+
if (expireAt.eqz()) {
|
275
|
+
expireAt = TimestampLib.blockTimestamp();
|
276
|
+
}
|
277
|
+
|
278
|
+
// check preconditions
|
279
|
+
if (expireAt >= policyInfo.expiredAt) {
|
280
|
+
revert ErrorIPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
|
281
|
+
}
|
282
|
+
if (expireAt < TimestampLib.blockTimestamp()) {
|
283
|
+
revert ErrorIPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
|
284
|
+
}
|
285
|
+
if (policyInfo.openClaimsCount > 0) {
|
286
|
+
revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
|
287
|
+
}
|
288
|
+
|
289
|
+
policyInfo.expiredAt = expireAt;
|
290
|
+
instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
|
291
|
+
|
292
|
+
emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expireAt);
|
293
|
+
|
294
|
+
return expireAt;
|
242
295
|
}
|
243
296
|
|
244
297
|
function close(
|
@@ -427,6 +480,7 @@ contract PolicyService is
|
|
427
480
|
bundleNftId,
|
428
481
|
premium);
|
429
482
|
|
483
|
+
// TODO: centralize token handling (issue #471)
|
430
484
|
// transfer premium amounts to target wallets
|
431
485
|
tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
|
432
486
|
tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
|
@@ -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 {PolicyService} from "./PolicyService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {VersionLib} from "../type/Version.sol";
|
10
7
|
|
11
8
|
contract PolicyServiceManager is ProxyManager {
|
12
9
|
|
@@ -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 {PricingService} from "./PricingService.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 PricingServiceManager is ProxyManager {
|
12
9
|
|
@@ -102,6 +102,7 @@ abstract contract Product is
|
|
102
102
|
onlyOwner()
|
103
103
|
{
|
104
104
|
_getProductStorage()._componentService.registerProduct();
|
105
|
+
_approveTokenHandler(type(uint256).max);
|
105
106
|
}
|
106
107
|
|
107
108
|
|
@@ -134,7 +135,6 @@ abstract contract Product is
|
|
134
135
|
return getRegistry().getNftId(address(_getProductStorage()._distribution));
|
135
136
|
}
|
136
137
|
|
137
|
-
|
138
138
|
function _initializeProduct(
|
139
139
|
address registry,
|
140
140
|
NftId instanceNftId,
|
@@ -265,6 +265,25 @@ abstract contract Product is
|
|
265
265
|
activateAt);
|
266
266
|
}
|
267
267
|
|
268
|
+
function _decline(
|
269
|
+
NftId policyNftId
|
270
|
+
)
|
271
|
+
internal
|
272
|
+
{
|
273
|
+
_getProductStorage()._policyService.decline(
|
274
|
+
policyNftId);
|
275
|
+
}
|
276
|
+
|
277
|
+
function _expire(
|
278
|
+
NftId policyNftId,
|
279
|
+
Timestamp expireAt
|
280
|
+
)
|
281
|
+
internal
|
282
|
+
returns (Timestamp)
|
283
|
+
{
|
284
|
+
return _getProductStorage()._policyService.expire(policyNftId, expireAt);
|
285
|
+
}
|
286
|
+
|
268
287
|
function _collectPremium(
|
269
288
|
NftId policyNftId,
|
270
289
|
Timestamp activateAt
|
@@ -1,45 +1,20 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
5
|
-
import {IProductComponent} from "./IProductComponent.sol";
|
6
|
-
import {Product} from "./Product.sol";
|
7
|
-
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
8
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
9
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
10
4
|
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
5
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
6
|
+
import {IPoolService} from "../pool/PoolService.sol";
|
14
7
|
import {IProductService} from "./IProductService.sol";
|
15
|
-
import {
|
16
|
-
|
17
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
18
|
-
|
19
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
20
|
-
import {Versionable} from "../shared/Versionable.sol";
|
8
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
9
|
+
import {IRisk} from "../instance/module/IRisk.sol";
|
21
10
|
|
22
|
-
import {
|
23
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
24
|
-
import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
|
11
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
25
12
|
import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
|
26
|
-
import {
|
27
|
-
import {NftId
|
28
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
29
|
-
import {ReferralId} from "../type/Referral.sol";
|
13
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
14
|
+
import {NftId} from "../type/NftId.sol";
|
30
15
|
import {RiskId} from "../type/RiskId.sol";
|
31
16
|
import {StateId} from "../type/StateId.sol";
|
32
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
33
|
-
import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
34
|
-
|
35
|
-
import {IService} from "../shared/IService.sol";
|
36
|
-
import {Service} from "../shared/Service.sol";
|
37
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
38
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
39
|
-
import {IProductService} from "./IProductService.sol";
|
40
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
41
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
42
|
-
import {IPoolService} from "../pool/PoolService.sol";
|
43
18
|
|
44
19
|
contract ProductService is
|
45
20
|
ComponentVerifyingService,
|
@@ -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 {ProductService} from "./ProductService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {VersionLib} from "../type/Version.sol";
|
10
7
|
|
11
8
|
contract ProductServiceManager is ProxyManager {
|
12
9
|
|
@@ -1,32 +1,18 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
|
5
|
-
// import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
6
|
-
|
7
|
-
import {IRegistry} from "./IRegistry.sol";
|
8
|
-
import {IInstance} from "../instance/IInstance.sol";
|
9
|
-
|
10
4
|
import {IComponent} from "../../contracts/shared/IComponent.sol";
|
5
|
+
import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
|
6
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
7
|
import {IPoolComponent} from "../../contracts/pool/IPoolComponent.sol";
|
12
8
|
import {IProductComponent} from "../../contracts/product/IProductComponent.sol";
|
13
|
-
import {IDistributionComponent} from "../../contracts/distribution/IDistributionComponent.sol";
|
14
|
-
|
15
|
-
import {IVersionable} from "../../contracts/shared/IVersionable.sol";
|
16
|
-
import {Versionable} from "../../contracts/shared/Versionable.sol";
|
17
9
|
import {IRegisterable} from "../../contracts/shared/IRegisterable.sol";
|
10
|
+
import {IRegistry} from "./IRegistry.sol";
|
11
|
+
import {IRegistryService} from "./IRegistryService.sol";
|
18
12
|
|
19
|
-
import {RoleId, PRODUCT_OWNER_ROLE, POOL_OWNER_ROLE, ORACLE_OWNER_ROLE} from "../../contracts/type/RoleId.sol";
|
20
13
|
import {ObjectType, REGISTRY, SERVICE, PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, APPLICATION, POLICY, CLAIM, BUNDLE, STAKE, STAKING, PRICE} from "../../contracts/type/ObjectType.sol";
|
21
|
-
import {StateId, ACTIVE, PAUSED} from "../../contracts/type/StateId.sol";
|
22
14
|
import {NftId, NftIdLib} from "../../contracts/type/NftId.sol";
|
23
|
-
import {Fee, FeeLib} from "../../contracts/type/Fee.sol";
|
24
|
-
import {Version, VersionPart, VersionLib} from "../../contracts/type/Version.sol";
|
25
|
-
|
26
15
|
import {Service} from "../shared/Service.sol";
|
27
|
-
import {IService} from "../shared/IService.sol";
|
28
|
-
import {IRegistryService} from "./IRegistryService.sol";
|
29
|
-
import {Registry} from "./Registry.sol";
|
30
16
|
|
31
17
|
contract RegistryService is
|
32
18
|
Service,
|
@@ -1,8 +1,8 @@
|
|
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 {RegistryService} from "./RegistryService.sol";
|
7
7
|
|
8
8
|
contract RegistryServiceManager is
|
@@ -32,8 +32,6 @@ import {Registry} from "./Registry.sol";
|
|
32
32
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
33
33
|
import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
|
34
34
|
|
35
|
-
// TODO rename to something that does not end with 'Manager'
|
36
|
-
// everywhere else *Manager points to an upgradeable contract
|
37
35
|
contract ReleaseRegistry is
|
38
36
|
AccessManaged,
|
39
37
|
ReleaseLifecycle,
|
@@ -26,7 +26,6 @@ abstract contract Component is
|
|
26
26
|
struct ComponentStorage {
|
27
27
|
string _name; // unique (per instance) component name
|
28
28
|
IERC20Metadata _token; // token for this component
|
29
|
-
TokenHandler _tokenHandler;
|
30
29
|
address _wallet;
|
31
30
|
bool _isInterceptor;
|
32
31
|
bytes _data;
|
@@ -40,6 +39,12 @@ abstract contract Component is
|
|
40
39
|
_;
|
41
40
|
}
|
42
41
|
|
42
|
+
modifier onlyNftOwner(NftId nftId) {
|
43
|
+
if(msg.sender != getRegistry().ownerOf(nftId)) {
|
44
|
+
revert ErrorNftOwnableNotOwner(msg.sender);
|
45
|
+
}
|
46
|
+
_;
|
47
|
+
}
|
43
48
|
|
44
49
|
function _getComponentStorage() private pure returns (ComponentStorage storage $) {
|
45
50
|
assembly {
|
@@ -78,7 +83,6 @@ abstract contract Component is
|
|
78
83
|
ComponentStorage storage $ = _getComponentStorage();
|
79
84
|
$._name = name;
|
80
85
|
$._token = IERC20Metadata(token);
|
81
|
-
$._tokenHandler = TokenHandler(address(0));
|
82
86
|
$._wallet = address(this);
|
83
87
|
$._isInterceptor = isInterceptor;
|
84
88
|
$._data = componentData;
|
@@ -253,29 +257,24 @@ abstract contract Component is
|
|
253
257
|
}
|
254
258
|
|
255
259
|
|
256
|
-
/// @dev for component contracts that hold its own component information
|
257
|
-
/// this function creates and sets a token hanlder for the components tokens
|
258
|
-
function _createAndSetTokenHandler()
|
259
|
-
internal
|
260
|
-
{
|
261
|
-
ComponentStorage storage $ = _getComponentStorage();
|
262
|
-
$._tokenHandler = new TokenHandler(address($._token));
|
263
|
-
}
|
264
|
-
|
265
|
-
|
266
260
|
/// @dev depending on the source of the component information this function needs to be overwritten.
|
267
261
|
/// eg for instance linked components that externally store this information with the instance store contract
|
268
262
|
function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
|
269
263
|
ComponentStorage storage $ = _getComponentStorage();
|
270
|
-
|
264
|
+
|
271
265
|
return IComponents.ComponentInfo({
|
272
266
|
name: $._name,
|
273
267
|
productNftId: NftIdLib.zero(),
|
274
268
|
token: $._token,
|
275
|
-
tokenHandler:
|
269
|
+
tokenHandler: TokenHandler(address(0)),
|
276
270
|
wallet: $._wallet, // initial wallet address
|
277
271
|
data: $._data // user specific component data
|
278
272
|
});
|
279
273
|
}
|
280
274
|
|
275
|
+
function _approveTokenHandler(uint256 amount) internal {
|
276
|
+
ComponentStorage storage $ = _getComponentStorage();
|
277
|
+
$._token.approve(address(getComponentInfo().tokenHandler), amount);
|
278
|
+
}
|
279
|
+
|
281
280
|
}
|
@@ -1,33 +1,32 @@
|
|
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 {Amount, AmountLib} from "../type/Amount.sol";
|
5
7
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
6
8
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
9
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
10
|
+
import {IComponentService} from "./IComponentService.sol";
|
11
|
+
import {IInstance} from "../instance/IInstance.sol";
|
7
12
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
13
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
15
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
16
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
17
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
8
18
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
19
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
-
import {
|
11
|
-
import {IAccess} from "../instance/module/IAccess.sol";
|
20
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
12
21
|
import {NftId} from "../type/NftId.sol";
|
13
22
|
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
23
|
import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
16
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
17
|
-
import {IComponentService} from "./IComponentService.sol";
|
18
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
19
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
20
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
21
|
-
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
23
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
24
24
|
import {TokenHandler} from "./TokenHandler.sol";
|
25
25
|
|
26
26
|
contract ComponentService is
|
27
27
|
ComponentVerifyingService,
|
28
28
|
IComponentService
|
29
29
|
{
|
30
|
-
|
31
30
|
error ErrorComponentServiceAlreadyRegistered(address component);
|
32
31
|
error ErrorComponentServiceNotComponent(address component);
|
33
32
|
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
@@ -94,6 +93,47 @@ contract ComponentService is
|
|
94
93
|
// TODO implement
|
95
94
|
function unlock() external virtual {}
|
96
95
|
|
96
|
+
function withdrawFees(Amount amount)
|
97
|
+
external
|
98
|
+
virtual
|
99
|
+
returns (Amount withdrawnAmount)
|
100
|
+
{
|
101
|
+
(NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
102
|
+
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
103
|
+
address componentWallet = info.wallet;
|
104
|
+
|
105
|
+
// determine withdrawn amount
|
106
|
+
withdrawnAmount = amount;
|
107
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
108
|
+
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
109
|
+
} else if (withdrawnAmount.eqz()) {
|
110
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
111
|
+
} else {
|
112
|
+
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
113
|
+
if (withdrawnAmount.gt(withdrawLimit)) {
|
114
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
118
|
+
// check allowance
|
119
|
+
TokenHandler tokenHandler = info.tokenHandler;
|
120
|
+
IERC20Metadata token = IERC20Metadata(info.token);
|
121
|
+
uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
|
122
|
+
if (tokenAllowance < withdrawnAmount.toInt()) {
|
123
|
+
revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
124
|
+
}
|
125
|
+
|
126
|
+
// decrease fee counters by withdrawnAmount
|
127
|
+
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
128
|
+
|
129
|
+
// transfer amount to component owner
|
130
|
+
address componentOwner = getRegistry().ownerOf(componentNftId);
|
131
|
+
// TODO: centralize token handling (issue #471)
|
132
|
+
tokenHandler.transfer(componentWallet, componentOwner, withdrawnAmount);
|
133
|
+
|
134
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
|
135
|
+
}
|
136
|
+
|
97
137
|
|
98
138
|
//-------- product ------------------------------------------------------//
|
99
139
|
|
@@ -255,6 +295,36 @@ contract ComponentService is
|
|
255
295
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
256
296
|
}
|
257
297
|
|
298
|
+
//-------- distributor -------------------------------------------------------//
|
299
|
+
|
300
|
+
function increaseDistributorBalance(
|
301
|
+
InstanceStore instanceStore,
|
302
|
+
NftId distributorNftId,
|
303
|
+
Amount amount,
|
304
|
+
Amount feeAmount
|
305
|
+
)
|
306
|
+
external
|
307
|
+
virtual
|
308
|
+
// TODO re-enable once role granting is stable and fixed
|
309
|
+
// restricted()
|
310
|
+
{
|
311
|
+
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
312
|
+
}
|
313
|
+
|
314
|
+
function decreaseDistributorBalance(
|
315
|
+
InstanceStore instanceStore,
|
316
|
+
NftId distributorNftId,
|
317
|
+
Amount amount,
|
318
|
+
Amount feeAmount
|
319
|
+
)
|
320
|
+
external
|
321
|
+
virtual
|
322
|
+
// TODO re-enable once role granting is stable and fixed
|
323
|
+
// restricted()
|
324
|
+
{
|
325
|
+
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
326
|
+
}
|
327
|
+
|
258
328
|
//-------- oracle -------------------------------------------------------//
|
259
329
|
|
260
330
|
function registerOracle()
|