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