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