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