@etherisc/gif-next 0.0.2-952752e-374 → 0.0.2-957bd35-589
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 +63 -312
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +690 -296
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
- 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/IAccessAdmin.sol/IAccessAdmin.json +529 -221
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -154
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +167 -77
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +401 -59
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -142
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -178
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +426 -52
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +401 -59
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +360 -193
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +426 -52
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- 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/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -28
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +520 -85
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1037 -437
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -71
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +674 -487
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- 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/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
- 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 +19 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +401 -59
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +280 -209
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +134 -68
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +174 -87
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -166
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +547 -340
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +162 -68
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +137 -139
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -82
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +45 -23
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +133 -65
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +245 -161
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +146 -80
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +40 -52
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +111 -41
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +52 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.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 +90 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +824 -430
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +933 -457
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +202 -126
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -252
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -72
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -157
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
- 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/INftOwnable.sol/INftOwnable.json +19 -0
- 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/IRegisterable.sol/IRegisterable.json +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
- 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/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -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 +19 -0
- 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/Service.sol/Service.json +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +62 -161
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +187 -107
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +229 -157
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -45
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
- 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 +10 -10
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
- 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 +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
- 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 +56 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +15 -3
- package/contracts/accounting/IAccountingService.sol +4 -2
- package/contracts/authorization/AccessAdmin.sol +364 -344
- package/contracts/authorization/AccessAdminLib.sol +678 -0
- package/contracts/authorization/AccessManagerCloneable.sol +23 -32
- package/contracts/authorization/Authorization.sol +161 -260
- package/contracts/authorization/IAccess.sol +29 -12
- package/contracts/authorization/IAccessAdmin.sol +85 -83
- package/contracts/authorization/IAuthorization.sol +9 -43
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +14 -13
- package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
- package/contracts/distribution/Distribution.sol +22 -64
- package/contracts/distribution/DistributionService.sol +166 -75
- package/contracts/distribution/IDistributionComponent.sol +3 -10
- package/contracts/distribution/IDistributionService.sol +34 -19
- package/contracts/examples/fire/FirePool.sol +0 -4
- package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
- package/contracts/examples/fire/FireProduct.sol +7 -12
- package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
- package/contracts/examples/unpermissioned/SimpleProduct.sol +94 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +103 -13
- package/contracts/instance/IInstanceService.sol +54 -7
- package/contracts/instance/Instance.sol +177 -61
- package/contracts/instance/InstanceAdmin.sol +199 -218
- package/contracts/instance/InstanceAuthorizationV3.sol +120 -70
- package/contracts/instance/InstanceReader.sol +392 -382
- package/contracts/instance/InstanceService.sol +283 -173
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +15 -6
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -8
- package/contracts/instance/module/IRisk.sol +2 -0
- package/contracts/oracle/BasicOracle.sol +3 -6
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +4 -8
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -18
- package/contracts/pool/BasicPoolAuthorization.sol +29 -16
- package/contracts/pool/BundleService.sol +57 -96
- package/contracts/pool/IBundleService.sol +27 -32
- package/contracts/pool/IPoolService.sol +57 -40
- package/contracts/pool/Pool.sol +15 -29
- package/contracts/pool/PoolLib.sol +341 -0
- package/contracts/pool/PoolService.sol +189 -190
- package/contracts/product/ApplicationService.sol +85 -17
- package/contracts/product/BasicProduct.sol +2 -5
- package/contracts/product/BasicProductAuthorization.sol +31 -9
- package/contracts/product/ClaimService.sol +112 -194
- package/contracts/product/IApplicationService.sol +24 -2
- package/contracts/product/IClaimService.sol +6 -6
- package/contracts/product/IPolicyService.sol +20 -8
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IRiskService.sol +25 -10
- package/contracts/product/PolicyService.sol +110 -201
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PricingService.sol +33 -31
- package/contracts/product/Product.sol +61 -33
- package/contracts/product/RiskService.sol +63 -25
- package/contracts/registry/IRegistry.sol +17 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +19 -9
- package/contracts/registry/RegistryAdmin.sol +85 -256
- package/contracts/registry/RegistryAuthorization.sol +337 -0
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +70 -116
- package/contracts/registry/ReleaseRegistry.sol +57 -43
- package/contracts/registry/ServiceAuthorizationV3.sol +131 -31
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +19 -35
- package/contracts/shared/ComponentService.sol +281 -290
- package/contracts/shared/ContractLib.sol +137 -77
- package/contracts/shared/IComponent.sol +1 -4
- package/contracts/shared/IComponentService.sol +21 -26
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +8 -13
- package/contracts/shared/NftOwnable.sol +4 -2
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Registerable.sol +1 -4
- package/contracts/shared/Service.sol +6 -4
- package/contracts/shared/TokenHandler.sol +44 -91
- package/contracts/staking/IStaking.sol +265 -72
- package/contracts/staking/IStakingService.sol +45 -75
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +475 -204
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +58 -77
- package/contracts/staking/StakingService.sol +62 -180
- package/contracts/staking/StakingServiceManager.sol +6 -4
- package/contracts/staking/StakingStore.sol +1093 -330
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +69 -52
- package/contracts/type/RiskId.sol +4 -3
- package/contracts/type/RoleId.sol +60 -45
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +28 -10
- package/contracts/type/Version.sol +39 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +2 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -4,7 +4,6 @@ pragma solidity ^0.8.20;
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
6
|
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
-
import {IComponent} from "../shared/IComponent.sol";
|
8
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
8
|
import {IComponentService} from "./IComponentService.sol";
|
10
9
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -12,23 +11,25 @@ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
|
12
11
|
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
13
12
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
13
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
15
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
16
14
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
17
15
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
19
16
|
import {IRegistry} from "../registry/IRegistry.sol";
|
20
17
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
18
|
+
import {IStaking} from "../staking/IStaking.sol";
|
19
|
+
import {IStakingService} from "../staking/IStakingService.sol";
|
21
20
|
|
21
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
22
22
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ChainIdLib} from "../type/ChainId.sol";
|
23
24
|
import {ContractLib} from "../shared/ContractLib.sol";
|
24
25
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
25
26
|
import {KEEP_STATE} from "../type/StateId.sol";
|
26
27
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
27
|
-
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT, STAKING} from "../type/ObjectType.sol";
|
29
|
+
import {ProductStore} from "../instance/ProductStore.sol";
|
28
30
|
import {Service} from "../shared/Service.sol";
|
29
31
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
32
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
31
|
-
import {VersionPart} from "../type/Version.sol";
|
32
33
|
|
33
34
|
|
34
35
|
contract ComponentService is
|
@@ -40,32 +41,7 @@ contract ComponentService is
|
|
40
41
|
|
41
42
|
IAccountingService private _accountingService;
|
42
43
|
IRegistryService private _registryService;
|
43
|
-
|
44
|
-
|
45
|
-
modifier onlyComponent(address component) {
|
46
|
-
_checkSupportsInterface(component);
|
47
|
-
_;
|
48
|
-
}
|
49
|
-
|
50
|
-
modifier onlyInstance() {
|
51
|
-
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
52
|
-
if (instanceNftId.eqz()) {
|
53
|
-
revert ErrorComponentServiceNotRegistered(msg.sender);
|
54
|
-
}
|
55
|
-
|
56
|
-
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
57
|
-
if (objectType != INSTANCE()) {
|
58
|
-
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
59
|
-
}
|
60
|
-
|
61
|
-
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
62
|
-
if (instanceVersion != getVersion().toMajorPart()) {
|
63
|
-
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
64
|
-
}
|
65
|
-
|
66
|
-
_;
|
67
|
-
}
|
68
|
-
|
44
|
+
IStaking private _staking;
|
69
45
|
|
70
46
|
function _initialize(
|
71
47
|
address owner,
|
@@ -84,185 +60,212 @@ contract ComponentService is
|
|
84
60
|
|
85
61
|
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
86
62
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
87
|
-
|
63
|
+
_staking = IStakingService(_getServiceAddress(STAKING())).getStaking();
|
88
64
|
|
89
65
|
_registerInterface(type(IComponentService).interfaceId);
|
90
66
|
}
|
91
67
|
|
92
68
|
//-------- component ----------------------------------------------------//
|
93
69
|
|
94
|
-
|
70
|
+
/// @inheritdoc IComponentService
|
71
|
+
function registerComponent(address componentAddress)
|
95
72
|
external
|
96
73
|
virtual
|
97
|
-
|
74
|
+
restricted()
|
98
75
|
returns (NftId componentNftId)
|
99
76
|
{
|
100
|
-
//
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
if (componentType == DISTRIBUTION()) {
|
106
|
-
return _registerDistribution(component);
|
107
|
-
}
|
108
|
-
if (componentType == ORACLE()) {
|
109
|
-
return _registerOracle(component);
|
77
|
+
// checks
|
78
|
+
// check sender is registered product
|
79
|
+
IRegistry registry = getRegistry();
|
80
|
+
if (!registry.isObjectType(msg.sender, PRODUCT())) {
|
81
|
+
revert ErrorComponentServiceCallerNotProduct(msg.sender);
|
110
82
|
}
|
111
83
|
|
112
|
-
//
|
113
|
-
|
114
|
-
|
84
|
+
// check provided address is product contract
|
85
|
+
if (!_isInstanceLinkedComponent(componentAddress)) {
|
86
|
+
revert ErrorComponentServiceNotComponent(componentAddress);
|
87
|
+
}
|
115
88
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
external
|
121
|
-
virtual
|
122
|
-
{
|
123
|
-
// checks
|
124
|
-
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
125
|
-
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
126
|
-
componentNftId).tokenHandler;
|
89
|
+
NftId productNftId = registry.getNftIdForAddress(msg.sender);
|
90
|
+
IInstance instance = IInstance(
|
91
|
+
registry.getObjectAddress(
|
92
|
+
registry.getParentNftId(productNftId)));
|
127
93
|
|
128
|
-
|
129
|
-
|
94
|
+
componentNftId = _verifyAndRegister(
|
95
|
+
instance,
|
96
|
+
componentAddress,
|
97
|
+
productNftId, // product is parent of component to be registered
|
98
|
+
address(0)); // token will be inhereited from product
|
130
99
|
}
|
131
100
|
|
132
101
|
|
133
|
-
|
102
|
+
/// @inheritdoc IComponentService
|
103
|
+
function approveTokenHandler(
|
134
104
|
IERC20Metadata token,
|
135
105
|
Amount amount
|
136
106
|
)
|
137
107
|
external
|
138
108
|
virtual
|
109
|
+
restricted()
|
139
110
|
{
|
140
111
|
// checks
|
141
|
-
|
142
|
-
|
143
|
-
|
112
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
113
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
114
|
+
componentNftId);
|
144
115
|
|
145
116
|
// effects
|
146
|
-
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
147
117
|
tokenHandler.approve(token, amount);
|
148
118
|
}
|
149
119
|
|
150
120
|
|
121
|
+
/// @inheritdoc IComponentService
|
151
122
|
function setWallet(address newWallet)
|
152
123
|
external
|
153
124
|
virtual
|
125
|
+
restricted()
|
154
126
|
{
|
155
127
|
// checks
|
156
|
-
(NftId componentNftId, IInstance instance) =
|
157
|
-
TokenHandler tokenHandler = instance.getInstanceReader().
|
158
|
-
componentNftId)
|
128
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
129
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getTokenHandler(
|
130
|
+
componentNftId);
|
159
131
|
|
160
132
|
// effects
|
161
133
|
tokenHandler.setWallet(newWallet);
|
162
134
|
}
|
163
135
|
|
164
136
|
/// @inheritdoc IComponentService
|
165
|
-
function
|
137
|
+
function setLocked(bool locked)
|
166
138
|
external
|
167
139
|
virtual
|
168
|
-
|
169
|
-
{
|
170
|
-
address instanceAddress = msg.sender;
|
171
|
-
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
172
|
-
IInstance instance = IInstance(instanceAddress);
|
173
|
-
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
174
|
-
}
|
175
|
-
|
176
|
-
/// @inheritdoc IComponentService
|
177
|
-
function setLockedFromComponent(address componentAddress, bool locked)
|
178
|
-
external
|
179
|
-
virtual
|
180
|
-
onlyComponent(msg.sender)
|
140
|
+
restricted()
|
181
141
|
{
|
182
142
|
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
183
|
-
|
143
|
+
|
144
|
+
address component = msg.sender;
|
145
|
+
instance.getInstanceAdmin().setContractLocked(
|
146
|
+
component,
|
147
|
+
locked);
|
148
|
+
emit LogComponentServiceComponentLocked(component, locked);
|
184
149
|
}
|
185
150
|
|
151
|
+
|
152
|
+
/// @inheritdoc IComponentService
|
186
153
|
function withdrawFees(Amount amount)
|
187
154
|
external
|
188
155
|
virtual
|
156
|
+
restricted()
|
189
157
|
returns (Amount withdrawnAmount)
|
190
158
|
{
|
191
|
-
|
192
|
-
|
193
|
-
|
159
|
+
// checks
|
160
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyComponent(COMPONENT(), true);
|
161
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
194
162
|
|
195
163
|
// determine withdrawn amount
|
164
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
196
165
|
withdrawnAmount = amount;
|
197
|
-
|
198
|
-
|
199
|
-
|
166
|
+
|
167
|
+
// max amount -> withraw all available fees
|
168
|
+
if (amount == AmountLib.max()) {
|
169
|
+
withdrawnAmount = maxAvailableAmount;
|
170
|
+
}
|
171
|
+
|
172
|
+
// check modified withdrawn amount
|
173
|
+
if (withdrawnAmount.eqz()) {
|
200
174
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
201
|
-
} else {
|
202
|
-
|
203
|
-
if (withdrawnAmount.gt(withdrawLimit)) {
|
204
|
-
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
205
|
-
}
|
175
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
176
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
206
177
|
}
|
207
178
|
|
179
|
+
// effects
|
208
180
|
// decrease fee counters by withdrawnAmount
|
209
|
-
_accountingService.decreaseComponentFees(
|
181
|
+
_accountingService.decreaseComponentFees(
|
182
|
+
instance.getInstanceStore(),
|
183
|
+
componentNftId,
|
184
|
+
withdrawnAmount);
|
210
185
|
|
211
186
|
// transfer amount to component owner
|
212
187
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
213
|
-
|
214
|
-
|
188
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
189
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
190
|
+
componentNftId,
|
191
|
+
componentOwner,
|
192
|
+
address(tokenHandler.TOKEN()),
|
193
|
+
withdrawnAmount);
|
194
|
+
|
195
|
+
// interactions
|
196
|
+
// transfer amount to component owner
|
197
|
+
tokenHandler.pushFeeToken(
|
198
|
+
componentOwner,
|
199
|
+
withdrawnAmount);
|
215
200
|
}
|
216
201
|
|
217
202
|
|
218
203
|
//-------- product ------------------------------------------------------//
|
219
204
|
|
220
|
-
|
205
|
+
/// @inheritdoc IComponentService
|
206
|
+
function registerProduct(address productAddress, address token)
|
221
207
|
external
|
222
208
|
virtual
|
209
|
+
restricted()
|
223
210
|
nonReentrant()
|
224
|
-
onlyComponent(productAddress)
|
225
211
|
returns (NftId productNftId)
|
226
212
|
{
|
227
|
-
//
|
228
|
-
|
229
|
-
|
230
|
-
(,
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
// get product
|
235
|
-
IProductComponent product = IProductComponent(productAddress);
|
236
|
-
|
237
|
-
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
238
|
-
// force initialization of linked components with empty values to
|
239
|
-
// ensure no components are linked upon initialization of the product
|
240
|
-
initialProductInfo.poolNftId = NftIdLib.zero();
|
241
|
-
initialProductInfo.distributionNftId = NftIdLib.zero();
|
242
|
-
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
213
|
+
// checks
|
214
|
+
// check sender is registered instance
|
215
|
+
IRegistry registry = getRegistry();
|
216
|
+
if (!registry.isObjectType(msg.sender, INSTANCE())) {
|
217
|
+
revert ErrorComponentServiceCallerNotInstance(msg.sender);
|
218
|
+
}
|
243
219
|
|
244
|
-
//
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
instanceStore.createFee(
|
249
|
-
productNftId,
|
250
|
-
product.getInitialFeeInfo());
|
220
|
+
// check provided address is product contract
|
221
|
+
if (!_isProduct(productAddress)) {
|
222
|
+
revert ErrorComponentServiceNotProduct(productAddress);
|
223
|
+
}
|
251
224
|
|
252
|
-
|
253
|
-
|
225
|
+
IInstance instance = IInstance(msg.sender);
|
226
|
+
NftId instanceNftId = registry.getNftIdForAddress(msg.sender);
|
227
|
+
productNftId = _verifyAndRegister(
|
228
|
+
instance,
|
229
|
+
productAddress,
|
230
|
+
instanceNftId, // instance is parent of product to be registered
|
231
|
+
token);
|
232
|
+
|
233
|
+
// add product specific token for product to staking
|
234
|
+
_staking.addTargetToken(
|
235
|
+
instanceNftId,
|
236
|
+
token);
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
function _isProduct(address target) internal view virtual returns (bool) {
|
241
|
+
if (!_isInstanceLinkedComponent(target)) {
|
242
|
+
return false;
|
243
|
+
}
|
244
|
+
|
245
|
+
return IInstanceLinkedComponent(target).getInitialInfo().objectType == PRODUCT();
|
246
|
+
}
|
247
|
+
|
248
|
+
|
249
|
+
function _isInstanceLinkedComponent(address target) internal view virtual returns (bool) {
|
250
|
+
if (!ContractLib.isContract(target)) {
|
251
|
+
return false;
|
252
|
+
}
|
253
|
+
|
254
|
+
return ContractLib.supportsInterface(target, type(IInstanceLinkedComponent).interfaceId);
|
254
255
|
}
|
255
256
|
|
256
257
|
|
258
|
+
/// @inheritdoc IComponentService
|
257
259
|
function setProductFees(
|
258
260
|
Fee memory productFee, // product fee on net premium
|
259
261
|
Fee memory processingFee // product fee on payout amounts
|
260
262
|
)
|
261
263
|
external
|
262
264
|
virtual
|
265
|
+
restricted()
|
263
266
|
nonReentrant()
|
264
267
|
{
|
265
|
-
(NftId productNftId, IInstance instance) =
|
268
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyComponent(PRODUCT(), true);
|
266
269
|
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
267
270
|
bool feesChanged = false;
|
268
271
|
|
@@ -281,31 +284,53 @@ contract ComponentService is
|
|
281
284
|
}
|
282
285
|
|
283
286
|
if(feesChanged) {
|
284
|
-
instance.
|
287
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
285
288
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
286
289
|
}
|
287
290
|
}
|
288
291
|
|
292
|
+
|
293
|
+
function _createProduct(
|
294
|
+
ProductStore productStore,
|
295
|
+
NftId productNftId,
|
296
|
+
address productAddress
|
297
|
+
)
|
298
|
+
internal
|
299
|
+
virtual
|
300
|
+
{
|
301
|
+
// create product in instance instanceStore
|
302
|
+
IProductComponent product = IProductComponent(productAddress);
|
303
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
304
|
+
// force initialization of linked components with empty values to
|
305
|
+
// ensure no components are linked upon initialization of the product
|
306
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
307
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
308
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
309
|
+
|
310
|
+
// create info
|
311
|
+
productStore.createProduct(
|
312
|
+
productNftId,
|
313
|
+
initialProductInfo);
|
314
|
+
|
315
|
+
productStore.createFee(
|
316
|
+
productNftId,
|
317
|
+
product.getInitialFeeInfo());
|
318
|
+
}
|
319
|
+
|
289
320
|
//-------- distribution -------------------------------------------------//
|
290
321
|
|
291
322
|
/// @dev registers the sending component as a distribution component
|
292
|
-
function
|
323
|
+
function _createDistribution(
|
324
|
+
ProductStore productStore,
|
325
|
+
NftId productNftId,
|
326
|
+
NftId distributionNftId,
|
327
|
+
IComponents.ProductInfo memory productInfo
|
328
|
+
)
|
293
329
|
internal
|
294
330
|
virtual
|
295
331
|
nonReentrant()
|
296
|
-
returns (NftId distributionNftId)
|
297
332
|
{
|
298
|
-
// register/create component info
|
299
|
-
InstanceReader instanceReader;
|
300
|
-
InstanceAdmin instanceAdmin;
|
301
|
-
InstanceStore instanceStore;
|
302
|
-
NftId productNftId;
|
303
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
304
|
-
distributioAddress,
|
305
|
-
DISTRIBUTION());
|
306
|
-
|
307
333
|
// check product is still expecting a distribution registration
|
308
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
309
334
|
if (!productInfo.hasDistribution) {
|
310
335
|
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
311
336
|
}
|
@@ -315,11 +340,7 @@ contract ComponentService is
|
|
315
340
|
|
316
341
|
// set distribution in product info
|
317
342
|
productInfo.distributionNftId = distributionNftId;
|
318
|
-
|
319
|
-
|
320
|
-
// authorize
|
321
|
-
instanceAdmin.initializeComponentAuthorization(
|
322
|
-
IInstanceLinkedComponent(distributioAddress));
|
343
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
323
344
|
}
|
324
345
|
|
325
346
|
|
@@ -329,8 +350,9 @@ contract ComponentService is
|
|
329
350
|
)
|
330
351
|
external
|
331
352
|
virtual
|
353
|
+
restricted()
|
332
354
|
{
|
333
|
-
(NftId distributionNftId, IInstance instance) =
|
355
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyComponent(DISTRIBUTION(), true);
|
334
356
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
335
357
|
instance.getInstanceReader(), distributionNftId);
|
336
358
|
bool feesChanged = false;
|
@@ -350,30 +372,23 @@ contract ComponentService is
|
|
350
372
|
}
|
351
373
|
|
352
374
|
if(feesChanged) {
|
353
|
-
instance.
|
375
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
354
376
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
355
377
|
}
|
356
378
|
}
|
357
379
|
|
358
380
|
//-------- oracle -------------------------------------------------------//
|
359
381
|
|
360
|
-
function
|
382
|
+
function _createOracle(
|
383
|
+
ProductStore productStore,
|
384
|
+
NftId productNftId,
|
385
|
+
NftId oracleNftId,
|
386
|
+
IComponents.ProductInfo memory productInfo
|
387
|
+
)
|
361
388
|
internal
|
362
389
|
virtual
|
363
|
-
returns (NftId oracleNftId)
|
364
390
|
{
|
365
|
-
// register/create component setup
|
366
|
-
InstanceReader instanceReader;
|
367
|
-
InstanceAdmin instanceAdmin;
|
368
|
-
InstanceStore instanceStore;
|
369
|
-
NftId productNftId;
|
370
|
-
|
371
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
372
|
-
oracleAddress,
|
373
|
-
ORACLE());
|
374
|
-
|
375
391
|
// check product is still expecting an oracle registration
|
376
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
377
392
|
if (productInfo.expectedNumberOfOracles == 0) {
|
378
393
|
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
379
394
|
}
|
@@ -384,48 +399,37 @@ contract ComponentService is
|
|
384
399
|
// update/add oracle to product info
|
385
400
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
386
401
|
productInfo.numberOfOracles++;
|
387
|
-
|
388
|
-
|
389
|
-
// authorize
|
390
|
-
instanceAdmin.initializeComponentAuthorization(
|
391
|
-
IInstanceLinkedComponent(oracleAddress));
|
402
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
392
403
|
}
|
393
404
|
|
394
405
|
//-------- pool ---------------------------------------------------------//
|
395
406
|
|
396
|
-
function
|
407
|
+
function _createPool(
|
408
|
+
InstanceStore instanceStore,
|
409
|
+
ProductStore productStore,
|
410
|
+
NftId productNftId,
|
411
|
+
NftId poolNftId,
|
412
|
+
address componentAddress,
|
413
|
+
IComponents.ProductInfo memory productInfo
|
414
|
+
)
|
397
415
|
internal
|
398
416
|
virtual
|
399
|
-
returns (NftId poolNftId)
|
400
417
|
{
|
401
|
-
// register/create component setup
|
402
|
-
InstanceReader instanceReader;
|
403
|
-
InstanceAdmin instanceAdmin;
|
404
|
-
InstanceStore instanceStore;
|
405
|
-
NftId productNftId;
|
406
|
-
|
407
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
408
|
-
poolAddress,
|
409
|
-
POOL());
|
410
|
-
|
411
418
|
// check product is still expecting a pool registration
|
412
|
-
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
419
|
+
//IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
413
420
|
if (productInfo.poolNftId.gtz()) {
|
414
421
|
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
415
422
|
}
|
416
423
|
|
417
424
|
// create info
|
418
|
-
IPoolComponent pool = IPoolComponent(
|
425
|
+
IPoolComponent pool = IPoolComponent(componentAddress);
|
419
426
|
instanceStore.createPool(
|
420
427
|
poolNftId,
|
421
428
|
pool.getInitialPoolInfo());
|
422
429
|
|
423
430
|
// update pool in product info
|
424
431
|
productInfo.poolNftId = poolNftId;
|
425
|
-
|
426
|
-
|
427
|
-
// authorize
|
428
|
-
instanceAdmin.initializeComponentAuthorization(pool);
|
432
|
+
productStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
429
433
|
}
|
430
434
|
|
431
435
|
|
@@ -436,8 +440,9 @@ contract ComponentService is
|
|
436
440
|
)
|
437
441
|
external
|
438
442
|
virtual
|
443
|
+
restricted()
|
439
444
|
{
|
440
|
-
(NftId poolNftId, IInstance instance) =
|
445
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyComponent(POOL(), true);
|
441
446
|
|
442
447
|
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
443
448
|
instance.getInstanceReader(), poolNftId);
|
@@ -465,64 +470,79 @@ contract ComponentService is
|
|
465
470
|
}
|
466
471
|
|
467
472
|
if(feesChanged) {
|
468
|
-
instance.
|
473
|
+
instance.getProductStore().updateFee(productNftId, feeInfo);
|
469
474
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
470
475
|
}
|
471
476
|
}
|
472
477
|
|
478
|
+
|
473
479
|
/// @dev Registers the component represented by the provided address.
|
474
|
-
|
475
|
-
|
476
|
-
|
480
|
+
/// The caller must ensure componentAddress is IInstanceLinkedComponent.
|
481
|
+
function _verifyAndRegister(
|
482
|
+
IInstance instance,
|
483
|
+
address componentAddress,
|
484
|
+
NftId parentNftId,
|
485
|
+
address token
|
477
486
|
)
|
478
487
|
internal
|
479
488
|
virtual
|
480
|
-
returns (
|
481
|
-
InstanceReader instanceReader,
|
482
|
-
InstanceAdmin instanceAdmin,
|
483
|
-
InstanceStore instanceStore,
|
484
|
-
NftId parentNftId,
|
485
|
-
NftId componentNftId
|
486
|
-
)
|
489
|
+
returns (NftId componentNftId)
|
487
490
|
{
|
488
|
-
NftId instanceNftId;
|
489
|
-
IInstance instance;
|
490
|
-
IInstanceLinkedComponent component;
|
491
|
-
address initialOwner;
|
492
|
-
|
493
491
|
(
|
494
|
-
|
495
|
-
|
496
|
-
parentNftId,
|
497
|
-
component,
|
498
|
-
initialOwner
|
492
|
+
IInstanceLinkedComponent component,
|
493
|
+
IRegistry.ObjectInfo memory objectInfo // initial component info
|
499
494
|
) = _getAndVerifyRegisterableComponent(
|
500
|
-
getRegistry(),
|
501
495
|
componentAddress,
|
502
|
-
|
496
|
+
parentNftId);
|
503
497
|
|
504
|
-
|
505
|
-
|
506
|
-
instanceAdmin = instance.getInstanceAdmin();
|
507
|
-
instanceStore = instance.getInstanceStore();
|
498
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
499
|
+
ObjectType componentType = objectInfo.objectType;
|
508
500
|
|
509
|
-
|
510
|
-
|
501
|
+
if(componentType == PRODUCT()) {
|
502
|
+
// register product with registry
|
511
503
|
componentNftId = _registryService.registerProduct(
|
512
|
-
component,
|
504
|
+
component,
|
505
|
+
objectInfo.initialOwner).nftId;
|
506
|
+
|
507
|
+
// create product info in instance store
|
508
|
+
_createProduct(instance.getProductStore(), componentNftId, componentAddress);
|
513
509
|
} else {
|
510
|
+
// register non product component with registry
|
514
511
|
componentNftId = _registryService.registerProductLinkedComponent(
|
515
|
-
component,
|
512
|
+
component,
|
513
|
+
objectInfo.objectType,
|
514
|
+
objectInfo.initialOwner).nftId;
|
515
|
+
|
516
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
517
|
+
|
518
|
+
// create non product component info in instance store
|
519
|
+
NftId productNftId = parentNftId;
|
520
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
521
|
+
if(componentType == POOL()) {
|
522
|
+
_createPool(instanceStore, instance.getProductStore(), productNftId, componentNftId, componentAddress, productInfo);
|
523
|
+
} else if(componentType == DISTRIBUTION()) {
|
524
|
+
_createDistribution(instance.getProductStore(), productNftId, componentNftId, productInfo);
|
525
|
+
} else if(componentType == ORACLE()) {
|
526
|
+
_createOracle(instance.getProductStore(), productNftId, componentNftId, productInfo);
|
527
|
+
} else {
|
528
|
+
revert ErrorComponentServiceComponentTypeNotSupported(componentAddress, componentType);
|
529
|
+
}
|
530
|
+
|
531
|
+
// get product's token
|
532
|
+
token = address(instanceReader.getTokenHandler(productNftId).TOKEN());
|
516
533
|
}
|
517
534
|
|
535
|
+
_checkToken(instance, token);
|
536
|
+
|
537
|
+
InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
|
538
|
+
|
518
539
|
// deploy and wire token handler
|
519
540
|
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
520
|
-
IERC20Metadata token = componentInfo.token;
|
521
541
|
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
522
542
|
address(getRegistry()),
|
523
543
|
address(component), // initially, component is its own wallet
|
524
|
-
|
525
|
-
|
544
|
+
token,
|
545
|
+
instanceAdmin.authority());
|
526
546
|
|
527
547
|
// register component with instance
|
528
548
|
instanceStore.createComponent(
|
@@ -532,7 +552,34 @@ contract ComponentService is
|
|
532
552
|
// link component contract to nft id
|
533
553
|
component.linkToRegisteredNftId();
|
534
554
|
|
535
|
-
|
555
|
+
// authorize
|
556
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, componentType);
|
557
|
+
|
558
|
+
emit LogComponentServiceRegistered(
|
559
|
+
instance.getNftId(),
|
560
|
+
componentNftId,
|
561
|
+
componentType,
|
562
|
+
address(component),
|
563
|
+
token,
|
564
|
+
objectInfo.initialOwner);
|
565
|
+
}
|
566
|
+
|
567
|
+
|
568
|
+
function _checkToken(IInstance instance, address token)
|
569
|
+
internal
|
570
|
+
view
|
571
|
+
{
|
572
|
+
if (! instance.isTokenRegistryDisabled()) {
|
573
|
+
// check if provided token is whitelisted and active
|
574
|
+
if (!ContractLib.isActiveToken(
|
575
|
+
getRegistry().getTokenRegistryAddress(),
|
576
|
+
ChainIdLib.current(),
|
577
|
+
token,
|
578
|
+
AccessManagerCloneable(authority()).getRelease())
|
579
|
+
) {
|
580
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
581
|
+
}
|
582
|
+
}
|
536
583
|
}
|
537
584
|
|
538
585
|
|
@@ -562,102 +609,51 @@ contract ComponentService is
|
|
562
609
|
IComponents.FeeInfo memory info
|
563
610
|
)
|
564
611
|
{
|
565
|
-
productNftId = getRegistry().
|
612
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
566
613
|
info = instanceReader.getFeeInfo(productNftId);
|
567
614
|
}
|
568
615
|
|
569
616
|
|
570
617
|
/// @dev Based on the provided component address required type the component
|
571
618
|
/// and related instance contract this function reverts iff:
|
572
|
-
/// - the
|
573
|
-
/// - the component
|
574
|
-
/// - the component type does not match with the required type
|
619
|
+
/// - the component parent does not match with the required parent
|
620
|
+
/// - the component release does not match with the service release
|
575
621
|
/// - the component has already been registered
|
576
622
|
function _getAndVerifyRegisterableComponent(
|
577
|
-
IRegistry registry,
|
578
623
|
address componentAddress,
|
579
|
-
|
624
|
+
NftId requiredParent
|
580
625
|
)
|
581
626
|
internal
|
582
627
|
view
|
583
628
|
returns (
|
584
|
-
NftId instanceNftId,
|
585
|
-
IInstance instance,
|
586
|
-
NftId parentNftId,
|
587
629
|
IInstanceLinkedComponent component,
|
588
|
-
|
630
|
+
IRegistry.ObjectInfo memory info
|
589
631
|
)
|
590
632
|
{
|
591
|
-
// check sender (instance or product) is registered
|
592
|
-
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
593
|
-
if (senderInfo.nftId.eqz()) {
|
594
|
-
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
595
|
-
}
|
596
|
-
|
597
|
-
// the sender is the parent of the component to be registered
|
598
|
-
// an instance caller wanting to register a product - or -
|
599
|
-
// a product caller wantint go register a distribution, oracle or pool
|
600
|
-
parentNftId = senderInfo.nftId;
|
601
|
-
|
602
|
-
// check component is of required type
|
603
633
|
component = IInstanceLinkedComponent(componentAddress);
|
604
|
-
|
605
|
-
if(info.objectType != requiredType) {
|
606
|
-
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
607
|
-
}
|
608
|
-
|
609
|
-
// check component has not already been registered
|
610
|
-
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
611
|
-
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
612
|
-
}
|
634
|
+
info = component.getInitialInfo();
|
613
635
|
|
614
|
-
// check
|
615
|
-
|
616
|
-
|
617
|
-
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
636
|
+
// check component parent
|
637
|
+
if(info.parentNftId != requiredParent) {
|
638
|
+
revert ErrorComponentServiceComponentParentInvalid(componentAddress, requiredParent, info.parentNftId);
|
618
639
|
}
|
619
640
|
|
620
|
-
// check component
|
621
|
-
|
622
|
-
|
623
|
-
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
641
|
+
// check component release (must match with service release)
|
642
|
+
if(component.getRelease() != getRelease()) {
|
643
|
+
revert ErrorComponentServiceComponentReleaseMismatch(componentAddress, getRelease(), component.getRelease());
|
624
644
|
}
|
625
645
|
|
626
|
-
//
|
627
|
-
if (
|
628
|
-
|
629
|
-
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
630
|
-
}
|
631
|
-
|
632
|
-
instanceNftId = senderInfo.nftId;
|
633
|
-
// verify parent is registered product
|
634
|
-
} else {
|
635
|
-
if (senderInfo.objectType != PRODUCT()) {
|
636
|
-
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
637
|
-
}
|
638
|
-
|
639
|
-
instanceNftId = senderInfo.parentNftId;
|
646
|
+
// check component has not already been registered
|
647
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
648
|
+
revert ErrorComponentServiceComponentAlreadyRegistered(componentAddress);
|
640
649
|
}
|
641
|
-
|
642
|
-
// get initial owner and instance
|
643
|
-
initialOwner = info.initialOwner;
|
644
|
-
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
645
650
|
}
|
646
651
|
|
652
|
+
|
647
653
|
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
648
654
|
instanceAdmin.setTargetLocked(componentAddress, locked);
|
649
655
|
}
|
650
656
|
|
651
|
-
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
652
|
-
internal
|
653
|
-
view
|
654
|
-
returns (
|
655
|
-
NftId componentNftId,
|
656
|
-
IInstance instance
|
657
|
-
)
|
658
|
-
{
|
659
|
-
return _getAndVerifyComponent(expectedType, true); // only active
|
660
|
-
}
|
661
657
|
|
662
658
|
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
663
659
|
internal
|
@@ -688,13 +684,8 @@ contract ComponentService is
|
|
688
684
|
instance = IInstance(instanceAddress);
|
689
685
|
}
|
690
686
|
|
687
|
+
|
691
688
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
692
689
|
return COMPONENT();
|
693
690
|
}
|
694
|
-
|
695
|
-
function _checkSupportsInterface(address component) internal view {
|
696
|
-
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
697
|
-
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
698
|
-
}
|
699
|
-
}
|
700
691
|
}
|