@etherisc/gif-next 0.0.2-ba07940-332 → 0.0.2-ba5b255-091
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 +27 -6
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +452 -243
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +673 -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 +222 -21
- 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 +348 -184
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +100 -13
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +92 -285
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +207 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +44 -162
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +309 -168
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +89 -51
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +31 -131
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +177 -67
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +93 -139
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +188 -46
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +247 -287
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +207 -33
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +161 -244
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -131
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +644 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +288 -226
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +644 -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 +192 -30
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +177 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +221 -67
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +775 -306
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +226 -46
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +713 -201
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +203 -85
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -34
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +421 -371
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
- 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 +66 -167
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +189 -35
- 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 +36 -71
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +112 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +69 -27
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +49 -102
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +188 -46
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +127 -331
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +56 -136
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +36 -95
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +163 -226
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +49 -126
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -363
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -51
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +165 -57
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +54 -24
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +155 -193
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +207 -33
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +244 -179
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +74 -64
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +142 -162
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +211 -180
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +76 -50
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +120 -76
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +60 -38
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +155 -193
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +66 -24
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
- 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/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +88 -40
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +559 -415
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +878 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +42 -20
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1966 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +332 -54
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +49 -88
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +228 -440
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +65 -63
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +509 -4
- 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 +36 -57
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +123 -262
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
- 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 +27 -3
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -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 +2 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- 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 +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +116 -90
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +127 -3
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +193 -193
- 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 +2 -2
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +61 -45
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +30 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +180 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +50 -24
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +143 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +33 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +3 -3
- 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 +2 -2
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
- 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 +69 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/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/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +301 -192
- package/contracts/authorization/AccessAdminLib.sol +183 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +307 -231
- package/contracts/authorization/IAccessAdmin.sol +69 -36
- package/contracts/authorization/IAuthorization.sol +21 -1
- package/contracts/distribution/BasicDistribution.sol +18 -16
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +36 -77
- package/contracts/distribution/DistributionService.sol +84 -53
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +0 -9
- package/contracts/distribution/IDistributionService.sol +22 -20
- package/contracts/examples/fire/FirePool.sol +10 -11
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +16 -11
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
- package/contracts/examples/unpermissioned/SimplePool.sol +26 -5
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +36 -8
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +61 -18
- package/contracts/instance/IInstanceService.sol +31 -9
- package/contracts/instance/Instance.sol +107 -53
- package/contracts/instance/InstanceAdmin.sol +310 -115
- package/contracts/instance/InstanceAuthorizationV3.sol +99 -40
- package/contracts/instance/InstanceReader.sol +209 -33
- package/contracts/instance/InstanceService.sol +205 -115
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +3 -4
- package/contracts/instance/module/IDistribution.sol +5 -2
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracle.sol +1 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -3
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +19 -2
- package/contracts/pool/BasicPoolAuthorization.sol +22 -14
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -5
- package/contracts/pool/IPoolService.sol +58 -62
- package/contracts/pool/Pool.sol +95 -81
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +418 -211
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +39 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +2 -2
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +177 -136
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +8 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +1 -0
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/IRiskService.sol +7 -7
- package/contracts/product/PolicyService.sol +244 -263
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +32 -20
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +59 -23
- package/contracts/product/RiskService.sol +89 -31
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +4 -2
- package/contracts/registry/IRegistry.sol +10 -15
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/Registry.sol +16 -3
- package/contracts/registry/RegistryAdmin.sol +145 -335
- package/contracts/registry/RegistryAuthorization.sol +267 -0
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +253 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +150 -134
- package/contracts/registry/ServiceAuthorizationV3.sol +180 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +52 -107
- package/contracts/shared/ComponentService.sol +264 -291
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +246 -3
- package/contracts/shared/IComponent.sol +1 -17
- package/contracts/shared/IComponentService.sol +18 -26
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +9 -1
- package/contracts/shared/InstanceLinkedComponent.sol +4 -22
- package/contracts/shared/NftOwnable.sol +10 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +41 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +275 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +17 -10
- package/contracts/staking/IStakingService.sol +16 -1
- package/contracts/staking/Staking.sol +95 -46
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
- package/contracts/staking/StakingReader.sol +6 -16
- package/contracts/staking/StakingService.sol +85 -14
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/staking/StakingStore.sol +2 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +53 -35
- package/contracts/type/RiskId.sol +26 -8
- package/contracts/type/RoleId.sol +27 -4
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +4 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
- 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/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/ReleaseAccessManager.sol +0 -38
- package/contracts/instance/module/IAccess.sol +0 -46
@@ -2,40 +2,31 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
|
5
|
-
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
6
|
-
|
7
|
-
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
8
|
-
import {Amount} from "../type/Amount.sol";
|
9
|
-
import {BundleSet} from "./BundleSet.sol";
|
10
|
-
import {ChainNft} from "../registry/ChainNft.sol";
|
11
|
-
import {NftId} from "../type/NftId.sol";
|
12
|
-
import {RoleId} from "../type/RoleId.sol";
|
13
|
-
import {SecondsLib} from "../type/Seconds.sol";
|
14
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
15
|
-
import {ADMIN_ROLE} from "../type/RoleId.sol";
|
16
|
-
import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
|
17
|
-
|
18
|
-
import {Service} from "../shared/Service.sol";
|
19
|
-
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
20
|
-
import {IService} from "../shared/IService.sol";
|
21
|
-
|
22
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
23
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
24
|
-
import {IProductComponent} from "../product/IProductComponent.sol";
|
25
5
|
|
6
|
+
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IInstance} from "./IInstance.sol";
|
9
|
+
import {IInstanceService} from "./IInstanceService.sol";
|
26
10
|
import {IRegistry} from "../registry/IRegistry.sol";
|
27
11
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
28
12
|
import {IStakingService} from "../staking/IStakingService.sol";
|
29
|
-
import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
|
30
13
|
|
14
|
+
import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
|
15
|
+
import {Amount} from "../type/Amount.sol";
|
16
|
+
import {BundleSet} from "./BundleSet.sol";
|
31
17
|
import {Instance} from "./Instance.sol";
|
32
|
-
import {IInstance} from "./IInstance.sol";
|
33
18
|
import {InstanceAdmin} from "./InstanceAdmin.sol";
|
34
|
-
import {IInstanceService} from "./IInstanceService.sol";
|
35
19
|
import {InstanceReader} from "./InstanceReader.sol";
|
36
20
|
import {InstanceStore} from "./InstanceStore.sol";
|
21
|
+
import {NftId} from "../type/NftId.sol";
|
22
|
+
import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
|
23
|
+
import {RiskSet} from "./RiskSet.sol";
|
24
|
+
import {RoleId} from "../type/RoleId.sol";
|
37
25
|
import {Seconds} from "../type/Seconds.sol";
|
38
|
-
import {
|
26
|
+
import {Service} from "../shared/Service.sol";
|
27
|
+
import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
|
28
|
+
import {UFixed} from "../type/UFixed.sol";
|
29
|
+
import {VersionPart} from "../type/Version.sol";
|
39
30
|
|
40
31
|
|
41
32
|
contract InstanceService is
|
@@ -48,32 +39,19 @@ contract InstanceService is
|
|
48
39
|
|
49
40
|
IRegistryService internal _registryService;
|
50
41
|
IStakingService internal _stakingService;
|
42
|
+
IComponentService internal _componentService;
|
51
43
|
|
52
44
|
address internal _masterAccessManager;
|
53
45
|
address internal _masterInstanceAdmin;
|
54
46
|
address internal _masterInstance;
|
55
47
|
address internal _masterInstanceReader;
|
56
48
|
address internal _masterInstanceBundleSet;
|
49
|
+
address internal _masterInstanceRiskSet;
|
57
50
|
address internal _masterInstanceStore;
|
58
51
|
|
59
52
|
|
60
|
-
modifier onlyInstance() {
|
61
|
-
|
62
|
-
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
63
|
-
if (instanceNftId.eqz()) {
|
64
|
-
revert ErrorInstanceServiceNotRegistered(instanceAddress);
|
65
|
-
}
|
66
|
-
|
67
|
-
ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
|
68
|
-
if (objectType != INSTANCE()) {
|
69
|
-
revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
|
70
|
-
}
|
71
|
-
|
72
|
-
VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
|
73
|
-
if (instanceVersion != getVersion().toMajorPart()) {
|
74
|
-
revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
|
75
|
-
}
|
76
|
-
|
53
|
+
modifier onlyInstance() {
|
54
|
+
_checkInstance(msg.sender, getRelease());
|
77
55
|
_;
|
78
56
|
}
|
79
57
|
|
@@ -85,6 +63,7 @@ contract InstanceService is
|
|
85
63
|
_;
|
86
64
|
}
|
87
65
|
|
66
|
+
|
88
67
|
// TODO check component - service - instance version match
|
89
68
|
modifier onlyComponent() {
|
90
69
|
if (! getRegistry().isRegisteredComponent(msg.sender)) {
|
@@ -93,42 +72,116 @@ contract InstanceService is
|
|
93
72
|
_;
|
94
73
|
}
|
95
74
|
|
75
|
+
/// @inheritdoc IInstanceService
|
76
|
+
function createRole(
|
77
|
+
string memory roleName,
|
78
|
+
RoleId adminRoleId,
|
79
|
+
uint32 maxMemberCount
|
80
|
+
)
|
81
|
+
external
|
82
|
+
restricted()
|
83
|
+
onlyInstance()
|
84
|
+
returns (RoleId roleId)
|
85
|
+
{
|
86
|
+
IInstance instance = IInstance(msg.sender);
|
87
|
+
roleId = instance.getInstanceAdmin().createRole(
|
88
|
+
roleName,
|
89
|
+
adminRoleId,
|
90
|
+
maxMemberCount);
|
91
|
+
}
|
92
|
+
|
93
|
+
/// @inheritdoc IInstanceService
|
94
|
+
function grantRole(RoleId roleId, address account)
|
95
|
+
external
|
96
|
+
restricted()
|
97
|
+
onlyInstance()
|
98
|
+
{
|
99
|
+
IInstance instance = IInstance(msg.sender);
|
100
|
+
instance.getInstanceAdmin().grantRole(roleId, account);
|
101
|
+
}
|
102
|
+
|
103
|
+
/// @inheritdoc IInstanceService
|
104
|
+
function revokeRole(RoleId roleId, address account)
|
105
|
+
external
|
106
|
+
restricted()
|
107
|
+
onlyInstance()
|
108
|
+
{
|
109
|
+
IInstance instance = IInstance(msg.sender);
|
110
|
+
instance.getInstanceAdmin().revokeRole(roleId, account);
|
111
|
+
}
|
112
|
+
|
113
|
+
/// @inheritdoc IInstanceService
|
114
|
+
function setInstanceLocked(bool locked)
|
115
|
+
external
|
116
|
+
virtual
|
117
|
+
restricted()
|
118
|
+
onlyInstance()
|
119
|
+
{
|
120
|
+
address instanceAddress = msg.sender;
|
121
|
+
IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
|
122
|
+
}
|
123
|
+
|
124
|
+
|
125
|
+
/// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
|
126
|
+
function setTargetLocked(address target, bool locked)
|
127
|
+
external
|
128
|
+
virtual
|
129
|
+
restricted()
|
130
|
+
onlyInstance()
|
131
|
+
{
|
132
|
+
address instanceAddress = msg.sender;
|
133
|
+
IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
|
134
|
+
}
|
135
|
+
|
136
|
+
|
96
137
|
function createInstance()
|
97
138
|
external
|
139
|
+
virtual
|
140
|
+
restricted()
|
98
141
|
returns (
|
99
|
-
|
100
|
-
NftId
|
142
|
+
IInstance instance,
|
143
|
+
NftId instanceNftId
|
101
144
|
)
|
102
145
|
{
|
103
146
|
// tx sender will become instance owner
|
104
147
|
address instanceOwner = msg.sender;
|
105
148
|
|
106
149
|
// create instance admin and instance
|
107
|
-
InstanceAdmin instanceAdmin =
|
108
|
-
|
150
|
+
InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
|
151
|
+
instance = _createInstance(instanceAdmin, instanceOwner);
|
109
152
|
|
110
153
|
// register cloned instance with registry
|
111
|
-
|
112
|
-
|
154
|
+
instanceNftId = _registryService.registerInstance(
|
155
|
+
instance, instanceOwner).nftId;
|
156
|
+
|
157
|
+
// MUST be set after instance is set up and registered
|
158
|
+
IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
|
159
|
+
instanceAdmin.completeSetup(
|
160
|
+
address(getRegistry()),
|
161
|
+
address(instance),
|
162
|
+
address(instanceAuthorization),
|
163
|
+
getRelease());
|
164
|
+
|
165
|
+
// hard checks for newly cloned instance
|
166
|
+
assert(address(instance.getRegistry()) == address(getRegistry()));
|
167
|
+
assert(instance.getRelease() == getRelease());
|
113
168
|
|
114
169
|
// register cloned instance as staking target
|
115
170
|
_stakingService.createInstanceTarget(
|
116
|
-
|
171
|
+
instanceNftId,
|
117
172
|
TargetManagerLib.getDefaultLockingPeriod(),
|
118
173
|
TargetManagerLib.getDefaultRewardRate());
|
119
174
|
|
120
|
-
// MUST be set after instance is set up and registered
|
121
|
-
instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
|
122
|
-
|
123
175
|
emit LogInstanceCloned(
|
124
|
-
|
125
|
-
address(
|
176
|
+
instanceNftId,
|
177
|
+
address(instance));
|
126
178
|
}
|
127
179
|
|
128
180
|
|
129
181
|
function setStakingLockingPeriod(Seconds stakeLockingPeriod)
|
130
182
|
external
|
131
183
|
virtual
|
184
|
+
restricted()
|
132
185
|
onlyInstance()
|
133
186
|
{
|
134
187
|
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
@@ -141,6 +194,7 @@ contract InstanceService is
|
|
141
194
|
function setStakingRewardRate(UFixed rewardRate)
|
142
195
|
external
|
143
196
|
virtual
|
197
|
+
restricted()
|
144
198
|
onlyInstance()
|
145
199
|
{
|
146
200
|
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
@@ -149,10 +203,23 @@ contract InstanceService is
|
|
149
203
|
rewardRate);
|
150
204
|
}
|
151
205
|
|
206
|
+
function setStakingMaxAmount(Amount maxStakedAmount)
|
207
|
+
external
|
208
|
+
virtual
|
209
|
+
restricted()
|
210
|
+
onlyInstance()
|
211
|
+
{
|
212
|
+
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
213
|
+
_stakingService.setInstanceMaxStakedAmount(
|
214
|
+
instanceNftId,
|
215
|
+
maxStakedAmount);
|
216
|
+
}
|
217
|
+
|
152
218
|
|
153
219
|
function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
|
154
220
|
external
|
155
221
|
virtual
|
222
|
+
restricted()
|
156
223
|
onlyInstance()
|
157
224
|
{
|
158
225
|
NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
|
@@ -166,6 +233,7 @@ contract InstanceService is
|
|
166
233
|
function withdrawStakingRewardReserves(Amount dipAmount)
|
167
234
|
external
|
168
235
|
virtual
|
236
|
+
restricted()
|
169
237
|
onlyInstance()
|
170
238
|
returns (Amount newBalance)
|
171
239
|
{
|
@@ -176,45 +244,31 @@ contract InstanceService is
|
|
176
244
|
}
|
177
245
|
|
178
246
|
|
179
|
-
function
|
180
|
-
external
|
181
|
-
|
182
|
-
|
247
|
+
function upgradeInstanceReader()
|
248
|
+
external
|
249
|
+
restricted()
|
250
|
+
onlyInstance()
|
183
251
|
{
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
}
|
190
|
-
|
191
|
-
IRegistry registry = getRegistry();
|
192
|
-
NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
|
193
|
-
|
194
|
-
IInstance instance = IInstance(
|
195
|
-
registry.getObjectAddress(instanceNftId));
|
252
|
+
address instanceAddress = msg.sender;
|
253
|
+
IInstance instance = IInstance(msg.sender);
|
254
|
+
|
255
|
+
InstanceReader upgradedInstanceReaderClone = InstanceReader(
|
256
|
+
Clones.clone(address(_masterInstanceReader)));
|
196
257
|
|
197
|
-
|
198
|
-
|
199
|
-
// instance.getInstanceAdmin().setTargetLockedByService(
|
200
|
-
// componentAddress,
|
201
|
-
// locked);
|
258
|
+
upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
|
259
|
+
instance.setInstanceReader(upgradedInstanceReaderClone);
|
202
260
|
}
|
203
261
|
|
204
262
|
|
205
|
-
function getMasterInstanceReader() external view returns (address) {
|
206
|
-
return _masterInstanceReader;
|
207
|
-
}
|
208
|
-
|
209
263
|
function setAndRegisterMasterInstance(address instanceAddress)
|
210
|
-
|
211
|
-
|
212
|
-
|
264
|
+
external
|
265
|
+
onlyOwner()
|
266
|
+
returns(NftId masterInstanceNftId)
|
213
267
|
{
|
214
268
|
if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
|
215
269
|
if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
|
216
270
|
if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
|
217
|
-
|
271
|
+
if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
|
218
272
|
if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
|
219
273
|
|
220
274
|
IInstance instance = IInstance(instanceAddress);
|
@@ -223,28 +277,34 @@ contract InstanceService is
|
|
223
277
|
address instanceAdminAddress = address(instanceAdmin);
|
224
278
|
InstanceReader instanceReader = instance.getInstanceReader();
|
225
279
|
address instanceReaderAddress = address(instanceReader);
|
226
|
-
BundleSet
|
227
|
-
address
|
280
|
+
BundleSet bundleSet = instance.getBundleSet();
|
281
|
+
address bundleSetAddress = address(bundleSet);
|
282
|
+
RiskSet riskSet = instance.getRiskSet();
|
283
|
+
address riskSetAddress = address(riskSet);
|
228
284
|
InstanceStore instanceStore = instance.getInstanceStore();
|
229
285
|
address instanceStoreAddress = address(instanceStore);
|
230
286
|
|
231
287
|
if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
|
232
288
|
if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
|
233
289
|
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
|
234
|
-
if(
|
290
|
+
if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
|
291
|
+
if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
|
235
292
|
if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
|
236
293
|
|
237
294
|
if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
|
238
|
-
if(
|
295
|
+
if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
|
296
|
+
if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
|
239
297
|
if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
|
240
|
-
if(
|
298
|
+
if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
|
299
|
+
if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
|
241
300
|
if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
|
242
301
|
|
243
302
|
_masterAccessManager = accessManagerAddress;
|
244
303
|
_masterInstanceAdmin = instanceAdminAddress;
|
245
304
|
_masterInstance = instanceAddress;
|
246
305
|
_masterInstanceReader = instanceReaderAddress;
|
247
|
-
_masterInstanceBundleSet =
|
306
|
+
_masterInstanceBundleSet = bundleSetAddress;
|
307
|
+
_masterInstanceRiskSet = riskSetAddress;
|
248
308
|
_masterInstanceStore = instanceStoreAddress;
|
249
309
|
|
250
310
|
IInstance masterInstance = IInstance(_masterInstance);
|
@@ -252,7 +312,10 @@ contract InstanceService is
|
|
252
312
|
masterInstanceNftId = info.nftId;
|
253
313
|
}
|
254
314
|
|
255
|
-
function upgradeMasterInstanceReader(address instanceReaderAddress)
|
315
|
+
function upgradeMasterInstanceReader(address instanceReaderAddress)
|
316
|
+
external
|
317
|
+
onlyOwner
|
318
|
+
{
|
256
319
|
if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
|
257
320
|
if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
|
258
321
|
if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
|
@@ -263,38 +326,29 @@ contract InstanceService is
|
|
263
326
|
_masterInstanceReader = instanceReaderAddress;
|
264
327
|
}
|
265
328
|
|
266
|
-
function
|
267
|
-
|
268
|
-
onlyInstanceOwner(instanceNftId)
|
269
|
-
{
|
270
|
-
IRegistry registry = getRegistry();
|
271
|
-
IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
|
272
|
-
Instance instance = Instance(instanceInfo.objectAddress);
|
273
|
-
|
274
|
-
InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
275
|
-
upgradedInstanceReaderClone.initializeWithInstance(address(instance));
|
276
|
-
instance.setInstanceReader(upgradedInstanceReaderClone);
|
329
|
+
function getMasterInstanceReader() external view returns (address) {
|
330
|
+
return _masterInstanceReader;
|
277
331
|
}
|
278
332
|
|
279
333
|
/// @dev create new cloned instance admin
|
280
334
|
/// function used to setup a new instance
|
281
|
-
function
|
335
|
+
function _cloneNewInstanceAdmin()
|
282
336
|
internal
|
283
337
|
virtual
|
284
|
-
returns (InstanceAdmin
|
338
|
+
returns (InstanceAdmin clonedAdmin)
|
285
339
|
{
|
286
|
-
//
|
340
|
+
// clone instance specific access manager
|
287
341
|
AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
|
288
|
-
Clones.clone(
|
342
|
+
Clones.clone(
|
343
|
+
InstanceAdmin(_masterInstanceAdmin).authority()));
|
289
344
|
|
290
345
|
// set up the instance admin
|
291
|
-
|
292
|
-
|
293
|
-
address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
|
346
|
+
clonedAdmin = InstanceAdmin(
|
347
|
+
Clones.clone(_masterInstanceAdmin));
|
294
348
|
|
295
|
-
|
296
|
-
clonedAccessManager,
|
297
|
-
InstanceAdmin
|
349
|
+
clonedAdmin.initialize(
|
350
|
+
address(clonedAccessManager),
|
351
|
+
"InstanceAdmin");
|
298
352
|
}
|
299
353
|
|
300
354
|
|
@@ -306,21 +360,26 @@ contract InstanceService is
|
|
306
360
|
)
|
307
361
|
internal
|
308
362
|
virtual
|
309
|
-
returns (
|
363
|
+
returns (IInstance)
|
310
364
|
{
|
311
365
|
InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
|
312
366
|
BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
|
367
|
+
RiskSet clonedRiskSet = RiskSet(Clones.clone(_masterInstanceRiskSet));
|
313
368
|
InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
|
314
369
|
|
315
370
|
// clone instance
|
316
|
-
clonedInstance = Instance(Clones.clone(_masterInstance));
|
371
|
+
Instance clonedInstance = Instance(Clones.clone(_masterInstance));
|
317
372
|
clonedInstance.initialize(
|
318
373
|
instanceAdmin,
|
319
374
|
clonedInstanceStore,
|
320
375
|
clonedBundleSet,
|
376
|
+
clonedRiskSet,
|
321
377
|
clonedInstanceReader,
|
322
378
|
getRegistry(),
|
379
|
+
getRelease(),
|
323
380
|
instanceOwner);
|
381
|
+
|
382
|
+
return clonedInstance;
|
324
383
|
}
|
325
384
|
|
326
385
|
|
@@ -363,14 +422,15 @@ contract InstanceService is
|
|
363
422
|
initializer()
|
364
423
|
{
|
365
424
|
(
|
366
|
-
address
|
367
|
-
address
|
425
|
+
address authority,
|
426
|
+
address registry
|
368
427
|
) = abi.decode(data, (address, address));
|
369
428
|
|
370
|
-
|
429
|
+
__Service_init(authority, registry, owner);
|
371
430
|
|
372
431
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
373
432
|
_stakingService = IStakingService(_getServiceAddress(STAKING()));
|
433
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
374
434
|
|
375
435
|
_registerInterface(type(IInstanceService).interfaceId);
|
376
436
|
}
|
@@ -403,6 +463,36 @@ contract InstanceService is
|
|
403
463
|
|
404
464
|
}
|
405
465
|
|
466
|
+
|
467
|
+
function _checkInstance(
|
468
|
+
address instanceAddress,
|
469
|
+
VersionPart expectedRelease
|
470
|
+
)
|
471
|
+
internal
|
472
|
+
virtual
|
473
|
+
view
|
474
|
+
{
|
475
|
+
IRegistry registry = getRegistry();
|
476
|
+
|
477
|
+
NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
|
478
|
+
if (instanceNftId.eqz()) {
|
479
|
+
revert ErrorInstanceServiceNotRegistered(instanceAddress);
|
480
|
+
}
|
481
|
+
|
482
|
+
ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
|
483
|
+
if (objectType != INSTANCE()) {
|
484
|
+
revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
|
485
|
+
}
|
486
|
+
|
487
|
+
if (expectedRelease.gtz()) {
|
488
|
+
VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
|
489
|
+
if (instanceRelease != expectedRelease) {
|
490
|
+
revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
|
491
|
+
}
|
492
|
+
}
|
493
|
+
}
|
494
|
+
|
495
|
+
|
406
496
|
// From IService
|
407
497
|
function _getDomain() internal pure override returns(ObjectType) {
|
408
498
|
return INSTANCE();
|
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
{
|
19
19
|
InstanceService svc = new InstanceService{salt: salt}();
|
20
|
-
bytes memory data = abi.encode(
|
20
|
+
bytes memory data = abi.encode(authority, registry);
|
21
21
|
IVersionable versionable = initialize(
|
22
22
|
registry,
|
23
23
|
address(svc),
|
@@ -7,10 +7,10 @@ import {Amount} from "../type/Amount.sol";
|
|
7
7
|
import {Key32} from "../type/Key32.sol";
|
8
8
|
import {NftId} from "../type/NftId.sol";
|
9
9
|
import {ClaimId} from "../type/ClaimId.sol";
|
10
|
-
import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
|
10
|
+
import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR, FEE} from "../type/ObjectType.sol";
|
11
11
|
import {RequestId} from "../type/RequestId.sol";
|
12
12
|
import {RiskId} from "../type/RiskId.sol";
|
13
|
-
import {StateId} from "../type/StateId.sol";
|
13
|
+
import {StateId, KEEP_STATE} from "../type/StateId.sol";
|
14
14
|
import {ReferralId} from "../type/Referral.sol";
|
15
15
|
import {DistributorType} from "../type/DistributorType.sol";
|
16
16
|
import {PayoutId} from "../type/PayoutId.sol";
|
@@ -85,6 +85,17 @@ contract InstanceStore is
|
|
85
85
|
_update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
|
86
86
|
}
|
87
87
|
|
88
|
+
|
89
|
+
//--- Fee -----------------------------------------------------------//
|
90
|
+
function createFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
|
91
|
+
_create(_toNftKey32(productNftId, FEE()), abi.encode(info));
|
92
|
+
}
|
93
|
+
|
94
|
+
// Fee only has one state, so no change change possible
|
95
|
+
function updateFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
|
96
|
+
_update(_toNftKey32(productNftId, FEE()), abi.encode(info), KEEP_STATE());
|
97
|
+
}
|
98
|
+
|
88
99
|
//--- Pool --------------------------------------------------------------//
|
89
100
|
|
90
101
|
function createPool(
|
@@ -0,0 +1,118 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {Key32} from "../type/Key32.sol";
|
5
|
+
import {LibNftIdSet} from "../type/NftIdSet.sol";
|
6
|
+
import {NftId} from "../type/NftId.sol";
|
7
|
+
import {ObjectSet} from "./base/ObjectSet.sol";
|
8
|
+
import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
|
9
|
+
import {RiskIdLib, RiskId} from "../type/RiskId.sol";
|
10
|
+
|
11
|
+
/// @dev RiskSet manages the risks and its active policies per product.
|
12
|
+
contract RiskSet is
|
13
|
+
ObjectSet
|
14
|
+
{
|
15
|
+
|
16
|
+
event LogRiskSetPolicyLinked(RiskId riskId, NftId policyNftId);
|
17
|
+
event LogRiskSetPolicyUnlinked(RiskId riskId, NftId policyNftId);
|
18
|
+
|
19
|
+
event LogRiskSetRiskAdded(NftId productNftId, RiskId riskId);
|
20
|
+
event LogRiskSetRiskActive(NftId poolNftId, RiskId riskId);
|
21
|
+
event LogRiskSetRiskPaused(NftId poolNftId, RiskId riskId);
|
22
|
+
event LogRiskSetRiskArchived(NftId poolNftId, RiskId riskId);
|
23
|
+
|
24
|
+
error ErrorRiskSetRiskLocked(RiskId riskId, NftId policyNftId);
|
25
|
+
error ErrorRiskSetRiskUnknown(RiskId riskId);
|
26
|
+
error ErrorRiskSetRiskNotRegistered(RiskId riskId);
|
27
|
+
|
28
|
+
mapping(RiskId riskId => LibNftIdSet.Set policies) internal _activePolicies;
|
29
|
+
|
30
|
+
/// @dev links a policy to its bundle
|
31
|
+
function linkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
|
32
|
+
|
33
|
+
// ensure risk is active (in active set) and registered with this instance
|
34
|
+
if (!_isActive(productNftId, riskId.toKey32())) {
|
35
|
+
revert ErrorRiskSetRiskLocked(riskId, policyNftId);
|
36
|
+
}
|
37
|
+
|
38
|
+
LibNftIdSet.add(_activePolicies[riskId], policyNftId);
|
39
|
+
emit LogRiskSetPolicyLinked(riskId, policyNftId);
|
40
|
+
}
|
41
|
+
|
42
|
+
/// @dev Unlinks a policy from its risk.
|
43
|
+
function unlinkPolicy(NftId productNftId, RiskId riskId, NftId policyNftId) external restricted() {
|
44
|
+
|
45
|
+
// ensure risk is registered with this instance
|
46
|
+
if (!_contains(productNftId, riskId.toKey32())) {
|
47
|
+
revert ErrorRiskSetRiskUnknown(riskId);
|
48
|
+
}
|
49
|
+
|
50
|
+
LibNftIdSet.remove(_activePolicies[riskId], policyNftId);
|
51
|
+
emit LogRiskSetPolicyUnlinked(riskId, policyNftId);
|
52
|
+
}
|
53
|
+
|
54
|
+
/// @dev add a new risk to a product registered with this instance
|
55
|
+
// the corresponding product is fetched via instance reader
|
56
|
+
function add(RiskId riskId) external restricted() {
|
57
|
+
NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
|
58
|
+
|
59
|
+
// ensure product is registered with instance
|
60
|
+
if(productNftId.eqz()) {
|
61
|
+
revert ErrorRiskSetRiskNotRegistered(riskId);
|
62
|
+
}
|
63
|
+
|
64
|
+
_add(productNftId, riskId.toKey32());
|
65
|
+
emit LogRiskSetRiskAdded(productNftId, riskId);
|
66
|
+
}
|
67
|
+
|
68
|
+
/// @dev Applications linked to active risks may be underwritten
|
69
|
+
function activate(RiskId riskId) external restricted() {
|
70
|
+
NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
|
71
|
+
_activate(productNftId, riskId.toKey32());
|
72
|
+
emit LogRiskSetRiskActive(productNftId, riskId);
|
73
|
+
}
|
74
|
+
|
75
|
+
/// @dev Applications linked to paused/archived risks may not be underwritten
|
76
|
+
function pause(RiskId riskId) external restricted() {
|
77
|
+
NftId productNftId = ObjectSetHelperLib.getProductNftId(_instanceAddress, riskId);
|
78
|
+
_deactivate(productNftId, riskId.toKey32());
|
79
|
+
emit LogRiskSetRiskPaused(productNftId, riskId);
|
80
|
+
}
|
81
|
+
|
82
|
+
function checkRisk(NftId productNftId, RiskId riskId)
|
83
|
+
public
|
84
|
+
view
|
85
|
+
returns (bool exists, bool active)
|
86
|
+
{
|
87
|
+
Key32 riskKey32 = riskId.toKey32();
|
88
|
+
exists = _contains(productNftId, riskKey32);
|
89
|
+
|
90
|
+
if (exists) {
|
91
|
+
active = _isActive(productNftId, riskKey32);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
function risks(NftId productNftId) external view returns(uint256) {
|
96
|
+
return _objects(productNftId);
|
97
|
+
}
|
98
|
+
|
99
|
+
function getRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
|
100
|
+
return RiskIdLib.toRiskId(_getObject(productNftId, idx).toKeyId());
|
101
|
+
}
|
102
|
+
|
103
|
+
function activeRisks(NftId productNftId) external view returns(uint256) {
|
104
|
+
return _activeObjs(productNftId);
|
105
|
+
}
|
106
|
+
|
107
|
+
function getActiveRiskId(NftId productNftId, uint256 idx) external view returns(RiskId riskId) {
|
108
|
+
return RiskIdLib.toRiskId(_getActiveObject(productNftId, idx).toKeyId());
|
109
|
+
}
|
110
|
+
|
111
|
+
function linkedPolicies(RiskId riskId) external view returns(uint256) {
|
112
|
+
return LibNftIdSet.size(_activePolicies[riskId]);
|
113
|
+
}
|
114
|
+
|
115
|
+
function getLinkedPolicyNftId(RiskId riskId, uint256 idx) external view returns(NftId policyNftId) {
|
116
|
+
return LibNftIdSet.getElementAt(_activePolicies[riskId], idx);
|
117
|
+
}
|
118
|
+
}
|