@etherisc/gif-next 0.0.2-7d58318-324 → 0.0.2-7d7c399-947
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 +46 -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 +163 -389
- 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 +103 -321
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +245 -315
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +125 -123
- 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 +128 -76
- 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 +147 -42
- 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 +919 -315
- 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 +619 -492
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/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 +2 -2
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +114 -340
- 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 +90 -308
- 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 +143 -387
- 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 +434 -201
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +448 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -370
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
- 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 +243 -400
- 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 +435 -212
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
- 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 +318 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
- 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 +455 -318
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- 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 +241 -398
- 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 +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +508 -551
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -125
- 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 +454 -210
- 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 +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -307
- 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 +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +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 +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- 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 +122 -95
- 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 +153 -107
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- 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 +50 -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 +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- 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 +12 -22
- package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
- package/contracts/distribution/Distribution.sol +36 -50
- package/contracts/distribution/DistributionService.sol +121 -116
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +2 -2
- package/contracts/distribution/IDistributionService.sol +16 -14
- 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 +38 -34
- 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 +24 -2
- package/contracts/instance/RiskSet.sol +117 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +24 -25
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -14
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +9 -23
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +19 -3
- package/contracts/pool/BundleService.sol +221 -80
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +33 -18
- package/contracts/pool/IPoolComponent.sol +21 -10
- package/contracts/pool/IPoolService.sol +53 -50
- package/contracts/pool/Pool.sol +150 -116
- package/contracts/pool/PoolService.sol +338 -159
- 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 +13 -44
- package/contracts/product/BasicProductAuthorization.sol +1 -3
- package/contracts/product/ClaimService.sol +427 -135
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -7
- package/contracts/product/IPolicyService.sol +46 -34
- 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 +520 -259
- 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 +160 -89
- 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 -234
- package/contracts/registry/ServiceAuthorizationV3.sol +94 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +71 -125
- package/contracts/shared/ComponentService.sol +428 -350
- 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 -17
- package/contracts/shared/IComponentService.sol +43 -39
- 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/{ERC165.sol → InitializableERC165.sol} +3 -3
- 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 +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- 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 +357 -26
- 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 -59
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +64 -36
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- 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/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +4 -13
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +35 -122
- 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/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- 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 -10
- 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,47 +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
|
-
using AmountLib for Amount;
|
31
|
-
|
32
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
33
|
-
error ErrorComponentServiceNotComponent(address component);
|
34
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
35
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
36
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
37
|
-
error ErrorComponentServiceComponentLocked(address component);
|
38
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
39
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
40
|
-
|
41
38
|
bool private constant INCREASE = true;
|
42
39
|
bool private constant DECREASE = false;
|
43
40
|
|
41
|
+
IAccountingService private _accountingService;
|
44
42
|
IRegistryService private _registryService;
|
45
43
|
IInstanceService private _instanceService;
|
46
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
|
+
|
47
70
|
function _initialize(
|
48
71
|
address owner,
|
49
72
|
bytes memory data
|
@@ -52,61 +75,126 @@ contract ComponentService is
|
|
52
75
|
virtual override
|
53
76
|
initializer()
|
54
77
|
{
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
78
|
+
(
|
79
|
+
address authority,
|
80
|
+
address registry
|
81
|
+
) = abi.decode(data, (address, address));
|
59
82
|
|
60
|
-
|
83
|
+
__Service_init(authority, registry, owner);
|
61
84
|
|
85
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
62
86
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
63
87
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
64
88
|
|
65
|
-
|
89
|
+
_registerInterface(type(IComponentService).interfaceId);
|
66
90
|
}
|
67
91
|
|
68
92
|
//-------- component ----------------------------------------------------//
|
69
93
|
|
70
|
-
function
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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);
|
77
104
|
}
|
78
|
-
|
79
|
-
|
80
|
-
revert ErrorComponentServiceWalletAddressZero();
|
105
|
+
if (componentType == DISTRIBUTION()) {
|
106
|
+
return _registerDistribution(component);
|
81
107
|
}
|
82
|
-
|
83
|
-
|
84
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
108
|
+
if (componentType == ORACLE()) {
|
109
|
+
return _registerOracle(component);
|
85
110
|
}
|
86
111
|
|
87
|
-
|
88
|
-
|
89
|
-
|
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);
|
90
162
|
}
|
91
163
|
|
92
|
-
|
93
|
-
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
|
+
}
|
94
175
|
|
95
|
-
|
96
|
-
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
|
+
}
|
97
185
|
|
98
186
|
function withdrawFees(Amount amount)
|
99
187
|
external
|
100
188
|
virtual
|
101
189
|
returns (Amount withdrawnAmount)
|
102
190
|
{
|
103
|
-
(NftId componentNftId
|
191
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
104
192
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
105
|
-
address componentWallet = info.
|
193
|
+
address componentWallet = info.tokenHandler.getWallet();
|
106
194
|
|
107
195
|
// determine withdrawn amount
|
108
196
|
withdrawnAmount = amount;
|
109
|
-
if (withdrawnAmount.
|
197
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
110
198
|
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
111
199
|
} else if (withdrawnAmount.eqz()) {
|
112
200
|
revert ErrorComponentServiceWithdrawAmountIsZero();
|
@@ -117,50 +205,52 @@ contract ComponentService is
|
|
117
205
|
}
|
118
206
|
}
|
119
207
|
|
120
|
-
// check allowance
|
121
|
-
TokenHandler tokenHandler = info.tokenHandler;
|
122
|
-
IERC20Metadata token = IERC20Metadata(info.token);
|
123
|
-
uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
|
124
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
125
|
-
revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
126
|
-
}
|
127
|
-
|
128
208
|
// decrease fee counters by withdrawnAmount
|
129
|
-
|
209
|
+
_accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
|
130
210
|
|
131
211
|
// transfer amount to component owner
|
132
212
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
133
|
-
|
134
|
-
|
135
|
-
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
|
213
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
214
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
136
215
|
}
|
137
216
|
|
138
217
|
|
139
218
|
//-------- product ------------------------------------------------------//
|
140
219
|
|
141
|
-
function registerProduct()
|
220
|
+
function registerProduct(address productAddress)
|
142
221
|
external
|
143
222
|
virtual
|
223
|
+
nonReentrant()
|
224
|
+
onlyComponent(productAddress)
|
225
|
+
returns (NftId productNftId)
|
144
226
|
{
|
145
|
-
address contractAddress = msg.sender;
|
146
|
-
|
147
227
|
// register/create component setup
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
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);
|
164
254
|
}
|
165
255
|
|
166
256
|
|
@@ -170,68 +260,66 @@ contract ComponentService is
|
|
170
260
|
)
|
171
261
|
external
|
172
262
|
virtual
|
263
|
+
nonReentrant()
|
173
264
|
{
|
174
|
-
(NftId productNftId
|
175
|
-
IComponents.
|
265
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
266
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
176
267
|
bool feesChanged = false;
|
177
268
|
|
178
269
|
// update product fee if required
|
179
|
-
if(!FeeLib.eq(
|
180
|
-
_logUpdateFee(productNftId, "ProductFee",
|
181
|
-
|
270
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
271
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
272
|
+
feeInfo.productFee = productFee;
|
182
273
|
feesChanged = true;
|
183
274
|
}
|
184
275
|
|
185
276
|
// update processing fee if required
|
186
|
-
if(!FeeLib.eq(
|
187
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
188
|
-
|
277
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
278
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
279
|
+
feeInfo.processingFee = processingFee;
|
189
280
|
feesChanged = true;
|
190
281
|
}
|
191
282
|
|
192
283
|
if(feesChanged) {
|
193
|
-
instance.getInstanceStore().
|
284
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
194
285
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
195
286
|
}
|
196
287
|
}
|
197
288
|
|
198
|
-
function increaseProductFees(
|
199
|
-
InstanceStore instanceStore,
|
200
|
-
NftId productNftId,
|
201
|
-
Amount feeAmount
|
202
|
-
)
|
203
|
-
external
|
204
|
-
virtual
|
205
|
-
// TODO re-enable once role granting is stable and fixed
|
206
|
-
// restricted()
|
207
|
-
{
|
208
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
209
|
-
}
|
210
|
-
|
211
|
-
|
212
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
213
|
-
external
|
214
|
-
virtual
|
215
|
-
// TODO re-enable once role granting is stable and fixed
|
216
|
-
// restricted()
|
217
|
-
{
|
218
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
219
|
-
}
|
220
|
-
|
221
289
|
//-------- distribution -------------------------------------------------//
|
222
290
|
|
223
291
|
/// @dev registers the sending component as a distribution component
|
224
|
-
function
|
225
|
-
|
292
|
+
function _registerDistribution(address distributioAddress)
|
293
|
+
internal
|
226
294
|
virtual
|
295
|
+
nonReentrant()
|
296
|
+
returns (NftId distributionNftId)
|
227
297
|
{
|
228
|
-
address contractAddress = msg.sender;
|
229
|
-
|
230
298
|
// register/create component info
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
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));
|
235
323
|
}
|
236
324
|
|
237
325
|
|
@@ -242,102 +330,102 @@ contract ComponentService is
|
|
242
330
|
external
|
243
331
|
virtual
|
244
332
|
{
|
245
|
-
(NftId distributionNftId
|
246
|
-
(NftId productNftId, IComponents.
|
333
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
334
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
247
335
|
instance.getInstanceReader(), distributionNftId);
|
248
336
|
bool feesChanged = false;
|
249
337
|
|
250
338
|
// update distributino fee if required
|
251
|
-
if(!FeeLib.eq(
|
252
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
253
|
-
|
339
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
340
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
341
|
+
feeInfo.distributionFee = distributionFee;
|
254
342
|
feesChanged = true;
|
255
343
|
}
|
256
344
|
|
257
345
|
// update min distribution owner fee if required
|
258
|
-
if(!FeeLib.eq(
|
259
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
260
|
-
|
346
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
347
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
348
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
261
349
|
feesChanged = true;
|
262
350
|
}
|
263
351
|
|
264
352
|
if(feesChanged) {
|
265
|
-
instance.getInstanceStore().
|
353
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
266
354
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
267
355
|
}
|
268
356
|
}
|
269
357
|
|
270
|
-
function increaseDistributionBalance(
|
271
|
-
InstanceStore instanceStore,
|
272
|
-
NftId distributionNftId,
|
273
|
-
Amount amount,
|
274
|
-
Amount feeAmount
|
275
|
-
)
|
276
|
-
external
|
277
|
-
virtual
|
278
|
-
// TODO re-enable once role granting is stable and fixed
|
279
|
-
// restricted()
|
280
|
-
{
|
281
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
282
|
-
}
|
283
|
-
|
284
|
-
|
285
|
-
function decreaseDistributionBalance(
|
286
|
-
InstanceStore instanceStore,
|
287
|
-
NftId distributionNftId,
|
288
|
-
Amount amount,
|
289
|
-
Amount feeAmount
|
290
|
-
)
|
291
|
-
external
|
292
|
-
virtual
|
293
|
-
// TODO re-enable once role granting is stable and fixed
|
294
|
-
// restricted()
|
295
|
-
{
|
296
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
297
|
-
}
|
298
|
-
|
299
358
|
//-------- oracle -------------------------------------------------------//
|
300
359
|
|
301
|
-
function
|
302
|
-
|
360
|
+
function _registerOracle(address oracleAddress)
|
361
|
+
internal
|
303
362
|
virtual
|
363
|
+
returns (NftId oracleNftId)
|
304
364
|
{
|
305
|
-
address contractAddress = msg.sender;
|
306
|
-
|
307
365
|
// register/create component setup
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
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));
|
316
392
|
}
|
317
393
|
|
318
394
|
//-------- pool ---------------------------------------------------------//
|
319
395
|
|
320
|
-
function
|
321
|
-
|
396
|
+
function _registerPool(address poolAddress)
|
397
|
+
internal
|
322
398
|
virtual
|
399
|
+
returns (NftId poolNftId)
|
323
400
|
{
|
324
|
-
address contractAddress = msg.sender;
|
325
|
-
|
326
401
|
// register/create component setup
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
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
|
+
}
|
335
416
|
|
336
417
|
// create info
|
418
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
337
419
|
instanceStore.createPool(
|
338
|
-
|
339
|
-
|
340
|
-
|
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);
|
341
429
|
}
|
342
430
|
|
343
431
|
|
@@ -349,188 +437,102 @@ contract ComponentService is
|
|
349
437
|
external
|
350
438
|
virtual
|
351
439
|
{
|
352
|
-
(NftId poolNftId
|
353
|
-
|
440
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
441
|
+
|
442
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
354
443
|
instance.getInstanceReader(), poolNftId);
|
355
444
|
bool feesChanged = false;
|
356
445
|
|
357
446
|
// update pool fee if required
|
358
|
-
if(!FeeLib.eq(
|
359
|
-
_logUpdateFee(productNftId, "PoolFee",
|
360
|
-
|
447
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
448
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
449
|
+
feeInfo.poolFee = poolFee;
|
361
450
|
feesChanged = true;
|
362
451
|
}
|
363
452
|
|
364
453
|
// update staking fee if required
|
365
|
-
if(!FeeLib.eq(
|
366
|
-
_logUpdateFee(productNftId, "StakingFee",
|
367
|
-
|
454
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
455
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
456
|
+
feeInfo.stakingFee = stakingFee;
|
368
457
|
feesChanged = true;
|
369
458
|
}
|
370
459
|
|
371
460
|
// update performance fee if required
|
372
|
-
if(!FeeLib.eq(
|
373
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
374
|
-
|
461
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
462
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
463
|
+
feeInfo.performanceFee = performanceFee;
|
375
464
|
feesChanged = true;
|
376
465
|
}
|
377
466
|
|
378
467
|
if(feesChanged) {
|
379
|
-
instance.getInstanceStore().
|
468
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
380
469
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
381
470
|
}
|
382
471
|
}
|
383
472
|
|
384
|
-
|
385
|
-
InstanceStore instanceStore,
|
386
|
-
NftId poolNftId,
|
387
|
-
Amount amount,
|
388
|
-
Amount feeAmount
|
389
|
-
)
|
390
|
-
public
|
391
|
-
virtual
|
392
|
-
// TODO re-enable once role granting is stable and fixed
|
393
|
-
// restricted()
|
394
|
-
{
|
395
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
396
|
-
}
|
397
|
-
|
398
|
-
function decreasePoolBalance(
|
399
|
-
InstanceStore instanceStore,
|
400
|
-
NftId poolNftId,
|
401
|
-
Amount amount,
|
402
|
-
Amount feeAmount
|
403
|
-
)
|
404
|
-
public
|
405
|
-
virtual
|
406
|
-
// TODO re-enable once role granting is stable and fixed
|
407
|
-
// restricted()
|
408
|
-
{
|
409
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
410
|
-
}
|
411
|
-
|
412
|
-
//-------- bundle -------------------------------------------------------//
|
413
|
-
|
414
|
-
function increaseBundleBalance(
|
415
|
-
InstanceStore instanceStore,
|
416
|
-
NftId bundleNftId,
|
417
|
-
Amount amount,
|
418
|
-
Amount feeAmount
|
419
|
-
)
|
420
|
-
external
|
421
|
-
virtual
|
422
|
-
// TODO re-enable once role granting is stable and fixed
|
423
|
-
// restricted()
|
424
|
-
{
|
425
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
426
|
-
}
|
427
|
-
|
428
|
-
function decreaseBundleBalance(
|
429
|
-
InstanceStore instanceStore,
|
430
|
-
NftId bundleNftId,
|
431
|
-
Amount amount,
|
432
|
-
Amount feeAmount
|
433
|
-
)
|
434
|
-
external
|
435
|
-
virtual
|
436
|
-
// TODO re-enable once role granting is stable and fixed
|
437
|
-
// restricted()
|
438
|
-
{
|
439
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
440
|
-
}
|
441
|
-
|
442
|
-
|
443
|
-
//-------- internal functions ------------------------------------------//
|
444
|
-
|
445
|
-
function _changeTargetBalance(
|
446
|
-
bool increase,
|
447
|
-
InstanceStore instanceStore,
|
448
|
-
NftId targetNftId,
|
449
|
-
Amount amount,
|
450
|
-
Amount feeAmount
|
451
|
-
)
|
452
|
-
internal
|
453
|
-
virtual
|
454
|
-
{
|
455
|
-
Amount totalAmount = amount + feeAmount;
|
456
|
-
|
457
|
-
if(increase) {
|
458
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
459
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
460
|
-
} else {
|
461
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
462
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
463
|
-
}
|
464
|
-
}
|
465
|
-
|
466
|
-
/// @dev registers the component represented by the provided address
|
473
|
+
/// @dev Registers the component represented by the provided address.
|
467
474
|
function _register(
|
468
475
|
address componentAddress, // address of component to register
|
469
|
-
ObjectType requiredType
|
470
|
-
RoleId requiredRole // role required for comonent owner for registration
|
476
|
+
ObjectType requiredType // required type for component for registration
|
471
477
|
)
|
472
478
|
internal
|
473
479
|
virtual
|
474
480
|
returns (
|
475
481
|
InstanceReader instanceReader,
|
482
|
+
InstanceAdmin instanceAdmin,
|
476
483
|
InstanceStore instanceStore,
|
484
|
+
NftId parentNftId,
|
477
485
|
NftId componentNftId
|
478
486
|
)
|
479
487
|
{
|
488
|
+
NftId instanceNftId;
|
489
|
+
IInstance instance;
|
490
|
+
IInstanceLinkedComponent component;
|
491
|
+
address initialOwner;
|
492
|
+
|
480
493
|
(
|
481
|
-
|
482
|
-
|
483
|
-
|
494
|
+
instanceNftId,
|
495
|
+
instance,
|
496
|
+
parentNftId,
|
497
|
+
component,
|
498
|
+
initialOwner
|
484
499
|
) = _getAndVerifyRegisterableComponent(
|
500
|
+
getRegistry(),
|
485
501
|
componentAddress,
|
486
|
-
requiredType
|
487
|
-
requiredRole);
|
488
|
-
|
489
|
-
// register component with registry
|
490
|
-
componentNftId = _registryService.registerComponent(
|
491
|
-
component,
|
492
|
-
requiredType,
|
493
|
-
owner).nftId;
|
502
|
+
requiredType);
|
494
503
|
|
495
|
-
|
496
|
-
|
497
|
-
// setup initial component authorization
|
498
|
-
_instanceService.initializeAuthorization(
|
499
|
-
instance.getNftId(),
|
500
|
-
component);
|
501
|
-
|
502
|
-
// save amended component info with instance
|
504
|
+
// get instance supporting contracts (as function return values)
|
503
505
|
instanceReader = instance.getInstanceReader();
|
506
|
+
instanceAdmin = instance.getInstanceAdmin();
|
504
507
|
instanceStore = instance.getInstanceStore();
|
505
508
|
|
506
|
-
|
507
|
-
|
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
|
+
}
|
508
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
|
509
528
|
instanceStore.createComponent(
|
510
|
-
|
529
|
+
componentNftId,
|
511
530
|
componentInfo);
|
512
531
|
|
513
|
-
//
|
514
|
-
|
515
|
-
|
532
|
+
// link component contract to nft id
|
533
|
+
component.linkToRegisteredNftId();
|
516
534
|
|
517
|
-
|
518
|
-
function _linkToProduct(
|
519
|
-
InstanceReader instanceReader,
|
520
|
-
InstanceStore instanceStore,
|
521
|
-
NftId componentNftId,
|
522
|
-
NftId productNftId
|
523
|
-
)
|
524
|
-
internal
|
525
|
-
{
|
526
|
-
// only link components that are registered
|
527
|
-
if(componentNftId.eqz()) {
|
528
|
-
return;
|
529
|
-
}
|
530
|
-
|
531
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
532
|
-
componentInfo.productNftId = productNftId;
|
533
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
535
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
534
536
|
}
|
535
537
|
|
536
538
|
|
@@ -549,13 +551,7 @@ contract ComponentService is
|
|
549
551
|
}
|
550
552
|
|
551
553
|
|
552
|
-
function
|
553
|
-
selectors = new bytes4[](1);
|
554
|
-
selectors[0] = selector;
|
555
|
-
}
|
556
|
-
|
557
|
-
|
558
|
-
function _getLinkedProductInfo(
|
554
|
+
function _getLinkedFeeInfo(
|
559
555
|
InstanceReader instanceReader,
|
560
556
|
NftId componentNftId
|
561
557
|
)
|
@@ -563,60 +559,142 @@ contract ComponentService is
|
|
563
559
|
view
|
564
560
|
returns(
|
565
561
|
NftId productNftId,
|
566
|
-
IComponents.
|
562
|
+
IComponents.FeeInfo memory info
|
567
563
|
)
|
568
564
|
{
|
569
|
-
productNftId =
|
570
|
-
info = instanceReader.
|
565
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
566
|
+
info = instanceReader.getFeeInfo(productNftId);
|
571
567
|
}
|
572
568
|
|
573
569
|
|
574
|
-
/// @dev
|
575
|
-
///
|
576
|
-
/// - 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
|
577
573
|
/// - the component contract does not support IInstanceLinkedComponent
|
578
574
|
/// - the component type does not match with the required type
|
579
|
-
/// - the
|
575
|
+
/// - the component has already been registered
|
580
576
|
function _getAndVerifyRegisterableComponent(
|
577
|
+
IRegistry registry,
|
581
578
|
address componentAddress,
|
582
|
-
ObjectType requiredType
|
583
|
-
RoleId requiredRole
|
579
|
+
ObjectType requiredType
|
584
580
|
)
|
585
581
|
internal
|
586
582
|
view
|
587
583
|
returns (
|
584
|
+
NftId instanceNftId,
|
588
585
|
IInstance instance,
|
586
|
+
NftId parentNftId,
|
589
587
|
IInstanceLinkedComponent component,
|
590
|
-
address
|
588
|
+
address initialOwner
|
591
589
|
)
|
592
590
|
{
|
593
|
-
// check
|
594
|
-
|
595
|
-
if(
|
596
|
-
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);
|
597
595
|
}
|
598
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
|
+
|
599
602
|
// check component is of required type
|
603
|
+
component = IInstanceLinkedComponent(componentAddress);
|
600
604
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
601
605
|
if(info.objectType != requiredType) {
|
602
606
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
603
607
|
}
|
604
608
|
|
605
609
|
// check component has not already been registered
|
606
|
-
if (getRegistry().
|
610
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
607
611
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
608
612
|
}
|
609
613
|
|
610
|
-
// check
|
611
|
-
|
612
|
-
|
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
|
+
}
|
619
|
+
|
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);
|
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
|
+
}
|
613
661
|
|
614
|
-
|
615
|
-
|
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);
|
616
684
|
}
|
685
|
+
|
686
|
+
// get component nft id and instance
|
687
|
+
componentNftId = info.nftId;
|
688
|
+
instance = IInstance(instanceAddress);
|
617
689
|
}
|
618
690
|
|
619
691
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
620
692
|
return COMPONENT();
|
621
693
|
}
|
694
|
+
|
695
|
+
function _checkSupportsInterface(address component) internal view {
|
696
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
697
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
698
|
+
}
|
699
|
+
}
|
622
700
|
}
|