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