@etherisc/gif-next 0.0.2-ba07940-332 → 0.0.2-ba4eef0-232
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 +449 -248
- 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 +184 -22
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +112 -12
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +221 -39
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +700 -317
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +201 -46
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +619 -219
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +138 -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 +556 -424
- 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 +1954 -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 +324 -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 +300 -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 +56 -17
- package/contracts/instance/IInstanceService.sol +22 -10
- package/contracts/instance/Instance.sol +93 -29
- package/contracts/instance/InstanceAdmin.sol +279 -106
- package/contracts/instance/InstanceAuthorizationV3.sol +87 -46
- package/contracts/instance/InstanceReader.sol +187 -32
- package/contracts/instance/InstanceService.sol +167 -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 +177 -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 +24 -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
@@ -0,0 +1,65 @@
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
2
|
+
pragma solidity ^0.8.20;
|
3
|
+
|
4
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
5
|
+
import {IPolicy} from "../instance/module/IPolicy.sol";
|
6
|
+
import {IPolicyService} from "../product/IPolicyService.sol";
|
7
|
+
import {NftId} from "../type/NftId.sol";
|
8
|
+
import {StateId, CLOSED, COLLATERALIZED} from "../type/StateId.sol";
|
9
|
+
import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
|
10
|
+
|
11
|
+
library PolicyServiceLib {
|
12
|
+
|
13
|
+
function checkExpiration(
|
14
|
+
Timestamp newExpiredAt,
|
15
|
+
NftId policyNftId,
|
16
|
+
StateId policyState,
|
17
|
+
IPolicy.PolicyInfo memory policyInfo
|
18
|
+
)
|
19
|
+
external
|
20
|
+
view
|
21
|
+
{
|
22
|
+
if (policyState != COLLATERALIZED()) {
|
23
|
+
revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
24
|
+
}
|
25
|
+
if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
|
26
|
+
revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
|
27
|
+
}
|
28
|
+
|
29
|
+
// check expiredAt represents a valid expiry time
|
30
|
+
if (newExpiredAt >= policyInfo.expiredAt) {
|
31
|
+
revert IPolicyService.ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, newExpiredAt);
|
32
|
+
}
|
33
|
+
|
34
|
+
if (newExpiredAt.gtz() && newExpiredAt < TimestampLib.blockTimestamp()) {
|
35
|
+
revert IPolicyService.ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newExpiredAt);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
|
40
|
+
external
|
41
|
+
view
|
42
|
+
returns (bool isCloseable)
|
43
|
+
{
|
44
|
+
// policy already closed
|
45
|
+
if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
|
46
|
+
return false;
|
47
|
+
}
|
48
|
+
|
49
|
+
IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
|
50
|
+
|
51
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
52
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
53
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
54
|
+
|
55
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
56
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
57
|
+
|
58
|
+
// not closeable: not yet expired
|
59
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
60
|
+
|
61
|
+
// all conditions to close the policy are met
|
62
|
+
return true;
|
63
|
+
}
|
64
|
+
|
65
|
+
}
|
@@ -17,7 +17,7 @@ contract PolicyServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
{
|
19
19
|
PolicyService svc = new PolicyService{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),
|
@@ -9,7 +9,7 @@ import {NftId} from "../type/NftId.sol";
|
|
9
9
|
import {Fee} from "../type/Fee.sol";
|
10
10
|
import {ReferralId} from "../type/Referral.sol";
|
11
11
|
import {RiskId} from "../type/RiskId.sol";
|
12
|
-
import {PRODUCT, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
|
12
|
+
import {PRODUCT, BUNDLE, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
|
13
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
14
14
|
|
15
15
|
import {IProductComponent} from "./IProductComponent.sol";
|
@@ -42,14 +42,15 @@ contract PricingService is
|
|
42
42
|
initializer()
|
43
43
|
{
|
44
44
|
(
|
45
|
-
address
|
46
|
-
address
|
45
|
+
address authority,
|
46
|
+
address registry
|
47
47
|
) = abi.decode(data, (address, address));
|
48
48
|
|
49
|
-
|
50
|
-
_registerInterface(type(IPricingService).interfaceId);
|
49
|
+
__Service_init(authority, registry, owner);
|
51
50
|
|
52
51
|
_distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
|
52
|
+
|
53
|
+
_registerInterface(type(IPricingService).interfaceId);
|
53
54
|
}
|
54
55
|
|
55
56
|
/// @dev calculates the premium amount for the specified attributes
|
@@ -70,6 +71,9 @@ contract PricingService is
|
|
70
71
|
IPolicy.PremiumInfo memory premium
|
71
72
|
)
|
72
73
|
{
|
74
|
+
_checkNftType(productNftId, PRODUCT());
|
75
|
+
_checkNftType(bundleNftId, BUNDLE());
|
76
|
+
|
73
77
|
InstanceReader reader;
|
74
78
|
Amount netPremiumAmount;
|
75
79
|
|
@@ -83,6 +87,11 @@ contract PricingService is
|
|
83
87
|
// get instance reader from local instance variable
|
84
88
|
reader = instance.getInstanceReader();
|
85
89
|
|
90
|
+
NftId riskProductNftId = reader.getRiskInfo(riskId).productNftId;
|
91
|
+
if (productNftId != riskProductNftId) {
|
92
|
+
revert ErrorPricingServiceRiskProductMismatch(riskId, riskProductNftId, productNftId);
|
93
|
+
}
|
94
|
+
|
86
95
|
// calculate net premium
|
87
96
|
netPremiumAmount = IProductComponent(registryInfo.objectAddress).calculateNetPremium(
|
88
97
|
sumInsuredAmount,
|
@@ -95,6 +104,7 @@ contract PricingService is
|
|
95
104
|
{
|
96
105
|
// get configurations for all involed objects
|
97
106
|
IComponents.ProductInfo memory productInfo = reader.getProductInfo(productNftId);
|
107
|
+
IComponents.FeeInfo memory feeInfo = reader.getFeeInfo(productNftId);
|
98
108
|
|
99
109
|
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
100
110
|
if(bundleInfo.poolNftId != productInfo.poolNftId) {
|
@@ -104,21 +114,22 @@ contract PricingService is
|
|
104
114
|
// calculate fixed fees for product, pool, bundle
|
105
115
|
premium = _getFixedFeeAmounts(
|
106
116
|
netPremiumAmount,
|
107
|
-
|
117
|
+
feeInfo,
|
108
118
|
bundleInfo
|
109
119
|
);
|
110
120
|
|
111
121
|
// calculate variable fees for product, pool, bundle
|
112
122
|
premium = _calculateVariableFeeAmounts(
|
113
123
|
premium,
|
114
|
-
|
124
|
+
feeInfo,
|
115
125
|
bundleInfo
|
116
126
|
);
|
117
127
|
|
118
128
|
// calculate distribution fee and (if applicable) commission
|
119
129
|
premium = _calculateDistributionOwnerFeeAmount(
|
120
130
|
premium,
|
121
|
-
|
131
|
+
feeInfo,
|
132
|
+
productInfo.distributionNftId,
|
122
133
|
referralId,
|
123
134
|
reader
|
124
135
|
);
|
@@ -134,7 +145,7 @@ contract PricingService is
|
|
134
145
|
revert ErrorPricingServiceTargetWalletAmountsMismatch();
|
135
146
|
}
|
136
147
|
|
137
|
-
if (premium.distributionOwnerFeeFixAmount.toInt() <
|
148
|
+
if (premium.distributionOwnerFeeFixAmount.toInt() < feeInfo.minDistributionOwnerFee.fixedFee) {
|
138
149
|
revert ErrorPricingServiceFeeCalculationMismatch(
|
139
150
|
premium.distributionFeeFixAmount,
|
140
151
|
premium.distributionFeeVarAmount,
|
@@ -161,7 +172,7 @@ contract PricingService is
|
|
161
172
|
// internal functions
|
162
173
|
function _getFixedFeeAmounts(
|
163
174
|
Amount netPremiumAmount,
|
164
|
-
IComponents.
|
175
|
+
IComponents.FeeInfo memory feeInfo,
|
165
176
|
IBundle.BundleInfo memory bundleInfo
|
166
177
|
)
|
167
178
|
internal
|
@@ -174,11 +185,11 @@ contract PricingService is
|
|
174
185
|
premium.netPremiumAmount = netPremiumAmount;
|
175
186
|
premium.fullPremiumAmount = netPremiumAmount;
|
176
187
|
|
177
|
-
Amount t = AmountLib.toAmount(
|
188
|
+
Amount t = AmountLib.toAmount(feeInfo.productFee.fixedFee);
|
178
189
|
premium.productFeeFixAmount = t;
|
179
190
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
180
191
|
|
181
|
-
t = AmountLib.toAmount(
|
192
|
+
t = AmountLib.toAmount(feeInfo.poolFee.fixedFee);
|
182
193
|
premium.poolFeeFixAmount = t;
|
183
194
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
184
195
|
|
@@ -186,14 +197,14 @@ contract PricingService is
|
|
186
197
|
premium.bundleFeeFixAmount = t;
|
187
198
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
188
199
|
|
189
|
-
t = AmountLib.toAmount(
|
200
|
+
t = AmountLib.toAmount(feeInfo.distributionFee.fixedFee);
|
190
201
|
premium.distributionFeeFixAmount = t;
|
191
202
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
192
203
|
}
|
193
204
|
|
194
205
|
function _calculateVariableFeeAmounts(
|
195
206
|
IPolicy.PremiumInfo memory premium,
|
196
|
-
IComponents.
|
207
|
+
IComponents.FeeInfo memory feeInfo,
|
197
208
|
IBundle.BundleInfo memory bundleInfo
|
198
209
|
)
|
199
210
|
internal
|
@@ -204,11 +215,11 @@ contract PricingService is
|
|
204
215
|
{
|
205
216
|
Amount netPremiumAmount = premium.netPremiumAmount;
|
206
217
|
|
207
|
-
Amount t = netPremiumAmount.multiplyWith(
|
218
|
+
Amount t = netPremiumAmount.multiplyWith(feeInfo.productFee.fractionalFee);
|
208
219
|
premium.productFeeVarAmount = t;
|
209
220
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
210
221
|
|
211
|
-
t = netPremiumAmount.multiplyWith(
|
222
|
+
t = netPremiumAmount.multiplyWith(feeInfo.poolFee.fractionalFee);
|
212
223
|
premium.poolFeeVarAmount = t;
|
213
224
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
214
225
|
|
@@ -216,7 +227,7 @@ contract PricingService is
|
|
216
227
|
premium.bundleFeeVarAmount = t;
|
217
228
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
218
229
|
|
219
|
-
t = netPremiumAmount.multiplyWith(
|
230
|
+
t = netPremiumAmount.multiplyWith(feeInfo.distributionFee.fractionalFee);
|
220
231
|
premium.distributionFeeVarAmount = t;
|
221
232
|
premium.fullPremiumAmount = premium.fullPremiumAmount + t;
|
222
233
|
|
@@ -225,7 +236,8 @@ contract PricingService is
|
|
225
236
|
|
226
237
|
function _calculateDistributionOwnerFeeAmount(
|
227
238
|
IPolicy.PremiumInfo memory premium,
|
228
|
-
IComponents.
|
239
|
+
IComponents.FeeInfo memory feeInfo,
|
240
|
+
NftId distributionNftId,
|
229
241
|
// ISetup.DistributionSetupInfo memory distInfo,
|
230
242
|
ReferralId referralId,
|
231
243
|
InstanceReader reader
|
@@ -236,14 +248,14 @@ contract PricingService is
|
|
236
248
|
{
|
237
249
|
|
238
250
|
// if the referral is not valid, then the distribution owner gets everything
|
239
|
-
if (
|
251
|
+
if (distributionNftId.eqz() || ! _distributionService.referralIsValid(distributionNftId, referralId)) {
|
240
252
|
premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
|
241
253
|
premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
|
242
254
|
premium.premiumAmount = premium.fullPremiumAmount;
|
243
255
|
return premium;
|
244
256
|
}
|
245
257
|
|
246
|
-
Fee memory minDistributionOwnerFee =
|
258
|
+
Fee memory minDistributionOwnerFee = feeInfo.minDistributionOwnerFee;
|
247
259
|
|
248
260
|
// if the referral is valid, the the commission and discount are calculated based in the full premium
|
249
261
|
// the remaing amount goes to the distribution owner
|
@@ -12,14 +12,14 @@ contract PricingServiceManager is ProxyManager {
|
|
12
12
|
/// @dev initializes proxy manager with pricing service implementation and deploys instance
|
13
13
|
constructor(
|
14
14
|
address authority,
|
15
|
-
address
|
15
|
+
address registry,
|
16
16
|
bytes32 salt
|
17
17
|
)
|
18
18
|
{
|
19
19
|
PricingService pricingSrv = new PricingService{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(pricingSrv),
|
24
24
|
data,
|
25
25
|
salt);
|
@@ -3,23 +3,20 @@ pragma solidity ^0.8.20;
|
|
3
3
|
|
4
4
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
5
5
|
import {ClaimId} from "../type/ClaimId.sol";
|
6
|
-
import {
|
7
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
8
|
-
import {IRisk} from "../instance/module/IRisk.sol";
|
6
|
+
import {Fee} from "../type/Fee.sol";
|
9
7
|
import {IApplicationService} from "./IApplicationService.sol";
|
10
8
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
11
9
|
import {IComponentService} from "../shared/IComponentService.sol";
|
12
10
|
import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
|
13
|
-
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
14
11
|
import {IPolicyService} from "./IPolicyService.sol";
|
15
12
|
import {IRiskService} from "./IRiskService.sol";
|
16
13
|
import {IClaimService} from "./IClaimService.sol";
|
17
14
|
import {IPricingService} from "./IPricingService.sol";
|
18
15
|
import {IProductComponent} from "./IProductComponent.sol";
|
19
|
-
import {NftId
|
20
|
-
import {
|
16
|
+
import {NftId} from "../type/NftId.sol";
|
17
|
+
import {COMPONENT, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
|
21
18
|
import {PayoutId} from "../type/PayoutId.sol";
|
22
|
-
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
|
19
|
+
import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
|
23
20
|
import {ReferralId} from "../type/Referral.sol";
|
24
21
|
import {RiskId, RiskIdLib} from "../type/RiskId.sol";
|
25
22
|
import {Seconds} from "../type/Seconds.sol";
|
@@ -28,9 +25,6 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
28
25
|
|
29
26
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
30
27
|
import {IComponents} from "../instance/module/IComponents.sol";
|
31
|
-
import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
|
32
|
-
import {IOracleComponent} from "../oracle/IOracleComponent.sol";
|
33
|
-
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
34
28
|
|
35
29
|
abstract contract Product is
|
36
30
|
InstanceLinkedComponent,
|
@@ -41,6 +35,7 @@ abstract contract Product is
|
|
41
35
|
|
42
36
|
struct ProductStorage {
|
43
37
|
IComponents.ProductInfo _productInfo;
|
38
|
+
IComponents.FeeInfo _feeInfo;
|
44
39
|
IComponentService _componentService;
|
45
40
|
IRiskService _riskService;
|
46
41
|
IApplicationService _applicationService;
|
@@ -126,13 +121,22 @@ abstract contract Product is
|
|
126
121
|
return _getProductStorage()._productInfo;
|
127
122
|
}
|
128
123
|
|
124
|
+
function getInitialFeeInfo()
|
125
|
+
public
|
126
|
+
virtual
|
127
|
+
view
|
128
|
+
returns (IComponents.FeeInfo memory feeInfo)
|
129
|
+
{
|
130
|
+
return _getProductStorage()._feeInfo;
|
131
|
+
}
|
132
|
+
|
129
133
|
|
130
134
|
function _initializeProduct(
|
131
135
|
address registry,
|
132
136
|
NftId instanceNftId,
|
133
137
|
string memory name,
|
134
|
-
address token,
|
135
138
|
IComponents.ProductInfo memory productInfo,
|
139
|
+
IComponents.FeeInfo memory feeInfo,
|
136
140
|
IAuthorization authorization,
|
137
141
|
address initialOwner,
|
138
142
|
bytes memory componentData // writeonly data that will saved in the object info record of the registry
|
@@ -145,7 +149,6 @@ abstract contract Product is
|
|
145
149
|
registry,
|
146
150
|
instanceNftId,
|
147
151
|
name,
|
148
|
-
token,
|
149
152
|
PRODUCT(),
|
150
153
|
authorization,
|
151
154
|
productInfo.isInterceptingPolicyTransfers,
|
@@ -154,7 +157,8 @@ abstract contract Product is
|
|
154
157
|
|
155
158
|
ProductStorage storage $ = _getProductStorage();
|
156
159
|
$._productInfo = productInfo;
|
157
|
-
$.
|
160
|
+
$._feeInfo = feeInfo;
|
161
|
+
$._riskService = IRiskService(_getServiceAddress(RISK()));
|
158
162
|
$._applicationService = IApplicationService(_getServiceAddress(APPLICATION()));
|
159
163
|
$._policyService = IPolicyService(_getServiceAddress(POLICY()));
|
160
164
|
$._claimService = IClaimService(_getServiceAddress(CLAIM()));
|
@@ -177,13 +181,14 @@ abstract contract Product is
|
|
177
181
|
|
178
182
|
|
179
183
|
function _createRisk(
|
180
|
-
|
184
|
+
bytes32 id,
|
181
185
|
bytes memory data
|
182
186
|
)
|
183
187
|
internal
|
184
188
|
virtual
|
189
|
+
returns (RiskId riskId)
|
185
190
|
{
|
186
|
-
_getProductStorage()._riskService.createRisk(
|
191
|
+
return _getProductStorage()._riskService.createRisk(
|
187
192
|
id,
|
188
193
|
data
|
189
194
|
);
|
@@ -216,11 +221,6 @@ abstract contract Product is
|
|
216
221
|
}
|
217
222
|
|
218
223
|
|
219
|
-
function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
|
220
|
-
return getInstance().getInstanceReader().getRiskInfo(id);
|
221
|
-
}
|
222
|
-
|
223
|
-
|
224
224
|
function _createApplication(
|
225
225
|
address applicationOwner,
|
226
226
|
RiskId riskId,
|
@@ -253,8 +253,9 @@ abstract contract Product is
|
|
253
253
|
)
|
254
254
|
internal
|
255
255
|
virtual
|
256
|
+
returns (Amount premiumAmount)
|
256
257
|
{
|
257
|
-
_getProductStorage()._policyService.createPolicy(
|
258
|
+
premiumAmount = _getProductStorage()._policyService.createPolicy(
|
258
259
|
applicationNftId,
|
259
260
|
activateAt);
|
260
261
|
}
|
@@ -280,6 +281,21 @@ abstract contract Product is
|
|
280
281
|
expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
|
281
282
|
}
|
282
283
|
|
284
|
+
/// @dev adjust the activation date of the policy.
|
285
|
+
/// The policy must already have an activation date set.
|
286
|
+
/// Allowed values are from the current blocktime to the expiration date of the policy.
|
287
|
+
function _adjustActivation(
|
288
|
+
NftId policyNftId,
|
289
|
+
Timestamp activateAt
|
290
|
+
)
|
291
|
+
internal
|
292
|
+
virtual
|
293
|
+
{
|
294
|
+
_getProductStorage()._policyService.adjustActivation(
|
295
|
+
policyNftId,
|
296
|
+
activateAt);
|
297
|
+
}
|
298
|
+
|
283
299
|
function _collectPremium(
|
284
300
|
NftId policyNftId,
|
285
301
|
Timestamp activateAt
|
@@ -329,6 +345,18 @@ abstract contract Product is
|
|
329
345
|
claimData);
|
330
346
|
}
|
331
347
|
|
348
|
+
function _revokeClaim(
|
349
|
+
NftId policyNftId,
|
350
|
+
ClaimId claimId
|
351
|
+
)
|
352
|
+
internal
|
353
|
+
virtual
|
354
|
+
{
|
355
|
+
_getProductStorage()._claimService.revoke(
|
356
|
+
policyNftId,
|
357
|
+
claimId);
|
358
|
+
}
|
359
|
+
|
332
360
|
function _confirmClaim(
|
333
361
|
NftId policyNftId,
|
334
362
|
ClaimId claimId,
|
@@ -419,8 +447,16 @@ abstract contract Product is
|
|
419
447
|
payoutId);
|
420
448
|
}
|
421
449
|
|
422
|
-
function
|
423
|
-
|
450
|
+
function _cancelPayout(
|
451
|
+
NftId policyNftId,
|
452
|
+
PayoutId payoutId
|
453
|
+
)
|
454
|
+
internal
|
455
|
+
virtual
|
456
|
+
{
|
457
|
+
_getProductStorage()._claimService.cancelPayout(
|
458
|
+
policyNftId,
|
459
|
+
payoutId);
|
424
460
|
}
|
425
461
|
|
426
462
|
function _getProductStorage() internal virtual pure returns (ProductStorage storage $) {
|
@@ -2,27 +2,25 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IInstance} from "../instance/IInstance.sol";
|
5
|
-
import {
|
6
|
-
import {IPoolService} from "../pool/PoolService.sol";
|
7
|
-
import {IRiskService} from "./IRiskService.sol";
|
8
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
5
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
9
6
|
import {IRisk} from "../instance/module/IRisk.sol";
|
7
|
+
import {IRiskService} from "./IRiskService.sol";
|
10
8
|
|
9
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
11
10
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
12
|
-
import {ObjectType,
|
13
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
11
|
+
import {ObjectType, COMPONENT, PRODUCT, RISK} from "../type/ObjectType.sol";
|
12
|
+
import {ACTIVE, PAUSED, KEEP_STATE} from "../type/StateId.sol";
|
14
13
|
import {NftId} from "../type/NftId.sol";
|
15
|
-
import {RiskId} from "../type/RiskId.sol";
|
14
|
+
import {RiskId, RiskIdLib} from "../type/RiskId.sol";
|
16
15
|
import {StateId} from "../type/StateId.sol";
|
17
|
-
import {
|
16
|
+
import {RiskSet} from "../instance/RiskSet.sol";
|
17
|
+
import {Service} from "../shared/Service.sol";
|
18
|
+
import {TimestampLib} from "../type/Timestamp.sol";
|
18
19
|
|
19
20
|
contract RiskService is
|
20
|
-
|
21
|
+
Service,
|
21
22
|
IRiskService
|
22
23
|
{
|
23
|
-
IInstanceService private _instanceService;
|
24
|
-
IPoolService internal _poolService;
|
25
|
-
IRegistryService private _registryService;
|
26
24
|
|
27
25
|
function _initialize(
|
28
26
|
address owner,
|
@@ -33,34 +31,41 @@ contract RiskService is
|
|
33
31
|
virtual override
|
34
32
|
{
|
35
33
|
(
|
36
|
-
address
|
37
|
-
address
|
34
|
+
address authority,
|
35
|
+
address registry
|
38
36
|
) = abi.decode(data, (address, address));
|
39
37
|
|
40
|
-
|
41
|
-
|
42
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
43
|
-
_poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
|
44
|
-
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
45
|
-
|
38
|
+
__Service_init(authority, registry, owner);
|
46
39
|
_registerInterface(type(IRiskService).interfaceId);
|
47
40
|
}
|
48
41
|
|
49
|
-
|
42
|
+
/// @inheritdoc IRiskService
|
50
43
|
function createRisk(
|
51
|
-
|
44
|
+
bytes32 id,
|
52
45
|
bytes memory data
|
53
46
|
)
|
54
47
|
external
|
55
|
-
|
48
|
+
restricted()
|
49
|
+
returns (RiskId riskId)
|
56
50
|
{
|
57
|
-
|
58
|
-
|
51
|
+
// checks
|
52
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
53
|
+
|
54
|
+
// effects
|
55
|
+
riskId = RiskIdLib.toRiskId(productNftId, id);
|
56
|
+
IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo({
|
57
|
+
productNftId: productNftId,
|
58
|
+
createdAt: TimestampLib.blockTimestamp(),
|
59
|
+
data: data});
|
59
60
|
|
60
61
|
instance.getInstanceStore().createRisk(
|
61
62
|
riskId,
|
62
63
|
riskInfo
|
63
64
|
);
|
65
|
+
|
66
|
+
// add risk to RiskSet
|
67
|
+
RiskSet riskSet = instance.getRiskSet();
|
68
|
+
riskSet.add(riskId);
|
64
69
|
}
|
65
70
|
|
66
71
|
|
@@ -68,12 +73,20 @@ contract RiskService is
|
|
68
73
|
RiskId riskId,
|
69
74
|
bytes memory data
|
70
75
|
)
|
71
|
-
external
|
76
|
+
external
|
77
|
+
restricted()
|
72
78
|
{
|
73
|
-
|
74
|
-
|
79
|
+
// checks
|
80
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
75
81
|
|
82
|
+
// effects
|
83
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
76
84
|
IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
|
85
|
+
|
86
|
+
if (riskInfo.productNftId != productNftId) {
|
87
|
+
revert ErrorRiskServiceRiskProductMismatch(riskId, riskInfo.productNftId, productNftId);
|
88
|
+
}
|
89
|
+
|
77
90
|
riskInfo.data = data;
|
78
91
|
instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
|
79
92
|
}
|
@@ -83,14 +96,59 @@ contract RiskService is
|
|
83
96
|
RiskId riskId,
|
84
97
|
StateId state
|
85
98
|
)
|
86
|
-
external
|
99
|
+
external
|
100
|
+
restricted()
|
87
101
|
{
|
88
|
-
|
102
|
+
// checks
|
103
|
+
(NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
|
104
|
+
|
105
|
+
NftId riskProductNftId = instance.getInstanceReader().getRiskInfo(riskId).productNftId;
|
106
|
+
if (riskProductNftId != productNftId) {
|
107
|
+
revert ErrorRiskServiceRiskProductMismatch(riskId, riskProductNftId, productNftId);
|
108
|
+
}
|
109
|
+
|
110
|
+
// effects
|
89
111
|
instance.getInstanceStore().updateRiskState(riskId, state);
|
112
|
+
|
113
|
+
if (state == ACTIVE()) {
|
114
|
+
instance.getRiskSet().activate(riskId);
|
115
|
+
} else if (state == PAUSED()) {
|
116
|
+
instance.getRiskSet().pause(riskId);
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
function _getAndVerifyActiveComponent(ObjectType expectedType)
|
121
|
+
internal
|
122
|
+
view
|
123
|
+
returns (
|
124
|
+
NftId componentNftId,
|
125
|
+
IInstance instance
|
126
|
+
)
|
127
|
+
{
|
128
|
+
IRegistry.ObjectInfo memory info;
|
129
|
+
address instanceAddress;
|
130
|
+
bool isActive = true;
|
131
|
+
|
132
|
+
if (expectedType != COMPONENT()) {
|
133
|
+
(info, instanceAddress) = ContractLib.getAndVerifyComponent(
|
134
|
+
getRegistry(),
|
135
|
+
msg.sender, // caller
|
136
|
+
expectedType,
|
137
|
+
isActive);
|
138
|
+
} else {
|
139
|
+
(info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
|
140
|
+
getRegistry(),
|
141
|
+
msg.sender,
|
142
|
+
isActive);
|
143
|
+
}
|
144
|
+
|
145
|
+
// get component nft id and instance
|
146
|
+
componentNftId = info.nftId;
|
147
|
+
instance = IInstance(instanceAddress);
|
90
148
|
}
|
91
149
|
|
92
150
|
|
93
151
|
function _getDomain() internal pure override returns(ObjectType) {
|
94
|
-
return
|
152
|
+
return RISK();
|
95
153
|
}
|
96
154
|
}
|
@@ -17,7 +17,7 @@ contract RiskServiceManager is ProxyManager {
|
|
17
17
|
)
|
18
18
|
{
|
19
19
|
RiskService svc = new RiskService{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),
|
@@ -62,6 +62,7 @@ contract ChainNft is ERC721Enumerable {
|
|
62
62
|
// 3 -> staking
|
63
63
|
// >= 4 -> all other objects
|
64
64
|
_idNext = 4;
|
65
|
+
_totalMinted = 0;
|
65
66
|
}
|
66
67
|
|
67
68
|
/**
|
@@ -108,10 +109,11 @@ contract ChainNft is ERC721Enumerable {
|
|
108
109
|
|
109
110
|
|
110
111
|
/**
|
111
|
-
* @dev
|
112
|
-
*
|
112
|
+
* @dev Amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id.
|
113
|
+
* This allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
|
113
114
|
*/
|
114
115
|
function transferFrom(address from, address to, uint256 tokenId) public override (IERC721, ERC721) {
|
116
|
+
// default open zeppelin implementation of transferFrom
|
115
117
|
super.transferFrom(from, to, tokenId);
|
116
118
|
|
117
119
|
if (_interceptor[tokenId] != address(0)) {
|