@etherisc/gif-next 0.0.2-c16a73d-613 → 0.0.2-c258ac8-869
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 +80 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +454 -253
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -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 +227 -26
- 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 +353 -189
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +105 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +103 -296
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +212 -38
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +45 -163
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +307 -182
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +100 -70
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +32 -132
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +181 -71
- 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 +115 -208
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +212 -38
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +274 -344
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +212 -38
- 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 +172 -255
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +232 -212
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +660 -366
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +198 -23
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +120 -14
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +240 -40
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +705 -322
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +206 -51
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +704 -304
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +146 -87
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +59 -47
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +621 -571
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/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 +66 -167
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +194 -40
- 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 +36 -71
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +83 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +69 -137
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +212 -38
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +133 -337
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +67 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +62 -142
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -118
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +182 -235
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -149
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +320 -371
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +107 -65
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +165 -57
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +68 -38
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +182 -215
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +212 -38
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +88 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +163 -178
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +90 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +104 -100
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -58
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +176 -209
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +60 -12
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- 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 +98 -50
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +561 -429
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +56 -34
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1954 -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 +334 -64
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- 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 +49 -88
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -467
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +79 -77
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/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 +36 -57
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +150 -289
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -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 +27 -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 +49 -102
- 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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -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 +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +125 -99
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +131 -7
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +209 -209
- 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 +75 -59
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +40 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +184 -53
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +65 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +163 -149
- 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 +11 -11
- 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 +94 -38
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +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 +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- 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/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 +61 -37
- 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/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +32 -16
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +300 -192
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +307 -231
- package/contracts/authorization/IAccess.sol +13 -5
- package/contracts/authorization/IAccessAdmin.sol +69 -36
- package/contracts/authorization/IAuthorization.sol +21 -1
- package/contracts/distribution/BasicDistribution.sol +18 -16
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +36 -77
- package/contracts/distribution/DistributionService.sol +106 -76
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +0 -9
- package/contracts/distribution/IDistributionService.sol +22 -20
- package/contracts/examples/fire/FirePool.sol +21 -8
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +32 -14
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -27
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +57 -17
- package/contracts/instance/IInstanceService.sol +27 -11
- package/contracts/instance/Instance.sol +102 -30
- package/contracts/instance/InstanceAdmin.sol +279 -106
- package/contracts/instance/InstanceAuthorizationV3.sol +87 -46
- package/contracts/instance/InstanceReader.sol +187 -32
- package/contracts/instance/InstanceService.sol +174 -126
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +20 -9
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +28 -7
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +1 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/Oracle.sol +1 -3
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +23 -4
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -60
- package/contracts/pool/Pool.sol +106 -98
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +425 -214
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +30 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +8 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +8 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +7 -7
- package/contracts/product/PolicyService.sol +240 -267
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -21
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +65 -53
- package/contracts/product/RiskService.sol +89 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +145 -335
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +150 -134
- package/contracts/registry/ServiceAuthorizationV3.sol +177 -40
- package/contracts/registry/TokenRegistry.sol +10 -9
- package/contracts/shared/Component.sol +52 -107
- package/contracts/shared/ComponentService.sol +264 -301
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +246 -3
- package/contracts/shared/IComponent.sol +1 -17
- package/contracts/shared/IComponentService.sol +20 -28
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -22
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +41 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +23 -12
- package/contracts/staking/IStakingService.sol +16 -1
- package/contracts/staking/Staking.sol +95 -46
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
- package/contracts/staking/StakingReader.sol +6 -16
- package/contracts/staking/StakingService.sol +71 -14
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/type/Fee.sol +8 -8
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +53 -35
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +24 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +34 -127
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/ProxyManager.sol +12 -10
- package/package.json +4 -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/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
@@ -3,10 +3,8 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
5
5
|
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import {ContractLib} from "../shared/ContractLib.sol";
|
9
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponent} from "../shared/IComponent.sol";
|
10
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
11
9
|
import {IComponentService} from "./IComponentService.sol";
|
12
10
|
import {IInstance} from "../instance/IInstance.sol";
|
@@ -15,32 +13,57 @@ import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
|
15
13
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
16
14
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
17
15
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
18
|
-
import {IRegisterable} from "../shared/IRegisterable.sol";
|
19
16
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
20
17
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
21
19
|
import {IRegistry} from "../registry/IRegistry.sol";
|
22
20
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
21
|
+
|
22
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
23
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
24
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
25
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
23
26
|
import {KEEP_STATE} from "../type/StateId.sol";
|
24
|
-
import {NftId} from "../type/NftId.sol";
|
25
|
-
import {ObjectType,
|
26
|
-
import {
|
27
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
28
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
29
|
+
import {Service} from "../shared/Service.sol";
|
30
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
31
|
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
32
|
+
import {VersionPart} from "../type/Version.sol";
|
33
|
+
|
28
34
|
|
29
35
|
contract ComponentService is
|
30
|
-
|
36
|
+
Service,
|
31
37
|
IComponentService
|
32
38
|
{
|
33
|
-
|
34
39
|
bool private constant INCREASE = true;
|
35
40
|
bool private constant DECREASE = false;
|
36
41
|
|
42
|
+
IAccountingService private _accountingService;
|
37
43
|
IRegistryService private _registryService;
|
38
44
|
IInstanceService private _instanceService;
|
39
45
|
|
40
46
|
modifier onlyComponent(address component) {
|
41
|
-
|
42
|
-
|
47
|
+
_checkSupportsInterface(component);
|
48
|
+
_;
|
49
|
+
}
|
50
|
+
|
51
|
+
modifier onlyInstance() {
|
52
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
53
|
+
if (instanceNftId.eqz()) {
|
54
|
+
revert ErrorComponentServiceNotRegistered(msg.sender);
|
55
|
+
}
|
56
|
+
|
57
|
+
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
58
|
+
if (objectType != INSTANCE()) {
|
59
|
+
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
60
|
+
}
|
61
|
+
|
62
|
+
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
63
|
+
if (instanceVersion != getVersion().toMajorPart()) {
|
64
|
+
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
43
65
|
}
|
66
|
+
|
44
67
|
_;
|
45
68
|
}
|
46
69
|
|
@@ -54,12 +77,13 @@ contract ComponentService is
|
|
54
77
|
initializer()
|
55
78
|
{
|
56
79
|
(
|
57
|
-
address
|
58
|
-
address
|
80
|
+
address authority,
|
81
|
+
address registry
|
59
82
|
) = abi.decode(data, (address, address));
|
60
83
|
|
61
|
-
|
84
|
+
__Service_init(authority, registry, owner);
|
62
85
|
|
86
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
63
87
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
64
88
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
65
89
|
|
@@ -75,87 +99,125 @@ contract ComponentService is
|
|
75
99
|
returns (NftId componentNftId)
|
76
100
|
{
|
77
101
|
// type specific registration
|
78
|
-
|
102
|
+
IRegistry.ObjectInfo memory componentObjectInfo = IInstanceLinkedComponent(component).getInitialInfo();
|
103
|
+
ObjectType componentType = componentObjectInfo.objectType;
|
104
|
+
IComponent productComponent = IComponent(getRegistry().getObjectAddress(componentObjectInfo.parentNftId));
|
105
|
+
|
79
106
|
if (componentType == POOL()) {
|
80
|
-
return _registerPool(component);
|
107
|
+
return _registerPool(component, address(productComponent.getToken()));
|
81
108
|
}
|
82
109
|
if (componentType == DISTRIBUTION()) {
|
83
|
-
return _registerDistribution(component);
|
110
|
+
return _registerDistribution(component, address(productComponent.getToken()));
|
84
111
|
}
|
85
112
|
if (componentType == ORACLE()) {
|
86
|
-
return _registerOracle(component);
|
113
|
+
return _registerOracle(component, address(productComponent.getToken()));
|
87
114
|
}
|
88
115
|
|
89
116
|
// fail
|
90
117
|
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
91
118
|
}
|
92
119
|
|
120
|
+
function approveTokenHandler(
|
121
|
+
IERC20Metadata token,
|
122
|
+
Amount amount
|
123
|
+
)
|
124
|
+
external
|
125
|
+
virtual
|
126
|
+
{
|
127
|
+
// checks
|
128
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
129
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
130
|
+
componentNftId).tokenHandler;
|
93
131
|
|
94
|
-
|
95
|
-
(
|
96
|
-
|
97
|
-
address currentWallet = info.wallet;
|
98
|
-
|
99
|
-
if (newWallet == address(0)) {
|
100
|
-
revert ErrorComponentServiceNewWalletAddressZero();
|
101
|
-
}
|
132
|
+
// effects
|
133
|
+
tokenHandler.approve(token, amount);
|
134
|
+
}
|
102
135
|
|
103
|
-
if (currentWallet == address(0)) {
|
104
|
-
revert ErrorComponentServiceWalletAddressZero();
|
105
|
-
}
|
106
136
|
|
107
|
-
|
108
|
-
|
109
|
-
|
137
|
+
function setWallet(address newWallet)
|
138
|
+
external
|
139
|
+
virtual
|
140
|
+
{
|
141
|
+
// checks
|
142
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
143
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
144
|
+
componentNftId).tokenHandler;
|
110
145
|
|
111
|
-
|
112
|
-
|
113
|
-
emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
|
146
|
+
// effects
|
147
|
+
tokenHandler.setWallet(newWallet);
|
114
148
|
}
|
115
149
|
|
116
|
-
|
117
|
-
function
|
150
|
+
/// @inheritdoc IComponentService
|
151
|
+
function setLocked(bool locked)
|
152
|
+
external
|
153
|
+
virtual
|
154
|
+
restricted()
|
155
|
+
{
|
156
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
118
157
|
|
119
|
-
|
120
|
-
|
158
|
+
address component = msg.sender;
|
159
|
+
instance.getInstanceAdmin().setComponentLocked(
|
160
|
+
component,
|
161
|
+
locked);
|
162
|
+
}
|
121
163
|
|
164
|
+
/// @inheritdoc IComponentService
|
122
165
|
function withdrawFees(Amount amount)
|
123
166
|
external
|
124
167
|
virtual
|
168
|
+
restricted()
|
125
169
|
returns (Amount withdrawnAmount)
|
126
170
|
{
|
127
|
-
|
128
|
-
|
129
|
-
|
171
|
+
// checks
|
172
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
173
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
130
174
|
|
131
175
|
// determine withdrawn amount
|
176
|
+
Amount maxAvailableAmount = instanceReader.getFeeAmount(componentNftId);
|
132
177
|
withdrawnAmount = amount;
|
133
|
-
|
134
|
-
|
135
|
-
|
178
|
+
|
179
|
+
// max amount -> withraw all available fees
|
180
|
+
if (amount == AmountLib.max()) {
|
181
|
+
withdrawnAmount = maxAvailableAmount;
|
182
|
+
}
|
183
|
+
|
184
|
+
// check modified withdrawn amount
|
185
|
+
if (withdrawnAmount.eqz()) {
|
136
186
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
137
|
-
} else {
|
138
|
-
|
139
|
-
if (withdrawnAmount.gt(withdrawLimit)) {
|
140
|
-
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
|
141
|
-
}
|
187
|
+
} else if (withdrawnAmount > maxAvailableAmount) {
|
188
|
+
revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, maxAvailableAmount);
|
142
189
|
}
|
143
190
|
|
191
|
+
// effects
|
144
192
|
// decrease fee counters by withdrawnAmount
|
145
|
-
|
193
|
+
_accountingService.decreaseComponentFees(
|
194
|
+
instance.getInstanceStore(),
|
195
|
+
componentNftId,
|
196
|
+
withdrawnAmount);
|
146
197
|
|
147
198
|
// transfer amount to component owner
|
148
199
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
149
|
-
|
150
|
-
|
200
|
+
TokenHandler tokenHandler = instanceReader.getTokenHandler(componentNftId);
|
201
|
+
emit LogComponentServiceComponentFeesWithdrawn(
|
202
|
+
componentNftId,
|
203
|
+
componentOwner,
|
204
|
+
address(tokenHandler.TOKEN()),
|
205
|
+
withdrawnAmount);
|
206
|
+
|
207
|
+
// interactions
|
208
|
+
// transfer amount to component owner
|
209
|
+
tokenHandler.pushFeeToken(
|
210
|
+
componentOwner,
|
211
|
+
withdrawnAmount);
|
151
212
|
}
|
152
213
|
|
153
214
|
|
154
215
|
//-------- product ------------------------------------------------------//
|
155
216
|
|
156
|
-
function registerProduct(address productAddress)
|
217
|
+
function registerProduct(address productAddress, address token)
|
157
218
|
external
|
158
219
|
virtual
|
220
|
+
nonReentrant()
|
159
221
|
onlyComponent(productAddress)
|
160
222
|
returns (NftId productNftId)
|
161
223
|
{
|
@@ -164,18 +226,27 @@ contract ComponentService is
|
|
164
226
|
InstanceStore instanceStore;
|
165
227
|
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
166
228
|
productAddress,
|
167
|
-
PRODUCT()
|
229
|
+
PRODUCT(),
|
230
|
+
token);
|
168
231
|
|
169
232
|
// get product
|
170
233
|
IProductComponent product = IProductComponent(productAddress);
|
234
|
+
|
235
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
236
|
+
// force initialization of linked components with empty values to
|
237
|
+
// ensure no components are linked upon initialization of the product
|
238
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
239
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
240
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
171
241
|
|
172
242
|
// create info
|
173
243
|
instanceStore.createProduct(
|
174
244
|
productNftId,
|
175
|
-
|
245
|
+
initialProductInfo);
|
176
246
|
|
177
|
-
|
178
|
-
|
247
|
+
instanceStore.createFee(
|
248
|
+
productNftId,
|
249
|
+
product.getInitialFeeInfo());
|
179
250
|
}
|
180
251
|
|
181
252
|
|
@@ -185,62 +256,39 @@ contract ComponentService is
|
|
185
256
|
)
|
186
257
|
external
|
187
258
|
virtual
|
259
|
+
nonReentrant()
|
188
260
|
{
|
189
|
-
(NftId productNftId
|
190
|
-
IComponents.
|
261
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
262
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
191
263
|
bool feesChanged = false;
|
192
264
|
|
193
265
|
// update product fee if required
|
194
|
-
if(!FeeLib.eq(
|
195
|
-
_logUpdateFee(productNftId, "ProductFee",
|
196
|
-
|
266
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
267
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
268
|
+
feeInfo.productFee = productFee;
|
197
269
|
feesChanged = true;
|
198
270
|
}
|
199
271
|
|
200
272
|
// update processing fee if required
|
201
|
-
if(!FeeLib.eq(
|
202
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
203
|
-
|
273
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
274
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
275
|
+
feeInfo.processingFee = processingFee;
|
204
276
|
feesChanged = true;
|
205
277
|
}
|
206
278
|
|
207
279
|
if(feesChanged) {
|
208
|
-
instance.getInstanceStore().
|
280
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
209
281
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
210
282
|
}
|
211
283
|
}
|
212
284
|
|
213
|
-
function increaseProductFees(
|
214
|
-
InstanceStore instanceStore,
|
215
|
-
NftId productNftId,
|
216
|
-
Amount feeAmount
|
217
|
-
)
|
218
|
-
external
|
219
|
-
virtual
|
220
|
-
// TODO re-enable once role granting is stable and fixed
|
221
|
-
// restricted()
|
222
|
-
{
|
223
|
-
_checkNftType(productNftId, PRODUCT());
|
224
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
225
|
-
}
|
226
|
-
|
227
|
-
|
228
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
229
|
-
external
|
230
|
-
virtual
|
231
|
-
// TODO re-enable once role granting is stable and fixed
|
232
|
-
// restricted()
|
233
|
-
{
|
234
|
-
_checkNftType(productNftId, PRODUCT());
|
235
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
236
|
-
}
|
237
|
-
|
238
285
|
//-------- distribution -------------------------------------------------//
|
239
286
|
|
240
287
|
/// @dev registers the sending component as a distribution component
|
241
|
-
function _registerDistribution(address distributioAddress)
|
288
|
+
function _registerDistribution(address distributioAddress, address token)
|
242
289
|
internal
|
243
290
|
virtual
|
291
|
+
nonReentrant()
|
244
292
|
returns (NftId distributionNftId)
|
245
293
|
{
|
246
294
|
// register/create component info
|
@@ -250,7 +298,8 @@ contract ComponentService is
|
|
250
298
|
NftId productNftId;
|
251
299
|
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
252
300
|
distributioAddress,
|
253
|
-
DISTRIBUTION()
|
301
|
+
DISTRIBUTION(),
|
302
|
+
token);
|
254
303
|
|
255
304
|
// check product is still expecting a distribution registration
|
256
305
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
@@ -264,10 +313,6 @@ contract ComponentService is
|
|
264
313
|
// set distribution in product info
|
265
314
|
productInfo.distributionNftId = distributionNftId;
|
266
315
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
267
|
-
|
268
|
-
// authorize
|
269
|
-
instanceAdmin.initializeComponentAuthorization(
|
270
|
-
IInstanceLinkedComponent(distributioAddress));
|
271
316
|
}
|
272
317
|
|
273
318
|
|
@@ -278,97 +323,34 @@ contract ComponentService is
|
|
278
323
|
external
|
279
324
|
virtual
|
280
325
|
{
|
281
|
-
(NftId distributionNftId
|
282
|
-
(NftId productNftId, IComponents.
|
326
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
327
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
283
328
|
instance.getInstanceReader(), distributionNftId);
|
284
329
|
bool feesChanged = false;
|
285
330
|
|
286
331
|
// update distributino fee if required
|
287
|
-
if(!FeeLib.eq(
|
288
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
289
|
-
|
332
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
333
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
334
|
+
feeInfo.distributionFee = distributionFee;
|
290
335
|
feesChanged = true;
|
291
336
|
}
|
292
337
|
|
293
338
|
// update min distribution owner fee if required
|
294
|
-
if(!FeeLib.eq(
|
295
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
296
|
-
|
339
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
340
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
341
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
297
342
|
feesChanged = true;
|
298
343
|
}
|
299
344
|
|
300
345
|
if(feesChanged) {
|
301
|
-
instance.getInstanceStore().
|
346
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
302
347
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
303
348
|
}
|
304
349
|
}
|
305
350
|
|
306
|
-
function increaseDistributionBalance(
|
307
|
-
InstanceStore instanceStore,
|
308
|
-
NftId distributionNftId,
|
309
|
-
Amount amount,
|
310
|
-
Amount feeAmount
|
311
|
-
)
|
312
|
-
external
|
313
|
-
virtual
|
314
|
-
// TODO re-enable once role granting is stable and fixed
|
315
|
-
// restricted()
|
316
|
-
{
|
317
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
318
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
319
|
-
}
|
320
|
-
|
321
|
-
|
322
|
-
function decreaseDistributionBalance(
|
323
|
-
InstanceStore instanceStore,
|
324
|
-
NftId distributionNftId,
|
325
|
-
Amount amount,
|
326
|
-
Amount feeAmount
|
327
|
-
)
|
328
|
-
external
|
329
|
-
virtual
|
330
|
-
// TODO re-enable once role granting is stable and fixed
|
331
|
-
// restricted()
|
332
|
-
{
|
333
|
-
_checkNftType(distributionNftId, DISTRIBUTION());
|
334
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
335
|
-
}
|
336
|
-
|
337
|
-
//-------- distributor -------------------------------------------------------//
|
338
|
-
|
339
|
-
function increaseDistributorBalance(
|
340
|
-
InstanceStore instanceStore,
|
341
|
-
NftId distributorNftId,
|
342
|
-
Amount amount,
|
343
|
-
Amount feeAmount
|
344
|
-
)
|
345
|
-
external
|
346
|
-
virtual
|
347
|
-
// TODO re-enable once role granting is stable and fixed
|
348
|
-
// restricted()
|
349
|
-
{
|
350
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
351
|
-
_changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
|
352
|
-
}
|
353
|
-
|
354
|
-
function decreaseDistributorBalance(
|
355
|
-
InstanceStore instanceStore,
|
356
|
-
NftId distributorNftId,
|
357
|
-
Amount amount,
|
358
|
-
Amount feeAmount
|
359
|
-
)
|
360
|
-
external
|
361
|
-
virtual
|
362
|
-
// TODO re-enable once role granting is stable and fixed
|
363
|
-
// restricted()
|
364
|
-
{
|
365
|
-
_checkNftType(distributorNftId, DISTRIBUTOR());
|
366
|
-
_changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
|
367
|
-
}
|
368
|
-
|
369
351
|
//-------- oracle -------------------------------------------------------//
|
370
352
|
|
371
|
-
function _registerOracle(address oracleAddress)
|
353
|
+
function _registerOracle(address oracleAddress, address token)
|
372
354
|
internal
|
373
355
|
virtual
|
374
356
|
returns (NftId oracleNftId)
|
@@ -379,9 +361,10 @@ contract ComponentService is
|
|
379
361
|
InstanceStore instanceStore;
|
380
362
|
NftId productNftId;
|
381
363
|
|
382
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) =_register(
|
364
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
383
365
|
oracleAddress,
|
384
|
-
ORACLE()
|
366
|
+
ORACLE(),
|
367
|
+
token);
|
385
368
|
|
386
369
|
// check product is still expecting an oracle registration
|
387
370
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
@@ -396,15 +379,11 @@ contract ComponentService is
|
|
396
379
|
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
397
380
|
productInfo.numberOfOracles++;
|
398
381
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
399
|
-
|
400
|
-
// authorize
|
401
|
-
instanceAdmin.initializeComponentAuthorization(
|
402
|
-
IInstanceLinkedComponent(oracleAddress));
|
403
382
|
}
|
404
383
|
|
405
384
|
//-------- pool ---------------------------------------------------------//
|
406
385
|
|
407
|
-
function _registerPool(address poolAddress)
|
386
|
+
function _registerPool(address poolAddress, address token)
|
408
387
|
internal
|
409
388
|
virtual
|
410
389
|
returns (NftId poolNftId)
|
@@ -415,9 +394,10 @@ contract ComponentService is
|
|
415
394
|
InstanceStore instanceStore;
|
416
395
|
NftId productNftId;
|
417
396
|
|
418
|
-
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) =_register(
|
397
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
419
398
|
poolAddress,
|
420
|
-
POOL()
|
399
|
+
POOL(),
|
400
|
+
token);
|
421
401
|
|
422
402
|
// check product is still expecting a pool registration
|
423
403
|
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
@@ -434,9 +414,6 @@ contract ComponentService is
|
|
434
414
|
// update pool in product info
|
435
415
|
productInfo.poolNftId = poolNftId;
|
436
416
|
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
437
|
-
|
438
|
-
// authorize
|
439
|
-
instanceAdmin.initializeComponentAuthorization(pool);
|
440
417
|
}
|
441
418
|
|
442
419
|
|
@@ -448,128 +425,44 @@ contract ComponentService is
|
|
448
425
|
external
|
449
426
|
virtual
|
450
427
|
{
|
451
|
-
(NftId poolNftId
|
452
|
-
|
428
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
429
|
+
|
430
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
453
431
|
instance.getInstanceReader(), poolNftId);
|
454
432
|
bool feesChanged = false;
|
455
433
|
|
456
434
|
// update pool fee if required
|
457
|
-
if(!FeeLib.eq(
|
458
|
-
_logUpdateFee(productNftId, "PoolFee",
|
459
|
-
|
435
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
436
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
437
|
+
feeInfo.poolFee = poolFee;
|
460
438
|
feesChanged = true;
|
461
439
|
}
|
462
440
|
|
463
441
|
// update staking fee if required
|
464
|
-
if(!FeeLib.eq(
|
465
|
-
_logUpdateFee(productNftId, "StakingFee",
|
466
|
-
|
442
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
443
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
444
|
+
feeInfo.stakingFee = stakingFee;
|
467
445
|
feesChanged = true;
|
468
446
|
}
|
469
447
|
|
470
448
|
// update performance fee if required
|
471
|
-
if(!FeeLib.eq(
|
472
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
473
|
-
|
449
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
450
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
451
|
+
feeInfo.performanceFee = performanceFee;
|
474
452
|
feesChanged = true;
|
475
453
|
}
|
476
454
|
|
477
455
|
if(feesChanged) {
|
478
|
-
instance.getInstanceStore().
|
456
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
479
457
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
480
458
|
}
|
481
459
|
}
|
482
460
|
|
483
|
-
function increasePoolBalance(
|
484
|
-
InstanceStore instanceStore,
|
485
|
-
NftId poolNftId,
|
486
|
-
Amount amount,
|
487
|
-
Amount feeAmount
|
488
|
-
)
|
489
|
-
public
|
490
|
-
virtual
|
491
|
-
// TODO re-enable once role granting is stable and fixed
|
492
|
-
// restricted()
|
493
|
-
{
|
494
|
-
_checkNftType(poolNftId, POOL());
|
495
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
496
|
-
}
|
497
|
-
|
498
|
-
function decreasePoolBalance(
|
499
|
-
InstanceStore instanceStore,
|
500
|
-
NftId poolNftId,
|
501
|
-
Amount amount,
|
502
|
-
Amount feeAmount
|
503
|
-
)
|
504
|
-
public
|
505
|
-
virtual
|
506
|
-
// TODO re-enable once role granting is stable and fixed
|
507
|
-
// restricted()
|
508
|
-
{
|
509
|
-
_checkNftType(poolNftId, POOL());
|
510
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
511
|
-
}
|
512
|
-
|
513
|
-
//-------- bundle -------------------------------------------------------//
|
514
|
-
|
515
|
-
function increaseBundleBalance(
|
516
|
-
InstanceStore instanceStore,
|
517
|
-
NftId bundleNftId,
|
518
|
-
Amount amount,
|
519
|
-
Amount feeAmount
|
520
|
-
)
|
521
|
-
external
|
522
|
-
virtual
|
523
|
-
// TODO re-enable once role granting is stable and fixed
|
524
|
-
// restricted()
|
525
|
-
{
|
526
|
-
_checkNftType(bundleNftId, BUNDLE());
|
527
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
528
|
-
}
|
529
|
-
|
530
|
-
function decreaseBundleBalance(
|
531
|
-
InstanceStore instanceStore,
|
532
|
-
NftId bundleNftId,
|
533
|
-
Amount amount,
|
534
|
-
Amount feeAmount
|
535
|
-
)
|
536
|
-
external
|
537
|
-
virtual
|
538
|
-
// TODO re-enable once role granting is stable and fixed
|
539
|
-
// restricted()
|
540
|
-
{
|
541
|
-
_checkNftType(bundleNftId, BUNDLE());
|
542
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
543
|
-
}
|
544
|
-
|
545
|
-
|
546
|
-
//-------- internal functions ------------------------------------------//
|
547
|
-
|
548
|
-
function _changeTargetBalance(
|
549
|
-
bool increase,
|
550
|
-
InstanceStore instanceStore,
|
551
|
-
NftId targetNftId,
|
552
|
-
Amount amount,
|
553
|
-
Amount feeAmount
|
554
|
-
)
|
555
|
-
internal
|
556
|
-
virtual
|
557
|
-
{
|
558
|
-
Amount totalAmount = amount + feeAmount;
|
559
|
-
|
560
|
-
if(increase) {
|
561
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
562
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
563
|
-
} else {
|
564
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
565
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
566
|
-
}
|
567
|
-
}
|
568
|
-
|
569
461
|
/// @dev Registers the component represented by the provided address.
|
570
462
|
function _register(
|
571
463
|
address componentAddress, // address of component to register
|
572
|
-
ObjectType requiredType // required type for component for registration
|
464
|
+
ObjectType requiredType, // required type for component for registration
|
465
|
+
address token
|
573
466
|
)
|
574
467
|
internal
|
575
468
|
virtual
|
@@ -597,6 +490,18 @@ contract ComponentService is
|
|
597
490
|
componentAddress,
|
598
491
|
requiredType);
|
599
492
|
|
493
|
+
if (! instance.isTokenRegistryDisabled()) {
|
494
|
+
// check if provided token is whitelisted and active
|
495
|
+
if (!ContractLib.isActiveToken(
|
496
|
+
getRegistry().getTokenRegistryAddress(),
|
497
|
+
token,
|
498
|
+
block.chainid,
|
499
|
+
AccessManagerCloneable(authority()).getRelease())
|
500
|
+
) {
|
501
|
+
revert ErrorComponentServiceTokenInvalid(token);
|
502
|
+
}
|
503
|
+
}
|
504
|
+
|
600
505
|
// get instance supporting contracts (as function return values)
|
601
506
|
instanceReader = instance.getInstanceReader();
|
602
507
|
instanceAdmin = instance.getInstanceAdmin();
|
@@ -612,21 +517,27 @@ contract ComponentService is
|
|
612
517
|
}
|
613
518
|
|
614
519
|
// deploy and wire token handler
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
520
|
+
{
|
521
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
522
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
523
|
+
address(getRegistry()),
|
524
|
+
componentAddress, // initially, component is its own wallet
|
525
|
+
token,
|
526
|
+
address(instanceAdmin.authority()));
|
527
|
+
|
528
|
+
// register component with instance
|
529
|
+
instanceStore.createComponent(
|
530
|
+
componentNftId,
|
531
|
+
componentInfo);
|
532
|
+
}
|
625
533
|
|
626
534
|
// link component contract to nft id
|
627
535
|
component.linkToRegisteredNftId();
|
628
536
|
|
629
|
-
|
537
|
+
// authorize
|
538
|
+
instanceAdmin.initializeComponentAuthorization(componentAddress, requiredType);
|
539
|
+
|
540
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, componentAddress, token, initialOwner);
|
630
541
|
}
|
631
542
|
|
632
543
|
|
@@ -645,7 +556,7 @@ contract ComponentService is
|
|
645
556
|
}
|
646
557
|
|
647
558
|
|
648
|
-
function
|
559
|
+
function _getLinkedFeeInfo(
|
649
560
|
InstanceReader instanceReader,
|
650
561
|
NftId componentNftId
|
651
562
|
)
|
@@ -653,11 +564,11 @@ contract ComponentService is
|
|
653
564
|
view
|
654
565
|
returns(
|
655
566
|
NftId productNftId,
|
656
|
-
IComponents.
|
567
|
+
IComponents.FeeInfo memory info
|
657
568
|
)
|
658
569
|
{
|
659
|
-
productNftId =
|
660
|
-
info = instanceReader.
|
570
|
+
productNftId = getRegistry().getParentNftId(componentNftId);
|
571
|
+
info = instanceReader.getFeeInfo(productNftId);
|
661
572
|
}
|
662
573
|
|
663
574
|
|
@@ -705,9 +616,12 @@ contract ComponentService is
|
|
705
616
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
706
617
|
}
|
707
618
|
|
708
|
-
//
|
619
|
+
// component release matches servie release
|
709
620
|
address parentAddress = registry.getObjectAddress(parentNftId);
|
710
|
-
if (component.getRelease() !=
|
621
|
+
if (component.getRelease() != getRelease()) {
|
622
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), getRelease());
|
623
|
+
// component release matches parent release
|
624
|
+
} else if (component.getRelease() != IRegisterable(parentAddress).getRelease()){
|
711
625
|
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
712
626
|
}
|
713
627
|
|
@@ -735,11 +649,60 @@ contract ComponentService is
|
|
735
649
|
|
736
650
|
// get initial owner and instance
|
737
651
|
initialOwner = info.initialOwner;
|
738
|
-
instance =
|
652
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
653
|
+
}
|
654
|
+
|
655
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
656
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
739
657
|
}
|
740
658
|
|
659
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
660
|
+
internal
|
661
|
+
view
|
662
|
+
returns (
|
663
|
+
NftId componentNftId,
|
664
|
+
IInstance instance
|
665
|
+
)
|
666
|
+
{
|
667
|
+
return _getAndVerifyComponent(expectedType, true); // only active
|
668
|
+
}
|
669
|
+
|
670
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
671
|
+
internal
|
672
|
+
view
|
673
|
+
returns (
|
674
|
+
NftId componentNftId,
|
675
|
+
IInstance instance
|
676
|
+
)
|
677
|
+
{
|
678
|
+
IRegistry.ObjectInfo memory info;
|
679
|
+
address instanceAddress;
|
680
|
+
|
681
|
+
if (expectedType != COMPONENT()) {
|
682
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
683
|
+
getRegistry(),
|
684
|
+
msg.sender, // caller
|
685
|
+
expectedType,
|
686
|
+
isActive);
|
687
|
+
} else {
|
688
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
689
|
+
getRegistry(),
|
690
|
+
msg.sender,
|
691
|
+
isActive);
|
692
|
+
}
|
693
|
+
|
694
|
+
// get component nft id and instance
|
695
|
+
componentNftId = info.nftId;
|
696
|
+
instance = IInstance(instanceAddress);
|
697
|
+
}
|
741
698
|
|
742
699
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
743
700
|
return COMPONENT();
|
744
701
|
}
|
702
|
+
|
703
|
+
function _checkSupportsInterface(address component) internal view {
|
704
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
705
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
706
|
+
}
|
707
|
+
}
|
745
708
|
}
|