@etherisc/gif-next 0.0.2-888aabe-141 → 0.0.2-897d5be-225
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 +19 -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 +66 -101
- 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 +24 -75
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +182 -74
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +54 -38
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +24 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -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 +54 -54
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +81 -123
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +16 -16
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +74 -196
- 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 +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 +59 -88
- 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 -37
- 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 +27 -72
- 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 +36 -137
- 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 +383 -51
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +26 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +194 -54
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +26 -133
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +262 -90
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +0 -75
- 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 +74 -58
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
- 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 +0 -37
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +254 -174
- 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 +0 -75
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
- 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 +28 -28
- 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/Component.sol/Component.json +0 -64
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +177 -93
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +43 -47
- 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/IComponent.sol/IComponent.json +0 -26
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +92 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
- 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 -75
- 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 +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
- 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 +40 -113
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -108
- 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 +23 -23
- 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 +22 -22
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
- 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 +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +2 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/Authorization.sol +0 -1
- package/contracts/distribution/BasicDistribution.sol +4 -15
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +15 -21
- package/contracts/distribution/DistributionService.sol +45 -11
- package/contracts/distribution/IDistributionComponent.sol +5 -2
- package/contracts/distribution/IDistributionService.sol +10 -0
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +8 -33
- package/contracts/instance/InstanceAdmin.sol +23 -4
- package/contracts/instance/InstanceReader.sol +10 -7
- package/contracts/instance/InstanceService.sol +52 -28
- package/contracts/instance/InstanceStore.sol +2 -1
- package/contracts/instance/base/ObjectLifecycle.sol +2 -3
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +1 -6
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +1 -1
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/Oracle.sol +16 -6
- package/contracts/oracle/OracleService.sol +1 -0
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +11 -2
- package/contracts/pool/BundleService.sol +168 -16
- package/contracts/pool/IBundleService.sol +33 -5
- package/contracts/pool/IPoolComponent.sol +6 -2
- package/contracts/pool/IPoolService.sol +37 -24
- package/contracts/pool/Pool.sol +39 -40
- package/contracts/pool/PoolService.sol +165 -60
- package/contracts/product/ApplicationService.sol +37 -17
- package/contracts/product/BasicProduct.sol +3 -32
- package/contracts/product/BasicProductAuthorization.sol +3 -0
- package/contracts/product/ClaimService.sol +8 -8
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +1 -0
- package/contracts/product/IPolicyService.sol +23 -17
- package/contracts/product/IProductComponent.sol +1 -3
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +242 -133
- package/contracts/product/PricingService.sol +5 -1
- package/contracts/product/Product.sol +39 -37
- package/contracts/product/{ProductService.sol → RiskService.sol} +4 -6
- package/contracts/product/{ProductServiceManager.sol → RiskServiceManager.sol} +8 -8
- package/contracts/registry/RegistryAdmin.sol +10 -1
- package/contracts/registry/ReleaseRegistry.sol +0 -2
- package/contracts/shared/Component.sol +17 -23
- package/contracts/shared/ComponentService.sol +58 -34
- package/contracts/shared/IComponent.sol +4 -4
- package/contracts/shared/IComponentService.sol +9 -9
- package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
- 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/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/StakeManagerLib.sol +0 -25
- package/contracts/staking/Staking.sol +5 -22
- package/contracts/staking/StakingService.sol +8 -12
- 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/package.json +1 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
@@ -12,11 +12,11 @@ import {IApplicationService} from "./IApplicationService.sol";
|
|
12
12
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
13
13
|
import {IComponentService} from "../shared/IComponentService.sol";
|
14
14
|
import {IPolicyService} from "./IPolicyService.sol";
|
15
|
-
import {
|
15
|
+
import {IRiskService} from "./IRiskService.sol";
|
16
16
|
import {IClaimService} from "./IClaimService.sol";
|
17
17
|
import {IPricingService} from "./IPricingService.sol";
|
18
18
|
import {IProductComponent} from "./IProductComponent.sol";
|
19
|
-
import {NftId
|
19
|
+
import {NftId} from "../type/NftId.sol";
|
20
20
|
import {PayoutId} from "../type/PayoutId.sol";
|
21
21
|
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
|
22
22
|
import {ReferralId} from "../type/Referral.sol";
|
@@ -25,9 +25,6 @@ import {Seconds} from "../type/Seconds.sol";
|
|
25
25
|
import {StateId} from "../type/StateId.sol";
|
26
26
|
import {Timestamp} from "../type/Timestamp.sol";
|
27
27
|
|
28
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
|
-
|
30
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
31
28
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
32
29
|
import {IComponents} from "../instance/module/IComponents.sol";
|
33
30
|
import {Pool} from "../pool/Pool.sol";
|
@@ -41,7 +38,7 @@ abstract contract Product is
|
|
41
38
|
bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
|
42
39
|
|
43
40
|
struct ProductStorage {
|
44
|
-
|
41
|
+
IRiskService _riskService;
|
45
42
|
IApplicationService _applicationService;
|
46
43
|
IPolicyService _policyService;
|
47
44
|
IClaimService _claimService;
|
@@ -62,7 +59,7 @@ abstract contract Product is
|
|
62
59
|
NftId bundleNftId,
|
63
60
|
ReferralId referralId
|
64
61
|
)
|
65
|
-
|
62
|
+
public
|
66
63
|
view
|
67
64
|
override
|
68
65
|
returns (Amount premiumAmount)
|
@@ -135,15 +132,6 @@ abstract contract Product is
|
|
135
132
|
return getRegistry().getNftId(address(_getProductStorage()._distribution));
|
136
133
|
}
|
137
134
|
|
138
|
-
function withdrawFees(Amount amount)
|
139
|
-
external
|
140
|
-
virtual
|
141
|
-
onlyOwner()
|
142
|
-
returns (Amount withdrawnAmount)
|
143
|
-
{
|
144
|
-
return _withdrawFees(amount);
|
145
|
-
}
|
146
|
-
|
147
135
|
function _initializeProduct(
|
148
136
|
address registry,
|
149
137
|
NftId instanceNftId,
|
@@ -152,8 +140,9 @@ abstract contract Product is
|
|
152
140
|
string memory name,
|
153
141
|
address token,
|
154
142
|
bool isInterceptor,
|
155
|
-
address pool,
|
156
|
-
address distribution,
|
143
|
+
address pool, // switch to pool nft id (#527)
|
144
|
+
address distribution, // switch to distribution nft id (#527)
|
145
|
+
// add NftId [] oracleNftIds (#527)
|
157
146
|
bytes memory registryData, // writeonly data that will saved in the object info record of the registry
|
158
147
|
bytes memory componentData // writeonly data that will saved in the object info record of the registry
|
159
148
|
)
|
@@ -175,8 +164,8 @@ abstract contract Product is
|
|
175
164
|
|
176
165
|
ProductStorage storage $ = _getProductStorage();
|
177
166
|
// TODO add validation
|
178
|
-
// TODO refactor to go via registry
|
179
|
-
$.
|
167
|
+
// TODO refactor to go via registry for all components linked to this product (#527)
|
168
|
+
$._riskService = IRiskService(_getServiceAddress(PRODUCT()));
|
180
169
|
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
181
170
|
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
182
171
|
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
@@ -206,7 +195,7 @@ abstract contract Product is
|
|
206
195
|
RiskId id,
|
207
196
|
bytes memory data
|
208
197
|
) internal {
|
209
|
-
|
198
|
+
_getRiskService().createRisk(
|
210
199
|
id,
|
211
200
|
data
|
212
201
|
);
|
@@ -216,7 +205,7 @@ abstract contract Product is
|
|
216
205
|
RiskId id,
|
217
206
|
bytes memory data
|
218
207
|
) internal {
|
219
|
-
|
208
|
+
_getRiskService().updateRisk(
|
220
209
|
id,
|
221
210
|
data
|
222
211
|
);
|
@@ -226,7 +215,7 @@ abstract contract Product is
|
|
226
215
|
RiskId id,
|
227
216
|
StateId state
|
228
217
|
) internal {
|
229
|
-
|
218
|
+
_getRiskService().updateRiskState(
|
230
219
|
id,
|
231
220
|
state
|
232
221
|
);
|
@@ -242,6 +231,7 @@ abstract contract Product is
|
|
242
231
|
address applicationOwner,
|
243
232
|
RiskId riskId,
|
244
233
|
Amount sumInsuredAmount,
|
234
|
+
Amount premiumAmount,
|
245
235
|
Seconds lifetime,
|
246
236
|
NftId bundleNftId,
|
247
237
|
ReferralId referralId,
|
@@ -254,6 +244,7 @@ abstract contract Product is
|
|
254
244
|
applicationOwner,
|
255
245
|
riskId,
|
256
246
|
sumInsuredAmount,
|
247
|
+
premiumAmount,
|
257
248
|
lifetime,
|
258
249
|
bundleNftId,
|
259
250
|
referralId,
|
@@ -261,19 +252,38 @@ abstract contract Product is
|
|
261
252
|
);
|
262
253
|
}
|
263
254
|
|
264
|
-
function
|
265
|
-
NftId
|
255
|
+
function _createPolicy(
|
256
|
+
NftId applicationNftId,
|
266
257
|
bool requirePremiumPayment,
|
267
258
|
Timestamp activateAt
|
268
259
|
)
|
269
260
|
internal
|
270
261
|
{
|
271
|
-
_getProductStorage()._policyService.
|
272
|
-
|
262
|
+
_getProductStorage()._policyService.createPolicy(
|
263
|
+
applicationNftId,
|
273
264
|
requirePremiumPayment,
|
274
265
|
activateAt);
|
275
266
|
}
|
276
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 expiredAt)
|
283
|
+
{
|
284
|
+
expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
|
285
|
+
}
|
286
|
+
|
277
287
|
function _collectPremium(
|
278
288
|
NftId policyNftId,
|
279
289
|
Timestamp activateAt
|
@@ -389,21 +399,13 @@ abstract contract Product is
|
|
389
399
|
return RiskIdLib.toRiskId(riskName);
|
390
400
|
}
|
391
401
|
|
392
|
-
function _withdrawFees(Amount amount)
|
393
|
-
internal
|
394
|
-
virtual
|
395
|
-
returns (Amount withdrawnAmount)
|
396
|
-
{
|
397
|
-
return _getProductStorage()._componentService.withdrawFees(amount);
|
398
|
-
}
|
399
|
-
|
400
402
|
function _getProductStorage() private pure returns (ProductStorage storage $) {
|
401
403
|
assembly {
|
402
404
|
$.slot := PRODUCT_STORAGE_LOCATION_V1
|
403
405
|
}
|
404
406
|
}
|
405
407
|
|
406
|
-
function
|
407
|
-
return _getProductStorage().
|
408
|
+
function _getRiskService() internal view returns (IRiskService) {
|
409
|
+
return _getProductStorage()._riskService;
|
408
410
|
}
|
409
411
|
}
|
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IInstance} from "../instance/IInstance.sol";
|
5
5
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
6
6
|
import {IPoolService} from "../pool/PoolService.sol";
|
7
|
-
import {
|
7
|
+
import {IRiskService} from "./IRiskService.sol";
|
8
8
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
9
9
|
import {IRisk} from "../instance/module/IRisk.sol";
|
10
10
|
|
@@ -16,16 +16,14 @@ import {RiskId} from "../type/RiskId.sol";
|
|
16
16
|
import {StateId} from "../type/StateId.sol";
|
17
17
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
18
18
|
|
19
|
-
contract
|
19
|
+
contract RiskService is
|
20
20
|
ComponentVerifyingService,
|
21
|
-
|
21
|
+
IRiskService
|
22
22
|
{
|
23
23
|
IInstanceService private _instanceService;
|
24
24
|
IPoolService internal _poolService;
|
25
25
|
IRegistryService private _registryService;
|
26
26
|
|
27
|
-
event LogProductServiceSender(address sender);
|
28
|
-
|
29
27
|
function _initialize(
|
30
28
|
address owner,
|
31
29
|
bytes memory data
|
@@ -46,7 +44,7 @@ contract ProductService is
|
|
46
44
|
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
47
45
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
48
46
|
|
49
|
-
registerInterface(type(
|
47
|
+
registerInterface(type(IRiskService).interfaceId);
|
50
48
|
}
|
51
49
|
|
52
50
|
|
@@ -3,11 +3,11 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IVersionable} from "../upgradeability/IVersionable.sol";
|
5
5
|
import {ProxyManager} from "../upgradeability/ProxyManager.sol";
|
6
|
-
import {
|
6
|
+
import {RiskService} from "./RiskService.sol";
|
7
7
|
|
8
|
-
contract
|
8
|
+
contract RiskServiceManager is ProxyManager {
|
9
9
|
|
10
|
-
|
10
|
+
RiskService private _riskService;
|
11
11
|
|
12
12
|
/// @dev initializes proxy manager with product service implementation
|
13
13
|
constructor(
|
@@ -17,23 +17,23 @@ contract ProductServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
ProxyManager(registryAddress)
|
19
19
|
{
|
20
|
-
|
20
|
+
RiskService svc = new RiskService{salt: salt}();
|
21
21
|
bytes memory data = abi.encode(registryAddress, address(this), authority);
|
22
22
|
IVersionable versionable = deployDetermenistic(
|
23
23
|
address(svc),
|
24
24
|
data,
|
25
25
|
salt);
|
26
26
|
|
27
|
-
|
27
|
+
_riskService = RiskService(address(versionable));
|
28
28
|
}
|
29
29
|
|
30
30
|
//--- view functions ----------------------------------------------------//
|
31
|
-
function
|
31
|
+
function getRiskService()
|
32
32
|
external
|
33
33
|
view
|
34
|
-
returns (
|
34
|
+
returns (RiskService riskService)
|
35
35
|
{
|
36
|
-
return
|
36
|
+
return _riskService;
|
37
37
|
}
|
38
38
|
|
39
39
|
}
|
@@ -12,6 +12,7 @@ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
|
|
12
12
|
import {RoleId, RoleIdLib, ADMIN_ROLE, GIF_MANAGER_ROLE, GIF_ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
|
13
13
|
import {StakingStore} from "../staking/StakingStore.sol";
|
14
14
|
import {STAKING} from "../type/ObjectType.sol";
|
15
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
15
16
|
import {TokenRegistry} from "./TokenRegistry.sol";
|
16
17
|
import {VersionPart} from "../type/Version.sol";
|
17
18
|
|
@@ -359,7 +360,15 @@ contract RegistryAdmin is
|
|
359
360
|
functions[12] = toFunction(StakingStore.claimUpTo.selector, "claimUpTo");
|
360
361
|
functions[13] = toFunction(StakingStore.unstakeUpTo.selector, "unstakeUpTo");
|
361
362
|
_authorizeTargetFunctions(_stakingStore, stakingRoleId, functions);
|
362
|
-
|
363
|
+
|
363
364
|
_grantRoleToAccount(stakingRoleId, _staking);
|
365
|
+
|
366
|
+
// grant token handler authorizations
|
367
|
+
IStaking staking = IStaking(_staking);
|
368
|
+
functions = new FunctionInfo[](2);
|
369
|
+
functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
|
370
|
+
functions[1] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
|
371
|
+
|
372
|
+
_authorizeTargetFunctions(address(staking.getTokenHandler()), stakingRoleId, functions);
|
364
373
|
}
|
365
374
|
}
|
@@ -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,
|
@@ -6,7 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
|
|
6
6
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
7
7
|
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
8
8
|
|
9
|
-
import {Amount} from "../type/Amount.sol";
|
9
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
10
10
|
import {IComponent} from "./IComponent.sol";
|
11
11
|
import {IComponents} from "../instance/module/IComponents.sol";
|
12
12
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
@@ -39,6 +39,12 @@ abstract contract Component is
|
|
39
39
|
_;
|
40
40
|
}
|
41
41
|
|
42
|
+
modifier onlyNftOwner(NftId nftId) {
|
43
|
+
if(msg.sender != getRegistry().ownerOf(nftId)) {
|
44
|
+
revert ErrorNftOwnableNotOwner(msg.sender);
|
45
|
+
}
|
46
|
+
_;
|
47
|
+
}
|
42
48
|
|
43
49
|
function _getComponentStorage() private pure returns (ComponentStorage storage $) {
|
44
50
|
assembly {
|
@@ -103,11 +109,11 @@ abstract contract Component is
|
|
103
109
|
revert ErrorComponentWalletNotComponent();
|
104
110
|
}
|
105
111
|
|
112
|
+
emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
|
113
|
+
|
106
114
|
IERC20Metadata(token).approve(
|
107
115
|
address(getTokenHandler()),
|
108
116
|
spendingLimitAmount.toInt());
|
109
|
-
|
110
|
-
emit LogComponentTokenHandlerApproved(address(getTokenHandler()), spendingLimitAmount);
|
111
117
|
}
|
112
118
|
|
113
119
|
function setWallet(address newWallet)
|
@@ -118,34 +124,22 @@ abstract contract Component is
|
|
118
124
|
{
|
119
125
|
// checks
|
120
126
|
address currentWallet = getWallet();
|
121
|
-
|
122
|
-
uint256 currentBalance = token.balanceOf(currentWallet);
|
123
|
-
|
124
|
-
if (currentBalance > 0) {
|
125
|
-
if (currentWallet == address(this)) {
|
126
|
-
// move tokens from component smart contract to external wallet
|
127
|
-
} else {
|
128
|
-
// move tokens from external wallet to component smart contract or another external wallet
|
129
|
-
uint256 allowance = token.allowance(currentWallet, address(this));
|
130
|
-
if (allowance < currentBalance) {
|
131
|
-
revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
|
132
|
-
}
|
133
|
-
}
|
134
|
-
}
|
127
|
+
uint256 currentBalance = getToken().balanceOf(currentWallet);
|
135
128
|
|
136
129
|
// effects
|
137
130
|
_setWallet(newWallet);
|
138
131
|
|
139
132
|
// interactions
|
140
133
|
if (currentBalance > 0) {
|
141
|
-
//
|
134
|
+
// move tokens from old to new wallet
|
135
|
+
emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
|
136
|
+
|
142
137
|
if (currentWallet == address(this)) {
|
143
|
-
//
|
144
|
-
|
138
|
+
// transfer from the component requires an allowance
|
139
|
+
getTokenHandler().distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
|
140
|
+
} else {
|
141
|
+
getTokenHandler().collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
|
145
142
|
}
|
146
|
-
|
147
|
-
SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
|
148
|
-
emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
|
149
143
|
}
|
150
144
|
}
|
151
145
|
|
@@ -4,30 +4,27 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
5
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
6
6
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
7
|
-
import {
|
7
|
+
import {IComponents} from "../instance/module/IComponents.sol";
|
8
|
+
import {IComponentService} from "./IComponentService.sol";
|
9
|
+
import {IInstance} from "../instance/IInstance.sol";
|
8
10
|
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
11
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
14
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
15
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
9
16
|
import {IRegistry} from "../registry/IRegistry.sol";
|
10
17
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
11
|
-
import {
|
18
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
12
19
|
import {NftId} from "../type/NftId.sol";
|
13
20
|
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
21
|
import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {
|
16
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
17
|
-
import {IComponentService} from "./IComponentService.sol";
|
18
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
19
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
20
|
-
import {IProductComponent} from "../product/IProductComponent.sol";
|
21
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
22
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
23
|
-
import {TokenHandler} from "./TokenHandler.sol";
|
22
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
24
23
|
|
25
24
|
contract ComponentService is
|
26
25
|
ComponentVerifyingService,
|
27
26
|
IComponentService
|
28
27
|
{
|
29
|
-
using AmountLib for Amount;
|
30
|
-
|
31
28
|
error ErrorComponentServiceAlreadyRegistered(address component);
|
32
29
|
error ErrorComponentServiceNotComponent(address component);
|
33
30
|
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
@@ -94,7 +91,7 @@ contract ComponentService is
|
|
94
91
|
// TODO implement
|
95
92
|
function unlock() external virtual {}
|
96
93
|
|
97
|
-
function withdrawFees(Amount
|
94
|
+
function withdrawFees(Amount amount)
|
98
95
|
external
|
99
96
|
virtual
|
100
97
|
returns (Amount withdrawnAmount)
|
@@ -103,10 +100,12 @@ contract ComponentService is
|
|
103
100
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
104
101
|
address componentWallet = info.wallet;
|
105
102
|
|
106
|
-
// determine
|
107
|
-
withdrawnAmount =
|
108
|
-
if (withdrawnAmount.
|
103
|
+
// determine withdrawn amount
|
104
|
+
withdrawnAmount = amount;
|
105
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
109
106
|
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
107
|
+
} else if (withdrawnAmount.eqz()) {
|
108
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
110
109
|
} else {
|
111
110
|
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
112
111
|
if (withdrawnAmount.gt(withdrawLimit)) {
|
@@ -114,20 +113,13 @@ contract ComponentService is
|
|
114
113
|
}
|
115
114
|
}
|
116
115
|
|
117
|
-
// check allowance
|
118
|
-
TokenHandler tokenHandler = info.tokenHandler;
|
119
|
-
IERC20Metadata token = IERC20Metadata(info.token);
|
120
|
-
uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
|
121
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
122
|
-
revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
123
|
-
}
|
124
|
-
|
125
116
|
// decrease fee counters by withdrawnAmount
|
126
117
|
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
127
118
|
|
128
119
|
// transfer amount to component owner
|
129
120
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
130
|
-
|
121
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
122
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
131
123
|
}
|
132
124
|
|
133
125
|
|
@@ -148,7 +140,7 @@ contract ComponentService is
|
|
148
140
|
contractAddress,
|
149
141
|
PRODUCT(),
|
150
142
|
PRODUCT_OWNER_ROLE());
|
151
|
-
|
143
|
+
|
152
144
|
// create product info
|
153
145
|
IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
|
154
146
|
instanceStore.createProduct(productNftId, productInfo);
|
@@ -291,6 +283,36 @@ contract ComponentService is
|
|
291
283
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
292
284
|
}
|
293
285
|
|
286
|
+
//-------- distributor -------------------------------------------------------//
|
287
|
+
|
288
|
+
function increaseDistributorBalance(
|
289
|
+
InstanceStore instanceStore,
|
290
|
+
NftId distributorNftId,
|
291
|
+
Amount amount,
|
292
|
+
Amount feeAmount
|
293
|
+
)
|
294
|
+
external
|
295
|
+
virtual
|
296
|
+
// TODO re-enable once role granting is stable and fixed
|
297
|
+
// restricted()
|
298
|
+
{
|
299
|
+
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
300
|
+
}
|
301
|
+
|
302
|
+
function decreaseDistributorBalance(
|
303
|
+
InstanceStore instanceStore,
|
304
|
+
NftId distributorNftId,
|
305
|
+
Amount amount,
|
306
|
+
Amount feeAmount
|
307
|
+
)
|
308
|
+
external
|
309
|
+
virtual
|
310
|
+
// TODO re-enable once role granting is stable and fixed
|
311
|
+
// restricted()
|
312
|
+
{
|
313
|
+
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
314
|
+
}
|
315
|
+
|
294
316
|
//-------- oracle -------------------------------------------------------//
|
295
317
|
|
296
318
|
function registerOracle()
|
@@ -489,22 +511,24 @@ contract ComponentService is
|
|
489
511
|
|
490
512
|
component.linkToRegisteredNftId();
|
491
513
|
|
492
|
-
// setup initial component authorization
|
493
|
-
_instanceService.initializeAuthorization(
|
494
|
-
instance.getNftId(),
|
495
|
-
component);
|
496
|
-
|
497
514
|
// save amended component info with instance
|
498
515
|
instanceReader = instance.getInstanceReader();
|
499
516
|
instanceStore = instance.getInstanceStore();
|
500
517
|
|
501
|
-
IComponents.ComponentInfo memory componentInfo = component.
|
502
|
-
componentInfo.tokenHandler =
|
518
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
519
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
520
|
+
address(componentInfo.token),
|
521
|
+
address(instance.getInstanceAdmin().authority()));
|
503
522
|
|
504
523
|
instanceStore.createComponent(
|
505
524
|
component.getNftId(),
|
506
525
|
componentInfo);
|
507
526
|
|
527
|
+
// setup initial component authorization
|
528
|
+
_instanceService.initializeAuthorization(
|
529
|
+
instance.getNftId(),
|
530
|
+
component);
|
531
|
+
|
508
532
|
// TODO add logging
|
509
533
|
}
|
510
534
|
|
@@ -23,7 +23,6 @@ interface IComponent is
|
|
23
23
|
error ErrorComponentNameLengthZero();
|
24
24
|
error ErrorComponentWalletAddressZero();
|
25
25
|
error ErrorComponentWalletAddressIsSameAsCurrent();
|
26
|
-
error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
|
27
26
|
error ErrorComponentWalletNotComponent();
|
28
27
|
|
29
28
|
event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
|
@@ -35,10 +34,11 @@ interface IComponent is
|
|
35
34
|
/// only component owner (nft holder) is authorizes to call this function
|
36
35
|
function approveTokenHandler(Amount spendingLimitAmount) external;
|
37
36
|
|
38
|
-
/// @dev sets the wallet address for the component
|
39
|
-
/// if the current wallet has tokens, these will be transferred
|
37
|
+
/// @dev sets the wallet address for the component.
|
38
|
+
/// if the current wallet has tokens, these will be transferred.
|
40
39
|
/// if the new wallet address is externally owned, an approval from the
|
41
|
-
/// owner of the external wallet
|
40
|
+
/// owner of the external wallet to the tokenhandler of the component that
|
41
|
+
/// covers the current component balance must exist
|
42
42
|
function setWallet(address walletAddress) external;
|
43
43
|
|
44
44
|
/// @dev returns the name of this component
|
@@ -1,21 +1,12 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
|
5
|
-
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
6
4
|
|
7
5
|
import {Amount} from "../type/Amount.sol";
|
8
6
|
import {Fee} from "../type/Fee.sol";
|
9
|
-
import {IComponents} from "../instance/module/IComponents.sol";
|
10
|
-
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
12
7
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
13
|
-
import {IProductService} from "../product/IProductService.sol";
|
14
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
15
8
|
import {IService} from "../shared/IService.sol";
|
16
9
|
import {NftId} from "../type/NftId.sol";
|
17
|
-
import {ObjectType} from "../type/ObjectType.sol";
|
18
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
10
|
import {UFixed} from "../type/UFixed.sol";
|
20
11
|
|
21
12
|
/// @dev component base class
|
@@ -27,10 +18,12 @@ interface IComponentService is
|
|
27
18
|
error ErrorComponentServiceWalletAddressZero();
|
28
19
|
error ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
29
20
|
|
21
|
+
error ErrorComponentServiceWithdrawAmountIsZero();
|
30
22
|
error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
|
31
23
|
error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
|
32
24
|
|
33
25
|
event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
|
26
|
+
event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
|
34
27
|
event LogComponentServiceProductFeesUpdated(NftId productNftId);
|
35
28
|
event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
|
36
29
|
event LogComponentServicePoolFeesUpdated(NftId poolNftId);
|
@@ -55,6 +48,8 @@ interface IComponentService is
|
|
55
48
|
function unlock() external;
|
56
49
|
|
57
50
|
/// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
|
51
|
+
/// @param withdrawAmount the amount to withdraw
|
52
|
+
/// @return withdrawnAmount the amount that was actually withdrawn
|
58
53
|
function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
|
59
54
|
|
60
55
|
//-------- product ------------------------------------------------------//
|
@@ -83,6 +78,10 @@ interface IComponentService is
|
|
83
78
|
function increaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
|
84
79
|
function decreaseDistributionBalance(InstanceStore instanceStore, NftId distributionNftId, Amount amount, Amount feeAmount) external;
|
85
80
|
|
81
|
+
//-------- distributor --------------------------------------------------//
|
82
|
+
function increaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
83
|
+
function decreaseDistributorBalance(InstanceStore instanceStore, NftId distributorNftId, Amount amount, Amount feeAmount) external;
|
84
|
+
|
86
85
|
//-------- oracle -------------------------------------------------------//
|
87
86
|
|
88
87
|
/// @dev registers the sending component as an oracle component
|
@@ -105,4 +104,5 @@ interface IComponentService is
|
|
105
104
|
//-------- bundle -------------------------------------------------------//
|
106
105
|
function increaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
|
107
106
|
function decreaseBundleBalance(InstanceStore instanceStore, NftId bundleNftId, Amount amount, Amount feeAmount) external;
|
107
|
+
|
108
108
|
}
|