@etherisc/gif-next 0.0.2-e9c5694-914 → 0.0.2-ea09fbf-195
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 +103 -55
 - 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 +2 -2
 - 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 +37 -5
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
 - 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 +2 -2
 - 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 +49 -17
 - 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 +17 -17
 - 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 +470 -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 +502 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +630 -317
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +94 -47
 - 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 +131 -56
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +239 -92
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +478 -197
 - 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/ObjectSetHelper.sol/ObjectSetHelperLib.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectSetHelper.sol/ObjectSetHelperLib.json +168 -0
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
 - 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 +2 -2
 - 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 +49 -17
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +128 -226
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +60 -74
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +46 -60
 - 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 +104 -78
 - 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/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +175 -174
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +64 -38
 - 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 +2 -2
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +251 -144
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +79 -57
 - 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 +143 -3
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +65 -22
 - 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 +158 -140
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +73 -47
 - 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 +31 -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 +69 -40
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -213
 - 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 +1795 -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 +310 -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 +250 -421
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +71 -61
 - 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 +134 -248
 - 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 +388 -35
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.json +62 -80
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +27 -3
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +3 -3
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +134 -173
 - 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 +58 -46
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +73 -50
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +46 -24
 - 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 +3 -3
 - 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/SelectorSetLib.dbg.json +1 -1
 - 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 +136 -73
 - package/contracts/authorization/AccessManagerCloneable.sol +136 -3
 - package/contracts/authorization/IAccessAdmin.sol +6 -3
 - package/contracts/distribution/BasicDistribution.sol +6 -6
 - package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
 - package/contracts/distribution/Distribution.sol +32 -30
 - package/contracts/distribution/DistributionService.sol +34 -32
 - 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 +1 -0
 - package/contracts/examples/fire/FireProduct.sol +31 -8
 - package/contracts/examples/fire/FireProductAuthorization.sol +1 -0
 - package/contracts/examples/unpermissioned/SimpleDistribution.sol +7 -0
 - package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimplePool.sol +33 -2
 - package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimpleProduct.sol +40 -21
 - package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
 - package/contracts/instance/BundleSet.sol +42 -38
 - package/contracts/instance/IInstance.sol +8 -8
 - package/contracts/instance/IInstanceService.sol +9 -9
 - package/contracts/instance/Instance.sol +20 -17
 - package/contracts/instance/InstanceAdmin.sol +96 -47
 - package/contracts/instance/InstanceAuthorizationV3.sol +45 -14
 - package/contracts/instance/InstanceReader.sol +108 -7
 - 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/ObjectSetHelper.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/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 +12 -1
 - package/contracts/pool/BundleService.sol +26 -94
 - package/contracts/pool/BundleServiceManager.sol +1 -1
 - package/contracts/pool/IBundleService.sol +2 -24
 - package/contracts/pool/IPoolComponent.sol +1 -7
 - package/contracts/pool/IPoolService.sol +12 -26
 - package/contracts/pool/Pool.sol +112 -102
 - package/contracts/pool/PoolService.sol +171 -100
 - 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 +1 -2
 - package/contracts/product/ClaimService.sol +147 -51
 - package/contracts/product/ClaimServiceManager.sol +1 -1
 - package/contracts/product/IApplicationService.sol +5 -2
 - package/contracts/product/IClaimService.sol +13 -0
 - package/contracts/product/IPolicyService.sol +17 -7
 - package/contracts/product/IProductComponent.sol +4 -1
 - package/contracts/product/PolicyService.sol +244 -199
 - 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 +47 -39
 - package/contracts/product/RiskService.sol +78 -23
 - package/contracts/product/RiskServiceManager.sol +1 -1
 - package/contracts/registry/ChainNft.sol +4 -2
 - package/contracts/registry/IRegistry.sol +8 -15
 - package/contracts/registry/IRelease.sol +26 -0
 - package/contracts/registry/Registry.sol +12 -3
 - package/contracts/registry/RegistryAdmin.sol +121 -225
 - 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 +88 -40
 - package/contracts/registry/TokenRegistry.sol +6 -8
 - package/contracts/shared/Component.sol +59 -98
 - package/contracts/shared/ComponentService.sol +206 -251
 - package/contracts/shared/ComponentServiceManager.sol +1 -1
 - package/contracts/shared/ComponentVerifyingService.sol +15 -13
 - package/contracts/shared/ContractLib.sol +223 -9
 - package/contracts/shared/IComponent.sol +4 -17
 - package/contracts/shared/IComponentService.sol +20 -24
 - 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 +2 -18
 - 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 +316 -66
 - package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
 - package/contracts/staking/IStaking.sol +9 -4
 - package/contracts/staking/Staking.sol +62 -33
 - package/contracts/staking/StakingService.sol +41 -9
 - 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 +32 -18
 - package/contracts/type/RiskId.sol +23 -6
 - package/contracts/type/RoleId.sol +5 -2
 - 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/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
 
| 
         @@ -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 
     | 
    
         | 
| 
         @@ -185,15 +177,13 @@ contract BundleService is 
     | 
|
| 
       185 
177 
     | 
    
         | 
| 
       186 
178 
     | 
    
         
             
                    // updated locked amount
         
     | 
| 
       187 
179 
     | 
    
         
             
                    instanceStore.increaseLocked(bundleNftId, collateralAmount);
         
     | 
| 
       188 
     | 
    
         
            -
                    
         
     | 
| 
       189 
     | 
    
         
            -
                    // link policy to bundle in bundle manger
         
     | 
| 
       190 
     | 
    
         
            -
                    _linkPolicy(instance, policyNftId);
         
     | 
| 
       191 
180 
     | 
    
         
             
                }
         
     | 
| 
       192 
181 
     | 
    
         | 
| 
       193 
182 
     | 
    
         | 
| 
       194 
183 
     | 
    
         
             
                function lock(NftId bundleNftId) 
         
     | 
| 
       195 
184 
     | 
    
         
             
                    external
         
     | 
| 
       196 
185 
     | 
    
         
             
                    virtual
         
     | 
| 
      
 186 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       197 
187 
     | 
    
         
             
                {
         
     | 
| 
       198 
188 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
       199 
189 
     | 
    
         | 
| 
         @@ -213,6 +203,7 @@ contract BundleService is 
     | 
|
| 
       213 
203 
     | 
    
         
             
                function unlock(NftId bundleNftId) 
         
     | 
| 
       214 
204 
     | 
    
         
             
                    external
         
     | 
| 
       215 
205 
     | 
    
         
             
                    virtual
         
     | 
| 
      
 206 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       216 
207 
     | 
    
         
             
                {
         
     | 
| 
       217 
208 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
       218 
209 
     | 
    
         | 
| 
         @@ -235,7 +226,7 @@ contract BundleService is 
     | 
|
| 
       235 
226 
     | 
    
         
             
                ) 
         
     | 
| 
       236 
227 
     | 
    
         
             
                    external
         
     | 
| 
       237 
228 
     | 
    
         
             
                    virtual
         
     | 
| 
       238 
     | 
    
         
            -
                    restricted
         
     | 
| 
      
 229 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       239 
230 
     | 
    
         
             
                    returns (Amount unstakedAmount, Amount feeAmount)
         
     | 
| 
       240 
231 
     | 
    
         
             
                {
         
     | 
| 
       241 
232 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
         @@ -259,7 +250,7 @@ contract BundleService is 
     | 
|
| 
       259 
250 
     | 
    
         
             
                        Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
         
     | 
| 
       260 
251 
     | 
    
         
             
                        feeAmount = instanceReader.getFeeAmount(bundleNftId);
         
     | 
| 
       261 
252 
     | 
    
         
             
                        unstakedAmount = balanceAmountWithFees - feeAmount;
         
     | 
| 
       262 
     | 
    
         
            -
                         
     | 
| 
      
 253 
     | 
    
         
            +
                        _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
         
     | 
| 
       263 
254 
     | 
    
         
             
                    }
         
     | 
| 
       264 
255 
     | 
    
         
             
                }
         
     | 
| 
       265 
256 
     | 
    
         | 
| 
         @@ -271,7 +262,7 @@ contract BundleService is 
     | 
|
| 
       271 
262 
     | 
    
         
             
                ) 
         
     | 
| 
       272 
263 
     | 
    
         
             
                    external 
         
     | 
| 
       273 
264 
     | 
    
         
             
                    virtual
         
     | 
| 
       274 
     | 
    
         
            -
                     
     | 
| 
      
 265 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       275 
266 
     | 
    
         
             
                {
         
     | 
| 
       276 
267 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
       277 
268 
     | 
    
         | 
| 
         @@ -284,7 +275,7 @@ contract BundleService is 
     | 
|
| 
       284 
275 
     | 
    
         
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         
     | 
| 
       285 
276 
     | 
    
         
             
                    }
         
     | 
| 
       286 
277 
     | 
    
         | 
| 
       287 
     | 
    
         
            -
                     
     | 
| 
      
 278 
     | 
    
         
            +
                    _accountingService.increaseBundleBalance(
         
     | 
| 
       288 
279 
     | 
    
         
             
                        instance.getInstanceStore(), 
         
     | 
| 
       289 
280 
     | 
    
         
             
                        bundleNftId, 
         
     | 
| 
       290 
281 
     | 
    
         
             
                        amount, 
         
     | 
| 
         @@ -299,7 +290,7 @@ contract BundleService is 
     | 
|
| 
       299 
290 
     | 
    
         
             
                ) 
         
     | 
| 
       300 
291 
     | 
    
         
             
                    external 
         
     | 
| 
       301 
292 
     | 
    
         
             
                    virtual
         
     | 
| 
       302 
     | 
    
         
            -
                     
     | 
| 
      
 293 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       303 
294 
     | 
    
         
             
                    returns (Amount unstakedAmount)
         
     | 
| 
       304 
295 
     | 
    
         
             
                {
         
     | 
| 
       305 
296 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
         @@ -324,7 +315,7 @@ contract BundleService is 
     | 
|
| 
       324 
315 
     | 
    
         
             
                        revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
         
     | 
| 
       325 
316 
     | 
    
         
             
                    }
         
     | 
| 
       326 
317 
     | 
    
         | 
| 
       327 
     | 
    
         
            -
                     
     | 
| 
      
 318 
     | 
    
         
            +
                    _accountingService.decreaseBundleBalance(
         
     | 
| 
       328 
319 
     | 
    
         
             
                        instanceStore, 
         
     | 
| 
       329 
320 
     | 
    
         
             
                        bundleNftId, 
         
     | 
| 
       330 
321 
     | 
    
         
             
                        unstakedAmount, 
         
     | 
| 
         @@ -335,7 +326,7 @@ contract BundleService is 
     | 
|
| 
       335 
326 
     | 
    
         
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) 
         
     | 
| 
       336 
327 
     | 
    
         
             
                    external 
         
     | 
| 
       337 
328 
     | 
    
         
             
                    virtual
         
     | 
| 
       338 
     | 
    
         
            -
                     
     | 
| 
      
 329 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       339 
330 
     | 
    
         
             
                    returns (Timestamp extendedExpiredAt) 
         
     | 
| 
       340 
331 
     | 
    
         
             
                {
         
     | 
| 
       341 
332 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
         @@ -383,30 +374,12 @@ contract BundleService is 
     | 
|
| 
       383 
374 
     | 
    
         
             
                    instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
         
     | 
| 
       384 
375 
     | 
    
         
             
                }
         
     | 
| 
       385 
376 
     | 
    
         | 
| 
       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);
         
     | 
| 
       403 
     | 
    
         
            -
                }
         
     | 
| 
       404 
377 
     | 
    
         | 
| 
       405 
378 
     | 
    
         
             
                /// @inheritdoc IBundleService
         
     | 
| 
       406 
379 
     | 
    
         
             
                function withdrawBundleFees(NftId bundleNftId, Amount amount) 
         
     | 
| 
       407 
380 
     | 
    
         
             
                    public 
         
     | 
| 
       408 
381 
     | 
    
         
             
                    virtual
         
     | 
| 
       409 
     | 
    
         
            -
                     
     | 
| 
      
 382 
     | 
    
         
            +
                    restricted()
         
     | 
| 
       410 
383 
     | 
    
         
             
                    returns (Amount withdrawnAmount) 
         
     | 
| 
       411 
384 
     | 
    
         
             
                {
         
     | 
| 
       412 
385 
     | 
    
         
             
                    _checkNftType(bundleNftId, BUNDLE());
         
     | 
| 
         @@ -415,7 +388,7 @@ contract BundleService is 
     | 
|
| 
       415 
388 
     | 
    
         
             
                    InstanceReader reader = instance.getInstanceReader();
         
     | 
| 
       416 
389 
     | 
    
         | 
| 
       417 
390 
     | 
    
         
             
                    IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
         
     | 
| 
       418 
     | 
    
         
            -
                    address poolWallet = poolInfo. 
     | 
| 
      
 391 
     | 
    
         
            +
                    address poolWallet = poolInfo.tokenHandler.getWallet();
         
     | 
| 
       419 
392 
     | 
    
         | 
| 
       420 
393 
     | 
    
         
             
                    // IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
         
     | 
| 
       421 
394 
     | 
    
         | 
| 
         @@ -433,9 +406,9 @@ contract BundleService is 
     | 
|
| 
       433 
406 
     | 
    
         
             
                    {
         
     | 
| 
       434 
407 
     | 
    
         
             
                        InstanceStore store = instance.getInstanceStore();
         
     | 
| 
       435 
408 
     | 
    
         
             
                        // decrease fee amount of the bundle
         
     | 
| 
       436 
     | 
    
         
            -
                         
     | 
| 
      
 409 
     | 
    
         
            +
                        _accountingService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
         
     | 
| 
       437 
410 
     | 
    
         
             
                        // decrease pool balance 
         
     | 
| 
       438 
     | 
    
         
            -
                         
     | 
| 
      
 411 
     | 
    
         
            +
                        _accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
         
     | 
| 
       439 
412 
     | 
    
         
             
                    }
         
     | 
| 
       440 
413 
     | 
    
         | 
| 
       441 
414 
     | 
    
         
             
                    // transfer amount to bundle owner
         
     | 
| 
         @@ -446,47 +419,6 @@ contract BundleService is 
     | 
|
| 
       446 
419 
     | 
    
         
             
                    }
         
     | 
| 
       447 
420 
     | 
    
         
             
                }
         
     | 
| 
       448 
421 
     | 
    
         | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       490 
422 
     | 
    
         
             
                function _getDomain() internal pure override returns(ObjectType) {
         
     | 
| 
       491 
423 
     | 
    
         
             
                    return BUNDLE();
         
     | 
| 
       492 
424 
     | 
    
         
             
                }
         
     | 
| 
         @@ -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), 
         
     | 
| 
         @@ -5,7 +5,6 @@ import {Amount} from "../type/Amount.sol"; 
     | 
|
| 
       5 
5 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       6 
6 
     | 
    
         
             
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
       7 
7 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
       8 
     | 
    
         
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         
     | 
| 
       9 
8 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
       10 
9 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       11 
10 
     | 
    
         
             
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
         @@ -13,6 +12,7 @@ import {Timestamp} from "../type/Timestamp.sol"; 
     | 
|
| 
       13 
12 
     | 
    
         | 
| 
       14 
13 
     | 
    
         
             
            interface IBundleService is IService {
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
         
     | 
| 
       16 
16 
     | 
    
         
             
                event LogBundleServiceBundleActivated(NftId bundleNftId);
         
     | 
| 
       17 
17 
     | 
    
         
             
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
         @@ -35,14 +35,10 @@ interface IBundleService is IService { 
     | 
|
| 
       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 
     | 
    
         
             
                )
         
     | 
| 
         @@ -116,28 +112,10 @@ interface IBundleService is IService { 
     | 
|
| 
       116 
112 
     | 
    
         
             
                    Amount collateralAmount
         
     | 
| 
       117 
113 
     | 
    
         
             
                ) external;
         
     | 
| 
       118 
114 
     | 
    
         | 
| 
       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 
115 
     | 
    
         
             
                // FIXME: move to pool service
         
     | 
| 
       128 
116 
     | 
    
         
             
                /// @dev Withdraw bundle feeds for the given bundle
         
     | 
| 
       129 
117 
     | 
    
         
             
                /// @param bundleNftId the bundle Nft Id
         
     | 
| 
       130 
118 
     | 
    
         
             
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         
     | 
| 
       131 
119 
     | 
    
         
             
                /// @return withdrawnAmount the effective withdrawn amount
         
     | 
| 
       132 
120 
     | 
    
         
             
                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 
121 
     | 
    
         
             
            }
         
     | 
| 
         @@ -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);
         
     | 
| 
         @@ -3,32 +3,28 @@ pragma solidity ^0.8.20; 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       5 
5 
     | 
    
         
             
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       6 
     | 
    
         
            -
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
       7 
     | 
    
         
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         
     | 
| 
       8 
6 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
       9 
7 
     | 
    
         
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         
     | 
| 
       10 
8 
     | 
    
         
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         
     | 
| 
       11 
9 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
       12 
10 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       13 
     | 
    
         
            -
            import {PayoutId} from "../type/PayoutId.sol";
         
     | 
| 
       14 
     | 
    
         
            -
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       15 
     | 
    
         
            -
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       16 
     | 
    
         
            -
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
       17 
11 
     | 
    
         
             
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       18 
12 
     | 
    
         | 
| 
       19 
13 
     | 
    
         
             
            interface IPoolService is IService {
         
     | 
| 
       20 
14 
     | 
    
         | 
| 
       21 
15 
     | 
    
         
             
                event LogPoolServiceMaxBalanceAmountUpdated(NftId poolNftId, Amount previousMaxCapitalAmount, Amount currentMaxCapitalAmount);
         
     | 
| 
       22 
     | 
    
         
            -
                event  
     | 
| 
      
 16 
     | 
    
         
            +
                event LogPoolServiceWalletFunded(NftId poolNftId, address poolOwner, Amount amount);
         
     | 
| 
      
 17 
     | 
    
         
            +
                event LogPoolServiceWalletDefunded(NftId poolNftId, address poolOwner, Amount amount);
         
     | 
| 
       23 
18 
     | 
    
         | 
| 
       24 
19 
     | 
    
         
             
                event LogPoolServiceBundleCreated(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
         
     | 
| 
       25 
20 
     | 
    
         
             
                event LogPoolServiceBundleClosed(NftId instanceNftId, NftId poolNftId, NftId bundleNftId);
         
     | 
| 
       26 
21 
     | 
    
         | 
| 
       27 
22 
     | 
    
         
             
                event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         
     | 
| 
       28 
     | 
    
         
            -
                event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
         
     | 
| 
      
 23 
     | 
    
         
            +
                event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         
     | 
| 
       29 
24 
     | 
    
         | 
| 
       30 
25 
     | 
    
         
             
                event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
         
     | 
| 
       31 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
         
     | 
| 
       32 
28 
     | 
    
         
             
                error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
         
     | 
| 
       33 
29 
     | 
    
         
             
                error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
         
     | 
| 
       34 
30 
     | 
    
         
             
                error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
         
     | 
| 
         @@ -80,18 +76,6 @@ interface IPoolService is IService { 
     | 
|
| 
       80 
76 
     | 
    
         
             
                ) external;
         
     | 
| 
       81 
77 
     | 
    
         | 
| 
       82 
78 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
                /// @dev create a new empty bundle with the provided parameters
         
     | 
| 
       84 
     | 
    
         
            -
                /// may only be called by registered and unlocked pool components.
         
     | 
| 
       85 
     | 
    
         
            -
                function createBundle(
         
     | 
| 
       86 
     | 
    
         
            -
                    address owner, // initial bundle owner
         
     | 
| 
       87 
     | 
    
         
            -
                    Fee memory fee, // fees deducted from premium that go to bundle owner
         
     | 
| 
       88 
     | 
    
         
            -
                    Seconds lifetime, // initial duration for which new policies are covered
         
     | 
| 
       89 
     | 
    
         
            -
                    bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
         
     | 
| 
       90 
     | 
    
         
            -
                )
         
     | 
| 
       91 
     | 
    
         
            -
                    external 
         
     | 
| 
       92 
     | 
    
         
            -
                    returns(NftId bundleNftId); // the nft id of the newly created bundle
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
79 
     | 
    
         
             
                /// @dev increase stakes for bundle
         
     | 
| 
       96 
80 
     | 
    
         
             
                /// staking fees will be deducted by the pool service from the staking amount
         
     | 
| 
       97 
81 
     | 
    
         
             
                /// may only be called by registered and unlocked pool components
         
     | 
| 
         @@ -117,18 +101,18 @@ interface IPoolService is IService { 
     | 
|
| 
       117 
101 
     | 
    
         
             
                function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
         
     | 
| 
       118 
102 
     | 
    
         | 
| 
       119 
103 
     | 
    
         | 
| 
       120 
     | 
    
         
            -
                /// @dev Fund the  
     | 
| 
       121 
     | 
    
         
            -
                /// This function will collect the amount from the  
     | 
| 
      
 104 
     | 
    
         
            +
                /// @dev Fund the pool wallet with the provided amount.
         
     | 
| 
      
 105 
     | 
    
         
            +
                /// This function will collect the amount from the pool owner and transfers it to the pool wallet.
         
     | 
| 
       122 
106 
     | 
    
         
             
                /// The function will not update balance amounts managed by the framework.
         
     | 
| 
       123 
107 
     | 
    
         
             
                /// Only available for externally managed pools.
         
     | 
| 
       124 
     | 
    
         
            -
                function fundPoolWallet( 
     | 
| 
      
 108 
     | 
    
         
            +
                function fundPoolWallet(Amount amount) external;
         
     | 
| 
       125 
109 
     | 
    
         | 
| 
       126 
110 
     | 
    
         | 
| 
       127 
111 
     | 
    
         
             
                /// @dev Defund the specified pool wallet with the provided amount.
         
     | 
| 
       128 
     | 
    
         
            -
                /// This function will transfer the amount from the pool wallet to the  
     | 
| 
      
 112 
     | 
    
         
            +
                /// This function will transfer the amount from the pool wallet to the pool owner.
         
     | 
| 
       129 
113 
     | 
    
         
             
                /// The function will not update balance amounts managed by the framework.
         
     | 
| 
       130 
114 
     | 
    
         
             
                /// Only available for externally managed pools.
         
     | 
| 
       131 
     | 
    
         
            -
                function defundPoolWallet( 
     | 
| 
      
 115 
     | 
    
         
            +
                function defundPoolWallet(Amount amount) external;
         
     | 
| 
       132 
116 
     | 
    
         | 
| 
       133 
117 
     | 
    
         | 
| 
       134 
118 
     | 
    
         
             
                /// @dev processes the sale of a bundle and track the pool fee and bundle fee amounts
         
     | 
| 
         @@ -144,8 +128,10 @@ interface IPoolService is IService { 
     | 
|
| 
       144 
128 
     | 
    
         
             
                    external
         
     | 
| 
       145 
129 
     | 
    
         
             
                    view 
         
     | 
| 
       146 
130 
     | 
    
         
             
                    returns(
         
     | 
| 
      
 131 
     | 
    
         
            +
                        NftId poolNftId,
         
     | 
| 
       147 
132 
     | 
    
         
             
                        Amount totalCollateralAmount,
         
     | 
| 
       148 
     | 
    
         
            -
                        Amount localCollateralAmount
         
     | 
| 
      
 133 
     | 
    
         
            +
                        Amount localCollateralAmount,
         
     | 
| 
      
 134 
     | 
    
         
            +
                        bool poolIsVerifyingApplications
         
     | 
| 
       149 
135 
     | 
    
         
             
                    );
         
     | 
| 
       150 
136 
     | 
    
         | 
| 
       151 
137 
     | 
    
         |