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