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