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