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