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