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