@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
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IAccountingService} from "../accounting/IAccountingService.sol";
         | 
| 4 5 | 
             
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 5 6 | 
             
            import {IBundleService} from "./IBundleService.sol";
         | 
| 6 7 | 
             
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| @@ -9,7 +10,6 @@ import {IRegistry} from "../registry/IRegistry.sol"; | |
| 9 10 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| 10 11 | 
             
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 11 12 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 12 | 
            -
            import {IPolicy} from "../instance/module/IPolicy.sol";
         | 
| 13 13 |  | 
| 14 14 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 15 15 | 
             
            import {BundleSet} from "../instance/BundleSet.sol";
         | 
| @@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol | |
| 17 17 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 18 18 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 19 19 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 20 | 
            -
            import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 20 | 
            +
            import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 21 | 
             
            import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
         | 
| 22 22 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 23 23 | 
             
            import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
         | 
| @@ -33,6 +33,7 @@ contract BundleService is | |
| 33 33 |  | 
| 34 34 | 
             
                address private _registryAddress;
         | 
| 35 35 | 
             
                IRegistryService private _registryService;
         | 
| 36 | 
            +
                IAccountingService private _accountingService;
         | 
| 36 37 | 
             
                IComponentService private _componentService;
         | 
| 37 38 |  | 
| 38 39 | 
             
                function _initialize(
         | 
| @@ -44,13 +45,14 @@ contract BundleService is | |
| 44 45 | 
             
                    initializer()
         | 
| 45 46 | 
             
                {
         | 
| 46 47 | 
             
                    (
         | 
| 47 | 
            -
                        address  | 
| 48 | 
            -
                        address  | 
| 48 | 
            +
                        address authority,
         | 
| 49 | 
            +
                        address registry
         | 
| 49 50 | 
             
                    ) = abi.decode(data, (address, address));
         | 
| 50 51 |  | 
| 51 | 
            -
                     | 
| 52 | 
            +
                    __Service_init(authority, registry, owner);
         | 
| 52 53 |  | 
| 53 54 | 
             
                    _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
         | 
| 55 | 
            +
                    _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
         | 
| 54 56 | 
             
                    _componentService = IComponentService(_getServiceAddress(COMPONENT()));
         | 
| 55 57 |  | 
| 56 58 | 
             
                    _registerInterface(type(IBundleService).interfaceId);
         | 
| @@ -63,6 +65,7 @@ contract BundleService is | |
| 63 65 | 
             
                )
         | 
| 64 66 | 
             
                    external
         | 
| 65 67 | 
             
                    virtual
         | 
| 68 | 
            +
                    restricted()
         | 
| 66 69 | 
             
                {
         | 
| 67 70 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 68 71 |  | 
| @@ -83,20 +86,17 @@ contract BundleService is | |
| 83 86 |  | 
| 84 87 |  | 
| 85 88 | 
             
                function create(
         | 
| 86 | 
            -
                    IInstance instance,
         | 
| 87 | 
            -
                    NftId poolNftId,
         | 
| 88 89 | 
             
                    address owner, 
         | 
| 89 90 | 
             
                    Fee memory bundleFee, 
         | 
| 90 | 
            -
                    Amount stakingAmount, 
         | 
| 91 91 | 
             
                    Seconds lifetime, 
         | 
| 92 92 | 
             
                    bytes calldata filter
         | 
| 93 93 | 
             
                )
         | 
| 94 94 | 
             
                    external
         | 
| 95 | 
            -
                     | 
| 96 | 
            -
                    restricted
         | 
| 95 | 
            +
                    virtual
         | 
| 96 | 
            +
                    restricted()
         | 
| 97 97 | 
             
                    returns(NftId bundleNftId)
         | 
| 98 98 | 
             
                {
         | 
| 99 | 
            -
                     | 
| 99 | 
            +
                    (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 100 100 |  | 
| 101 101 | 
             
                    // register bundle with registry
         | 
| 102 102 | 
             
                    bundleNftId = _registryService.registerBundle(
         | 
| @@ -125,19 +125,11 @@ contract BundleService is | |
| 125 125 | 
             
                        })
         | 
| 126 126 | 
             
                    );
         | 
| 127 127 |  | 
| 128 | 
            -
                    if (stakingAmount.gtz()) {
         | 
| 129 | 
            -
                        // bundle book keeping
         | 
| 130 | 
            -
                        _componentService.increaseBundleBalance(
         | 
| 131 | 
            -
                            instanceStore, 
         | 
| 132 | 
            -
                            bundleNftId, 
         | 
| 133 | 
            -
                            stakingAmount, 
         | 
| 134 | 
            -
                            AmountLib.zero()); // fee amount
         | 
| 135 | 
            -
                    }
         | 
| 136 | 
            -
             | 
| 137 128 | 
             
                    // put bundle under bundle managemet
         | 
| 138 129 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 139 130 | 
             
                    bundleManager.add(bundleNftId);
         | 
| 140 | 
            -
             | 
| 131 | 
            +
             | 
| 132 | 
            +
                    emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
         | 
| 141 133 | 
             
                }
         | 
| 142 134 |  | 
| 143 135 |  | 
| @@ -152,6 +144,7 @@ contract BundleService is | |
| 152 144 | 
             
                    virtual
         | 
| 153 145 | 
             
                    restricted()
         | 
| 154 146 | 
             
                {
         | 
| 147 | 
            +
                    // checks
         | 
| 155 148 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 156 149 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 157 150 |  | 
| @@ -183,18 +176,18 @@ contract BundleService is | |
| 183 176 | 
             
                        }
         | 
| 184 177 | 
             
                    }
         | 
| 185 178 |  | 
| 179 | 
            +
                    // effects
         | 
| 186 180 | 
             
                    // updated locked amount
         | 
| 187 181 | 
             
                    instanceStore.increaseLocked(bundleNftId, collateralAmount);
         | 
| 188 | 
            -
                    
         | 
| 189 | 
            -
                    // link policy to bundle in bundle manger
         | 
| 190 | 
            -
                    _linkPolicy(instance, policyNftId);
         | 
| 191 182 | 
             
                }
         | 
| 192 183 |  | 
| 193 184 |  | 
| 194 185 | 
             
                function lock(NftId bundleNftId) 
         | 
| 195 186 | 
             
                    external
         | 
| 196 187 | 
             
                    virtual
         | 
| 188 | 
            +
                    restricted()
         | 
| 197 189 | 
             
                {
         | 
| 190 | 
            +
                    // checks
         | 
| 198 191 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 199 192 |  | 
| 200 193 | 
             
                    (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| @@ -202,6 +195,7 @@ contract BundleService is | |
| 202 195 | 
             
                    // udpate bundle state
         | 
| 203 196 | 
             
                    instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
         | 
| 204 197 |  | 
| 198 | 
            +
                    // effects
         | 
| 205 199 | 
             
                    // update set of active bundles
         | 
| 206 200 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 207 201 | 
             
                    bundleManager.lock(bundleNftId);
         | 
| @@ -213,11 +207,14 @@ contract BundleService is | |
| 213 207 | 
             
                function unlock(NftId bundleNftId) 
         | 
| 214 208 | 
             
                    external
         | 
| 215 209 | 
             
                    virtual
         | 
| 210 | 
            +
                    restricted()
         | 
| 216 211 | 
             
                {
         | 
| 212 | 
            +
                    // checks
         | 
| 217 213 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 218 214 |  | 
| 219 215 | 
             
                    (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 220 216 |  | 
| 217 | 
            +
                    // effects
         | 
| 221 218 | 
             
                    // udpate bundle state
         | 
| 222 219 | 
             
                    instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
         | 
| 223 220 |  | 
| @@ -235,9 +232,10 @@ contract BundleService is | |
| 235 232 | 
             
                ) 
         | 
| 236 233 | 
             
                    external
         | 
| 237 234 | 
             
                    virtual
         | 
| 238 | 
            -
                    restricted
         | 
| 235 | 
            +
                    restricted()
         | 
| 239 236 | 
             
                    returns (Amount unstakedAmount, Amount feeAmount)
         | 
| 240 237 | 
             
                {
         | 
| 238 | 
            +
                    // checks
         | 
| 241 239 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 242 240 |  | 
| 243 241 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| @@ -249,6 +247,7 @@ contract BundleService is | |
| 249 247 | 
             
                        revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
         | 
| 250 248 | 
             
                    }
         | 
| 251 249 |  | 
| 250 | 
            +
                    // effects
         | 
| 252 251 | 
             
                    {
         | 
| 253 252 | 
             
                        // update bundle state
         | 
| 254 253 | 
             
                        InstanceStore instanceStore = instance.getInstanceStore();
         | 
| @@ -259,24 +258,26 @@ contract BundleService is | |
| 259 258 | 
             
                        Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
         | 
| 260 259 | 
             
                        feeAmount = instanceReader.getFeeAmount(bundleNftId);
         | 
| 261 260 | 
             
                        unstakedAmount = balanceAmountWithFees - feeAmount;
         | 
| 262 | 
            -
                         | 
| 261 | 
            +
                        _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
         | 
| 263 262 | 
             
                    }
         | 
| 264 263 | 
             
                }
         | 
| 265 264 |  | 
| 266 265 | 
             
                /// @inheritdoc IBundleService
         | 
| 267 266 | 
             
                function stake(
         | 
| 268 | 
            -
                     | 
| 267 | 
            +
                    InstanceReader instanceReader,
         | 
| 268 | 
            +
                    InstanceStore instanceStore,
         | 
| 269 269 | 
             
                    NftId bundleNftId, 
         | 
| 270 270 | 
             
                    Amount amount
         | 
| 271 271 | 
             
                ) 
         | 
| 272 272 | 
             
                    external 
         | 
| 273 273 | 
             
                    virtual
         | 
| 274 | 
            -
                     | 
| 274 | 
            +
                    restricted()
         | 
| 275 275 | 
             
                {
         | 
| 276 | 
            +
                    // checks
         | 
| 276 277 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 277 278 |  | 
| 278 | 
            -
                    IBundle.BundleInfo memory bundleInfo =  | 
| 279 | 
            -
                    StateId bundleState =  | 
| 279 | 
            +
                    IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 280 | 
            +
                    StateId bundleState = instanceReader.getBundleState(bundleNftId);
         | 
| 280 281 |  | 
| 281 282 | 
             
                    if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
         | 
| 282 283 | 
             
                        || bundleInfo.expiredAt < TimestampLib.blockTimestamp() 
         | 
| @@ -284,8 +285,9 @@ contract BundleService is | |
| 284 285 | 
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 285 286 | 
             
                    }
         | 
| 286 287 |  | 
| 287 | 
            -
                     | 
| 288 | 
            -
             | 
| 288 | 
            +
                    // effects
         | 
| 289 | 
            +
                    _accountingService.increaseBundleBalance(
         | 
| 290 | 
            +
                        instanceStore, 
         | 
| 289 291 | 
             
                        bundleNftId, 
         | 
| 290 292 | 
             
                        amount, 
         | 
| 291 293 | 
             
                        AmountLib.zero());
         | 
| @@ -293,18 +295,18 @@ contract BundleService is | |
| 293 295 |  | 
| 294 296 | 
             
                /// @inheritdoc IBundleService
         | 
| 295 297 | 
             
                function unstake(
         | 
| 296 | 
            -
                     | 
| 298 | 
            +
                    InstanceStore instanceStore,
         | 
| 297 299 | 
             
                    NftId bundleNftId, 
         | 
| 298 300 | 
             
                    Amount amount
         | 
| 299 301 | 
             
                ) 
         | 
| 300 302 | 
             
                    external 
         | 
| 301 303 | 
             
                    virtual
         | 
| 302 | 
            -
                     | 
| 304 | 
            +
                    restricted()
         | 
| 303 305 | 
             
                    returns (Amount unstakedAmount)
         | 
| 304 306 | 
             
                {
         | 
| 307 | 
            +
                    // checks
         | 
| 305 308 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 306 309 |  | 
| 307 | 
            -
                    InstanceStore instanceStore = instance.getInstanceStore();
         | 
| 308 310 | 
             
                    (
         | 
| 309 311 | 
             
                        Amount balanceAmount,
         | 
| 310 312 | 
             
                        Amount lockedAmount,
         | 
| @@ -324,7 +326,8 @@ contract BundleService is | |
| 324 326 | 
             
                        revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
         | 
| 325 327 | 
             
                    }
         | 
| 326 328 |  | 
| 327 | 
            -
                     | 
| 329 | 
            +
                    // effects
         | 
| 330 | 
            +
                    _accountingService.decreaseBundleBalance(
         | 
| 328 331 | 
             
                        instanceStore, 
         | 
| 329 332 | 
             
                        bundleNftId, 
         | 
| 330 333 | 
             
                        unstakedAmount, 
         | 
| @@ -335,9 +338,10 @@ contract BundleService is | |
| 335 338 | 
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) 
         | 
| 336 339 | 
             
                    external 
         | 
| 337 340 | 
             
                    virtual
         | 
| 338 | 
            -
                     | 
| 341 | 
            +
                    restricted()
         | 
| 339 342 | 
             
                    returns (Timestamp extendedExpiredAt) 
         | 
| 340 343 | 
             
                {
         | 
| 344 | 
            +
                    // checks
         | 
| 341 345 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 342 346 |  | 
| 343 347 | 
             
                    (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| @@ -358,17 +362,18 @@ contract BundleService is | |
| 358 362 | 
             
                        revert ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 359 363 | 
             
                    }
         | 
| 360 364 |  | 
| 365 | 
            +
                    // effects
         | 
| 361 366 | 
             
                    bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
         | 
| 362 | 
            -
                     | 
| 367 | 
            +
                    extendedExpiredAt = bundleInfo.expiredAt;
         | 
| 363 368 |  | 
| 364 | 
            -
                     | 
| 369 | 
            +
                    instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
         | 
| 365 370 |  | 
| 366 | 
            -
                     | 
| 371 | 
            +
                    emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
         | 
| 367 372 | 
             
                }
         | 
| 368 373 |  | 
| 369 374 |  | 
| 370 375 | 
             
                function releaseCollateral(
         | 
| 371 | 
            -
                     | 
| 376 | 
            +
                    InstanceStore instanceStore,
         | 
| 372 377 | 
             
                    NftId policyNftId, 
         | 
| 373 378 | 
             
                    NftId bundleNftId, 
         | 
| 374 379 | 
             
                    Amount collateralAmount
         | 
| @@ -380,112 +385,9 @@ contract BundleService is | |
| 380 385 | 
             
                    _checkNftType(policyNftId, POLICY());
         | 
| 381 386 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 382 387 |  | 
| 383 | 
            -
                     | 
| 384 | 
            -
                }
         | 
| 385 | 
            -
             | 
| 386 | 
            -
                /// @dev unlinks policy from bundle
         | 
| 387 | 
            -
                function unlinkPolicy(
         | 
| 388 | 
            -
                    IInstance instance, 
         | 
| 389 | 
            -
                    NftId policyNftId
         | 
| 390 | 
            -
                ) 
         | 
| 391 | 
            -
                    external
         | 
| 392 | 
            -
                    virtual
         | 
| 393 | 
            -
                    restricted
         | 
| 394 | 
            -
                {
         | 
| 395 | 
            -
                    _checkNftType(policyNftId, POLICY());
         | 
| 396 | 
            -
             | 
| 397 | 
            -
                    // ensure policy is closeable
         | 
| 398 | 
            -
                    if (!policyIsCloseable(instance, policyNftId)) {
         | 
| 399 | 
            -
                        revert ErrorBundleServicePolicyNotCloseable(policyNftId);
         | 
| 400 | 
            -
                    }
         | 
| 401 | 
            -
             | 
| 402 | 
            -
                    instance.getBundleSet().unlinkPolicy(policyNftId);
         | 
| 388 | 
            +
                    instanceStore.decreaseLocked(bundleNftId, collateralAmount);
         | 
| 403 389 | 
             
                }
         | 
| 404 390 |  | 
| 405 | 
            -
                /// @inheritdoc IBundleService
         | 
| 406 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) 
         | 
| 407 | 
            -
                    public 
         | 
| 408 | 
            -
                    virtual
         | 
| 409 | 
            -
                    // TODO: restricted() (once #462 is done)
         | 
| 410 | 
            -
                    returns (Amount withdrawnAmount) 
         | 
| 411 | 
            -
                {
         | 
| 412 | 
            -
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 413 | 
            -
             | 
| 414 | 
            -
                    (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 415 | 
            -
                    InstanceReader reader = instance.getInstanceReader();
         | 
| 416 | 
            -
                    
         | 
| 417 | 
            -
                    IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
         | 
| 418 | 
            -
                    address poolWallet = poolInfo.wallet;
         | 
| 419 | 
            -
                    
         | 
| 420 | 
            -
                    // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
         | 
| 421 | 
            -
                    
         | 
| 422 | 
            -
                    // determine withdrawn amount
         | 
| 423 | 
            -
                    withdrawnAmount = amount;
         | 
| 424 | 
            -
                    if (withdrawnAmount.gte(AmountLib.max())) {
         | 
| 425 | 
            -
                        withdrawnAmount = reader.getFeeAmount(bundleNftId);
         | 
| 426 | 
            -
                    } else {
         | 
| 427 | 
            -
                        if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
         | 
| 428 | 
            -
                            revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
         | 
| 429 | 
            -
                        }
         | 
| 430 | 
            -
                    }
         | 
| 431 | 
            -
             | 
| 432 | 
            -
                    // decrease fee counters by withdrawnAmount
         | 
| 433 | 
            -
                    {
         | 
| 434 | 
            -
                        InstanceStore store = instance.getInstanceStore();
         | 
| 435 | 
            -
                        // decrease fee amount of the bundle
         | 
| 436 | 
            -
                        _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
         | 
| 437 | 
            -
                        // decrease pool balance 
         | 
| 438 | 
            -
                        _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
         | 
| 439 | 
            -
                    }
         | 
| 440 | 
            -
             | 
| 441 | 
            -
                    // transfer amount to bundle owner
         | 
| 442 | 
            -
                    {
         | 
| 443 | 
            -
                        address owner = getRegistry().ownerOf(bundleNftId);
         | 
| 444 | 
            -
                        emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
         | 
| 445 | 
            -
                        poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
         | 
| 446 | 
            -
                    }
         | 
| 447 | 
            -
                }
         | 
| 448 | 
            -
             | 
| 449 | 
            -
                /// @inheritdoc IBundleService
         | 
| 450 | 
            -
                function policyIsCloseable(IInstance instance, NftId policyNftId)
         | 
| 451 | 
            -
                    public
         | 
| 452 | 
            -
                    view
         | 
| 453 | 
            -
                    returns (bool isCloseable)
         | 
| 454 | 
            -
                {
         | 
| 455 | 
            -
                    _checkNftType(policyNftId, POLICY());
         | 
| 456 | 
            -
             | 
| 457 | 
            -
                    IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
         | 
| 458 | 
            -
                    
         | 
| 459 | 
            -
                    if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
         | 
| 460 | 
            -
                    if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
         | 
| 461 | 
            -
                    if (info.closedAt.gtz()) { return false; } // not closeable: already closed
         | 
| 462 | 
            -
                    if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
         | 
| 463 | 
            -
             | 
| 464 | 
            -
                    // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
         | 
| 465 | 
            -
                    if (info.claimAmount == info.sumInsuredAmount) { return true; }
         | 
| 466 | 
            -
             | 
| 467 | 
            -
                    // not closeable: not yet expired
         | 
| 468 | 
            -
                    if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
         | 
| 469 | 
            -
             | 
| 470 | 
            -
                    // all conditionsl to close the policy are met
         | 
| 471 | 
            -
                    return true; 
         | 
| 472 | 
            -
                }
         | 
| 473 | 
            -
             | 
| 474 | 
            -
                /// @dev links policy to bundle
         | 
| 475 | 
            -
                function _linkPolicy(IInstance instance, NftId policyNftId) 
         | 
| 476 | 
            -
                    internal
         | 
| 477 | 
            -
                {
         | 
| 478 | 
            -
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 479 | 
            -
                    IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
         | 
| 480 | 
            -
             | 
| 481 | 
            -
                    // ensure policy has not yet been activated in a previous tx already
         | 
| 482 | 
            -
                    if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
         | 
| 483 | 
            -
                        revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
         | 
| 484 | 
            -
                    }
         | 
| 485 | 
            -
                    
         | 
| 486 | 
            -
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 487 | 
            -
                    bundleManager.linkPolicy(policyNftId);
         | 
| 488 | 
            -
                }
         | 
| 489 391 |  | 
| 490 392 | 
             
                function _getDomain() internal pure override returns(ObjectType) {
         | 
| 491 393 | 
             
                    return BUNDLE();
         | 
| @@ -17,7 +17,7 @@ contract BundleServiceManager is ProxyManager { | |
| 17 17 | 
             
                ) 
         | 
| 18 18 | 
             
                {
         | 
| 19 19 | 
             
                    BundleService svc = new BundleService{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), 
         | 
| @@ -1,18 +1,21 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            +
            import {IService} from "../shared/IService.sol";
         | 
| 5 | 
            +
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 6 | 
            +
             | 
| 4 7 | 
             
            import {Amount} from "../type/Amount.sol";
         | 
| 5 8 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 6 9 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 7 | 
            -
            import { | 
| 8 | 
            -
            import { | 
| 9 | 
            -
            import {IInstance} from "../instance/IInstance.sol";
         | 
| 10 | 
            +
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 11 | 
            +
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 10 12 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 11 13 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 12 14 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 13 15 |  | 
| 14 16 | 
             
            interface IBundleService is IService {
         | 
| 15 17 |  | 
| 18 | 
            +
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
         | 
| 16 19 | 
             
                event LogBundleServiceBundleActivated(NftId bundleNftId);
         | 
| 17 20 | 
             
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         | 
| 18 21 |  | 
| @@ -25,24 +28,17 @@ interface IBundleService is IService { | |
| 25 28 | 
             
                error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
         | 
| 26 29 |  | 
| 27 30 | 
             
                error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 30 31 |  | 
| 31 32 | 
             
                error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
         | 
| 32 33 |  | 
| 33 34 | 
             
                error ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 34 35 |  | 
| 35 | 
            -
                event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
         | 
| 36 36 | 
             
                event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
         | 
| 37 37 |  | 
| 38 | 
            -
                /// @dev  | 
| 39 | 
            -
                /// may only be called by pool service
         | 
| 38 | 
            +
                /// @dev Create a new bundle for the specified attributes.
         | 
| 40 39 | 
             
                function create(
         | 
| 41 | 
            -
                    IInstance instance, // instance relevant for bundle
         | 
| 42 | 
            -
                    NftId poolNftId, // the pool the bundle will be linked to
         | 
| 43 40 | 
             
                    address owner, // initial bundle owner
         | 
| 44 41 | 
             
                    Fee memory fee, // fees deducted from premium that go to bundle owner
         | 
| 45 | 
            -
                    Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
         | 
| 46 42 | 
             
                    Seconds lifetime, // initial duration for which new policies are covered
         | 
| 47 43 | 
             
                    bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
         | 
| 48 44 | 
             
                )
         | 
| @@ -52,15 +48,16 @@ interface IBundleService is IService { | |
| 52 48 |  | 
| 53 49 | 
             
                /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
         | 
| 54 50 | 
             
                /// may only be called by the pool service
         | 
| 55 | 
            -
                function stake( | 
| 51 | 
            +
                function stake(
         | 
| 52 | 
            +
                    InstanceReader instanceReader,
         | 
| 53 | 
            +
                    InstanceStore instanceStore,
         | 
| 54 | 
            +
                    NftId bundleNftId, 
         | 
| 55 | 
            +
                    Amount amount
         | 
| 56 | 
            +
                ) external;
         | 
| 56 57 |  | 
| 57 58 | 
             
                /// @dev decrease bundle stakes by the specified amount
         | 
| 58 59 | 
             
                /// may only be called by the pool service
         | 
| 59 | 
            -
                 | 
| 60 | 
            -
                /// @param bundleNftId the bundle nft id
         | 
| 61 | 
            -
                /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
         | 
| 62 | 
            -
                /// @return unstakedAmount the effective unstaked amount
         | 
| 63 | 
            -
                function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
         | 
| 60 | 
            +
                function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
         | 
| 64 61 |  | 
| 65 62 | 
             
                /// @dev extend the lifetime of the bundle by the specified time in seconds
         | 
| 66 63 | 
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
         | 
| @@ -110,34 +107,9 @@ interface IBundleService is IService { | |
| 110 107 | 
             
                /// @dev releases the specified collateral in the bundle
         | 
| 111 108 | 
             
                /// may only be called by pool service
         | 
| 112 109 | 
             
                function releaseCollateral(
         | 
| 113 | 
            -
                     | 
| 110 | 
            +
                    InstanceStore instanceStore, 
         | 
| 114 111 | 
             
                    NftId policyNftId, 
         | 
| 115 112 | 
             
                    NftId bundleNftId, 
         | 
| 116 113 | 
             
                    Amount collateralAmount
         | 
| 117 114 | 
             
                ) external;
         | 
| 118 | 
            -
             | 
| 119 | 
            -
                /// @dev unlink policy from bundle
         | 
| 120 | 
            -
                /// policy may only be unlinked if policy is closeable
         | 
| 121 | 
            -
                /// may only be called by pool service
         | 
| 122 | 
            -
                function unlinkPolicy(
         | 
| 123 | 
            -
                    IInstance instance, 
         | 
| 124 | 
            -
                    NftId policyNftId
         | 
| 125 | 
            -
                ) external;
         | 
| 126 | 
            -
             | 
| 127 | 
            -
                // FIXME: move to pool service
         | 
| 128 | 
            -
                /// @dev Withdraw bundle feeds for the given bundle
         | 
| 129 | 
            -
                /// @param bundleNftId the bundle Nft Id
         | 
| 130 | 
            -
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         | 
| 131 | 
            -
                /// @return withdrawnAmount the effective withdrawn amount
         | 
| 132 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 133 | 
            -
             | 
| 134 | 
            -
                /// @dev returns true iff policy may be closed
         | 
| 135 | 
            -
                /// a policy can be closed all conditions below are met
         | 
| 136 | 
            -
                /// - policy exists
         | 
| 137 | 
            -
                /// - has been activated
         | 
| 138 | 
            -
                /// - is not yet closed
         | 
| 139 | 
            -
                /// - has no open claims
         | 
| 140 | 
            -
                /// - claim amount matches sum insured amount or is expired
         | 
| 141 | 
            -
                function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
         | 
| 142 | 
            -
             | 
| 143 115 | 
             
            }
         | 
| @@ -27,9 +27,7 @@ interface IPoolComponent is IInstanceLinkedComponent { | |
| 27 27 | 
             
                /// The default implementation is empty.
         | 
| 28 28 | 
             
                function verifyApplication(
         | 
| 29 29 | 
             
                    NftId applicationNftId, 
         | 
| 30 | 
            -
                    bytes memory applicationData,
         | 
| 31 30 | 
             
                    NftId bundleNftId, 
         | 
| 32 | 
            -
                    bytes memory bundleFilter,
         | 
| 33 31 | 
             
                    Amount collateralizationAmount
         | 
| 34 32 | 
             
                ) external;
         | 
| 35 33 |  | 
| @@ -47,6 +45,7 @@ interface IPoolComponent is IInstanceLinkedComponent { | |
| 47 45 | 
             
                    view
         | 
| 48 46 | 
             
                    returns (bool isMatching);
         | 
| 49 47 |  | 
| 48 | 
            +
             | 
| 50 49 | 
             
                /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
         | 
| 51 50 | 
             
                /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
         | 
| 52 51 | 
             
                /// The default implementation is empty.
         | 
| @@ -56,11 +55,6 @@ interface IPoolComponent is IInstanceLinkedComponent { | |
| 56 55 | 
             
                    Amount amount
         | 
| 57 56 | 
             
                ) external;
         | 
| 58 57 |  | 
| 59 | 
            -
                /// @dev Withdraw bundle feeds for the given bundle
         | 
| 60 | 
            -
                /// @param bundleNftId the bundle Nft Id
         | 
| 61 | 
            -
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         | 
| 62 | 
            -
                /// @return withdrawnAmount the effective withdrawn amount
         | 
| 63 | 
            -
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         | 
| 64 58 |  | 
| 65 59 | 
             
                /// @dev Returns initial pool specific infos for this pool
         | 
| 66 60 | 
             
                function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
         |