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