@etherisc/gif-next 0.0.2-e769e2e-077 → 0.0.2-e79d227-681
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 +77 -10
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1324 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +154 -546
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +380 -229
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +198 -96
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +186 -238
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +223 -47
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +153 -86
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +181 -119
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +174 -215
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1666 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +876 -160
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +260 -268
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +163 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +506 -338
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- 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/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- 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 +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +961 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +456 -187
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +218 -80
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +264 -26
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +115 -354
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -223
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +152 -682
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +590 -382
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +190 -76
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +147 -161
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +147 -77
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +343 -168
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +200 -90
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +88 -8
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +364 -121
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +134 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +176 -160
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +51 -3
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +475 -294
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +199 -81
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +229 -275
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +172 -102
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +201 -486
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +412 -35
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +225 -196
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +761 -87
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +278 -306
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +154 -78
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +185 -135
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +79 -274
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +626 -252
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +209 -99
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -101
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +74 -79
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +561 -13
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +120 -108
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +45 -13
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -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/IService.sol/IService.json +49 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +129 -360
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +55 -98
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +62 -87
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +55 -101
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +462 -634
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +546 -48
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +613 -871
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +185 -81
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +633 -173
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +166 -68
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +40 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +99 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -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 +71 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +616 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +145 -124
- package/contracts/distribution/DistributionService.sol +156 -99
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +27 -41
- package/contracts/distribution/IDistributionService.sol +29 -10
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/BundleSet.sol +130 -0
- package/contracts/instance/IInstance.sol +39 -44
- package/contracts/instance/IInstanceService.sol +33 -42
- package/contracts/instance/Instance.sol +137 -124
- package/contracts/instance/InstanceAdmin.sol +278 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +217 -0
- package/contracts/instance/InstanceReader.sol +249 -36
- package/contracts/instance/InstanceService.sol +227 -151
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +85 -57
- package/contracts/instance/RiskSet.sol +119 -0
- package/contracts/instance/base/BalanceStore.sol +12 -7
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/ObjectSet.sol +78 -0
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +11 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +1 -0
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +309 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +232 -122
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +34 -18
- package/contracts/pool/IPoolComponent.sol +20 -70
- package/contracts/pool/IPoolService.sol +57 -51
- package/contracts/pool/Pool.sol +208 -162
- package/contracts/pool/PoolService.sol +372 -181
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +90 -84
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +331 -153
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +7 -3
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +47 -35
- package/contracts/product/IPricingService.sol +11 -11
- package/contracts/product/IProductComponent.sol +26 -9
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -2
- package/contracts/product/PolicyService.sol +524 -262
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +64 -64
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +189 -139
- package/contracts/product/{ProductService.sol → RiskService.sol} +35 -50
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -37
- package/contracts/registry/IRegistry.sol +90 -28
- package/contracts/registry/IRegistryService.sol +26 -43
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +424 -228
- package/contracts/registry/RegistryAdmin.sol +451 -0
- package/contracts/registry/RegistryService.sol +63 -149
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +175 -0
- package/contracts/registry/TokenRegistry.sol +187 -59
- package/contracts/shared/Component.sol +56 -125
- package/contracts/shared/ComponentService.sol +411 -201
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +40 -23
- package/contracts/shared/ContractLib.sol +224 -0
- package/contracts/shared/IComponent.sol +11 -18
- package/contracts/shared/IComponentService.sol +52 -13
- package/contracts/shared/IInstanceLinkedComponent.sol +11 -16
- package/contracts/shared/IKeyValueStore.sol +2 -1
- package/contracts/shared/ILifecycle.sol +3 -2
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +103 -43
- package/contracts/shared/KeyValueStore.sol +30 -68
- package/contracts/shared/Lifecycle.sol +30 -63
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +31 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +44 -37
- package/contracts/shared/TokenHandler.sol +358 -27
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +133 -37
- package/contracts/staking/IStakingService.sol +93 -41
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +394 -101
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +24 -18
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +282 -42
- package/contracts/staking/StakingServiceManager.sol +10 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +39 -3
- package/contracts/type/Blocknumber.sol +20 -2
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +1 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +16 -4
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +178 -65
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +31 -5
- package/contracts/type/RoleId.sol +98 -74
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -132
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- 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/ProductService.sol/ProductService.json +0 -673
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -636
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -308
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -688
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/instance/BundleManager.sol +0 -126
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -336
- package/contracts/instance/base/ObjectManager.sol +0 -82
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -213
- package/contracts/registry/ReleaseManager.sol +0 -375
- package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,48 +1,52 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {
|
7
|
-
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
8
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
|
-
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IAccess} from "../instance/module/IAccess.sol";
|
12
|
-
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
|
-
import {RoleId, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
4
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
|
+
|
6
|
+
import {IComponent} from "../shared/IComponent.sol";
|
16
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
17
8
|
import {IComponentService} from "./IComponentService.sol";
|
18
|
-
import {
|
9
|
+
import {IInstance} from "../instance/IInstance.sol";
|
10
|
+
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
11
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
12
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
13
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
19
14
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
20
15
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
21
16
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
22
|
-
import {
|
23
|
-
import {
|
24
|
-
import {
|
17
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
18
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
19
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
20
|
+
|
21
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
22
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
23
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
25
|
+
import {NftId} from "../type/NftId.sol";
|
26
|
+
import {ObjectType, REGISTRY, BUNDLE, COMPONENT, DISTRIBUTION, DISTRIBUTOR, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
27
|
+
import {Service} from "../shared/Service.sol";
|
28
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
29
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
30
|
+
|
25
31
|
|
26
32
|
contract ComponentService is
|
27
|
-
|
33
|
+
Service,
|
28
34
|
IComponentService
|
29
35
|
{
|
30
|
-
|
31
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
32
|
-
error ErrorComponentServiceNotComponent(address component);
|
33
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
34
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
35
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
36
|
-
error ErrorComponentServiceComponentLocked(address component);
|
37
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
38
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
39
|
-
|
40
36
|
bool private constant INCREASE = true;
|
41
37
|
bool private constant DECREASE = false;
|
42
38
|
|
43
39
|
IRegistryService private _registryService;
|
44
40
|
IInstanceService private _instanceService;
|
45
41
|
|
42
|
+
modifier onlyComponent(address component) {
|
43
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
44
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
45
|
+
}
|
46
|
+
_;
|
47
|
+
}
|
48
|
+
|
49
|
+
|
46
50
|
function _initialize(
|
47
51
|
address owner,
|
48
52
|
bytes memory data
|
@@ -51,46 +55,89 @@ contract ComponentService is
|
|
51
55
|
virtual override
|
52
56
|
initializer()
|
53
57
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
+
(
|
59
|
+
address registryAddress,
|
60
|
+
address authority
|
61
|
+
) = abi.decode(data, (address, address));
|
58
62
|
|
59
|
-
|
63
|
+
_initializeService(registryAddress, authority, owner);
|
60
64
|
|
61
65
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
66
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
67
|
|
64
|
-
|
68
|
+
_registerInterface(type(IComponentService).interfaceId);
|
65
69
|
}
|
66
70
|
|
71
|
+
//-------- component ----------------------------------------------------//
|
67
72
|
|
68
|
-
function
|
69
|
-
|
73
|
+
function registerComponent(address component)
|
74
|
+
external
|
75
|
+
virtual
|
76
|
+
onlyComponent(component)
|
77
|
+
returns (NftId componentNftId)
|
78
|
+
{
|
79
|
+
// type specific registration
|
80
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
81
|
+
if (componentType == POOL()) {
|
82
|
+
return _registerPool(component);
|
83
|
+
}
|
84
|
+
if (componentType == DISTRIBUTION()) {
|
85
|
+
return _registerDistribution(component);
|
86
|
+
}
|
87
|
+
if (componentType == ORACLE()) {
|
88
|
+
return _registerOracle(component);
|
89
|
+
}
|
90
|
+
|
91
|
+
// fail
|
92
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
70
93
|
}
|
71
94
|
|
72
|
-
|
95
|
+
function approveTokenHandler(
|
96
|
+
IERC20Metadata token,
|
97
|
+
Amount amount
|
98
|
+
)
|
99
|
+
external
|
100
|
+
virtual
|
101
|
+
{
|
102
|
+
// checks
|
103
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
104
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
105
|
+
componentNftId).tokenHandler;
|
73
106
|
|
74
|
-
|
75
|
-
(
|
76
|
-
|
77
|
-
address currentWallet = info.wallet;
|
107
|
+
// effects
|
108
|
+
tokenHandler.approve(token, amount);
|
109
|
+
}
|
78
110
|
|
79
|
-
if (newWallet == address(0)) {
|
80
|
-
revert ErrorComponentServiceNewWalletAddressZero();
|
81
|
-
}
|
82
111
|
|
83
|
-
|
84
|
-
|
85
|
-
|
112
|
+
function approveStakingTokenHandler(
|
113
|
+
IERC20Metadata token,
|
114
|
+
Amount amount
|
115
|
+
)
|
116
|
+
external
|
117
|
+
virtual
|
118
|
+
{
|
119
|
+
// checks
|
120
|
+
ContractLib.getAndVerifyStaking(
|
121
|
+
getRegistry(),
|
122
|
+
msg.sender); // only active
|
123
|
+
|
124
|
+
// effects
|
125
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
126
|
+
tokenHandler.approve(token, amount);
|
127
|
+
}
|
86
128
|
|
87
|
-
if (newWallet == currentWallet) {
|
88
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
89
|
-
}
|
90
129
|
|
91
|
-
|
92
|
-
|
93
|
-
|
130
|
+
function setWallet(address newWallet)
|
131
|
+
external
|
132
|
+
virtual
|
133
|
+
{
|
134
|
+
// checks
|
135
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
136
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
137
|
+
componentNftId).tokenHandler;
|
138
|
+
|
139
|
+
// effects
|
140
|
+
tokenHandler.setWallet(newWallet);
|
94
141
|
}
|
95
142
|
|
96
143
|
// TODO implement
|
@@ -99,40 +146,63 @@ contract ComponentService is
|
|
99
146
|
// TODO implement
|
100
147
|
function unlock() external virtual {}
|
101
148
|
|
149
|
+
function withdrawFees(Amount amount)
|
150
|
+
external
|
151
|
+
virtual
|
152
|
+
returns (Amount withdrawnAmount)
|
153
|
+
{
|
154
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
155
|
+
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
156
|
+
address componentWallet = info.tokenHandler.getWallet();
|
157
|
+
|
158
|
+
// determine withdrawn amount
|
159
|
+
withdrawnAmount = amount;
|
160
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
161
|
+
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
162
|
+
} else if (withdrawnAmount.eqz()) {
|
163
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
164
|
+
} else {
|
165
|
+
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
166
|
+
if (withdrawnAmount.gt(withdrawLimit)) {
|
167
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
171
|
+
// decrease fee counters by withdrawnAmount
|
172
|
+
_changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
|
173
|
+
|
174
|
+
// transfer amount to component owner
|
175
|
+
address componentOwner = getRegistry().ownerOf(componentNftId);
|
176
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
177
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
178
|
+
}
|
179
|
+
|
102
180
|
|
103
181
|
//-------- product ------------------------------------------------------//
|
104
182
|
|
105
|
-
function registerProduct()
|
183
|
+
function registerProduct(address productAddress)
|
106
184
|
external
|
107
185
|
virtual
|
186
|
+
onlyComponent(productAddress)
|
187
|
+
returns (NftId productNftId)
|
108
188
|
{
|
109
|
-
|
110
|
-
|
111
|
-
|
189
|
+
// register/create component setup
|
190
|
+
InstanceAdmin instanceAdmin;
|
191
|
+
InstanceStore instanceStore;
|
192
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
193
|
+
productAddress,
|
194
|
+
PRODUCT());
|
112
195
|
|
113
|
-
//
|
114
|
-
|
115
|
-
selectors[0] = _createSelectors(IProductComponent.setFees.selector);
|
196
|
+
// get product
|
197
|
+
IProductComponent product = IProductComponent(productAddress);
|
116
198
|
|
117
|
-
//
|
118
|
-
(
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
PRODUCT(),
|
125
|
-
PRODUCT_OWNER_ROLE(),
|
126
|
-
roles,
|
127
|
-
selectors);
|
128
|
-
|
129
|
-
// create product info
|
130
|
-
IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
|
131
|
-
instanceStore.createProduct(productNftId, productInfo);
|
132
|
-
|
133
|
-
// link distribution and pool to product
|
134
|
-
_linkToProduct(instanceReader, instanceStore, productInfo.distributionNftId, productNftId);
|
135
|
-
_linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
|
199
|
+
// create info
|
200
|
+
instanceStore.createProduct(
|
201
|
+
productNftId,
|
202
|
+
product.getInitialProductInfo());
|
203
|
+
|
204
|
+
// authorize
|
205
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
136
206
|
}
|
137
207
|
|
138
208
|
|
@@ -143,7 +213,7 @@ contract ComponentService is
|
|
143
213
|
external
|
144
214
|
virtual
|
145
215
|
{
|
146
|
-
(NftId productNftId
|
216
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
147
217
|
IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
|
148
218
|
bool feesChanged = false;
|
149
219
|
|
@@ -167,7 +237,6 @@ contract ComponentService is
|
|
167
237
|
}
|
168
238
|
}
|
169
239
|
|
170
|
-
|
171
240
|
function increaseProductFees(
|
172
241
|
InstanceStore instanceStore,
|
173
242
|
NftId productNftId,
|
@@ -178,6 +247,7 @@ contract ComponentService is
|
|
178
247
|
// TODO re-enable once role granting is stable and fixed
|
179
248
|
// restricted()
|
180
249
|
{
|
250
|
+
_checkNftType(productNftId, PRODUCT());
|
181
251
|
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
182
252
|
}
|
183
253
|
|
@@ -188,35 +258,43 @@ contract ComponentService is
|
|
188
258
|
// TODO re-enable once role granting is stable and fixed
|
189
259
|
// restricted()
|
190
260
|
{
|
261
|
+
_checkNftType(productNftId, PRODUCT());
|
191
262
|
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
192
263
|
}
|
193
264
|
|
194
265
|
//-------- distribution -------------------------------------------------//
|
195
266
|
|
196
267
|
/// @dev registers the sending component as a distribution component
|
197
|
-
function
|
198
|
-
|
268
|
+
function _registerDistribution(address distributioAddress)
|
269
|
+
internal
|
199
270
|
virtual
|
271
|
+
returns (NftId distributionNftId)
|
200
272
|
{
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
273
|
+
// register/create component info
|
274
|
+
InstanceReader instanceReader;
|
275
|
+
InstanceAdmin instanceAdmin;
|
276
|
+
InstanceStore instanceStore;
|
277
|
+
NftId productNftId;
|
278
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
279
|
+
distributioAddress,
|
280
|
+
DISTRIBUTION());
|
281
|
+
|
282
|
+
// check product is still expecting a distribution registration
|
283
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
284
|
+
if (!productInfo.hasDistribution) {
|
285
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
286
|
+
}
|
287
|
+
if (productInfo.distributionNftId.gtz()) {
|
288
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
289
|
+
}
|
208
290
|
|
209
|
-
//
|
210
|
-
|
211
|
-
|
291
|
+
// set distribution in product info
|
292
|
+
productInfo.distributionNftId = distributionNftId;
|
293
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
212
294
|
|
213
|
-
//
|
214
|
-
|
215
|
-
|
216
|
-
DISTRIBUTION(),
|
217
|
-
DISTRIBUTION_OWNER_ROLE(),
|
218
|
-
roles,
|
219
|
-
selectors);
|
295
|
+
// authorize
|
296
|
+
instanceAdmin.initializeComponentAuthorization(
|
297
|
+
IInstanceLinkedComponent(distributioAddress));
|
220
298
|
}
|
221
299
|
|
222
300
|
|
@@ -227,7 +305,7 @@ contract ComponentService is
|
|
227
305
|
external
|
228
306
|
virtual
|
229
307
|
{
|
230
|
-
(NftId distributionNftId
|
308
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
231
309
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
232
310
|
instance.getInstanceReader(), distributionNftId);
|
233
311
|
bool feesChanged = false;
|
@@ -263,6 +341,7 @@ contract ComponentService is
|
|
263
341
|
// TODO re-enable once role granting is stable and fixed
|
264
342
|
// restricted()
|
265
343
|
{
|
344
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
266
345
|
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
267
346
|
}
|
268
347
|
|
@@ -278,44 +357,113 @@ contract ComponentService is
|
|
278
357
|
// TODO re-enable once role granting is stable and fixed
|
279
358
|
// restricted()
|
280
359
|
{
|
360
|
+
_checkNftType(distributionNftId, DISTRIBUTION());
|
281
361
|
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
282
362
|
}
|
283
363
|
|
284
|
-
//--------
|
364
|
+
//-------- distributor -------------------------------------------------------//
|
285
365
|
|
286
|
-
|
287
|
-
|
366
|
+
function increaseDistributorBalance(
|
367
|
+
InstanceStore instanceStore,
|
368
|
+
NftId distributorNftId,
|
369
|
+
Amount amount,
|
370
|
+
Amount feeAmount
|
371
|
+
)
|
288
372
|
external
|
289
373
|
virtual
|
374
|
+
// TODO re-enable once role granting is stable and fixed
|
375
|
+
// restricted()
|
290
376
|
{
|
291
|
-
|
292
|
-
|
293
|
-
|
377
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
378
|
+
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
379
|
+
}
|
294
380
|
|
295
|
-
|
296
|
-
|
297
|
-
|
381
|
+
function decreaseDistributorBalance(
|
382
|
+
InstanceStore instanceStore,
|
383
|
+
NftId distributorNftId,
|
384
|
+
Amount amount,
|
385
|
+
Amount feeAmount
|
386
|
+
)
|
387
|
+
external
|
388
|
+
virtual
|
389
|
+
// TODO re-enable once role granting is stable and fixed
|
390
|
+
// restricted()
|
391
|
+
{
|
392
|
+
_checkNftType(distributorNftId, DISTRIBUTOR());
|
393
|
+
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
394
|
+
}
|
298
395
|
|
299
|
-
|
300
|
-
roles[1] = POLICY_SERVICE_ROLE();
|
301
|
-
selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
|
396
|
+
//-------- oracle -------------------------------------------------------//
|
302
397
|
|
398
|
+
function _registerOracle(address oracleAddress)
|
399
|
+
internal
|
400
|
+
virtual
|
401
|
+
returns (NftId oracleNftId)
|
402
|
+
{
|
303
403
|
// register/create component setup
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
404
|
+
InstanceReader instanceReader;
|
405
|
+
InstanceAdmin instanceAdmin;
|
406
|
+
InstanceStore instanceStore;
|
407
|
+
NftId productNftId;
|
408
|
+
|
409
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
410
|
+
oracleAddress,
|
411
|
+
ORACLE());
|
412
|
+
|
413
|
+
// check product is still expecting an oracle registration
|
414
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
415
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
416
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
417
|
+
}
|
418
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
419
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
420
|
+
}
|
421
|
+
|
422
|
+
// update/add oracle to product info
|
423
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
424
|
+
productInfo.numberOfOracles++;
|
425
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
426
|
+
|
427
|
+
// authorize
|
428
|
+
instanceAdmin.initializeComponentAuthorization(
|
429
|
+
IInstanceLinkedComponent(oracleAddress));
|
430
|
+
}
|
431
|
+
|
432
|
+
//-------- pool ---------------------------------------------------------//
|
433
|
+
|
434
|
+
function _registerPool(address poolAddress)
|
435
|
+
internal
|
436
|
+
virtual
|
437
|
+
returns (NftId poolNftId)
|
438
|
+
{
|
439
|
+
// register/create component setup
|
440
|
+
InstanceReader instanceReader;
|
441
|
+
InstanceAdmin instanceAdmin;
|
442
|
+
InstanceStore instanceStore;
|
443
|
+
NftId productNftId;
|
444
|
+
|
445
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
446
|
+
poolAddress,
|
447
|
+
POOL());
|
448
|
+
|
449
|
+
// check product is still expecting a pool registration
|
450
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
451
|
+
if (productInfo.poolNftId.gtz()) {
|
452
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
453
|
+
}
|
314
454
|
|
315
455
|
// create info
|
456
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
316
457
|
instanceStore.createPool(
|
317
|
-
|
318
|
-
|
458
|
+
poolNftId,
|
459
|
+
pool.getInitialPoolInfo());
|
460
|
+
|
461
|
+
// update pool in product info
|
462
|
+
productInfo.poolNftId = poolNftId;
|
463
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
464
|
+
|
465
|
+
// authorize
|
466
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
319
467
|
}
|
320
468
|
|
321
469
|
|
@@ -327,7 +475,8 @@ contract ComponentService is
|
|
327
475
|
external
|
328
476
|
virtual
|
329
477
|
{
|
330
|
-
(NftId poolNftId
|
478
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
479
|
+
|
331
480
|
(NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
|
332
481
|
instance.getInstanceReader(), poolNftId);
|
333
482
|
bool feesChanged = false;
|
@@ -370,6 +519,7 @@ contract ComponentService is
|
|
370
519
|
// TODO re-enable once role granting is stable and fixed
|
371
520
|
// restricted()
|
372
521
|
{
|
522
|
+
_checkNftType(poolNftId, POOL());
|
373
523
|
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
374
524
|
}
|
375
525
|
|
@@ -384,6 +534,7 @@ contract ComponentService is
|
|
384
534
|
// TODO re-enable once role granting is stable and fixed
|
385
535
|
// restricted()
|
386
536
|
{
|
537
|
+
_checkNftType(poolNftId, POOL());
|
387
538
|
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
388
539
|
}
|
389
540
|
|
@@ -400,6 +551,7 @@ contract ComponentService is
|
|
400
551
|
// TODO re-enable once role granting is stable and fixed
|
401
552
|
// restricted()
|
402
553
|
{
|
554
|
+
_checkNftType(bundleNftId, BUNDLE());
|
403
555
|
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
404
556
|
}
|
405
557
|
|
@@ -414,6 +566,7 @@ contract ComponentService is
|
|
414
566
|
// TODO re-enable once role granting is stable and fixed
|
415
567
|
// restricted()
|
416
568
|
{
|
569
|
+
_checkNftType(bundleNftId, BUNDLE());
|
417
570
|
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
418
571
|
}
|
419
572
|
|
@@ -441,74 +594,72 @@ contract ComponentService is
|
|
441
594
|
}
|
442
595
|
}
|
443
596
|
|
444
|
-
/// @dev
|
597
|
+
/// @dev Registers the component represented by the provided address.
|
445
598
|
function _register(
|
446
599
|
address componentAddress, // address of component to register
|
447
|
-
ObjectType requiredType
|
448
|
-
RoleId requiredRole, // role required for comonent owner for registration
|
449
|
-
RoleId[] memory roles, // roles with write access to component
|
450
|
-
bytes4[][] memory selectors // authorized functions per role with write access
|
600
|
+
ObjectType requiredType // required type for component for registration
|
451
601
|
)
|
452
602
|
internal
|
453
603
|
virtual
|
454
604
|
returns (
|
455
605
|
InstanceReader instanceReader,
|
606
|
+
InstanceAdmin instanceAdmin,
|
456
607
|
InstanceStore instanceStore,
|
608
|
+
NftId parentNftId,
|
457
609
|
NftId componentNftId
|
458
610
|
)
|
459
611
|
{
|
612
|
+
NftId instanceNftId;
|
613
|
+
IInstance instance;
|
614
|
+
IInstanceLinkedComponent component;
|
615
|
+
address initialOwner;
|
616
|
+
|
460
617
|
(
|
461
|
-
|
462
|
-
|
463
|
-
|
618
|
+
instanceNftId,
|
619
|
+
instance,
|
620
|
+
parentNftId,
|
621
|
+
component,
|
622
|
+
initialOwner
|
464
623
|
) = _getAndVerifyRegisterableComponent(
|
624
|
+
getRegistry(),
|
465
625
|
componentAddress,
|
466
|
-
requiredType
|
467
|
-
requiredRole);
|
626
|
+
requiredType);
|
468
627
|
|
469
|
-
//
|
470
|
-
componentNftId = _registryService.registerComponent(
|
471
|
-
component,
|
472
|
-
requiredType,
|
473
|
-
owner).nftId;
|
474
|
-
|
475
|
-
component.linkToRegisteredNftId();
|
476
|
-
|
477
|
-
// save amended component info with instance
|
628
|
+
// get instance supporting contracts (as function return values)
|
478
629
|
instanceReader = instance.getInstanceReader();
|
630
|
+
instanceAdmin = instance.getInstanceAdmin();
|
479
631
|
instanceStore = instance.getInstanceStore();
|
480
632
|
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
component.getName(),
|
490
|
-
selectors,
|
491
|
-
roles);
|
492
|
-
}
|
633
|
+
// register with registry
|
634
|
+
if (requiredType == PRODUCT()) {
|
635
|
+
componentNftId = _registryService.registerProduct(
|
636
|
+
component, initialOwner).nftId;
|
637
|
+
} else {
|
638
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
639
|
+
component, requiredType, initialOwner).nftId;
|
640
|
+
}
|
493
641
|
|
642
|
+
// deploy and wire token handler
|
643
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
644
|
+
IERC20Metadata token = componentInfo.token;
|
645
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
646
|
+
address(getRegistry()),
|
647
|
+
address(component), // initially, component is its own wallet
|
648
|
+
address(token),
|
649
|
+
address(instanceAdmin.authority()));
|
650
|
+
|
651
|
+
// set token handler allowance to max
|
652
|
+
// componentInfo.tokenHandler.approve(token, AmountLib.max());
|
494
653
|
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
// only link components that are registered
|
505
|
-
if(componentNftId.eqz()) {
|
506
|
-
return;
|
507
|
-
}
|
508
|
-
|
509
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
510
|
-
componentInfo.productNftId = productNftId;
|
511
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
654
|
+
// register component with instance
|
655
|
+
instanceStore.createComponent(
|
656
|
+
componentNftId,
|
657
|
+
componentInfo);
|
658
|
+
|
659
|
+
// link component contract to nft id
|
660
|
+
component.linkToRegisteredNftId();
|
661
|
+
|
662
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
512
663
|
}
|
513
664
|
|
514
665
|
|
@@ -527,12 +678,6 @@ contract ComponentService is
|
|
527
678
|
}
|
528
679
|
|
529
680
|
|
530
|
-
function _createSelectors(bytes4 selector) internal view returns (bytes4[] memory selectors) {
|
531
|
-
selectors = new bytes4[](1);
|
532
|
-
selectors[0] = selector;
|
533
|
-
}
|
534
|
-
|
535
|
-
|
536
681
|
function _getLinkedProductInfo(
|
537
682
|
InstanceReader instanceReader,
|
538
683
|
NftId componentNftId
|
@@ -544,53 +689,118 @@ contract ComponentService is
|
|
544
689
|
IComponents.ProductInfo memory info
|
545
690
|
)
|
546
691
|
{
|
547
|
-
productNftId =
|
692
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
548
693
|
info = instanceReader.getProductInfo(productNftId);
|
549
694
|
}
|
550
695
|
|
551
696
|
|
552
|
-
/// @dev
|
553
|
-
///
|
554
|
-
/// - the
|
697
|
+
/// @dev Based on the provided component address required type the component
|
698
|
+
/// and related instance contract this function reverts iff:
|
699
|
+
/// - the sender is not registered
|
555
700
|
/// - the component contract does not support IInstanceLinkedComponent
|
556
701
|
/// - the component type does not match with the required type
|
557
|
-
/// - the
|
702
|
+
/// - the component has already been registered
|
558
703
|
function _getAndVerifyRegisterableComponent(
|
704
|
+
IRegistry registry,
|
559
705
|
address componentAddress,
|
560
|
-
ObjectType requiredType
|
561
|
-
RoleId requiredRole
|
706
|
+
ObjectType requiredType
|
562
707
|
)
|
563
708
|
internal
|
564
|
-
|
709
|
+
view
|
565
710
|
returns (
|
711
|
+
NftId instanceNftId,
|
566
712
|
IInstance instance,
|
713
|
+
NftId parentNftId,
|
567
714
|
IInstanceLinkedComponent component,
|
568
|
-
address
|
715
|
+
address initialOwner
|
569
716
|
)
|
570
717
|
{
|
571
|
-
// check
|
572
|
-
|
573
|
-
|
718
|
+
// check sender (instance or product) is registered
|
719
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
720
|
+
if (senderInfo.nftId.eqz()) {
|
721
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
574
722
|
}
|
575
723
|
|
576
|
-
//
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
}
|
724
|
+
// the sender is the parent of the component to be registered
|
725
|
+
// an instance caller wanting to register a product - or -
|
726
|
+
// a product caller wantint go register a distribution, oracle or pool
|
727
|
+
parentNftId = senderInfo.nftId;
|
581
728
|
|
582
729
|
// check component is of required type
|
730
|
+
component = IInstanceLinkedComponent(componentAddress);
|
583
731
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
584
732
|
if(info.objectType != requiredType) {
|
585
733
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
586
734
|
}
|
587
735
|
|
588
|
-
// check
|
589
|
-
|
590
|
-
|
736
|
+
// check component has not already been registered
|
737
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
738
|
+
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
739
|
+
}
|
740
|
+
|
741
|
+
// check release matches
|
742
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
743
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
744
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
745
|
+
}
|
746
|
+
|
747
|
+
// check component belongs to same product cluster
|
748
|
+
// parent of product must be instance, parent of other componet types must be product
|
749
|
+
if (info.parentNftId != senderInfo.nftId) {
|
750
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
751
|
+
}
|
752
|
+
|
753
|
+
// verify parent is registered instance
|
754
|
+
if (requiredType == PRODUCT()) {
|
755
|
+
if (senderInfo.objectType != INSTANCE()) {
|
756
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
757
|
+
}
|
758
|
+
|
759
|
+
instanceNftId = senderInfo.nftId;
|
760
|
+
// verify parent is registered product
|
761
|
+
} else {
|
762
|
+
if (senderInfo.objectType != PRODUCT()) {
|
763
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
764
|
+
}
|
765
|
+
|
766
|
+
instanceNftId = senderInfo.parentNftId;
|
767
|
+
}
|
591
768
|
|
592
|
-
|
593
|
-
|
769
|
+
// get initial owner and instance
|
770
|
+
initialOwner = info.initialOwner;
|
771
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
772
|
+
}
|
773
|
+
|
774
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
775
|
+
internal
|
776
|
+
view
|
777
|
+
returns (
|
778
|
+
NftId componentNftId,
|
779
|
+
IInstance instance
|
780
|
+
)
|
781
|
+
{
|
782
|
+
IRegistry.ObjectInfo memory info;
|
783
|
+
address instanceAddress;
|
784
|
+
|
785
|
+
if (expectedType != COMPONENT()) {
|
786
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
787
|
+
getRegistry(),
|
788
|
+
msg.sender, // caller
|
789
|
+
expectedType,
|
790
|
+
true); // only active
|
791
|
+
} else {
|
792
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
793
|
+
getRegistry(),
|
794
|
+
msg.sender,
|
795
|
+
true); // only active
|
594
796
|
}
|
797
|
+
|
798
|
+
// get component nft id and instance
|
799
|
+
componentNftId = info.nftId;
|
800
|
+
instance = IInstance(instanceAddress);
|
801
|
+
}
|
802
|
+
|
803
|
+
function _getDomain() internal pure virtual override returns(ObjectType) {
|
804
|
+
return COMPONENT();
|
595
805
|
}
|
596
806
|
}
|