@etherisc/gif-next 0.0.2-d696c44-627 → 0.0.2-d6a50e7-658
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 +46 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -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 +158 -70
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- 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 +97 -37
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +173 -375
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +123 -317
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +336 -229
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +143 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +135 -139
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +198 -33
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2040 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2408 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -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 +130 -61
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +165 -157
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +317 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -84
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +919 -315
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +619 -492
- 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 +46 -5
- 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/IAccess.sol/IAccess.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +139 -335
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- 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 +128 -126
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +115 -303
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +162 -387
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +434 -201
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +163 -97
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +270 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +143 -195
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +448 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +128 -370
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +569 -396
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -91
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -396
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +435 -212
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +145 -107
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +318 -8
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +361 -113
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +250 -198
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +57 -4
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +455 -318
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +230 -312
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +256 -394
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +637 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +724 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +315 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- 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/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +521 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +275 -160
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1795 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +412 -246
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +559 -558
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +137 -121
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- 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 +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +492 -212
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +117 -126
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
- 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 +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +104 -303
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +697 -25
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +55 -23
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +100 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +98 -84
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +153 -107
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- 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 +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- 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 +7 -2
- 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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- 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 +118 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +3 -3
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
- 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 +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +192 -124
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +10 -6
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +12 -22
- package/contracts/distribution/BasicDistributionAuthorization.sol +6 -2
- package/contracts/distribution/Distribution.sol +37 -50
- package/contracts/distribution/DistributionService.sol +152 -97
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +6 -3
- package/contracts/distribution/IDistributionService.sol +23 -8
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +438 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +370 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +16 -36
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +47 -66
- package/contracts/instance/InstanceAdmin.sol +133 -73
- package/contracts/instance/InstanceAuthorizationV3.sol +55 -32
- package/contracts/instance/InstanceReader.sol +218 -27
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +24 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -22
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +22 -3
- package/contracts/pool/BundleService.sol +226 -97
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +33 -18
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +53 -50
- package/contracts/pool/Pool.sol +150 -116
- package/contracts/pool/PoolService.sol +343 -179
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +83 -78
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +3 -2
- package/contracts/product/ClaimService.sol +425 -159
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -7
- package/contracts/product/IPolicyService.sol +46 -34
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +28 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +520 -259
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +6 -9
- package/contracts/product/Product.sol +160 -89
- package/contracts/product/RiskService.sol +151 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +58 -28
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +353 -203
- package/contracts/registry/RegistryAdmin.sol +161 -182
- package/contracts/registry/RegistryService.sol +41 -66
- package/contracts/registry/RegistryServiceManager.sol +5 -5
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +258 -234
- package/contracts/registry/ServiceAuthorizationV3.sol +94 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +71 -126
- package/contracts/shared/ComponentService.sol +441 -358
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +252 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +47 -39
- package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +4 -6
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +80 -34
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -11
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +18 -36
- package/contracts/shared/TokenHandler.sol +357 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +12 -6
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +85 -70
- package/contracts/staking/StakingManager.sol +10 -11
- package/contracts/staking/StakingReader.sol +17 -13
- package/contracts/staking/StakingService.sol +64 -36
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +5 -15
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +36 -17
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +35 -4
- package/contracts/type/RoleId.sol +4 -13
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +35 -122
- package/contracts/type/Version.sol +15 -5
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -37
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +4 -3
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductService.sol +0 -124
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
- /package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +0 -0
@@ -1,48 +1,72 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
6
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
7
4
|
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
8
|
-
|
9
|
-
import {
|
10
|
-
import {
|
11
|
-
import {IInstance} from "../instance/IInstance.sol";
|
12
|
-
import {NftId} from "../type/NftId.sol";
|
13
|
-
import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
14
|
-
import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
|
15
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
5
|
+
|
6
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
|
+
import {IComponent} from "../shared/IComponent.sol";
|
16
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
17
9
|
import {IComponentService} from "./IComponentService.sol";
|
10
|
+
import {IInstance} from "../instance/IInstance.sol";
|
11
|
+
import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
|
12
|
+
import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
|
13
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
14
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
18
15
|
import {IInstanceService} from "../instance/IInstanceService.sol";
|
19
16
|
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
20
17
|
import {IProductComponent} from "../product/IProductComponent.sol";
|
21
|
-
import {
|
22
|
-
import {
|
23
|
-
import {
|
18
|
+
import {IRegisterable} from "../shared/IRegisterable.sol";
|
19
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
20
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
21
|
+
|
22
|
+
import {Amount, AmountLib} from "../type/Amount.sol";
|
23
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
24
|
+
import {Fee, FeeLib} from "../type/Fee.sol";
|
25
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
26
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
27
|
+
import {ObjectType, ACCOUNTING, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
|
28
|
+
import {Service} from "../shared/Service.sol";
|
29
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
30
|
+
import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
|
31
|
+
import {VersionPart} from "../type/Version.sol";
|
32
|
+
|
24
33
|
|
25
34
|
contract ComponentService is
|
26
|
-
|
35
|
+
Service,
|
27
36
|
IComponentService
|
28
37
|
{
|
29
|
-
using AmountLib for Amount;
|
30
|
-
|
31
|
-
error ErrorComponentServiceAlreadyRegistered(address component);
|
32
|
-
error ErrorComponentServiceNotComponent(address component);
|
33
|
-
error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
|
34
|
-
error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
|
35
|
-
error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
|
36
|
-
error ErrorComponentServiceComponentLocked(address component);
|
37
|
-
error ErrorComponentServiceSenderNotService(address sender);
|
38
|
-
error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
|
39
|
-
|
40
38
|
bool private constant INCREASE = true;
|
41
39
|
bool private constant DECREASE = false;
|
42
40
|
|
41
|
+
IAccountingService private _accountingService;
|
43
42
|
IRegistryService private _registryService;
|
44
43
|
IInstanceService private _instanceService;
|
45
44
|
|
45
|
+
modifier onlyComponent(address component) {
|
46
|
+
_checkSupportsInterface(component);
|
47
|
+
_;
|
48
|
+
}
|
49
|
+
|
50
|
+
modifier onlyInstance() {
|
51
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
52
|
+
if (instanceNftId.eqz()) {
|
53
|
+
revert ErrorComponentServiceNotRegistered(msg.sender);
|
54
|
+
}
|
55
|
+
|
56
|
+
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
57
|
+
if (objectType != INSTANCE()) {
|
58
|
+
revert ErrorComponentServiceNotInstance(msg.sender, objectType);
|
59
|
+
}
|
60
|
+
|
61
|
+
VersionPart instanceVersion = IInstance(msg.sender).getRelease();
|
62
|
+
if (instanceVersion != getVersion().toMajorPart()) {
|
63
|
+
revert ErrorComponentServiceInstanceVersionMismatch(msg.sender, instanceVersion);
|
64
|
+
}
|
65
|
+
|
66
|
+
_;
|
67
|
+
}
|
68
|
+
|
69
|
+
|
46
70
|
function _initialize(
|
47
71
|
address owner,
|
48
72
|
bytes memory data
|
@@ -51,62 +75,129 @@ contract ComponentService is
|
|
51
75
|
virtual override
|
52
76
|
initializer()
|
53
77
|
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
78
|
+
(
|
79
|
+
address authority,
|
80
|
+
address registry
|
81
|
+
) = abi.decode(data, (address, address));
|
58
82
|
|
59
|
-
|
83
|
+
__Service_init(authority, registry, owner);
|
60
84
|
|
85
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
61
86
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
62
87
|
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
63
88
|
|
64
|
-
|
89
|
+
_registerInterface(type(IComponentService).interfaceId);
|
65
90
|
}
|
66
91
|
|
67
92
|
//-------- component ----------------------------------------------------//
|
68
93
|
|
69
|
-
function
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
94
|
+
function registerComponent(address component)
|
95
|
+
external
|
96
|
+
virtual
|
97
|
+
onlyComponent(component)
|
98
|
+
returns (NftId componentNftId)
|
99
|
+
{
|
100
|
+
// type specific registration
|
101
|
+
ObjectType componentType = IInstanceLinkedComponent(component).getInitialInfo().objectType;
|
102
|
+
if (componentType == POOL()) {
|
103
|
+
return _registerPool(component);
|
76
104
|
}
|
77
|
-
|
78
|
-
|
79
|
-
revert ErrorComponentServiceWalletAddressZero();
|
105
|
+
if (componentType == DISTRIBUTION()) {
|
106
|
+
return _registerDistribution(component);
|
80
107
|
}
|
81
|
-
|
82
|
-
|
83
|
-
revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
|
108
|
+
if (componentType == ORACLE()) {
|
109
|
+
return _registerOracle(component);
|
84
110
|
}
|
85
111
|
|
86
|
-
|
87
|
-
|
88
|
-
|
112
|
+
// fail
|
113
|
+
revert ErrorComponentServiceTypeNotSupported(component, componentType);
|
114
|
+
}
|
115
|
+
|
116
|
+
function approveTokenHandler(
|
117
|
+
IERC20Metadata token,
|
118
|
+
Amount amount
|
119
|
+
)
|
120
|
+
external
|
121
|
+
virtual
|
122
|
+
{
|
123
|
+
// checks
|
124
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
125
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
126
|
+
componentNftId).tokenHandler;
|
127
|
+
|
128
|
+
// effects
|
129
|
+
tokenHandler.approve(token, amount);
|
89
130
|
}
|
90
131
|
|
91
|
-
// TODO implement
|
92
|
-
function lock() external virtual {}
|
93
132
|
|
94
|
-
|
95
|
-
|
133
|
+
function approveStakingTokenHandler(
|
134
|
+
IERC20Metadata token,
|
135
|
+
Amount amount
|
136
|
+
)
|
137
|
+
external
|
138
|
+
virtual
|
139
|
+
{
|
140
|
+
// checks
|
141
|
+
ContractLib.getAndVerifyStaking(
|
142
|
+
getRegistry(),
|
143
|
+
msg.sender); // only active
|
144
|
+
|
145
|
+
// effects
|
146
|
+
TokenHandler tokenHandler = IComponent(msg.sender).getTokenHandler();
|
147
|
+
tokenHandler.approve(token, amount);
|
148
|
+
}
|
149
|
+
|
96
150
|
|
97
|
-
function
|
151
|
+
function setWallet(address newWallet)
|
152
|
+
external
|
153
|
+
virtual
|
154
|
+
{
|
155
|
+
// checks
|
156
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
157
|
+
TokenHandler tokenHandler = instance.getInstanceReader().getComponentInfo(
|
158
|
+
componentNftId).tokenHandler;
|
159
|
+
|
160
|
+
// effects
|
161
|
+
tokenHandler.setWallet(newWallet);
|
162
|
+
}
|
163
|
+
|
164
|
+
/// @inheritdoc IComponentService
|
165
|
+
function setLockedFromInstance(address componentAddress, bool locked)
|
166
|
+
external
|
167
|
+
virtual
|
168
|
+
onlyInstance()
|
169
|
+
{
|
170
|
+
address instanceAddress = msg.sender;
|
171
|
+
// NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
172
|
+
IInstance instance = IInstance(instanceAddress);
|
173
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
174
|
+
}
|
175
|
+
|
176
|
+
/// @inheritdoc IComponentService
|
177
|
+
function setLockedFromComponent(address componentAddress, bool locked)
|
178
|
+
external
|
179
|
+
virtual
|
180
|
+
onlyComponent(msg.sender)
|
181
|
+
{
|
182
|
+
(, IInstance instance) = _getAndVerifyComponent(COMPONENT(), false);
|
183
|
+
_setLocked(instance.getInstanceAdmin(), componentAddress, locked);
|
184
|
+
}
|
185
|
+
|
186
|
+
function withdrawFees(Amount amount)
|
98
187
|
external
|
99
188
|
virtual
|
100
189
|
returns (Amount withdrawnAmount)
|
101
190
|
{
|
102
|
-
(NftId componentNftId
|
191
|
+
(NftId componentNftId, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
|
103
192
|
IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
|
104
|
-
address componentWallet = info.
|
193
|
+
address componentWallet = info.tokenHandler.getWallet();
|
105
194
|
|
106
|
-
// determine
|
107
|
-
withdrawnAmount =
|
108
|
-
if (withdrawnAmount.
|
195
|
+
// determine withdrawn amount
|
196
|
+
withdrawnAmount = amount;
|
197
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
109
198
|
withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
|
199
|
+
} else if (withdrawnAmount.eqz()) {
|
200
|
+
revert ErrorComponentServiceWithdrawAmountIsZero();
|
110
201
|
} else {
|
111
202
|
Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
|
112
203
|
if (withdrawnAmount.gt(withdrawLimit)) {
|
@@ -114,48 +205,52 @@ contract ComponentService is
|
|
114
205
|
}
|
115
206
|
}
|
116
207
|
|
117
|
-
// check allowance
|
118
|
-
TokenHandler tokenHandler = info.tokenHandler;
|
119
|
-
IERC20Metadata token = IERC20Metadata(info.token);
|
120
|
-
uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
|
121
|
-
if (tokenAllowance < withdrawnAmount.toInt()) {
|
122
|
-
revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
|
123
|
-
}
|
124
|
-
|
125
208
|
// decrease fee counters by withdrawnAmount
|
126
|
-
|
209
|
+
_accountingService.decreaseComponentFees(instance.getInstanceStore(), componentNftId, withdrawnAmount);
|
127
210
|
|
128
211
|
// transfer amount to component owner
|
129
212
|
address componentOwner = getRegistry().ownerOf(componentNftId);
|
130
|
-
|
213
|
+
emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
|
214
|
+
info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
|
131
215
|
}
|
132
216
|
|
133
217
|
|
134
218
|
//-------- product ------------------------------------------------------//
|
135
219
|
|
136
|
-
function registerProduct()
|
220
|
+
function registerProduct(address productAddress)
|
137
221
|
external
|
138
222
|
virtual
|
223
|
+
nonReentrant()
|
224
|
+
onlyComponent(productAddress)
|
225
|
+
returns (NftId productNftId)
|
139
226
|
{
|
140
|
-
address contractAddress = msg.sender;
|
141
|
-
|
142
227
|
// register/create component setup
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
228
|
+
InstanceAdmin instanceAdmin;
|
229
|
+
InstanceStore instanceStore;
|
230
|
+
(, instanceAdmin, instanceStore,, productNftId) = _register(
|
231
|
+
productAddress,
|
232
|
+
PRODUCT());
|
233
|
+
|
234
|
+
// get product
|
235
|
+
IProductComponent product = IProductComponent(productAddress);
|
236
|
+
|
237
|
+
IComponents.ProductInfo memory initialProductInfo = product.getInitialProductInfo();
|
238
|
+
// force initialization of linked components with empty values to
|
239
|
+
// ensure no components are linked upon initialization of the product
|
240
|
+
initialProductInfo.poolNftId = NftIdLib.zero();
|
241
|
+
initialProductInfo.distributionNftId = NftIdLib.zero();
|
242
|
+
initialProductInfo.oracleNftId = new NftId[](initialProductInfo.expectedNumberOfOracles);
|
243
|
+
|
244
|
+
// create info
|
245
|
+
instanceStore.createProduct(
|
246
|
+
productNftId,
|
247
|
+
initialProductInfo);
|
248
|
+
instanceStore.createFee(
|
249
|
+
productNftId,
|
250
|
+
product.getInitialFeeInfo());
|
251
|
+
|
252
|
+
// authorize
|
253
|
+
instanceAdmin.initializeComponentAuthorization(product);
|
159
254
|
}
|
160
255
|
|
161
256
|
|
@@ -165,68 +260,66 @@ contract ComponentService is
|
|
165
260
|
)
|
166
261
|
external
|
167
262
|
virtual
|
263
|
+
nonReentrant()
|
168
264
|
{
|
169
|
-
(NftId productNftId
|
170
|
-
IComponents.
|
265
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
266
|
+
IComponents.FeeInfo memory feeInfo = instance.getInstanceReader().getFeeInfo(productNftId);
|
171
267
|
bool feesChanged = false;
|
172
268
|
|
173
269
|
// update product fee if required
|
174
|
-
if(!FeeLib.eq(
|
175
|
-
_logUpdateFee(productNftId, "ProductFee",
|
176
|
-
|
270
|
+
if(!FeeLib.eq(feeInfo.productFee, productFee)) {
|
271
|
+
_logUpdateFee(productNftId, "ProductFee", feeInfo.productFee, productFee);
|
272
|
+
feeInfo.productFee = productFee;
|
177
273
|
feesChanged = true;
|
178
274
|
}
|
179
275
|
|
180
276
|
// update processing fee if required
|
181
|
-
if(!FeeLib.eq(
|
182
|
-
_logUpdateFee(productNftId, "ProcessingFee",
|
183
|
-
|
277
|
+
if(!FeeLib.eq(feeInfo.processingFee, processingFee)) {
|
278
|
+
_logUpdateFee(productNftId, "ProcessingFee", feeInfo.processingFee, processingFee);
|
279
|
+
feeInfo.processingFee = processingFee;
|
184
280
|
feesChanged = true;
|
185
281
|
}
|
186
282
|
|
187
283
|
if(feesChanged) {
|
188
|
-
instance.getInstanceStore().
|
284
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
189
285
|
emit LogComponentServiceProductFeesUpdated(productNftId);
|
190
286
|
}
|
191
287
|
}
|
192
288
|
|
193
|
-
function increaseProductFees(
|
194
|
-
InstanceStore instanceStore,
|
195
|
-
NftId productNftId,
|
196
|
-
Amount feeAmount
|
197
|
-
)
|
198
|
-
external
|
199
|
-
virtual
|
200
|
-
// TODO re-enable once role granting is stable and fixed
|
201
|
-
// restricted()
|
202
|
-
{
|
203
|
-
_changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
204
|
-
}
|
205
|
-
|
206
|
-
|
207
|
-
function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
|
208
|
-
external
|
209
|
-
virtual
|
210
|
-
// TODO re-enable once role granting is stable and fixed
|
211
|
-
// restricted()
|
212
|
-
{
|
213
|
-
_changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
|
214
|
-
}
|
215
|
-
|
216
289
|
//-------- distribution -------------------------------------------------//
|
217
290
|
|
218
291
|
/// @dev registers the sending component as a distribution component
|
219
|
-
function
|
220
|
-
|
292
|
+
function _registerDistribution(address distributioAddress)
|
293
|
+
internal
|
221
294
|
virtual
|
295
|
+
nonReentrant()
|
296
|
+
returns (NftId distributionNftId)
|
222
297
|
{
|
223
|
-
address contractAddress = msg.sender;
|
224
|
-
|
225
298
|
// register/create component info
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
299
|
+
InstanceReader instanceReader;
|
300
|
+
InstanceAdmin instanceAdmin;
|
301
|
+
InstanceStore instanceStore;
|
302
|
+
NftId productNftId;
|
303
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, distributionNftId) = _register(
|
304
|
+
distributioAddress,
|
305
|
+
DISTRIBUTION());
|
306
|
+
|
307
|
+
// check product is still expecting a distribution registration
|
308
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
309
|
+
if (!productInfo.hasDistribution) {
|
310
|
+
revert ErrorProductServiceNoDistributionExpected(productNftId);
|
311
|
+
}
|
312
|
+
if (productInfo.distributionNftId.gtz()) {
|
313
|
+
revert ErrorProductServiceDistributionAlreadyRegistered(productNftId, productInfo.distributionNftId);
|
314
|
+
}
|
315
|
+
|
316
|
+
// set distribution in product info
|
317
|
+
productInfo.distributionNftId = distributionNftId;
|
318
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
319
|
+
|
320
|
+
// authorize
|
321
|
+
instanceAdmin.initializeComponentAuthorization(
|
322
|
+
IInstanceLinkedComponent(distributioAddress));
|
230
323
|
}
|
231
324
|
|
232
325
|
|
@@ -237,102 +330,102 @@ contract ComponentService is
|
|
237
330
|
external
|
238
331
|
virtual
|
239
332
|
{
|
240
|
-
(NftId distributionNftId
|
241
|
-
(NftId productNftId, IComponents.
|
333
|
+
(NftId distributionNftId, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
|
334
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
242
335
|
instance.getInstanceReader(), distributionNftId);
|
243
336
|
bool feesChanged = false;
|
244
337
|
|
245
338
|
// update distributino fee if required
|
246
|
-
if(!FeeLib.eq(
|
247
|
-
_logUpdateFee(productNftId, "DistributionFee",
|
248
|
-
|
339
|
+
if(!FeeLib.eq(feeInfo.distributionFee, distributionFee)) {
|
340
|
+
_logUpdateFee(productNftId, "DistributionFee", feeInfo.distributionFee, distributionFee);
|
341
|
+
feeInfo.distributionFee = distributionFee;
|
249
342
|
feesChanged = true;
|
250
343
|
}
|
251
344
|
|
252
345
|
// update min distribution owner fee if required
|
253
|
-
if(!FeeLib.eq(
|
254
|
-
_logUpdateFee(productNftId, "MinDistributionOwnerFee",
|
255
|
-
|
346
|
+
if(!FeeLib.eq(feeInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
|
347
|
+
_logUpdateFee(productNftId, "MinDistributionOwnerFee", feeInfo.minDistributionOwnerFee, minDistributionOwnerFee);
|
348
|
+
feeInfo.minDistributionOwnerFee = minDistributionOwnerFee;
|
256
349
|
feesChanged = true;
|
257
350
|
}
|
258
351
|
|
259
352
|
if(feesChanged) {
|
260
|
-
instance.getInstanceStore().
|
353
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
261
354
|
emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
|
262
355
|
}
|
263
356
|
}
|
264
357
|
|
265
|
-
function increaseDistributionBalance(
|
266
|
-
InstanceStore instanceStore,
|
267
|
-
NftId distributionNftId,
|
268
|
-
Amount amount,
|
269
|
-
Amount feeAmount
|
270
|
-
)
|
271
|
-
external
|
272
|
-
virtual
|
273
|
-
// TODO re-enable once role granting is stable and fixed
|
274
|
-
// restricted()
|
275
|
-
{
|
276
|
-
_changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
|
277
|
-
}
|
278
|
-
|
279
|
-
|
280
|
-
function decreaseDistributionBalance(
|
281
|
-
InstanceStore instanceStore,
|
282
|
-
NftId distributionNftId,
|
283
|
-
Amount amount,
|
284
|
-
Amount feeAmount
|
285
|
-
)
|
286
|
-
external
|
287
|
-
virtual
|
288
|
-
// TODO re-enable once role granting is stable and fixed
|
289
|
-
// restricted()
|
290
|
-
{
|
291
|
-
_changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
|
292
|
-
}
|
293
|
-
|
294
358
|
//-------- oracle -------------------------------------------------------//
|
295
359
|
|
296
|
-
function
|
297
|
-
|
360
|
+
function _registerOracle(address oracleAddress)
|
361
|
+
internal
|
298
362
|
virtual
|
363
|
+
returns (NftId oracleNftId)
|
299
364
|
{
|
300
|
-
address contractAddress = msg.sender;
|
301
|
-
|
302
365
|
// register/create component setup
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
366
|
+
InstanceReader instanceReader;
|
367
|
+
InstanceAdmin instanceAdmin;
|
368
|
+
InstanceStore instanceStore;
|
369
|
+
NftId productNftId;
|
370
|
+
|
371
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, oracleNftId) = _register(
|
372
|
+
oracleAddress,
|
373
|
+
ORACLE());
|
374
|
+
|
375
|
+
// check product is still expecting an oracle registration
|
376
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
377
|
+
if (productInfo.expectedNumberOfOracles == 0) {
|
378
|
+
revert ErrorProductServiceNoOraclesExpected(productNftId);
|
379
|
+
}
|
380
|
+
if (productInfo.numberOfOracles == productInfo.expectedNumberOfOracles) {
|
381
|
+
revert ErrorProductServiceOraclesAlreadyRegistered(productNftId, productInfo.expectedNumberOfOracles);
|
382
|
+
}
|
383
|
+
|
384
|
+
// update/add oracle to product info
|
385
|
+
productInfo.oracleNftId[productInfo.numberOfOracles] = oracleNftId;
|
386
|
+
productInfo.numberOfOracles++;
|
387
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
388
|
+
|
389
|
+
// authorize
|
390
|
+
instanceAdmin.initializeComponentAuthorization(
|
391
|
+
IInstanceLinkedComponent(oracleAddress));
|
311
392
|
}
|
312
393
|
|
313
394
|
//-------- pool ---------------------------------------------------------//
|
314
395
|
|
315
|
-
function
|
316
|
-
|
396
|
+
function _registerPool(address poolAddress)
|
397
|
+
internal
|
317
398
|
virtual
|
399
|
+
returns (NftId poolNftId)
|
318
400
|
{
|
319
|
-
address contractAddress = msg.sender;
|
320
|
-
|
321
401
|
// register/create component setup
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
402
|
+
InstanceReader instanceReader;
|
403
|
+
InstanceAdmin instanceAdmin;
|
404
|
+
InstanceStore instanceStore;
|
405
|
+
NftId productNftId;
|
406
|
+
|
407
|
+
(instanceReader, instanceAdmin, instanceStore, productNftId, poolNftId) = _register(
|
408
|
+
poolAddress,
|
409
|
+
POOL());
|
410
|
+
|
411
|
+
// check product is still expecting a pool registration
|
412
|
+
IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
|
413
|
+
if (productInfo.poolNftId.gtz()) {
|
414
|
+
revert ErrorProductServicePoolAlreadyRegistered(productNftId, productInfo.poolNftId);
|
415
|
+
}
|
330
416
|
|
331
417
|
// create info
|
418
|
+
IPoolComponent pool = IPoolComponent(poolAddress);
|
332
419
|
instanceStore.createPool(
|
333
|
-
|
334
|
-
|
335
|
-
|
420
|
+
poolNftId,
|
421
|
+
pool.getInitialPoolInfo());
|
422
|
+
|
423
|
+
// update pool in product info
|
424
|
+
productInfo.poolNftId = poolNftId;
|
425
|
+
instanceStore.updateProduct(productNftId, productInfo, KEEP_STATE());
|
426
|
+
|
427
|
+
// authorize
|
428
|
+
instanceAdmin.initializeComponentAuthorization(pool);
|
336
429
|
}
|
337
430
|
|
338
431
|
|
@@ -344,188 +437,102 @@ contract ComponentService is
|
|
344
437
|
external
|
345
438
|
virtual
|
346
439
|
{
|
347
|
-
(NftId poolNftId
|
348
|
-
|
440
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
441
|
+
|
442
|
+
(NftId productNftId, IComponents.FeeInfo memory feeInfo) = _getLinkedFeeInfo(
|
349
443
|
instance.getInstanceReader(), poolNftId);
|
350
444
|
bool feesChanged = false;
|
351
445
|
|
352
446
|
// update pool fee if required
|
353
|
-
if(!FeeLib.eq(
|
354
|
-
_logUpdateFee(productNftId, "PoolFee",
|
355
|
-
|
447
|
+
if(!FeeLib.eq(feeInfo.poolFee, poolFee)) {
|
448
|
+
_logUpdateFee(productNftId, "PoolFee", feeInfo.poolFee, poolFee);
|
449
|
+
feeInfo.poolFee = poolFee;
|
356
450
|
feesChanged = true;
|
357
451
|
}
|
358
452
|
|
359
453
|
// update staking fee if required
|
360
|
-
if(!FeeLib.eq(
|
361
|
-
_logUpdateFee(productNftId, "StakingFee",
|
362
|
-
|
454
|
+
if(!FeeLib.eq(feeInfo.stakingFee, stakingFee)) {
|
455
|
+
_logUpdateFee(productNftId, "StakingFee", feeInfo.stakingFee, stakingFee);
|
456
|
+
feeInfo.stakingFee = stakingFee;
|
363
457
|
feesChanged = true;
|
364
458
|
}
|
365
459
|
|
366
460
|
// update performance fee if required
|
367
|
-
if(!FeeLib.eq(
|
368
|
-
_logUpdateFee(productNftId, "PerformanceFee",
|
369
|
-
|
461
|
+
if(!FeeLib.eq(feeInfo.performanceFee, performanceFee)) {
|
462
|
+
_logUpdateFee(productNftId, "PerformanceFee", feeInfo.performanceFee, performanceFee);
|
463
|
+
feeInfo.performanceFee = performanceFee;
|
370
464
|
feesChanged = true;
|
371
465
|
}
|
372
466
|
|
373
467
|
if(feesChanged) {
|
374
|
-
instance.getInstanceStore().
|
468
|
+
instance.getInstanceStore().updateFee(productNftId, feeInfo);
|
375
469
|
emit LogComponentServicePoolFeesUpdated(poolNftId);
|
376
470
|
}
|
377
471
|
}
|
378
472
|
|
379
|
-
|
380
|
-
InstanceStore instanceStore,
|
381
|
-
NftId poolNftId,
|
382
|
-
Amount amount,
|
383
|
-
Amount feeAmount
|
384
|
-
)
|
385
|
-
public
|
386
|
-
virtual
|
387
|
-
// TODO re-enable once role granting is stable and fixed
|
388
|
-
// restricted()
|
389
|
-
{
|
390
|
-
_changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
|
391
|
-
}
|
392
|
-
|
393
|
-
function decreasePoolBalance(
|
394
|
-
InstanceStore instanceStore,
|
395
|
-
NftId poolNftId,
|
396
|
-
Amount amount,
|
397
|
-
Amount feeAmount
|
398
|
-
)
|
399
|
-
public
|
400
|
-
virtual
|
401
|
-
// TODO re-enable once role granting is stable and fixed
|
402
|
-
// restricted()
|
403
|
-
{
|
404
|
-
_changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
|
405
|
-
}
|
406
|
-
|
407
|
-
//-------- bundle -------------------------------------------------------//
|
408
|
-
|
409
|
-
function increaseBundleBalance(
|
410
|
-
InstanceStore instanceStore,
|
411
|
-
NftId bundleNftId,
|
412
|
-
Amount amount,
|
413
|
-
Amount feeAmount
|
414
|
-
)
|
415
|
-
external
|
416
|
-
virtual
|
417
|
-
// TODO re-enable once role granting is stable and fixed
|
418
|
-
// restricted()
|
419
|
-
{
|
420
|
-
_changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
|
421
|
-
}
|
422
|
-
|
423
|
-
function decreaseBundleBalance(
|
424
|
-
InstanceStore instanceStore,
|
425
|
-
NftId bundleNftId,
|
426
|
-
Amount amount,
|
427
|
-
Amount feeAmount
|
428
|
-
)
|
429
|
-
external
|
430
|
-
virtual
|
431
|
-
// TODO re-enable once role granting is stable and fixed
|
432
|
-
// restricted()
|
433
|
-
{
|
434
|
-
_changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
|
435
|
-
}
|
436
|
-
|
437
|
-
|
438
|
-
//-------- internal functions ------------------------------------------//
|
439
|
-
|
440
|
-
function _changeTargetBalance(
|
441
|
-
bool increase,
|
442
|
-
InstanceStore instanceStore,
|
443
|
-
NftId targetNftId,
|
444
|
-
Amount amount,
|
445
|
-
Amount feeAmount
|
446
|
-
)
|
447
|
-
internal
|
448
|
-
virtual
|
449
|
-
{
|
450
|
-
Amount totalAmount = amount + feeAmount;
|
451
|
-
|
452
|
-
if(increase) {
|
453
|
-
if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
|
454
|
-
if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
|
455
|
-
} else {
|
456
|
-
if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
|
457
|
-
if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
|
458
|
-
}
|
459
|
-
}
|
460
|
-
|
461
|
-
/// @dev registers the component represented by the provided address
|
473
|
+
/// @dev Registers the component represented by the provided address.
|
462
474
|
function _register(
|
463
475
|
address componentAddress, // address of component to register
|
464
|
-
ObjectType requiredType
|
465
|
-
RoleId requiredRole // role required for comonent owner for registration
|
476
|
+
ObjectType requiredType // required type for component for registration
|
466
477
|
)
|
467
478
|
internal
|
468
479
|
virtual
|
469
480
|
returns (
|
470
481
|
InstanceReader instanceReader,
|
482
|
+
InstanceAdmin instanceAdmin,
|
471
483
|
InstanceStore instanceStore,
|
484
|
+
NftId parentNftId,
|
472
485
|
NftId componentNftId
|
473
486
|
)
|
474
487
|
{
|
488
|
+
NftId instanceNftId;
|
489
|
+
IInstance instance;
|
490
|
+
IInstanceLinkedComponent component;
|
491
|
+
address initialOwner;
|
492
|
+
|
475
493
|
(
|
476
|
-
|
477
|
-
|
478
|
-
|
494
|
+
instanceNftId,
|
495
|
+
instance,
|
496
|
+
parentNftId,
|
497
|
+
component,
|
498
|
+
initialOwner
|
479
499
|
) = _getAndVerifyRegisterableComponent(
|
500
|
+
getRegistry(),
|
480
501
|
componentAddress,
|
481
|
-
requiredType
|
482
|
-
requiredRole);
|
483
|
-
|
484
|
-
// register component with registry
|
485
|
-
componentNftId = _registryService.registerComponent(
|
486
|
-
component,
|
487
|
-
requiredType,
|
488
|
-
owner).nftId;
|
489
|
-
|
490
|
-
component.linkToRegisteredNftId();
|
491
|
-
|
492
|
-
// setup initial component authorization
|
493
|
-
_instanceService.initializeAuthorization(
|
494
|
-
instance.getNftId(),
|
495
|
-
component);
|
502
|
+
requiredType);
|
496
503
|
|
497
|
-
//
|
504
|
+
// get instance supporting contracts (as function return values)
|
498
505
|
instanceReader = instance.getInstanceReader();
|
506
|
+
instanceAdmin = instance.getInstanceAdmin();
|
499
507
|
instanceStore = instance.getInstanceStore();
|
500
508
|
|
501
|
-
|
502
|
-
|
509
|
+
// register with registry
|
510
|
+
if (requiredType == PRODUCT()) {
|
511
|
+
componentNftId = _registryService.registerProduct(
|
512
|
+
component, initialOwner).nftId;
|
513
|
+
} else {
|
514
|
+
componentNftId = _registryService.registerProductLinkedComponent(
|
515
|
+
component, requiredType, initialOwner).nftId;
|
516
|
+
}
|
503
517
|
|
518
|
+
// deploy and wire token handler
|
519
|
+
IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
|
520
|
+
IERC20Metadata token = componentInfo.token;
|
521
|
+
componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
|
522
|
+
address(getRegistry()),
|
523
|
+
address(component), // initially, component is its own wallet
|
524
|
+
address(token),
|
525
|
+
address(instanceAdmin.authority()));
|
526
|
+
|
527
|
+
// register component with instance
|
504
528
|
instanceStore.createComponent(
|
505
|
-
|
529
|
+
componentNftId,
|
506
530
|
componentInfo);
|
507
531
|
|
508
|
-
//
|
509
|
-
|
510
|
-
|
532
|
+
// link component contract to nft id
|
533
|
+
component.linkToRegisteredNftId();
|
511
534
|
|
512
|
-
|
513
|
-
function _linkToProduct(
|
514
|
-
InstanceReader instanceReader,
|
515
|
-
InstanceStore instanceStore,
|
516
|
-
NftId componentNftId,
|
517
|
-
NftId productNftId
|
518
|
-
)
|
519
|
-
internal
|
520
|
-
{
|
521
|
-
// only link components that are registered
|
522
|
-
if(componentNftId.eqz()) {
|
523
|
-
return;
|
524
|
-
}
|
525
|
-
|
526
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
|
527
|
-
componentInfo.productNftId = productNftId;
|
528
|
-
instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
|
535
|
+
emit LogComponentServiceRegistered(instanceNftId, componentNftId, requiredType, address(component), address(token), initialOwner);
|
529
536
|
}
|
530
537
|
|
531
538
|
|
@@ -544,13 +551,7 @@ contract ComponentService is
|
|
544
551
|
}
|
545
552
|
|
546
553
|
|
547
|
-
function
|
548
|
-
selectors = new bytes4[](1);
|
549
|
-
selectors[0] = selector;
|
550
|
-
}
|
551
|
-
|
552
|
-
|
553
|
-
function _getLinkedProductInfo(
|
554
|
+
function _getLinkedFeeInfo(
|
554
555
|
InstanceReader instanceReader,
|
555
556
|
NftId componentNftId
|
556
557
|
)
|
@@ -558,60 +559,142 @@ contract ComponentService is
|
|
558
559
|
view
|
559
560
|
returns(
|
560
561
|
NftId productNftId,
|
561
|
-
IComponents.
|
562
|
+
IComponents.FeeInfo memory info
|
562
563
|
)
|
563
564
|
{
|
564
|
-
productNftId =
|
565
|
-
info = instanceReader.
|
565
|
+
productNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
|
566
|
+
info = instanceReader.getFeeInfo(productNftId);
|
566
567
|
}
|
567
568
|
|
568
569
|
|
569
|
-
/// @dev
|
570
|
-
///
|
571
|
-
/// - the
|
570
|
+
/// @dev Based on the provided component address required type the component
|
571
|
+
/// and related instance contract this function reverts iff:
|
572
|
+
/// - the sender is not registered
|
572
573
|
/// - the component contract does not support IInstanceLinkedComponent
|
573
574
|
/// - the component type does not match with the required type
|
574
|
-
/// - the
|
575
|
+
/// - the component has already been registered
|
575
576
|
function _getAndVerifyRegisterableComponent(
|
577
|
+
IRegistry registry,
|
576
578
|
address componentAddress,
|
577
|
-
ObjectType requiredType
|
578
|
-
RoleId requiredRole
|
579
|
+
ObjectType requiredType
|
579
580
|
)
|
580
581
|
internal
|
581
582
|
view
|
582
583
|
returns (
|
584
|
+
NftId instanceNftId,
|
583
585
|
IInstance instance,
|
586
|
+
NftId parentNftId,
|
584
587
|
IInstanceLinkedComponent component,
|
585
|
-
address
|
588
|
+
address initialOwner
|
586
589
|
)
|
587
590
|
{
|
588
|
-
// check
|
589
|
-
|
590
|
-
if(
|
591
|
-
revert
|
591
|
+
// check sender (instance or product) is registered
|
592
|
+
IRegistry.ObjectInfo memory senderInfo = registry.getObjectInfo(msg.sender);
|
593
|
+
if (senderInfo.nftId.eqz()) {
|
594
|
+
revert ErrorComponentServiceSenderNotRegistered(msg.sender);
|
592
595
|
}
|
593
596
|
|
597
|
+
// the sender is the parent of the component to be registered
|
598
|
+
// an instance caller wanting to register a product - or -
|
599
|
+
// a product caller wantint go register a distribution, oracle or pool
|
600
|
+
parentNftId = senderInfo.nftId;
|
601
|
+
|
594
602
|
// check component is of required type
|
603
|
+
component = IInstanceLinkedComponent(componentAddress);
|
595
604
|
IRegistry.ObjectInfo memory info = component.getInitialInfo();
|
596
605
|
if(info.objectType != requiredType) {
|
597
606
|
revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
|
598
607
|
}
|
599
608
|
|
600
609
|
// check component has not already been registered
|
601
|
-
if (getRegistry().
|
610
|
+
if (getRegistry().getNftIdForAddress(componentAddress).gtz()) {
|
602
611
|
revert ErrorComponentServiceAlreadyRegistered(componentAddress);
|
603
612
|
}
|
604
613
|
|
605
|
-
// check
|
606
|
-
|
607
|
-
|
614
|
+
// check release matches
|
615
|
+
address parentAddress = registry.getObjectAddress(parentNftId);
|
616
|
+
if (component.getRelease() != IRegisterable(parentAddress).getRelease()) {
|
617
|
+
revert ErrorComponentServiceReleaseMismatch(componentAddress, component.getRelease(), IRegisterable(parentAddress).getRelease());
|
618
|
+
}
|
619
|
+
|
620
|
+
// check component belongs to same product cluster
|
621
|
+
// parent of product must be instance, parent of other componet types must be product
|
622
|
+
if (info.parentNftId != senderInfo.nftId) {
|
623
|
+
revert ErrorComponentServiceSenderNotComponentParent(senderInfo.nftId, info.parentNftId);
|
624
|
+
}
|
625
|
+
|
626
|
+
// verify parent is registered instance
|
627
|
+
if (requiredType == PRODUCT()) {
|
628
|
+
if (senderInfo.objectType != INSTANCE()) {
|
629
|
+
revert ErrorComponentServiceParentNotInstance(senderInfo.nftId, senderInfo.objectType);
|
630
|
+
}
|
631
|
+
|
632
|
+
instanceNftId = senderInfo.nftId;
|
633
|
+
// verify parent is registered product
|
634
|
+
} else {
|
635
|
+
if (senderInfo.objectType != PRODUCT()) {
|
636
|
+
revert ErrorComponentServiceParentNotProduct(senderInfo.nftId, senderInfo.objectType);
|
637
|
+
}
|
638
|
+
|
639
|
+
instanceNftId = senderInfo.parentNftId;
|
640
|
+
}
|
641
|
+
|
642
|
+
// get initial owner and instance
|
643
|
+
initialOwner = info.initialOwner;
|
644
|
+
instance = IInstance(registry.getObjectAddress(instanceNftId));
|
645
|
+
}
|
646
|
+
|
647
|
+
function _setLocked(InstanceAdmin instanceAdmin, address componentAddress, bool locked) internal {
|
648
|
+
instanceAdmin.setTargetLocked(componentAddress, locked);
|
649
|
+
}
|
650
|
+
|
651
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
652
|
+
internal
|
653
|
+
view
|
654
|
+
returns (
|
655
|
+
NftId componentNftId,
|
656
|
+
IInstance instance
|
657
|
+
)
|
658
|
+
{
|
659
|
+
return _getAndVerifyComponent(expectedType, true); // only active
|
660
|
+
}
|
608
661
|
|
609
|
-
|
610
|
-
|
662
|
+
function _getAndVerifyComponent(ObjectType expectedType, bool isActive)
|
663
|
+
internal
|
664
|
+
view
|
665
|
+
returns (
|
666
|
+
NftId componentNftId,
|
667
|
+
IInstance instance
|
668
|
+
)
|
669
|
+
{
|
670
|
+
IRegistry.ObjectInfo memory info;
|
671
|
+
address instanceAddress;
|
672
|
+
|
673
|
+
if (expectedType != COMPONENT()) {
|
674
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
675
|
+
getRegistry(),
|
676
|
+
msg.sender, // caller
|
677
|
+
expectedType,
|
678
|
+
isActive);
|
679
|
+
} else {
|
680
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
681
|
+
getRegistry(),
|
682
|
+
msg.sender,
|
683
|
+
isActive);
|
611
684
|
}
|
685
|
+
|
686
|
+
// get component nft id and instance
|
687
|
+
componentNftId = info.nftId;
|
688
|
+
instance = IInstance(instanceAddress);
|
612
689
|
}
|
613
690
|
|
614
691
|
function _getDomain() internal pure virtual override returns(ObjectType) {
|
615
692
|
return COMPONENT();
|
616
693
|
}
|
694
|
+
|
695
|
+
function _checkSupportsInterface(address component) internal view {
|
696
|
+
if (!ContractLib.supportsInterface(component, type(IInstanceLinkedComponent).interfaceId)) {
|
697
|
+
revert ErrorComponentServiceNotInstanceLinkedComponent(component);
|
698
|
+
}
|
699
|
+
}
|
617
700
|
}
|