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