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