@etherisc/gif-next 0.0.2-f13c010-035 → 0.0.2-f13fd28-503
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 +148 -62
- 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/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +149 -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 +82 -12
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +68 -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 +106 -186
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +152 -33
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -89
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +154 -108
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +75 -53
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -58
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +50 -3
- 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 +101 -164
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +152 -33
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +258 -290
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +152 -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 +137 -129
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +90 -126
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +225 -162
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +641 -310
- 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 +118 -39
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +77 -20
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +163 -56
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +362 -99
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +140 -40
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +550 -224
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +104 -74
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +49 -27
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +410 -370
- 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 +74 -154
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +126 -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 +44 -58
- 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 +58 -90
- 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 +57 -104
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +152 -33
- 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 +44 -97
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +164 -217
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -128
- 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 -353
- 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 +105 -63
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +45 -27
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +163 -175
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +152 -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 +61 -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 +27 -3
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +150 -144
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +27 -3
- 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 +99 -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 +163 -175
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +88 -73
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +54 -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 +262 -220
- 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 +1849 -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 +318 -52
- 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 +57 -75
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +225 -439
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -64
- 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 +454 -5
- 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 +44 -44
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +125 -282
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +44 -58
- 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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +57 -89
- 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 +289 -112
- 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 +70 -30
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +65 -83
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +98 -3
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -33
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +145 -176
- 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 +62 -46
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +4 -4
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +151 -49
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +51 -25
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +129 -129
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -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 +2 -2
- 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 +62 -5
- 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 +47 -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 +177 -84
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +277 -229
- package/contracts/authorization/IAccessAdmin.sol +13 -7
- package/contracts/authorization/IAuthorization.sol +15 -1
- package/contracts/distribution/BasicDistribution.sol +6 -6
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +32 -30
- package/contracts/distribution/DistributionService.sol +36 -34
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +5 -6
- package/contracts/examples/fire/FirePool.sol +22 -5
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +31 -8
- package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +33 -3
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +47 -21
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +13 -9
- package/contracts/instance/IInstanceService.sol +9 -9
- package/contracts/instance/Instance.sol +33 -18
- package/contracts/instance/InstanceAdmin.sol +247 -84
- package/contracts/instance/InstanceAuthorizationV3.sol +50 -31
- package/contracts/instance/InstanceReader.sol +162 -32
- package/contracts/instance/InstanceService.sol +73 -82
- 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 +4 -4
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/Oracle.sol +1 -1
- package/contracts/oracle/OracleService.sol +92 -73
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +24 -3
- package/contracts/pool/BasicPoolAuthorization.sol +27 -8
- package/contracts/pool/BundleService.sol +47 -145
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -60
- package/contracts/pool/Pool.sol +106 -96
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +427 -214
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +15 -15
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +9 -11
- package/contracts/product/BasicProductAuthorization.sol +24 -10
- package/contracts/product/ClaimService.sol +157 -137
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IProductComponent.sol +4 -1
- package/contracts/product/PolicyService.sol +277 -261
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +23 -19
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +62 -39
- package/contracts/product/RiskService.sol +74 -25
- 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 +132 -226
- package/contracts/registry/RegistryService.sol +3 -3
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +129 -119
- package/contracts/registry/ServiceAuthorizationV3.sol +93 -40
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +61 -105
- package/contracts/shared/ComponentService.sol +301 -295
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +16 -14
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +4 -17
- package/contracts/shared/IComponentService.sol +16 -25
- package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
- package/contracts/shared/IRegisterable.sol +15 -4
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +4 -20
- package/contracts/shared/NftOwnable.sol +4 -4
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +44 -20
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +8 -27
- package/contracts/shared/TokenHandler.sol +263 -105
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -9
- package/contracts/staking/IStakingService.sol +11 -1
- package/contracts/staking/StakeManagerLib.sol +63 -7
- package/contracts/staking/Staking.sol +72 -39
- package/contracts/staking/StakingReader.sol +1 -1
- package/contracts/staking/StakingService.sol +56 -14
- package/contracts/staking/StakingServiceManager.sol +5 -4
- 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 +48 -21
- package/contracts/type/RiskId.sol +23 -6
- 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 +15 -5
- package/contracts/upgradeability/ProxyManager.sol +1 -1
- package/package.json +3 -3
- 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/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
- 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
- package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
| @@ -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), 
         | 
| @@ -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
         | 
| @@ -98,6 +99,7 @@ contract PricingService is | |
| 98 99 | 
             
                    {
         | 
| 99 100 | 
             
                        // get configurations for all involed objects
         | 
| 100 101 | 
             
                        IComponents.ProductInfo memory productInfo = reader.getProductInfo(productNftId);
         | 
| 102 | 
            +
                        IComponents.FeeInfo memory feeInfo = reader.getFeeInfo(productNftId);
         | 
| 101 103 |  | 
| 102 104 | 
             
                        IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
         | 
| 103 105 | 
             
                        if(bundleInfo.poolNftId != productInfo.poolNftId) {
         | 
| @@ -107,21 +109,22 @@ contract PricingService is | |
| 107 109 | 
             
                        // calculate fixed fees for product, pool, bundle
         | 
| 108 110 | 
             
                        premium = _getFixedFeeAmounts(
         | 
| 109 111 | 
             
                            netPremiumAmount,
         | 
| 110 | 
            -
                             | 
| 112 | 
            +
                            feeInfo,
         | 
| 111 113 | 
             
                            bundleInfo
         | 
| 112 114 | 
             
                        );
         | 
| 113 115 |  | 
| 114 116 | 
             
                        // calculate variable fees for product, pool, bundle
         | 
| 115 117 | 
             
                        premium = _calculateVariableFeeAmounts(
         | 
| 116 118 | 
             
                            premium,
         | 
| 117 | 
            -
                             | 
| 119 | 
            +
                            feeInfo,
         | 
| 118 120 | 
             
                            bundleInfo
         | 
| 119 121 | 
             
                        );
         | 
| 120 122 |  | 
| 121 123 | 
             
                        // calculate distribution fee and (if applicable) commission
         | 
| 122 124 | 
             
                        premium = _calculateDistributionOwnerFeeAmount(
         | 
| 123 125 | 
             
                            premium,
         | 
| 124 | 
            -
                             | 
| 126 | 
            +
                            feeInfo,
         | 
| 127 | 
            +
                            productInfo.distributionNftId,
         | 
| 125 128 | 
             
                            referralId,
         | 
| 126 129 | 
             
                            reader
         | 
| 127 130 | 
             
                        );
         | 
| @@ -137,7 +140,7 @@ contract PricingService is | |
| 137 140 | 
             
                            revert ErrorPricingServiceTargetWalletAmountsMismatch();
         | 
| 138 141 | 
             
                        }
         | 
| 139 142 |  | 
| 140 | 
            -
                        if (premium.distributionOwnerFeeFixAmount.toInt() <  | 
| 143 | 
            +
                        if (premium.distributionOwnerFeeFixAmount.toInt() < feeInfo.minDistributionOwnerFee.fixedFee) {
         | 
| 141 144 | 
             
                            revert ErrorPricingServiceFeeCalculationMismatch( 
         | 
| 142 145 | 
             
                                premium.distributionFeeFixAmount,
         | 
| 143 146 | 
             
                                premium.distributionFeeVarAmount,
         | 
| @@ -164,7 +167,7 @@ contract PricingService is | |
| 164 167 | 
             
                // internal functions
         | 
| 165 168 | 
             
                function _getFixedFeeAmounts(
         | 
| 166 169 | 
             
                    Amount netPremiumAmount,
         | 
| 167 | 
            -
                    IComponents. | 
| 170 | 
            +
                    IComponents.FeeInfo memory feeInfo,
         | 
| 168 171 | 
             
                    IBundle.BundleInfo memory bundleInfo
         | 
| 169 172 | 
             
                )
         | 
| 170 173 | 
             
                    internal
         | 
| @@ -177,11 +180,11 @@ contract PricingService is | |
| 177 180 | 
             
                    premium.netPremiumAmount = netPremiumAmount;
         | 
| 178 181 | 
             
                    premium.fullPremiumAmount = netPremiumAmount;
         | 
| 179 182 |  | 
| 180 | 
            -
                    Amount t = AmountLib.toAmount( | 
| 183 | 
            +
                    Amount t = AmountLib.toAmount(feeInfo.productFee.fixedFee);
         | 
| 181 184 | 
             
                    premium.productFeeFixAmount = t;
         | 
| 182 185 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 183 186 |  | 
| 184 | 
            -
                    t = AmountLib.toAmount( | 
| 187 | 
            +
                    t = AmountLib.toAmount(feeInfo.poolFee.fixedFee);
         | 
| 185 188 | 
             
                    premium.poolFeeFixAmount = t;
         | 
| 186 189 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 187 190 |  | 
| @@ -189,14 +192,14 @@ contract PricingService is | |
| 189 192 | 
             
                    premium.bundleFeeFixAmount = t;
         | 
| 190 193 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 191 194 |  | 
| 192 | 
            -
                    t = AmountLib.toAmount( | 
| 195 | 
            +
                    t = AmountLib.toAmount(feeInfo.distributionFee.fixedFee);
         | 
| 193 196 | 
             
                    premium.distributionFeeFixAmount = t;
         | 
| 194 197 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 195 198 | 
             
                }
         | 
| 196 199 |  | 
| 197 200 | 
             
                function _calculateVariableFeeAmounts(
         | 
| 198 201 | 
             
                    IPolicy.PremiumInfo memory premium,
         | 
| 199 | 
            -
                    IComponents. | 
| 202 | 
            +
                    IComponents.FeeInfo memory feeInfo,
         | 
| 200 203 | 
             
                    IBundle.BundleInfo memory bundleInfo
         | 
| 201 204 | 
             
                )
         | 
| 202 205 | 
             
                    internal
         | 
| @@ -207,11 +210,11 @@ contract PricingService is | |
| 207 210 | 
             
                {
         | 
| 208 211 | 
             
                    Amount netPremiumAmount = premium.netPremiumAmount;
         | 
| 209 212 |  | 
| 210 | 
            -
                    Amount t = netPremiumAmount.multiplyWith( | 
| 213 | 
            +
                    Amount t = netPremiumAmount.multiplyWith(feeInfo.productFee.fractionalFee);
         | 
| 211 214 | 
             
                    premium.productFeeVarAmount = t;
         | 
| 212 215 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 213 216 |  | 
| 214 | 
            -
                    t = netPremiumAmount.multiplyWith( | 
| 217 | 
            +
                    t = netPremiumAmount.multiplyWith(feeInfo.poolFee.fractionalFee);
         | 
| 215 218 | 
             
                    premium.poolFeeVarAmount = t;
         | 
| 216 219 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 217 220 |  | 
| @@ -219,7 +222,7 @@ contract PricingService is | |
| 219 222 | 
             
                    premium.bundleFeeVarAmount = t;
         | 
| 220 223 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 221 224 |  | 
| 222 | 
            -
                    t = netPremiumAmount.multiplyWith( | 
| 225 | 
            +
                    t = netPremiumAmount.multiplyWith(feeInfo.distributionFee.fractionalFee);
         | 
| 223 226 | 
             
                    premium.distributionFeeVarAmount = t;
         | 
| 224 227 | 
             
                    premium.fullPremiumAmount = premium.fullPremiumAmount + t;
         | 
| 225 228 |  | 
| @@ -228,7 +231,8 @@ contract PricingService is | |
| 228 231 |  | 
| 229 232 | 
             
                function _calculateDistributionOwnerFeeAmount(
         | 
| 230 233 | 
             
                    IPolicy.PremiumInfo memory premium,
         | 
| 231 | 
            -
                    IComponents. | 
| 234 | 
            +
                    IComponents.FeeInfo memory feeInfo,
         | 
| 235 | 
            +
                    NftId distributionNftId,
         | 
| 232 236 | 
             
                    // ISetup.DistributionSetupInfo memory distInfo,
         | 
| 233 237 | 
             
                    ReferralId referralId,
         | 
| 234 238 | 
             
                    InstanceReader reader
         | 
| @@ -239,14 +243,14 @@ contract PricingService is | |
| 239 243 | 
             
                {
         | 
| 240 244 |  | 
| 241 245 | 
             
                    // if the referral is not valid, then the distribution owner gets everything
         | 
| 242 | 
            -
                    if ( | 
| 246 | 
            +
                    if (distributionNftId.eqz() || ! _distributionService.referralIsValid(distributionNftId, referralId)) {
         | 
| 243 247 | 
             
                        premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
         | 
| 244 248 | 
             
                        premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
         | 
| 245 249 | 
             
                        premium.premiumAmount = premium.fullPremiumAmount;
         | 
| 246 250 | 
             
                        return premium;
         | 
| 247 251 | 
             
                    }
         | 
| 248 252 |  | 
| 249 | 
            -
                    Fee memory minDistributionOwnerFee =  | 
| 253 | 
            +
                    Fee memory minDistributionOwnerFee = feeInfo.minDistributionOwnerFee;
         | 
| 250 254 |  | 
| 251 255 | 
             
                    // if the referral is valid, the the commission and discount are calculated based in the full premium
         | 
| 252 256 | 
             
                    // 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);
         | 
| @@ -19,7 +19,7 @@ import {IProductComponent} from "./IProductComponent.sol"; | |
| 19 19 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 20 20 | 
             
            import {ObjectType, COMPONENT, DISTRIBUTION, ORACLE, POOL, PRODUCT, BUNDLE, APPLICATION, POLICY, CLAIM, PRICE } from "../type/ObjectType.sol";
         | 
| 21 21 | 
             
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 22 | 
            -
            import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE } from "../type/ObjectType.sol";
         | 
| 22 | 
            +
            import {COMPONENT, PRODUCT, APPLICATION, POLICY, CLAIM, PRICE, BUNDLE, RISK } from "../type/ObjectType.sol";
         | 
| 23 23 | 
             
            import {ReferralId} from "../type/Referral.sol";
         | 
| 24 24 | 
             
            import {RiskId, RiskIdLib} from "../type/RiskId.sol";
         | 
| 25 25 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| @@ -40,15 +40,14 @@ abstract contract Product is | |
| 40 40 | 
             
                bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
         | 
| 41 41 |  | 
| 42 42 | 
             
                struct ProductStorage {
         | 
| 43 | 
            -
                     | 
| 44 | 
            -
                     | 
| 45 | 
            -
                     | 
| 43 | 
            +
                    IComponents.ProductInfo _productInfo;
         | 
| 44 | 
            +
                    IComponents.FeeInfo _feeInfo;
         | 
| 45 | 
            +
                    IComponentService _componentService;
         | 
| 46 46 | 
             
                    IRiskService _riskService;
         | 
| 47 47 | 
             
                    IApplicationService _applicationService;
         | 
| 48 48 | 
             
                    IPolicyService _policyService;
         | 
| 49 49 | 
             
                    IClaimService _claimService;
         | 
| 50 50 | 
             
                    IPricingService _pricingService;
         | 
| 51 | 
            -
                    IComponentService _componentService;
         | 
| 52 51 | 
             
                }
         | 
| 53 52 |  | 
| 54 53 |  | 
| @@ -125,38 +124,28 @@ abstract contract Product is | |
| 125 124 | 
             
                    view 
         | 
| 126 125 | 
             
                    returns (IComponents.ProductInfo memory poolInfo)
         | 
| 127 126 | 
             
                {
         | 
| 128 | 
            -
                     | 
| 127 | 
            +
                    return _getProductStorage()._productInfo;
         | 
| 128 | 
            +
                }
         | 
| 129 129 |  | 
| 130 | 
            -
             | 
| 131 | 
            -
             | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 134 | 
            -
             | 
| 135 | 
            -
             | 
| 136 | 
            -
             | 
| 137 | 
            -
                        oracleNftId: new NftId[]($._numberOfOracles),
         | 
| 138 | 
            -
                        productFee: FeeLib.zero(),
         | 
| 139 | 
            -
                        processingFee: FeeLib.zero(),
         | 
| 140 | 
            -
                        distributionFee: FeeLib.zero(),
         | 
| 141 | 
            -
                        minDistributionOwnerFee: FeeLib.zero(),
         | 
| 142 | 
            -
                        poolFee: FeeLib.zero(),
         | 
| 143 | 
            -
                        stakingFee: FeeLib.zero(),
         | 
| 144 | 
            -
                        performanceFee: FeeLib.zero()
         | 
| 145 | 
            -
                    });
         | 
| 130 | 
            +
                function getInitialFeeInfo()
         | 
| 131 | 
            +
                    public 
         | 
| 132 | 
            +
                    virtual 
         | 
| 133 | 
            +
                    view 
         | 
| 134 | 
            +
                    returns (IComponents.FeeInfo memory feeInfo)
         | 
| 135 | 
            +
                {
         | 
| 136 | 
            +
                    return _getProductStorage()._feeInfo;
         | 
| 146 137 | 
             
                }
         | 
| 147 138 |  | 
| 148 139 |  | 
| 149 140 | 
             
                function _initializeProduct(
         | 
| 150 141 | 
             
                    address registry,
         | 
| 151 142 | 
             
                    NftId instanceNftId,
         | 
| 152 | 
            -
                    IAuthorization authorization,
         | 
| 153 | 
            -
                    address initialOwner,
         | 
| 154 143 | 
             
                    string memory name,
         | 
| 155 144 | 
             
                    address token,
         | 
| 156 | 
            -
                     | 
| 157 | 
            -
                     | 
| 158 | 
            -
                     | 
| 159 | 
            -
                     | 
| 145 | 
            +
                    IComponents.ProductInfo memory productInfo,
         | 
| 146 | 
            +
                    IComponents.FeeInfo memory feeInfo,
         | 
| 147 | 
            +
                    IAuthorization authorization,
         | 
| 148 | 
            +
                    address initialOwner,
         | 
| 160 149 | 
             
                    bytes memory componentData // writeonly data that will saved in the object info record of the registry
         | 
| 161 150 | 
             
                )
         | 
| 162 151 | 
             
                    internal
         | 
| @@ -170,15 +159,14 @@ abstract contract Product is | |
| 170 159 | 
             
                        token, 
         | 
| 171 160 | 
             
                        PRODUCT(), 
         | 
| 172 161 | 
             
                        authorization, 
         | 
| 173 | 
            -
                         | 
| 162 | 
            +
                        productInfo.isInterceptingPolicyTransfers, 
         | 
| 174 163 | 
             
                        initialOwner, 
         | 
| 175 164 | 
             
                        componentData);
         | 
| 176 165 |  | 
| 177 166 | 
             
                    ProductStorage storage $ = _getProductStorage();
         | 
| 178 | 
            -
                    $. | 
| 179 | 
            -
                    $. | 
| 180 | 
            -
                    $. | 
| 181 | 
            -
                    $._riskService = IRiskService(_getServiceAddress(PRODUCT())); 
         | 
| 167 | 
            +
                    $._productInfo = productInfo;
         | 
| 168 | 
            +
                    $._feeInfo = feeInfo;
         | 
| 169 | 
            +
                    $._riskService = IRiskService(_getServiceAddress(RISK())); 
         | 
| 182 170 | 
             
                    $._applicationService = IApplicationService(_getServiceAddress(APPLICATION())); 
         | 
| 183 171 | 
             
                    $._policyService = IPolicyService(_getServiceAddress(POLICY())); 
         | 
| 184 172 | 
             
                    $._claimService = IClaimService(_getServiceAddress(CLAIM())); 
         | 
| @@ -240,11 +228,6 @@ abstract contract Product is | |
| 240 228 | 
             
                }
         | 
| 241 229 |  | 
| 242 230 |  | 
| 243 | 
            -
                function _getRiskInfo(RiskId id) internal virtual view returns (IRisk.RiskInfo memory info) {
         | 
| 244 | 
            -
                    return getInstance().getInstanceReader().getRiskInfo(id);
         | 
| 245 | 
            -
                }
         | 
| 246 | 
            -
             | 
| 247 | 
            -
             | 
| 248 231 | 
             
                function _createApplication(
         | 
| 249 232 | 
             
                    address applicationOwner,
         | 
| 250 233 | 
             
                    RiskId riskId,
         | 
| @@ -277,8 +260,9 @@ abstract contract Product is | |
| 277 260 | 
             
                )
         | 
| 278 261 | 
             
                    internal
         | 
| 279 262 | 
             
                    virtual
         | 
| 263 | 
            +
                    returns (Amount premiumAmount)
         | 
| 280 264 | 
             
                {
         | 
| 281 | 
            -
                    _getProductStorage()._policyService.createPolicy(
         | 
| 265 | 
            +
                    premiumAmount = _getProductStorage()._policyService.createPolicy(
         | 
| 282 266 | 
             
                        applicationNftId, 
         | 
| 283 267 | 
             
                        activateAt);
         | 
| 284 268 | 
             
                }
         | 
| @@ -304,6 +288,21 @@ abstract contract Product is | |
| 304 288 | 
             
                    expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
         | 
| 305 289 | 
             
                }
         | 
| 306 290 |  | 
| 291 | 
            +
                /// @dev adjust the activation date of the policy. 
         | 
| 292 | 
            +
                /// The policy must already have an activation date set.
         | 
| 293 | 
            +
                /// Allowed values are from the current blocktime to the expiration date of the policy.
         | 
| 294 | 
            +
                function _adjustActivation(
         | 
| 295 | 
            +
                    NftId policyNftId,
         | 
| 296 | 
            +
                    Timestamp activateAt
         | 
| 297 | 
            +
                )
         | 
| 298 | 
            +
                    internal
         | 
| 299 | 
            +
                    virtual
         | 
| 300 | 
            +
                {
         | 
| 301 | 
            +
                    _getProductStorage()._policyService.adjustActivation(
         | 
| 302 | 
            +
                        policyNftId, 
         | 
| 303 | 
            +
                        activateAt);
         | 
| 304 | 
            +
                }
         | 
| 305 | 
            +
             | 
| 307 306 | 
             
                function _collectPremium(
         | 
| 308 307 | 
             
                    NftId policyNftId,
         | 
| 309 308 | 
             
                    Timestamp activateAt
         | 
| @@ -353,6 +352,18 @@ abstract contract Product is | |
| 353 352 | 
             
                        claimData);
         | 
| 354 353 | 
             
                }
         | 
| 355 354 |  | 
| 355 | 
            +
                function _revokeClaim(
         | 
| 356 | 
            +
                    NftId policyNftId,
         | 
| 357 | 
            +
                    ClaimId claimId
         | 
| 358 | 
            +
                )
         | 
| 359 | 
            +
                    internal
         | 
| 360 | 
            +
                    virtual
         | 
| 361 | 
            +
                {
         | 
| 362 | 
            +
                    _getProductStorage()._claimService.revoke(
         | 
| 363 | 
            +
                        policyNftId,
         | 
| 364 | 
            +
                        claimId);
         | 
| 365 | 
            +
                }
         | 
| 366 | 
            +
             | 
| 356 367 | 
             
                function _confirmClaim(
         | 
| 357 368 | 
             
                    NftId policyNftId,
         | 
| 358 369 | 
             
                    ClaimId claimId,
         | 
| @@ -443,6 +454,18 @@ abstract contract Product is | |
| 443 454 | 
             
                        payoutId);
         | 
| 444 455 | 
             
                }
         | 
| 445 456 |  | 
| 457 | 
            +
                function _cancelPayout(
         | 
| 458 | 
            +
                    NftId policyNftId,
         | 
| 459 | 
            +
                    PayoutId payoutId
         | 
| 460 | 
            +
                )
         | 
| 461 | 
            +
                    internal
         | 
| 462 | 
            +
                    virtual
         | 
| 463 | 
            +
                {
         | 
| 464 | 
            +
                    _getProductStorage()._claimService.cancelPayout(
         | 
| 465 | 
            +
                        policyNftId,
         | 
| 466 | 
            +
                        payoutId);
         | 
| 467 | 
            +
                }
         | 
| 468 | 
            +
             | 
| 446 469 | 
             
                function _toRiskId(string memory riskName) internal virtual pure returns (RiskId riskId) {
         | 
| 447 470 | 
             
                    return RiskIdLib.toRiskId(riskName);
         | 
| 448 471 | 
             
                }
         | 
| @@ -4,25 +4,26 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 5 5 | 
             
            import {IInstanceService} from "../instance/IInstanceService.sol";
         | 
| 6 6 | 
             
            import {IPoolService} from "../pool/PoolService.sol";
         | 
| 7 | 
            -
            import { | 
| 7 | 
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 8 8 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 9 9 | 
             
            import {IRisk} from "../instance/module/IRisk.sol";
         | 
| 10 | 
            +
            import {IRiskService} from "./IRiskService.sol";
         | 
| 10 11 |  | 
| 12 | 
            +
            import {ContractLib} from "../shared/ContractLib.sol";
         | 
| 11 13 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 12 | 
            -
            import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 13 | 
            -
            import {KEEP_STATE} from "../type/StateId.sol";
         | 
| 14 | 
            +
            import {ObjectType, COMPONENT, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY, RISK} from "../type/ObjectType.sol";
         | 
| 15 | 
            +
            import {ACTIVE, PAUSED, KEEP_STATE} from "../type/StateId.sol";
         | 
| 14 16 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 15 17 | 
             
            import {RiskId} from "../type/RiskId.sol";
         | 
| 16 18 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 17 | 
            -
            import { | 
| 19 | 
            +
            import {RiskSet} from "../instance/RiskSet.sol";
         | 
| 20 | 
            +
            import {Service} from "../shared/Service.sol";
         | 
| 21 | 
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         | 
| 18 22 |  | 
| 19 23 | 
             
            contract RiskService is
         | 
| 20 | 
            -
                 | 
| 24 | 
            +
                Service,
         | 
| 21 25 | 
             
                IRiskService 
         | 
| 22 26 | 
             
            {
         | 
| 23 | 
            -
                IInstanceService private _instanceService;
         | 
| 24 | 
            -
                IPoolService internal _poolService;
         | 
| 25 | 
            -
                IRegistryService private _registryService;
         | 
| 26 27 |  | 
| 27 28 | 
             
                function _initialize(
         | 
| 28 29 | 
             
                    address owner, 
         | 
| @@ -33,16 +34,11 @@ contract RiskService is | |
| 33 34 | 
             
                    virtual override
         | 
| 34 35 | 
             
                {
         | 
| 35 36 | 
             
                    (
         | 
| 36 | 
            -
                        address  | 
| 37 | 
            -
                        address  | 
| 37 | 
            +
                        address authority,
         | 
| 38 | 
            +
                        address registry
         | 
| 38 39 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 39 40 |  | 
| 40 | 
            -
                     | 
| 41 | 
            -
             | 
| 42 | 
            -
                    _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
         | 
| 43 | 
            -
                    _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
         | 
| 44 | 
            -
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 45 | 
            -
             | 
| 41 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 46 42 | 
             
                    _registerInterface(type(IRiskService).interfaceId);
         | 
| 47 43 | 
             
                }
         | 
| 48 44 |  | 
| @@ -52,15 +48,25 @@ contract RiskService is | |
| 52 48 | 
             
                    bytes memory data
         | 
| 53 49 | 
             
                )
         | 
| 54 50 | 
             
                    external 
         | 
| 55 | 
            -
                     | 
| 51 | 
            +
                    restricted()
         | 
| 56 52 | 
             
                {
         | 
| 57 | 
            -
                     | 
| 58 | 
            -
                     | 
| 53 | 
            +
                    // checks
         | 
| 54 | 
            +
                    (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    // effects
         | 
| 57 | 
            +
                    IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo({
         | 
| 58 | 
            +
                        productNftId: productNftId, 
         | 
| 59 | 
            +
                        createdAt: TimestampLib.blockTimestamp(),
         | 
| 60 | 
            +
                        data: data});
         | 
| 59 61 |  | 
| 60 62 | 
             
                    instance.getInstanceStore().createRisk(
         | 
| 61 63 | 
             
                        riskId,
         | 
| 62 64 | 
             
                        riskInfo
         | 
| 63 65 | 
             
                    );
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    // add risk to RiskSet
         | 
| 68 | 
            +
                    RiskSet riskSet = instance.getRiskSet();
         | 
| 69 | 
            +
                    riskSet.add(riskId);
         | 
| 64 70 | 
             
                }
         | 
| 65 71 |  | 
| 66 72 |  | 
| @@ -68,11 +74,14 @@ contract RiskService is | |
| 68 74 | 
             
                    RiskId riskId,
         | 
| 69 75 | 
             
                    bytes memory data
         | 
| 70 76 | 
             
                )
         | 
| 71 | 
            -
                    external
         | 
| 77 | 
            +
                    external 
         | 
| 78 | 
            +
                    restricted()
         | 
| 72 79 | 
             
                {
         | 
| 73 | 
            -
                     | 
| 74 | 
            -
                     | 
| 80 | 
            +
                    // checks
         | 
| 81 | 
            +
                    (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 75 82 |  | 
| 83 | 
            +
                    // effects
         | 
| 84 | 
            +
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 76 85 | 
             
                    IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
         | 
| 77 86 | 
             
                    riskInfo.data = data;
         | 
| 78 87 | 
             
                    instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
         | 
| @@ -83,14 +92,54 @@ contract RiskService is | |
| 83 92 | 
             
                    RiskId riskId,
         | 
| 84 93 | 
             
                    StateId state
         | 
| 85 94 | 
             
                )
         | 
| 86 | 
            -
                    external
         | 
| 95 | 
            +
                    external 
         | 
| 96 | 
            +
                    restricted()
         | 
| 87 97 | 
             
                {
         | 
| 88 | 
            -
                     | 
| 98 | 
            +
                    // checks
         | 
| 99 | 
            +
                    (NftId productNftId, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                    // effects
         | 
| 89 102 | 
             
                    instance.getInstanceStore().updateRiskState(riskId, state);
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                    if (state == ACTIVE()) {
         | 
| 105 | 
            +
                        instance.getRiskSet().activate(riskId);
         | 
| 106 | 
            +
                    } else if (state == PAUSED()) {
         | 
| 107 | 
            +
                        instance.getRiskSet().pause(riskId);
         | 
| 108 | 
            +
                    }
         | 
| 109 | 
            +
                }
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                function _getAndVerifyActiveComponent(ObjectType expectedType) 
         | 
| 112 | 
            +
                    internal 
         | 
| 113 | 
            +
                    view 
         | 
| 114 | 
            +
                    returns (
         | 
| 115 | 
            +
                        NftId componentNftId,
         | 
| 116 | 
            +
                        IInstance instance
         | 
| 117 | 
            +
                    )
         | 
| 118 | 
            +
                {
         | 
| 119 | 
            +
                    IRegistry.ObjectInfo memory info;
         | 
| 120 | 
            +
                    address instanceAddress;
         | 
| 121 | 
            +
                    bool isActive = true;
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                    if (expectedType != COMPONENT()) {
         | 
| 124 | 
            +
                        (info, instanceAddress) = ContractLib.getAndVerifyComponent(
         | 
| 125 | 
            +
                            getRegistry(),
         | 
| 126 | 
            +
                            msg.sender, // caller
         | 
| 127 | 
            +
                            expectedType,
         | 
| 128 | 
            +
                            isActive); 
         | 
| 129 | 
            +
                    } else {
         | 
| 130 | 
            +
                        (info, instanceAddress) = ContractLib.getAndVerifyAnyComponent(
         | 
| 131 | 
            +
                            getRegistry(),
         | 
| 132 | 
            +
                            msg.sender,
         | 
| 133 | 
            +
                            isActive); 
         | 
| 134 | 
            +
                    }
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                    // get component nft id and instance
         | 
| 137 | 
            +
                    componentNftId = info.nftId;
         | 
| 138 | 
            +
                    instance = IInstance(instanceAddress);
         | 
| 90 139 | 
             
                }
         | 
| 91 140 |  | 
| 92 141 |  | 
| 93 142 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 94 | 
            -
                    return  | 
| 143 | 
            +
                    return RISK();
         | 
| 95 144 | 
             
                }
         | 
| 96 145 | 
             
            }
         | 
| @@ -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)) {
         | 
| @@ -3,13 +3,11 @@ pragma solidity ^0.8.20; | |
| 3 3 |  | 
| 4 4 | 
             
            import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
         | 
| 5 5 |  | 
| 6 | 
            +
            import {IRelease} from "./IRelease.sol";
         | 
| 7 | 
            +
             | 
| 6 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 7 9 | 
             
            import {ObjectType} from "../type/ObjectType.sol";
         | 
| 8 10 | 
             
            import {VersionPart} from "../type/Version.sol";
         | 
| 9 | 
            -
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 10 | 
            -
            import {StateId} from "../type/StateId.sol";
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol";
         | 
| 13 11 |  | 
| 14 12 | 
             
            /// @title Chain Registry interface.
         | 
| 15 13 | 
             
            /// A chain registry holds all protocol relevant objects with basic metadata.
         | 
| @@ -17,7 +15,9 @@ import {IServiceAuthorization} from "../authorization/IServiceAuthorization.sol" | |
| 17 15 | 
             
            /// Registered objects are represented by NFTs.
         | 
| 18 16 | 
             
            /// When on mainnet registry is global and keeps arbitrary number of chain registries residing on different chain ids.
         | 
| 19 17 | 
             
            /// When not on mainnet registry keeps the only object residing on different chain id (on mainnet) - global registry.
         | 
| 20 | 
            -
            interface IRegistry is | 
| 18 | 
            +
            interface IRegistry is
         | 
| 19 | 
            +
                IERC165
         | 
| 20 | 
            +
            {
         | 
| 21 21 |  | 
| 22 22 | 
             
                event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
         | 
| 23 23 | 
             
                event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
         | 
| @@ -61,15 +61,6 @@ interface IRegistry is IERC165 { | |
| 61 61 | 
             
                    bytes data;
         | 
| 62 62 | 
             
                }
         | 
| 63 63 |  | 
| 64 | 
            -
                struct ReleaseInfo {
         | 
| 65 | 
            -
                    StateId state;
         | 
| 66 | 
            -
                    VersionPart version;
         | 
| 67 | 
            -
                    bytes32 salt;
         | 
| 68 | 
            -
                    IServiceAuthorization auth;
         | 
| 69 | 
            -
                    Timestamp activatedAt;
         | 
| 70 | 
            -
                    Timestamp disabledAt;
         | 
| 71 | 
            -
                }
         | 
| 72 | 
            -
             | 
| 73 64 | 
             
                /// @dev Registers a registry contract for a specified chain.
         | 
| 74 65 | 
             
                /// Only one chain registry may be registered per chain
         | 
| 75 66 | 
             
                function registerRegistry(
         | 
| @@ -104,7 +95,7 @@ interface IRegistry is IERC165 { | |
| 104 95 |  | 
| 105 96 | 
             
                function getLatestVersion() external view returns (VersionPart);
         | 
| 106 97 |  | 
| 107 | 
            -
                function getReleaseInfo(VersionPart  | 
| 98 | 
            +
                function getReleaseInfo(VersionPart release) external view returns (IRelease.ReleaseInfo memory);
         | 
| 108 99 |  | 
| 109 100 | 
             
                /// @dev Returns the number of supported chains.
         | 
| 110 101 | 
             
                function chainIds() external view returns (uint256);
         | 
| @@ -127,8 +118,12 @@ interface IRegistry is IERC165 { | |
| 127 118 |  | 
| 128 119 | 
             
                function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
         | 
| 129 120 |  | 
| 121 | 
            +
                function getParentNftId(NftId nftId) external view returns (NftId parentNftId);
         | 
| 122 | 
            +
             | 
| 130 123 | 
             
                function isObjectType(NftId nftId, ObjectType expectedObjectType) external view returns (bool);
         | 
| 131 124 |  | 
| 125 | 
            +
                function isObjectType(address contractAddress, ObjectType expectedObjectType) external view returns (bool);
         | 
| 126 | 
            +
             | 
| 132 127 | 
             
                function getObjectAddress(NftId nftId) external view returns (address objectAddress);
         | 
| 133 128 |  | 
| 134 129 | 
             
                /// @dev Returns the object info for the specified object address.
         |