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