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