@etherisc/gif-next 0.0.2-e987ccf-894 → 0.0.2-e9c5694-914
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 +1 -1
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
 - package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
 - 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 +60 -32
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +151 -249
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +91 -213
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +141 -198
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -107
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -66
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +29 -0
 - package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
 - package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1538 -0
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
 - package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
 - package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +310 -83
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +207 -241
 - 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 +46 -5
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
 - 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 +132 -230
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
 - 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 +73 -61
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +86 -208
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +109 -216
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +178 -187
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +117 -105
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -0
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +98 -58
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +200 -125
 - package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -203
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +308 -274
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +108 -88
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +71 -152
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -84
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +140 -221
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +288 -188
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +141 -11
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +131 -78
 - package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
 - package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +258 -195
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +114 -98
 - package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingService.sol/PricingService.json +154 -219
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +87 -91
 - package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/product/Product.sol/Product.json +140 -221
 - package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
 - package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
 - package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
 - package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
 - package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +285 -33
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
 - package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
 - package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
 - package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
 - package/artifacts/contracts/registry/Registry.sol/Registry.json +491 -94
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
 - package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
 - package/artifacts/contracts/shared/Component.sol/Component.json +68 -175
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +351 -263
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +120 -110
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
 - package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
 - package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -28
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +73 -61
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
 - package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
 - package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
 - 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 +29 -0
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +86 -208
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -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 +22 -57
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
 - package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
 - package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -29
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +83 -30
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +171 -224
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +102 -87
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -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 +32 -8
 - 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 +28 -4
 - 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 +2 -2
 - 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/NftId.sol/NftIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
 - 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 +19 -19
 - 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 +60 -4
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
 - 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/StateId.sol/StateIdLib.json +15 -2
 - 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/MathLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
 - package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
 - 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 +55 -70
 - package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
 - package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
 - package/contracts/authorization/AccessAdmin.sol +64 -59
 - package/contracts/authorization/Authorization.sol +111 -39
 - package/contracts/authorization/IAccess.sol +1 -0
 - package/contracts/authorization/IAccessAdmin.sol +4 -3
 - package/contracts/authorization/IAuthorization.sol +13 -7
 - package/contracts/authorization/IServiceAuthorization.sol +3 -1
 - package/contracts/authorization/ReleaseAccessManager.sol +38 -0
 - package/contracts/authorization/ServiceAuthorization.sol +26 -10
 - package/contracts/distribution/BasicDistribution.sol +2 -1
 - package/contracts/distribution/Distribution.sol +7 -17
 - package/contracts/distribution/DistributionService.sol +63 -44
 - package/contracts/distribution/DistributionServiceManager.sol +6 -6
 - package/contracts/distribution/IDistributionComponent.sol +1 -1
 - package/contracts/examples/fire/DamageLevel.sol +59 -0
 - package/contracts/examples/fire/FirePool.sol +73 -0
 - package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
 - package/contracts/examples/fire/FireProduct.sol +415 -0
 - package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
 - package/contracts/examples/fire/FireUSD.sol +26 -0
 - package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
 - package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
 - package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
 - package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
 - package/contracts/instance/IInstance.sol +10 -30
 - package/contracts/instance/IInstanceService.sol +0 -20
 - package/contracts/instance/Instance.sol +29 -51
 - package/contracts/instance/InstanceAdmin.sol +23 -31
 - package/contracts/instance/InstanceAuthorizationV3.sol +10 -19
 - package/contracts/instance/InstanceReader.sol +91 -18
 - package/contracts/instance/InstanceService.sol +23 -77
 - package/contracts/instance/InstanceServiceManager.sol +6 -7
 - package/contracts/instance/InstanceStore.sol +0 -4
 - package/contracts/instance/base/ObjectLifecycle.sol +2 -1
 - package/contracts/instance/module/IComponents.sol +10 -5
 - package/contracts/instance/module/IPolicy.sol +7 -7
 - package/contracts/oracle/BasicOracle.sol +0 -1
 - package/contracts/oracle/IOracleService.sol +2 -1
 - package/contracts/oracle/Oracle.sol +6 -16
 - package/contracts/oracle/OracleService.sol +47 -34
 - package/contracts/oracle/OracleServiceManager.sol +6 -6
 - package/contracts/pool/BasicPool.sol +14 -26
 - package/contracts/pool/BasicPoolAuthorization.sol +0 -1
 - package/contracts/pool/BundleService.sol +83 -28
 - package/contracts/pool/BundleServiceManager.sol +6 -6
 - package/contracts/pool/IBundleService.sol +9 -0
 - package/contracts/pool/IPoolComponent.sol +18 -8
 - package/contracts/pool/IPoolService.sol +21 -14
 - package/contracts/pool/Pool.sol +48 -39
 - package/contracts/pool/PoolService.sol +121 -86
 - package/contracts/pool/PoolServiceManager.sol +4 -4
 - package/contracts/product/ApplicationService.sol +20 -10
 - package/contracts/product/ApplicationServiceManager.sol +4 -4
 - package/contracts/product/BasicProduct.sol +7 -6
 - package/contracts/product/BasicProductAuthorization.sol +0 -1
 - package/contracts/product/ClaimService.sol +310 -114
 - package/contracts/product/ClaimServiceManager.sol +4 -4
 - package/contracts/product/IClaimService.sol +30 -7
 - package/contracts/product/IPolicyService.sol +12 -5
 - package/contracts/product/IPricingService.sol +9 -9
 - package/contracts/product/IProductComponent.sol +23 -3
 - package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -2
 - package/contracts/product/PolicyService.sol +168 -53
 - package/contracts/product/PolicyServiceManager.sol +4 -4
 - package/contracts/product/PricingService.sol +12 -13
 - package/contracts/product/PricingServiceManager.sol +3 -3
 - package/contracts/product/Product.sol +104 -55
 - package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
 - package/contracts/product/RiskServiceManager.sol +39 -0
 - package/contracts/registry/ChainNft.sol +68 -38
 - package/contracts/registry/IRegistry.sol +54 -17
 - package/contracts/registry/IRegistryService.sol +5 -12
 - package/contracts/registry/ITransferInterceptor.sol +1 -2
 - package/contracts/registry/Registry.sol +341 -200
 - package/contracts/registry/RegistryAdmin.sol +124 -50
 - package/contracts/registry/RegistryService.sol +35 -46
 - package/contracts/registry/RegistryServiceManager.sol +2 -2
 - package/contracts/registry/ReleaseLifecycle.sol +6 -3
 - package/contracts/registry/ReleaseRegistry.sol +203 -187
 - package/contracts/registry/ServiceAuthorizationV3.sol +14 -19
 - package/contracts/shared/Component.sol +29 -32
 - package/contracts/shared/ComponentService.sol +241 -137
 - package/contracts/shared/ComponentServiceManager.sol +8 -5
 - package/contracts/shared/ComponentVerifyingService.sol +22 -13
 - package/contracts/shared/ContractLib.sol +38 -0
 - package/contracts/shared/IComponent.sol +6 -2
 - package/contracts/shared/IComponentService.sol +25 -13
 - package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
 - package/contracts/shared/ILifecycle.sol +3 -1
 - package/contracts/shared/INftOwnable.sol +2 -0
 - package/contracts/shared/IPolicyHolder.sol +12 -22
 - package/contracts/shared/IRegisterable.sol +11 -0
 - package/contracts/shared/InitializableERC165.sol +2 -2
 - package/contracts/shared/InstanceLinkedComponent.sol +71 -30
 - package/contracts/shared/KeyValueStore.sol +1 -1
 - package/contracts/shared/Lifecycle.sol +15 -4
 - package/contracts/shared/NftOwnable.sol +26 -6
 - package/contracts/shared/PolicyHolder.sol +15 -52
 - package/contracts/shared/Registerable.sol +19 -9
 - package/contracts/shared/RegistryLinked.sol +3 -2
 - package/contracts/shared/Service.sol +20 -18
 - package/contracts/staking/IStaking.sol +2 -1
 - package/contracts/staking/IStakingService.sol +0 -3
 - package/contracts/staking/StakeManagerLib.sol +18 -0
 - package/contracts/staking/Staking.sol +8 -8
 - package/contracts/staking/StakingManager.sol +8 -6
 - package/contracts/staking/StakingReader.sol +12 -5
 - package/contracts/staking/StakingService.sol +17 -17
 - package/contracts/staking/StakingServiceManager.sol +2 -2
 - package/contracts/staking/TargetManagerLib.sol +7 -3
 - package/contracts/type/Amount.sol +15 -0
 - package/contracts/type/ClaimId.sol +6 -1
 - package/contracts/type/NftId.sol +1 -0
 - package/contracts/type/ObjectType.sol +1 -0
 - package/contracts/type/PayoutId.sol +10 -10
 - package/contracts/type/RiskId.sol +15 -1
 - package/contracts/type/RoleId.sol +0 -12
 - package/contracts/type/Seconds.sol +8 -0
 - package/contracts/type/StateId.sol +15 -1
 - package/contracts/type/UFixed.sol +4 -0
 - package/contracts/upgradeability/ProxyManager.sol +68 -34
 - package/contracts/upgradeability/Versionable.sol +2 -2
 - package/package.json +2 -1
 - package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
 - package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
 - package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
 - package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
 - package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
 - package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
 - package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
 - package/contracts/authorization/IModuleAuthorization.sol +0 -21
 - package/contracts/authorization/ModuleAuthorization.sol +0 -78
 - package/contracts/product/ProductServiceManager.sol +0 -39
 - package/contracts/shared/InitializableCustom.sol +0 -177
 
| 
         @@ -12,15 +12,15 @@ contract BundleServiceManager is ProxyManager { 
     | 
|
| 
       12 
12 
     | 
    
         
             
                /// @dev initializes proxy manager with pool service implementation 
         
     | 
| 
       13 
13 
     | 
    
         
             
                constructor(
         
     | 
| 
       14 
14 
     | 
    
         
             
                    address authority, 
         
     | 
| 
       15 
     | 
    
         
            -
                    address  
     | 
| 
      
 15 
     | 
    
         
            +
                    address registry,
         
     | 
| 
       16 
16 
     | 
    
         
             
                    bytes32 salt
         
     | 
| 
       17 
17 
     | 
    
         
             
                ) 
         
     | 
| 
       18 
     | 
    
         
            -
                    ProxyManager(registryAddress)
         
     | 
| 
       19 
18 
     | 
    
         
             
                {
         
     | 
| 
       20 
     | 
    
         
            -
                    BundleService  
     | 
| 
       21 
     | 
    
         
            -
                    bytes memory data = abi.encode( 
     | 
| 
       22 
     | 
    
         
            -
                    IVersionable versionable =  
     | 
| 
       23 
     | 
    
         
            -
                         
     | 
| 
      
 19 
     | 
    
         
            +
                    BundleService svc = new BundleService{salt: salt}();
         
     | 
| 
      
 20 
     | 
    
         
            +
                    bytes memory data = abi.encode(registry, authority);
         
     | 
| 
      
 21 
     | 
    
         
            +
                    IVersionable versionable = initialize(
         
     | 
| 
      
 22 
     | 
    
         
            +
                        registry,
         
     | 
| 
      
 23 
     | 
    
         
            +
                        address(svc), 
         
     | 
| 
       24 
24 
     | 
    
         
             
                        data,
         
     | 
| 
       25 
25 
     | 
    
         
             
                        salt);
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
         @@ -131,4 +131,13 @@ interface IBundleService is IService { 
     | 
|
| 
       131 
131 
     | 
    
         
             
                /// @return withdrawnAmount the effective withdrawn amount
         
     | 
| 
       132 
132 
     | 
    
         
             
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         
     | 
| 
       133 
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 
     | 
    
         
            +
             
     | 
| 
       134 
143 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       5 
6 
     | 
    
         
             
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
       6 
7 
     | 
    
         
             
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         
     | 
| 
       7 
8 
     | 
    
         
             
            import {IComponents} from "../instance/module/IComponents.sol";
         
     | 
| 
         @@ -20,10 +21,10 @@ interface IPoolComponent is IInstanceLinkedComponent { 
     | 
|
| 
       20 
21 
     | 
    
         | 
| 
       21 
22 
     | 
    
         
             
                event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                /// @dev  
     | 
| 
       24 
     | 
    
         
            -
                ///  
     | 
| 
       25 
     | 
    
         
            -
                ///  
     | 
| 
       26 
     | 
    
         
            -
                ///  
     | 
| 
      
 24 
     | 
    
         
            +
                /// @dev This is a callback function that is called by the product service when underwriting a policy.
         
     | 
| 
      
 25 
     | 
    
         
            +
                /// The pool has the option to check the details and object to underwriting by reverting.
         
     | 
| 
      
 26 
     | 
    
         
            +
                /// The function is only called for "active" pools that ask to be involved/notified.
         
     | 
| 
      
 27 
     | 
    
         
            +
                /// The default implementation is empty.
         
     | 
| 
       27 
28 
     | 
    
         
             
                function verifyApplication(
         
     | 
| 
       28 
29 
     | 
    
         
             
                    NftId applicationNftId, 
         
     | 
| 
       29 
30 
     | 
    
         
             
                    bytes memory applicationData,
         
     | 
| 
         @@ -32,9 +33,9 @@ interface IPoolComponent is IInstanceLinkedComponent { 
     | 
|
| 
       32 
33 
     | 
    
         
             
                    Amount collateralizationAmount
         
     | 
| 
       33 
34 
     | 
    
         
             
                ) external;
         
     | 
| 
       34 
35 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
                /// @dev  
     | 
| 
       36 
     | 
    
         
            -
                ///  
     | 
| 
       37 
     | 
    
         
            -
                /// default implementation returns true
         
     | 
| 
      
 36 
     | 
    
         
            +
                /// @dev Returns true iff the application matches with the bundle.
         
     | 
| 
      
 37 
     | 
    
         
            +
                /// This is a callback function that is only called if a pool declares itself as a verifying pool
         
     | 
| 
      
 38 
     | 
    
         
            +
                /// The default implementation returns true.
         
     | 
| 
       38 
39 
     | 
    
         
             
                function applicationMatchesBundle(
         
     | 
| 
       39 
40 
     | 
    
         
             
                    NftId applicationNftId, 
         
     | 
| 
       40 
41 
     | 
    
         
             
                    bytes memory applicationData,
         
     | 
| 
         @@ -46,13 +47,22 @@ interface IPoolComponent is IInstanceLinkedComponent { 
     | 
|
| 
       46 
47 
     | 
    
         
             
                    view
         
     | 
| 
       47 
48 
     | 
    
         
             
                    returns (bool isMatching);
         
     | 
| 
       48 
49 
     | 
    
         | 
| 
      
 50 
     | 
    
         
            +
                /// @dev This is a callback function that is called by the claim service when a claim is confirmed.
         
     | 
| 
      
 51 
     | 
    
         
            +
                /// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
         
     | 
| 
      
 52 
     | 
    
         
            +
                /// The default implementation is empty.
         
     | 
| 
      
 53 
     | 
    
         
            +
                function processConfirmedClaim(
         
     | 
| 
      
 54 
     | 
    
         
            +
                    NftId policyNftId, 
         
     | 
| 
      
 55 
     | 
    
         
            +
                    ClaimId claimId, 
         
     | 
| 
      
 56 
     | 
    
         
            +
                    Amount amount
         
     | 
| 
      
 57 
     | 
    
         
            +
                ) external;
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       49 
59 
     | 
    
         
             
                /// @dev Withdraw bundle feeds for the given bundle
         
     | 
| 
       50 
60 
     | 
    
         
             
                /// @param bundleNftId the bundle Nft Id
         
     | 
| 
       51 
61 
     | 
    
         
             
                /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
         
     | 
| 
       52 
62 
     | 
    
         
             
                /// @return withdrawnAmount the effective withdrawn amount
         
     | 
| 
       53 
63 
     | 
    
         
             
                function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
         
     | 
| 
       54 
64 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                /// @dev  
     | 
| 
      
 65 
     | 
    
         
            +
                /// @dev Returns initial pool specific infos for this pool
         
     | 
| 
       56 
66 
     | 
    
         
             
                function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
         
     | 
| 
       57 
67 
     | 
    
         | 
| 
       58 
68 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,14 +2,15 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       5 
6 
     | 
    
         
             
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
       6 
     | 
    
         
            -
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       7 
     | 
    
         
            -
            import {PayoutId} from "../type/PayoutId.sol";
         
     | 
| 
       8 
7 
     | 
    
         
             
            import {IBundle} from "../instance/module/IBundle.sol";
         
     | 
| 
       9 
8 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
       10 
9 
     | 
    
         
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         
     | 
| 
       11 
10 
     | 
    
         
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         
     | 
| 
       12 
11 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
      
 12 
     | 
    
         
            +
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
      
 13 
     | 
    
         
            +
            import {PayoutId} from "../type/PayoutId.sol";
         
     | 
| 
       13 
14 
     | 
    
         
             
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       14 
15 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       15 
16 
     | 
    
         
             
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
         @@ -26,14 +27,13 @@ interface IPoolService is IService { 
     | 
|
| 
       26 
27 
     | 
    
         
             
                event LogPoolServiceBundleStaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount, Amount netAmount);
         
     | 
| 
       27 
28 
     | 
    
         
             
                event LogPoolServiceBundleUnstaked(NftId instanceNftId, NftId poolNftId, NftId bundleNftId, Amount amount);
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
                event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
         
     | 
| 
       29 
33 
     | 
    
         
             
                error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
         
     | 
| 
       30 
34 
     | 
    
         
             
                error ErrorPoolServiceInvalidTransferAmount(Amount expectedAmount, Amount actualAmount);
         
     | 
| 
       31 
35 
     | 
    
         
             
                error ErrorPoolServiceBundlePoolMismatch(NftId bundleNftId, NftId poolNftId);
         
     | 
| 
       32 
36 
     | 
    
         
             
                error ErrorPoolServiceMaxBalanceAmountExceeded(NftId poolNftId, Amount maxBalanceAmount, Amount currentBalanceAmount, Amount transferAmount);
         
     | 
| 
       33 
     | 
    
         
            -
                
         
     | 
| 
       34 
     | 
    
         
            -
                /// @dev defines the required role for bundle owners for the calling pool
         
     | 
| 
       35 
     | 
    
         
            -
                /// default implementation returns PUBLIC ROLE
         
     | 
| 
       36 
     | 
    
         
            -
                function setBundleOwnerRole(RoleId bundleOwnerRole) external;
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                /// @dev sets the max balance amount for the calling pool
         
     | 
| 
       39 
39 
     | 
    
         
             
                function setMaxBalanceAmount(Amount maxBalanceAmount) external;
         
     | 
| 
         @@ -68,10 +68,10 @@ interface IPoolService is IService { 
     | 
|
| 
       68 
68 
     | 
    
         
             
                ) external;
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
                /// @dev reduces the locked collateral in the bundle associated with the specified policy
         
     | 
| 
      
 71 
     | 
    
         
            +
                /// @dev reduces the locked collateral in the bundle associated with the specified policy and updates pool/bundle counters
         
     | 
| 
       72 
72 
     | 
    
         
             
                /// every payout of a policy reduces the collateral by the payout amount
         
     | 
| 
       73 
73 
     | 
    
         
             
                /// may only be called by the claim service for unlocked pool components
         
     | 
| 
       74 
     | 
    
         
            -
                function  
     | 
| 
      
 74 
     | 
    
         
            +
                function processPayout(
         
     | 
| 
       75 
75 
     | 
    
         
             
                    IInstance instance, 
         
     | 
| 
       76 
76 
     | 
    
         
             
                    address token,
         
     | 
| 
       77 
77 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
         @@ -112,6 +112,11 @@ interface IPoolService is IService { 
     | 
|
| 
       112 
112 
     | 
    
         
             
                function closeBundle(NftId bundleNftId) external;
         
     | 
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
                /// @dev Informs product about available funds to process a confirmed claim.
         
     | 
| 
      
 116 
     | 
    
         
            +
                /// The function triggers a callback to the product component when the product's property isProcessingFundedClaims is set.
         
     | 
| 
      
 117 
     | 
    
         
            +
                function processFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount) external;
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
       115 
120 
     | 
    
         
             
                /// @dev Fund the specified pool wallet with the provided amount.
         
     | 
| 
       116 
121 
     | 
    
         
             
                /// This function will collect the amount from the sender address and transfers it to the pool wallet.
         
     | 
| 
       117 
122 
     | 
    
         
             
                /// The function will not update balance amounts managed by the framework.
         
     | 
| 
         @@ -130,7 +135,7 @@ interface IPoolService is IService { 
     | 
|
| 
       130 
135 
     | 
    
         
             
                function processSale(NftId bundleNftId, IPolicy.PremiumInfo memory premium) external;
         
     | 
| 
       131 
136 
     | 
    
         | 
| 
       132 
137 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
                /// @dev  
     | 
| 
      
 138 
     | 
    
         
            +
                /// @dev Calulate required collateral for the provided parameters.
         
     | 
| 
       134 
139 
     | 
    
         
             
                function calculateRequiredCollateral(
         
     | 
| 
       135 
140 
     | 
    
         
             
                    InstanceReader instanceReader,
         
     | 
| 
       136 
141 
     | 
    
         
             
                    NftId productNftId, 
         
     | 
| 
         @@ -139,12 +144,14 @@ interface IPoolService is IService { 
     | 
|
| 
       139 
144 
     | 
    
         
             
                    external
         
     | 
| 
       140 
145 
     | 
    
         
             
                    view 
         
     | 
| 
       141 
146 
     | 
    
         
             
                    returns(
         
     | 
| 
       142 
     | 
    
         
            -
                        Amount  
     | 
| 
       143 
     | 
    
         
            -
                        Amount  
     | 
| 
      
 147 
     | 
    
         
            +
                        Amount totalCollateralAmount,
         
     | 
| 
      
 148 
     | 
    
         
            +
                        Amount localCollateralAmount
         
     | 
| 
       144 
149 
     | 
    
         
             
                    );
         
     | 
| 
       145 
150 
     | 
    
         | 
| 
       146 
151 
     | 
    
         | 
| 
       147 
     | 
    
         
            -
                /// @dev calulate required collateral for the provided parameters
         
     | 
| 
      
 152 
     | 
    
         
            +
                /// @dev calulate required collateral for the provided parameters.
         
     | 
| 
      
 153 
     | 
    
         
            +
                /// Collateralization is applied to sum insured.
         
     | 
| 
      
 154 
     | 
    
         
            +
                /// Retention level defines the fraction of the collateral that is required locally.
         
     | 
| 
       148 
155 
     | 
    
         
             
                function calculateRequiredCollateral(
         
     | 
| 
       149 
156 
     | 
    
         
             
                    UFixed collateralizationLevel, 
         
     | 
| 
       150 
157 
     | 
    
         
             
                    UFixed retentionLevel, 
         
     | 
| 
         @@ -153,8 +160,8 @@ interface IPoolService is IService { 
     | 
|
| 
       153 
160 
     | 
    
         
             
                    external
         
     | 
| 
       154 
161 
     | 
    
         
             
                    pure 
         
     | 
| 
       155 
162 
     | 
    
         
             
                    returns(
         
     | 
| 
       156 
     | 
    
         
            -
                        Amount  
     | 
| 
       157 
     | 
    
         
            -
                        Amount  
     | 
| 
      
 163 
     | 
    
         
            +
                        Amount totalCollateralAmount,
         
     | 
| 
      
 164 
     | 
    
         
            +
                        Amount localCollateralAmount
         
     | 
| 
       158 
165 
     | 
    
         
             
                    );
         
     | 
| 
       159 
166 
     | 
    
         | 
| 
       160 
167 
     | 
    
         
             
            }
         
     | 
    
        package/contracts/pool/Pool.sol
    CHANGED
    
    | 
         @@ -2,7 +2,8 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         
     | 
| 
       5 
     | 
    
         
            -
            import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {BUNDLE, COMPONENT, POLICY, POOL} from "../type/ObjectType.sol";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       6 
7 
     | 
    
         
             
            import {IBundleService} from "./IBundleService.sol";
         
     | 
| 
       7 
8 
     | 
    
         
             
            import {IAuthorization} from "../authorization/IAuthorization.sol";
         
     | 
| 
       8 
9 
     | 
    
         
             
            import {IPoolComponent} from "./IPoolComponent.sol";
         
     | 
| 
         @@ -10,13 +11,12 @@ import {IPoolService} from "./IPoolService.sol"; 
     | 
|
| 
       10 
11 
     | 
    
         
             
            import {IComponents} from "../instance/module/IComponents.sol";
         
     | 
| 
       11 
12 
     | 
    
         
             
            import {IComponentService} from "../shared/IComponentService.sol";
         
     | 
| 
       12 
13 
     | 
    
         
             
            import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
         
     | 
| 
       13 
     | 
    
         
            -
            import {Fee 
     | 
| 
       14 
     | 
    
         
            -
            import {NftId 
     | 
| 
      
 14 
     | 
    
         
            +
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
      
 15 
     | 
    
         
            +
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       15 
16 
     | 
    
         
             
            import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
         
     | 
| 
       16 
17 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       17 
18 
     | 
    
         
             
            import {Timestamp} from "../type/Timestamp.sol";
         
     | 
| 
       18 
     | 
    
         
            -
            import { 
     | 
| 
       19 
     | 
    
         
            -
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         
     | 
| 
      
 19 
     | 
    
         
            +
            import {UFixedLib} from "../type/UFixed.sol";
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
            abstract contract Pool is
         
     | 
| 
       22 
22 
     | 
    
         
             
                InstanceLinkedComponent, 
         
     | 
| 
         @@ -51,6 +51,7 @@ abstract contract Pool is 
     | 
|
| 
       51 
51 
     | 
    
         
             
                    public
         
     | 
| 
       52 
52 
     | 
    
         
             
                    virtual
         
     | 
| 
       53 
53 
     | 
    
         
             
                    restricted()
         
     | 
| 
      
 54 
     | 
    
         
            +
                    onlyNftOfType(applicationNftId, POLICY())
         
     | 
| 
       54 
55 
     | 
    
         
             
                {
         
     | 
| 
       55 
56 
     | 
    
         
             
                    if(!applicationMatchesBundle(
         
     | 
| 
       56 
57 
     | 
    
         
             
                        applicationNftId,
         
     | 
| 
         @@ -67,6 +68,21 @@ abstract contract Pool is 
     | 
|
| 
       67 
68 
     | 
    
         
             
                }
         
     | 
| 
       68 
69 
     | 
    
         | 
| 
       69 
70 
     | 
    
         | 
| 
      
 71 
     | 
    
         
            +
                /// @dev see {IPoolComponent.processConfirmedClaim}
         
     | 
| 
      
 72 
     | 
    
         
            +
                function processConfirmedClaim(
         
     | 
| 
      
 73 
     | 
    
         
            +
                    NftId policyNftId, 
         
     | 
| 
      
 74 
     | 
    
         
            +
                    ClaimId claimId, 
         
     | 
| 
      
 75 
     | 
    
         
            +
                    Amount amount
         
     | 
| 
      
 76 
     | 
    
         
            +
                )
         
     | 
| 
      
 77 
     | 
    
         
            +
                    public
         
     | 
| 
      
 78 
     | 
    
         
            +
                    virtual
         
     | 
| 
      
 79 
     | 
    
         
            +
                    restricted()
         
     | 
| 
      
 80 
     | 
    
         
            +
                    onlyNftOfType(policyNftId, POLICY())
         
     | 
| 
      
 81 
     | 
    
         
            +
                {
         
     | 
| 
      
 82 
     | 
    
         
            +
                    // default implementation is empty
         
     | 
| 
      
 83 
     | 
    
         
            +
                }
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
       70 
86 
     | 
    
         
             
                /// @dev see {IPoolComponent.applicationMatchesBundle}
         
     | 
| 
       71 
87 
     | 
    
         
             
                /// Override this function to implement any custom application verification 
         
     | 
| 
       72 
88 
     | 
    
         
             
                /// Default implementation always returns true
         
     | 
| 
         @@ -80,27 +96,20 @@ abstract contract Pool is 
     | 
|
| 
       80 
96 
     | 
    
         
             
                    public
         
     | 
| 
       81 
97 
     | 
    
         
             
                    virtual
         
     | 
| 
       82 
98 
     | 
    
         
             
                    view
         
     | 
| 
      
 99 
     | 
    
         
            +
                    onlyNftOfType(applicationNftId, POLICY())
         
     | 
| 
      
 100 
     | 
    
         
            +
                    onlyNftOfType(bundleNftId, BUNDLE())
         
     | 
| 
       83 
101 
     | 
    
         
             
                    returns (bool isMatching)
         
     | 
| 
       84 
102 
     | 
    
         
             
                {
         
     | 
| 
       85 
103 
     | 
    
         
             
                    return true;
         
     | 
| 
       86 
104 
     | 
    
         
             
                }
         
     | 
| 
       87 
105 
     | 
    
         | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                function register()
         
     | 
| 
       90 
     | 
    
         
            -
                    external
         
     | 
| 
       91 
     | 
    
         
            -
                    virtual
         
     | 
| 
       92 
     | 
    
         
            -
                    onlyOwner()
         
     | 
| 
       93 
     | 
    
         
            -
                {
         
     | 
| 
       94 
     | 
    
         
            -
                    _getPoolStorage()._componentService.registerPool();
         
     | 
| 
       95 
     | 
    
         
            -
                    _approveTokenHandler(type(uint256).max);
         
     | 
| 
       96 
     | 
    
         
            -
                }
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
106 
     | 
    
         
             
                /// @inheritdoc IPoolComponent
         
     | 
| 
       99 
107 
     | 
    
         
             
                function withdrawBundleFees(NftId bundleNftId, Amount amount) 
         
     | 
| 
       100 
108 
     | 
    
         
             
                    external 
         
     | 
| 
       101 
109 
     | 
    
         
             
                    virtual
         
     | 
| 
       102 
110 
     | 
    
         
             
                    restricted()
         
     | 
| 
       103 
111 
     | 
    
         
             
                    onlyBundleOwner(bundleNftId)
         
     | 
| 
      
 112 
     | 
    
         
            +
                    onlyNftOfType(bundleNftId, BUNDLE())
         
     | 
| 
       104 
113 
     | 
    
         
             
                    returns (Amount withdrawnAmount) 
         
     | 
| 
       105 
114 
     | 
    
         
             
                {
         
     | 
| 
       106 
115 
     | 
    
         
             
                    return _withdrawBundleFees(bundleNftId, amount);
         
     | 
| 
         @@ -113,28 +122,28 @@ abstract contract Pool is 
     | 
|
| 
       113 
122 
     | 
    
         
             
                    view 
         
     | 
| 
       114 
123 
     | 
    
         
             
                    returns (IComponents.PoolInfo memory poolInfo)
         
     | 
| 
       115 
124 
     | 
    
         
             
                {
         
     | 
| 
       116 
     | 
    
         
            -
                    return IComponents.PoolInfo(
         
     | 
| 
       117 
     | 
    
         
            -
                         
     | 
| 
       118 
     | 
    
         
            -
                         
     | 
| 
       119 
     | 
    
         
            -
                        isNftInterceptor(), 
     | 
| 
       120 
     | 
    
         
            -
                        false, 
     | 
| 
       121 
     | 
    
         
            -
                        false, 
     | 
| 
       122 
     | 
    
         
            -
                         
     | 
| 
       123 
     | 
    
         
            -
                        UFixedLib.toUFixed(1) 
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
      
 125 
     | 
    
         
            +
                    return IComponents.PoolInfo({
         
     | 
| 
      
 126 
     | 
    
         
            +
                        maxBalanceAmount: AmountLib.max(),
         
     | 
| 
      
 127 
     | 
    
         
            +
                        bundleOwnerRole: PUBLIC_ROLE(), 
         
     | 
| 
      
 128 
     | 
    
         
            +
                        isInterceptingBundleTransfers: isNftInterceptor(),
         
     | 
| 
      
 129 
     | 
    
         
            +
                        isProcessingConfirmedClaims: false,
         
     | 
| 
      
 130 
     | 
    
         
            +
                        isExternallyManaged: false,
         
     | 
| 
      
 131 
     | 
    
         
            +
                        isVerifyingApplications: false,
         
     | 
| 
      
 132 
     | 
    
         
            +
                        collateralizationLevel: UFixedLib.toUFixed(1),
         
     | 
| 
      
 133 
     | 
    
         
            +
                        retentionLevel: UFixedLib.toUFixed(1)
         
     | 
| 
      
 134 
     | 
    
         
            +
                    });
         
     | 
| 
       125 
135 
     | 
    
         
             
                }
         
     | 
| 
       126 
136 
     | 
    
         | 
| 
       127 
137 
     | 
    
         
             
                // Internals
         
     | 
| 
       128 
138 
     | 
    
         | 
| 
       129 
139 
     | 
    
         
             
                function _initializePool(
         
     | 
| 
       130 
140 
     | 
    
         
             
                    address registry,
         
     | 
| 
       131 
     | 
    
         
            -
                    NftId  
     | 
| 
      
 141 
     | 
    
         
            +
                    NftId productNftId,
         
     | 
| 
       132 
142 
     | 
    
         
             
                    string memory name,
         
     | 
| 
       133 
143 
     | 
    
         
             
                    address token,
         
     | 
| 
       134 
144 
     | 
    
         
             
                    IAuthorization authorization,
         
     | 
| 
       135 
145 
     | 
    
         
             
                    bool isInterceptingNftTransfers,
         
     | 
| 
       136 
146 
     | 
    
         
             
                    address initialOwner,
         
     | 
| 
       137 
     | 
    
         
            -
                    bytes memory registryData, // writeonly data that will saved in the object info record of the registry
         
     | 
| 
       138 
147 
     | 
    
         
             
                    bytes memory componentData // component specifidc data 
         
     | 
| 
       139 
148 
     | 
    
         
             
                )
         
     | 
| 
       140 
149 
     | 
    
         
             
                    internal
         
     | 
| 
         @@ -143,14 +152,13 @@ abstract contract Pool is 
     | 
|
| 
       143 
152 
     | 
    
         
             
                {
         
     | 
| 
       144 
153 
     | 
    
         
             
                    _initializeInstanceLinkedComponent(
         
     | 
| 
       145 
154 
     | 
    
         
             
                        registry, 
         
     | 
| 
       146 
     | 
    
         
            -
                         
     | 
| 
      
 155 
     | 
    
         
            +
                        productNftId,  
         
     | 
| 
       147 
156 
     | 
    
         
             
                        name, 
         
     | 
| 
       148 
157 
     | 
    
         
             
                        token, 
         
     | 
| 
       149 
158 
     | 
    
         
             
                        POOL(), 
         
     | 
| 
       150 
159 
     | 
    
         
             
                        authorization, 
         
     | 
| 
       151 
160 
     | 
    
         
             
                        isInterceptingNftTransfers, 
         
     | 
| 
       152 
161 
     | 
    
         
             
                        initialOwner, 
         
     | 
| 
       153 
     | 
    
         
            -
                        registryData, 
         
     | 
| 
       154 
162 
     | 
    
         
             
                        componentData);
         
     | 
| 
       155 
163 
     | 
    
         | 
| 
       156 
164 
     | 
    
         
             
                    PoolStorage storage $ = _getPoolStorage();
         
     | 
| 
         @@ -158,7 +166,7 @@ abstract contract Pool is 
     | 
|
| 
       158 
166 
     | 
    
         
             
                    $._bundleService = IBundleService(_getServiceAddress(BUNDLE()));
         
     | 
| 
       159 
167 
     | 
    
         
             
                    $._componentService = IComponentService(_getServiceAddress(COMPONENT())); 
         
     | 
| 
       160 
168 
     | 
    
         | 
| 
       161 
     | 
    
         
            -
                     
     | 
| 
      
 169 
     | 
    
         
            +
                    _registerInterface(type(IPoolComponent).interfaceId);
         
     | 
| 
       162 
170 
     | 
    
         
             
                }
         
     | 
| 
       163 
171 
     | 
    
         | 
| 
       164 
172 
     | 
    
         
             
                /// @dev increases the staked tokens by the specified amount
         
     | 
| 
         @@ -260,16 +268,6 @@ abstract contract Pool is 
     | 
|
| 
       260 
268 
     | 
    
         
             
                    _getPoolStorage()._poolService.setMaxBalanceAmount(maxBalanceAmount);
         
     | 
| 
       261 
269 
     | 
    
         
             
                }
         
     | 
| 
       262 
270 
     | 
    
         | 
| 
       263 
     | 
    
         
            -
                /// @dev Sets the required role to create/own bundles.
         
     | 
| 
       264 
     | 
    
         
            -
                /// May only be called once after setting up a pool.
         
     | 
| 
       265 
     | 
    
         
            -
                /// May only be called by pool owner.
         
     | 
| 
       266 
     | 
    
         
            -
                function _setBundleOwnerRole(RoleId bundleOwnerRole)
         
     | 
| 
       267 
     | 
    
         
            -
                    internal
         
     | 
| 
       268 
     | 
    
         
            -
                    virtual
         
     | 
| 
       269 
     | 
    
         
            -
                {
         
     | 
| 
       270 
     | 
    
         
            -
                    _getPoolStorage()._poolService.setBundleOwnerRole(bundleOwnerRole);
         
     | 
| 
       271 
     | 
    
         
            -
                }
         
     | 
| 
       272 
     | 
    
         
            -
             
     | 
| 
       273 
271 
     | 
    
         | 
| 
       274 
272 
     | 
    
         
             
                /// @dev Update pool fees to the specified values.
         
     | 
| 
       275 
273 
     | 
    
         
             
                /// Pool fee: are deducted from the premium amount and goes to the pool owner.
         
     | 
| 
         @@ -318,6 +316,17 @@ abstract contract Pool is 
     | 
|
| 
       318 
316 
     | 
    
         
             
                    return _getPoolStorage()._bundleService.withdrawBundleFees(bundleNftId, amount);
         
     | 
| 
       319 
317 
     | 
    
         
             
                }
         
     | 
| 
       320 
318 
     | 
    
         | 
| 
      
 319 
     | 
    
         
            +
                function _processFundedClaim(
         
     | 
| 
      
 320 
     | 
    
         
            +
                    NftId policyNftId, 
         
     | 
| 
      
 321 
     | 
    
         
            +
                    ClaimId claimId, 
         
     | 
| 
      
 322 
     | 
    
         
            +
                    Amount availableAmount
         
     | 
| 
      
 323 
     | 
    
         
            +
                )
         
     | 
| 
      
 324 
     | 
    
         
            +
                    internal
         
     | 
| 
      
 325 
     | 
    
         
            +
                {
         
     | 
| 
      
 326 
     | 
    
         
            +
                    _getPoolStorage()._poolService.processFundedClaim(
         
     | 
| 
      
 327 
     | 
    
         
            +
                        policyNftId, claimId, availableAmount);
         
     | 
| 
      
 328 
     | 
    
         
            +
                }
         
     | 
| 
      
 329 
     | 
    
         
            +
             
     | 
| 
       321 
330 
     | 
    
         
             
                function _getPoolStorage() private pure returns (PoolStorage storage $) {
         
     | 
| 
       322 
331 
     | 
    
         
             
                    assembly {
         
     | 
| 
       323 
332 
     | 
    
         
             
                        $.slot := POOL_STORAGE_LOCATION_V1
         
     |