@etherisc/gif-next 0.0.2-e964d24-516 → 0.0.2-e987ccf-894
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 +51 -5
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
 - package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
 - package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
 - package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
 - package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
 - package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
 - package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
 - package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
 - package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1500 -0
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +179 -385
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +280 -324
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +130 -72
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +171 -254
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +186 -94
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +77 -78
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +193 -52
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +93 -126
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +590 -328
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +282 -101
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +120 -42
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1294 -370
 - package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
 - package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
 - package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
 - package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
 - package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
 - 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 +4 -0
 - package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
 - package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
 - package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1137 -0
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
 - package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
 - package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
 - package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
 - package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +776 -0
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1029 -0
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1406 -0
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +399 -213
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +176 -50
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +204 -32
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +181 -356
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +342 -211
 - package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/pool/Pool.sol/Pool.json +227 -442
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +401 -432
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +106 -68
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +92 -158
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +111 -37
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1254 -0
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -187
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +130 -56
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +25 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +46 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +217 -73
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +83 -44
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +271 -173
 - package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductService.sol/IProductService.json +13 -55
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +244 -286
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +117 -91
 - package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingService.sol/PricingService.json +188 -220
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +135 -57
 - package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/product/Product.sol/Product.json +345 -331
 - package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
 - package/artifacts/contracts/product/ProductService.sol/ProductService.json +47 -203
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +94 -32
 - 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 +183 -29
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +206 -124
 - 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 +440 -40
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +370 -68
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -35
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
 - package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
 - package/artifacts/contracts/shared/Component.sol/Component.json +104 -145
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1252 -203
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.json +76 -107
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +711 -0
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
 - package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
 - package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
 - package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +7 -1
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +21 -3
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +7 -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 +20 -1
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
 - package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +951 -0
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +133 -0
 - package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
 - package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
 - package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +13 -7
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +31 -13
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.json +21 -7
 - 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 +20 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +362 -7
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1412 -0
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +566 -54
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +1941 -0
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +661 -85
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
 - package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
 - package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
 - package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
 - package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
 - package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
 - package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
 - package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
 - package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
 - 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 +47 -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 +149 -2
 - package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
 - package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
 - package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
 - package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
 - package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +100 -2
 - package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
 - package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
 - package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
 - package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
 - package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
 - package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
 - package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
 - package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
 - package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
 - package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
 - package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
 - package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
 - package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
 - package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
 - package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
 - package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
 - package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
 - package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
 - package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
 - package/contracts/authorization/AccessAdmin.sol +591 -0
 - package/contracts/authorization/AccessManagerCloneable.sol +16 -0
 - package/contracts/authorization/Authorization.sol +217 -0
 - package/contracts/authorization/IAccess.sol +48 -0
 - package/contracts/authorization/IAccessAdmin.sol +136 -0
 - package/contracts/authorization/IAuthorization.sol +54 -0
 - package/contracts/authorization/IModuleAuthorization.sol +21 -0
 - package/contracts/authorization/IServiceAuthorization.sol +38 -0
 - package/contracts/authorization/ModuleAuthorization.sol +78 -0
 - package/contracts/authorization/ServiceAuthorization.sol +90 -0
 - package/contracts/distribution/BasicDistribution.sol +138 -0
 - package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
 - package/contracts/distribution/Distribution.sol +162 -152
 - package/contracts/distribution/DistributionService.sol +124 -136
 - package/contracts/distribution/DistributionServiceManager.sol +11 -23
 - package/contracts/distribution/IDistributionComponent.sol +28 -47
 - package/contracts/distribution/IDistributionService.sol +24 -10
 - package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
 - package/contracts/instance/IInstance.sol +26 -17
 - package/contracts/instance/IInstanceService.sol +46 -27
 - package/contracts/instance/Instance.sol +114 -89
 - package/contracts/instance/InstanceAdmin.sol +285 -0
 - package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
 - package/contracts/instance/InstanceReader.sol +106 -52
 - package/contracts/instance/InstanceService.sol +291 -132
 - package/contracts/instance/InstanceServiceManager.sol +12 -26
 - package/contracts/instance/InstanceStore.sol +146 -66
 - package/contracts/instance/base/BalanceStore.sol +123 -0
 - package/contracts/instance/base/Cloneable.sol +28 -0
 - package/contracts/instance/base/ObjectCounter.sol +21 -0
 - package/contracts/instance/base/ObjectLifecycle.sol +110 -0
 - package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +18 -21
 - package/contracts/instance/module/IAccess.sol +2 -10
 - package/contracts/instance/module/IBundle.sol +1 -4
 - package/contracts/instance/module/IComponents.sol +15 -10
 - package/contracts/instance/module/IDistribution.sol +0 -1
 - package/contracts/instance/module/IPolicy.sol +29 -22
 - package/contracts/mock/Dip.sol +26 -0
 - package/contracts/oracle/BasicOracle.sol +48 -0
 - package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
 - package/contracts/oracle/IOracle.sol +36 -0
 - package/contracts/oracle/IOracleComponent.sol +33 -0
 - package/contracts/oracle/IOracleService.sol +65 -0
 - package/contracts/oracle/Oracle.sol +166 -0
 - package/contracts/oracle/OracleService.sol +278 -0
 - package/contracts/oracle/OracleServiceManager.sol +39 -0
 - package/contracts/pool/BasicPool.sol +166 -0
 - package/contracts/pool/BasicPoolAuthorization.sol +58 -0
 - package/contracts/pool/BundleService.sol +252 -196
 - package/contracts/pool/BundleServiceManager.sol +11 -23
 - package/contracts/pool/IBundleService.sol +35 -19
 - package/contracts/pool/IPoolComponent.sol +10 -66
 - package/contracts/pool/IPoolService.sol +79 -33
 - package/contracts/pool/Pool.sol +168 -144
 - package/contracts/pool/PoolService.sol +322 -216
 - package/contracts/pool/PoolServiceManager.sol +11 -23
 - package/contracts/product/ApplicationService.sol +144 -81
 - package/contracts/product/ApplicationServiceManager.sol +11 -8
 - package/contracts/product/BasicProduct.sol +52 -0
 - package/contracts/product/BasicProductAuthorization.sol +43 -0
 - package/contracts/product/ClaimService.sol +45 -66
 - package/contracts/product/ClaimServiceManager.sol +11 -8
 - package/contracts/product/IApplicationService.sol +2 -1
 - package/contracts/product/IClaimService.sol +13 -3
 - package/contracts/product/IPolicyService.sol +29 -36
 - package/contracts/product/IPricingService.sol +10 -8
 - package/contracts/product/IProductComponent.sol +10 -12
 - package/contracts/product/IProductService.sol +2 -8
 - package/contracts/product/PolicyService.sol +390 -190
 - package/contracts/product/PolicyServiceManager.sol +11 -26
 - package/contracts/product/PricingService.sol +103 -77
 - package/contracts/product/PricingServiceManager.sol +11 -23
 - package/contracts/product/Product.sol +154 -123
 - package/contracts/product/ProductService.sol +36 -147
 - package/contracts/product/ProductServiceManager.sol +11 -26
 - package/contracts/registry/ChainNft.sol +8 -1
 - package/contracts/registry/IRegistry.sol +55 -22
 - package/contracts/registry/IRegistryService.sol +38 -35
 - package/contracts/registry/Registry.sol +234 -125
 - package/contracts/registry/RegistryAdmin.sol +374 -0
 - package/contracts/registry/RegistryService.sol +67 -100
 - package/contracts/registry/RegistryServiceManager.sol +23 -30
 - package/contracts/registry/ReleaseLifecycle.sol +27 -0
 - package/contracts/registry/ReleaseRegistry.sol +485 -0
 - package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
 - package/contracts/registry/TokenRegistry.sol +261 -62
 - package/contracts/shared/Component.sol +141 -144
 - package/contracts/shared/ComponentService.sol +587 -96
 - package/contracts/shared/ComponentServiceManager.sol +35 -0
 - package/contracts/shared/ComponentVerifyingService.sol +117 -0
 - package/contracts/shared/IComponent.sol +21 -41
 - package/contracts/shared/IComponentService.sol +108 -0
 - package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
 - package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
 - package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
 - package/contracts/shared/INftOwnable.sol +1 -1
 - package/contracts/shared/IPolicyHolder.sol +6 -1
 - package/contracts/shared/IService.sol +9 -2
 - package/contracts/shared/InitializableCustom.sol +177 -0
 - package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +2 -2
 - package/contracts/shared/InstanceLinkedComponent.sol +172 -0
 - package/contracts/shared/KeyValueStore.sol +131 -0
 - package/contracts/shared/Lifecycle.sol +77 -0
 - package/contracts/shared/NftIdSet.sol +65 -0
 - package/contracts/shared/NftOwnable.sol +5 -16
 - package/contracts/shared/PolicyHolder.sol +22 -17
 - package/contracts/shared/Registerable.sol +2 -2
 - package/contracts/shared/Service.sol +32 -22
 - package/contracts/shared/TokenHandler.sol +112 -8
 - package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
 - package/contracts/staking/IStaking.sol +167 -0
 - package/contracts/staking/IStakingService.sol +105 -47
 - package/contracts/staking/StakeManagerLib.sol +206 -0
 - package/contracts/staking/Staking.sol +497 -0
 - package/contracts/staking/StakingLifecycle.sol +23 -0
 - package/contracts/staking/StakingManager.sol +50 -0
 - package/contracts/staking/StakingReader.sol +183 -0
 - package/contracts/staking/StakingService.sol +288 -47
 - package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +13 -6
 - package/contracts/staking/StakingStore.sol +605 -0
 - package/contracts/staking/TargetManagerLib.sol +207 -0
 - package/contracts/type/AddressSet.sol +1 -1
 - package/contracts/type/Amount.sol +29 -3
 - package/contracts/type/Blocknumber.sol +26 -3
 - package/contracts/type/Fee.sol +17 -16
 - package/contracts/type/NftId.sol +14 -16
 - package/contracts/type/NftIdSet.sol +1 -1
 - package/contracts/type/ObjectType.sol +176 -62
 - package/contracts/type/Referral.sol +2 -1
 - package/contracts/type/RequestId.sol +75 -0
 - package/contracts/type/RiskId.sol +1 -1
 - package/contracts/type/RoleId.sol +117 -40
 - package/contracts/type/Seconds.sol +40 -1
 - package/contracts/type/Selector.sol +102 -0
 - package/contracts/type/StateId.sol +27 -2
 - package/contracts/type/String.sol +53 -0
 - package/contracts/type/Timestamp.sol +17 -3
 - package/contracts/type/UFixed.sol +34 -9
 - package/contracts/type/Version.sol +4 -2
 - package/contracts/{shared → upgradeability}/ProxyManager.sol +33 -4
 - package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
 - package/package.json +8 -5
 - package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
 - package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
 - package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
 - package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
 - package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
 - package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
 - package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
 - package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
 - package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
 - package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
 - package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
 - package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
 - package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
 - package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
 - package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
 - package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
 - package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
 - package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
 - package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
 - package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
 - package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
 - package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
 - package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
 - package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
 - package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
 - package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
 - package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
 - package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
 - package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
 - package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
 - package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
 - package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
 - package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
 - package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
 - package/contracts/instance/Cloneable.sol +0 -51
 - package/contracts/instance/InstanceAccessManager.sol +0 -541
 - package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
 - package/contracts/instance/base/KeyValueStore.sol +0 -149
 - package/contracts/instance/base/Lifecycle.sol +0 -120
 - package/contracts/instance/module/ISetup.sol +0 -33
 - package/contracts/instance/module/ITreasury.sol +0 -23
 - package/contracts/registry/RegistryAccessManager.sol +0 -216
 - package/contracts/registry/ReleaseManager.sol +0 -324
 - package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
 - /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
 - /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
 
| 
         @@ -1,54 +1,26 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
     | 
    
         
            -
            pragma solidity ^0.8. 
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         
     | 
| 
       5 
     | 
    
         
            -
            import {IService} from "./IApplicationService.sol";
         
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
       6 
3 
     | 
    
         | 
| 
       7 
4 
     | 
    
         
             
            import {IComponents} from "../instance/module/IComponents.sol";
         
     | 
| 
       8 
     | 
    
         
            -
            import {IRegistry} from "../registry/IRegistry.sol";
         
     | 
| 
       9 
     | 
    
         
            -
            import {IProductComponent} from "./IProductComponent.sol";
         
     | 
| 
       10 
     | 
    
         
            -
            import {Product} from "./Product.sol";
         
     | 
| 
       11 
     | 
    
         
            -
            import {IPoolComponent} from "../pool/IPoolComponent.sol";
         
     | 
| 
       12 
     | 
    
         
            -
            import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
         
     | 
| 
       13 
5 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
       14 
6 
     | 
    
         
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         
     | 
| 
       15 
     | 
    
         
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         
     | 
| 
       16 
     | 
    
         
            -
            import {IBundle} from "../instance/module/IBundle.sol";
         
     | 
| 
       17 
     | 
    
         
            -
            import {IProductService} from "./IProductService.sol";
         
     | 
| 
       18 
     | 
    
         
            -
            import {ITreasury} from "../instance/module/ITreasury.sol";
         
     | 
| 
       19 
     | 
    
         
            -
            import {ISetup} from "../instance/module/ISetup.sol";
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            import {TokenHandler} from "../shared/TokenHandler.sol";
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            import {IVersionable} from "../shared/IVersionable.sol";
         
     | 
| 
       24 
     | 
    
         
            -
            import {Versionable} from "../shared/Versionable.sol";
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
7 
     | 
    
         
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         
     | 
| 
       27 
     | 
    
         
            -
            import { 
     | 
| 
       28 
     | 
    
         
            -
            import { 
     | 
| 
       29 
     | 
    
         
            -
            import { 
     | 
| 
       30 
     | 
    
         
            -
            import { 
     | 
| 
       31 
     | 
    
         
            -
            import { 
     | 
| 
       32 
     | 
    
         
            -
            import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
         
     | 
| 
       33 
     | 
    
         
            -
            import {Fee, FeeLib} from "../type/Fee.sol";
         
     | 
| 
       34 
     | 
    
         
            -
            import {ReferralId} from "../type/Referral.sol";
         
     | 
| 
       35 
     | 
    
         
            -
            import {RiskId} from "../type/RiskId.sol";
         
     | 
| 
      
 8 
     | 
    
         
            +
            import {TimestampLib} from "../type/Timestamp.sol";
         
     | 
| 
      
 9 
     | 
    
         
            +
            import {ObjectType, CLAIM, PRODUCT, POOL} from "../type/ObjectType.sol";
         
     | 
| 
      
 10 
     | 
    
         
            +
            import {SUBMITTED, KEEP_STATE, DECLINED, CONFIRMED, CLOSED, PAID} from "../type/StateId.sol";
         
     | 
| 
      
 11 
     | 
    
         
            +
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
      
 12 
     | 
    
         
            +
            import {FeeLib} from "../type/Fee.sol";
         
     | 
| 
       36 
13 
     | 
    
         
             
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
       37 
14 
     | 
    
         
             
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         
     | 
| 
       38 
15 
     | 
    
         
             
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         
     | 
| 
       39 
     | 
    
         
            -
            import { 
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
            import {ComponentService} from "../shared/ComponentService.sol";
         
     | 
| 
      
 16 
     | 
    
         
            +
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         
     | 
| 
       42 
17 
     | 
    
         
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         
     | 
| 
       43 
     | 
    
         
            -
            import {IBundleService} from "../pool/IBundleService.sol";
         
     | 
| 
       44 
18 
     | 
    
         
             
            import {IClaimService} from "./IClaimService.sol";
         
     | 
| 
       45 
19 
     | 
    
         
             
            import {IPoolService} from "../pool/IPoolService.sol";
         
     | 
| 
       46 
     | 
    
         
            -
            import {IService} from "../shared/IService.sol";
         
     | 
| 
       47 
     | 
    
         
            -
            import {Service} from "../shared/Service.sol";
         
     | 
| 
       48 
20 
     | 
    
         | 
| 
       49 
21 
     | 
    
         | 
| 
       50 
22 
     | 
    
         
             
            contract ClaimService is 
         
     | 
| 
       51 
     | 
    
         
            -
                 
     | 
| 
      
 23 
     | 
    
         
            +
                ComponentVerifyingService, 
         
     | 
| 
       52 
24 
     | 
    
         
             
                IClaimService
         
     | 
| 
       53 
25 
     | 
    
         
             
            {
         
     | 
| 
       54 
26 
     | 
    
         | 
| 
         @@ -62,27 +34,23 @@ contract ClaimService is 
     | 
|
| 
       62 
34 
     | 
    
         
             
                    virtual override
         
     | 
| 
       63 
35 
     | 
    
         
             
                    initializer()
         
     | 
| 
       64 
36 
     | 
    
         
             
                {
         
     | 
| 
       65 
     | 
    
         
            -
                     
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
                    (
         
     | 
| 
      
 38 
     | 
    
         
            +
                        address registryAddress,, 
         
     | 
| 
      
 39 
     | 
    
         
            +
                        //address managerAddress
         
     | 
| 
      
 40 
     | 
    
         
            +
                        address authority
         
     | 
| 
      
 41 
     | 
    
         
            +
                    ) = abi.decode(data, (address, address, address));
         
     | 
| 
       69 
42 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                    initializeService(registryAddress,  
     | 
| 
      
 43 
     | 
    
         
            +
                    initializeService(registryAddress, authority, owner);
         
     | 
| 
       71 
44 
     | 
    
         | 
| 
       72 
45 
     | 
    
         
             
                    _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
         
     | 
| 
       73 
46 
     | 
    
         | 
| 
       74 
47 
     | 
    
         
             
                    registerInterface(type(IClaimService).interfaceId);
         
     | 
| 
       75 
48 
     | 
    
         
             
                }
         
     | 
| 
       76 
49 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                function getDomain() public pure override returns(ObjectType) {
         
     | 
| 
       79 
     | 
    
         
            -
                    return CLAIM();
         
     | 
| 
       80 
     | 
    
         
            -
                }
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
50 
     | 
    
         
             
                function submit(
         
     | 
| 
       83 
51 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       84 
52 
     | 
    
         
             
                    Amount claimAmount,
         
     | 
| 
       85 
     | 
    
         
            -
                    bytes memory claimData
         
     | 
| 
      
 53 
     | 
    
         
            +
                    bytes memory claimData // claim submission data
         
     | 
| 
       86 
54 
     | 
    
         
             
                )
         
     | 
| 
       87 
55 
     | 
    
         
             
                    external
         
     | 
| 
       88 
56 
     | 
    
         
             
                    virtual
         
     | 
| 
         @@ -117,7 +85,8 @@ contract ClaimService is 
     | 
|
| 
       117 
85 
     | 
    
         
             
                            AmountLib.zero(), // paidAmount
         
     | 
| 
       118 
86 
     | 
    
         
             
                            0, // payoutsCount
         
     | 
| 
       119 
87 
     | 
    
         
             
                            0, // openPayoutsCount
         
     | 
| 
       120 
     | 
    
         
            -
                            claimData,
         
     | 
| 
      
 88 
     | 
    
         
            +
                            claimData, // claim submission data
         
     | 
| 
      
 89 
     | 
    
         
            +
                            "", // claim processing data
         
     | 
| 
       121 
90 
     | 
    
         
             
                            TimestampLib.zero())); // closedAt
         
     | 
| 
       122 
91 
     | 
    
         | 
| 
       123 
92 
     | 
    
         
             
                    // update and save policy info with instance
         
     | 
| 
         @@ -133,7 +102,8 @@ contract ClaimService is 
     | 
|
| 
       133 
102 
     | 
    
         
             
                function confirm(
         
     | 
| 
       134 
103 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       135 
104 
     | 
    
         
             
                    ClaimId claimId,
         
     | 
| 
       136 
     | 
    
         
            -
                    Amount confirmedAmount
         
     | 
| 
      
 105 
     | 
    
         
            +
                    Amount confirmedAmount,
         
     | 
| 
      
 106 
     | 
    
         
            +
                    bytes memory data // claim processing data
         
     | 
| 
       137 
107 
     | 
    
         
             
                )
         
     | 
| 
       138 
108 
     | 
    
         
             
                    external
         
     | 
| 
       139 
109 
     | 
    
         
             
                    virtual
         
     | 
| 
         @@ -147,6 +117,7 @@ contract ClaimService is 
     | 
|
| 
       147 
117 
     | 
    
         
             
                    // check/update claim info
         
     | 
| 
       148 
118 
     | 
    
         
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         
     | 
| 
       149 
119 
     | 
    
         
             
                    claimInfo.claimAmount = confirmedAmount;
         
     | 
| 
      
 120 
     | 
    
         
            +
                    claimInfo.processData = data;
         
     | 
| 
       150 
121 
     | 
    
         
             
                    instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, CONFIRMED());
         
     | 
| 
       151 
122 
     | 
    
         | 
| 
       152 
123 
     | 
    
         
             
                    // update and save policy info with instance
         
     | 
| 
         @@ -158,7 +129,8 @@ contract ClaimService is 
     | 
|
| 
       158 
129 
     | 
    
         | 
| 
       159 
130 
     | 
    
         
             
                function decline(
         
     | 
| 
       160 
131 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       161 
     | 
    
         
            -
                    ClaimId claimId
         
     | 
| 
      
 132 
     | 
    
         
            +
                    ClaimId claimId,
         
     | 
| 
      
 133 
     | 
    
         
            +
                    bytes memory data // claim processing data
         
     | 
| 
       162 
134 
     | 
    
         
             
                )
         
     | 
| 
       163 
135 
     | 
    
         
             
                    external
         
     | 
| 
       164 
136 
     | 
    
         
             
                    virtual
         
     | 
| 
         @@ -171,6 +143,7 @@ contract ClaimService is 
     | 
|
| 
       171 
143 
     | 
    
         | 
| 
       172 
144 
     | 
    
         
             
                    // check/update claim info
         
     | 
| 
       173 
145 
     | 
    
         
             
                    IPolicy.ClaimInfo memory claimInfo = _verifyClaim(instanceReader, policyNftId, claimId, SUBMITTED());
         
     | 
| 
      
 146 
     | 
    
         
            +
                    claimInfo.processData = data;
         
     | 
| 
       174 
147 
     | 
    
         
             
                    claimInfo.closedAt = TimestampLib.blockTimestamp();
         
     | 
| 
       175 
148 
     | 
    
         
             
                    instance.getInstanceStore().updateClaim(policyNftId, claimId, claimInfo, DECLINED());
         
     | 
| 
       176 
149 
     | 
    
         | 
| 
         @@ -310,13 +283,18 @@ contract ClaimService is 
     | 
|
| 
       310 
283 
     | 
    
         
             
                    instance.getInstanceStore().updatePolicyClaims(policyNftId, policyInfo, KEEP_STATE());
         
     | 
| 
       311 
284 
     | 
    
         | 
| 
       312 
285 
     | 
    
         
             
                    // inform pool about payout
         
     | 
| 
       313 
     | 
    
         
            -
                    _poolService.reduceCollateral( 
     | 
| 
      
 286 
     | 
    
         
            +
                    _poolService.reduceCollateral(
         
     | 
| 
      
 287 
     | 
    
         
            +
                        instance, 
         
     | 
| 
      
 288 
     | 
    
         
            +
                        address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
         
     | 
| 
      
 289 
     | 
    
         
            +
                        policyNftId, 
         
     | 
| 
      
 290 
     | 
    
         
            +
                        policyInfo, 
         
     | 
| 
      
 291 
     | 
    
         
            +
                        payoutAmount);
         
     | 
| 
       314 
292 
     | 
    
         | 
| 
       315 
293 
     | 
    
         
             
                    // transfer payout token and fee
         
     | 
| 
       316 
294 
     | 
    
         
             
                    (
         
     | 
| 
       317 
295 
     | 
    
         
             
                        Amount netPayoutAmount,
         
     | 
| 
       318 
296 
     | 
    
         
             
                        address beneficiary
         
     | 
| 
       319 
     | 
    
         
            -
                    ) =  
     | 
| 
      
 297 
     | 
    
         
            +
                    ) = _calculatePayoutAmount(
         
     | 
| 
       320 
298 
     | 
    
         
             
                        instanceReader,
         
     | 
| 
       321 
299 
     | 
    
         
             
                        policyNftId,
         
     | 
| 
       322 
300 
     | 
    
         
             
                        policyInfo,
         
     | 
| 
         @@ -325,10 +303,15 @@ contract ClaimService is 
     | 
|
| 
       325 
303 
     | 
    
         
             
                    // TODO callback IPolicyHolder
         
     | 
| 
       326 
304 
     | 
    
         | 
| 
       327 
305 
     | 
    
         
             
                    emit LogClaimServicePayoutProcessed(policyNftId, payoutId, payoutAmount, beneficiary, netPayoutAmount);
         
     | 
| 
      
 306 
     | 
    
         
            +
             
     | 
| 
      
 307 
     | 
    
         
            +
                    {
         
     | 
| 
      
 308 
     | 
    
         
            +
                        NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
         
     | 
| 
      
 309 
     | 
    
         
            +
                        IComponents.ComponentInfo memory poolInfo = instanceReader.getComponentInfo(poolNftId);
         
     | 
| 
      
 310 
     | 
    
         
            +
                        poolInfo.tokenHandler.distributeTokens(poolInfo.wallet, beneficiary, netPayoutAmount);
         
     | 
| 
      
 311 
     | 
    
         
            +
                    }
         
     | 
| 
       328 
312 
     | 
    
         
             
                }
         
     | 
| 
       329 
313 
     | 
    
         | 
| 
       330 
     | 
    
         
            -
                 
     | 
| 
       331 
     | 
    
         
            -
                function _transferPayoutAmount(
         
     | 
| 
      
 314 
     | 
    
         
            +
                function _calculatePayoutAmount(
         
     | 
| 
       332 
315 
     | 
    
         
             
                    InstanceReader instanceReader,
         
     | 
| 
       333 
316 
     | 
    
         
             
                    NftId policyNftId,
         
     | 
| 
       334 
317 
     | 
    
         
             
                    IPolicy.PolicyInfo memory policyInfo,
         
     | 
| 
         @@ -344,7 +327,6 @@ contract ClaimService is 
     | 
|
| 
       344 
327 
     | 
    
         | 
| 
       345 
328 
     | 
    
         
             
                    if(payoutAmount.gtz()) {
         
     | 
| 
       346 
329 
     | 
    
         
             
                        NftId productNftId = policyInfo.productNftId;
         
     | 
| 
       347 
     | 
    
         
            -
                        ISetup.ProductSetupInfo memory setupInfo = instanceReader.getProductSetupInfo(productNftId);
         
     | 
| 
       348 
330 
     | 
    
         | 
| 
       349 
331 
     | 
    
         
             
                        // get pool component info from policy or product
         
     | 
| 
       350 
332 
     | 
    
         
             
                        NftId poolNftId = getRegistry().getObjectInfo(policyInfo.bundleNftId).parentNftId;
         
     | 
| 
         @@ -353,16 +335,12 @@ contract ClaimService is 
     | 
|
| 
       353 
335 
     | 
    
         
             
                        netPayoutAmount = payoutAmount;
         
     | 
| 
       354 
336 
     | 
    
         
             
                        beneficiary = _getBeneficiary(policyNftId, payoutInfo.claimId);
         
     | 
| 
       355 
337 
     | 
    
         | 
| 
       356 
     | 
    
         
            -
                         
     | 
| 
      
 338 
     | 
    
         
            +
                        IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
         
     | 
| 
      
 339 
     | 
    
         
            +
                        if(FeeLib.gtz(productInfo.processingFee)) {
         
     | 
| 
       357 
340 
     | 
    
         
             
                            // TODO calculate net payout and processing fees
         
     | 
| 
       358 
341 
     | 
    
         
             
                            // TODO transfer processing fees to product wallet
         
     | 
| 
       359 
342 
     | 
    
         
             
                            // TODO inform product to update fee book keeping
         
     | 
| 
       360 
343 
     | 
    
         
             
                        }
         
     | 
| 
       361 
     | 
    
         
            -
             
     | 
| 
       362 
     | 
    
         
            -
                        poolInfo.tokenHandler.transfer(
         
     | 
| 
       363 
     | 
    
         
            -
                            poolInfo.wallet,
         
     | 
| 
       364 
     | 
    
         
            -
                            beneficiary,
         
     | 
| 
       365 
     | 
    
         
            -
                            netPayoutAmount);
         
     | 
| 
       366 
344 
     | 
    
         
             
                    }
         
     | 
| 
       367 
345 
     | 
    
         
             
                }
         
     | 
| 
       368 
346 
     | 
    
         | 
| 
         @@ -387,6 +365,8 @@ contract ClaimService is 
     | 
|
| 
       387 
365 
     | 
    
         
             
                    NftId policyNftId
         
     | 
| 
       388 
366 
     | 
    
         
             
                )
         
     | 
| 
       389 
367 
     | 
    
         
             
                    internal
         
     | 
| 
      
 368 
     | 
    
         
            +
                    view
         
     | 
| 
      
 369 
     | 
    
         
            +
                    virtual
         
     | 
| 
       390 
370 
     | 
    
         
             
                    returns (
         
     | 
| 
       391 
371 
     | 
    
         
             
                        IInstance instance,
         
     | 
| 
       392 
372 
     | 
    
         
             
                        InstanceReader instanceReader,
         
     | 
| 
         @@ -394,7 +374,7 @@ contract ClaimService is 
     | 
|
| 
       394 
374 
     | 
    
         
             
                    )
         
     | 
| 
       395 
375 
     | 
    
         
             
                {
         
     | 
| 
       396 
376 
     | 
    
         
             
                    NftId productNftId;
         
     | 
| 
       397 
     | 
    
         
            -
                    (productNftId,, instance) =  
     | 
| 
      
 377 
     | 
    
         
            +
                    (productNftId,, instance) = _getAndVerifyActiveComponent(PRODUCT());
         
     | 
| 
       398 
378 
     | 
    
         
             
                    instanceReader = instance.getInstanceReader();
         
     | 
| 
       399 
379 
     | 
    
         | 
| 
       400 
380 
     | 
    
         
             
                    // check caller(product) policy match
         
     | 
| 
         @@ -429,9 +409,8 @@ contract ClaimService is 
     | 
|
| 
       429 
409 
     | 
    
         
             
                    claimInfo = instanceReader.getClaimInfo(policyNftId, claimId);
         
     | 
| 
       430 
410 
     | 
    
         
             
                }
         
     | 
| 
       431 
411 
     | 
    
         | 
| 
       432 
     | 
    
         
            -
             
     | 
| 
       433 
     | 
    
         
            -
             
     | 
| 
       434 
     | 
    
         
            -
                     
     | 
| 
       435 
     | 
    
         
            -
                    product = Product(productInfo.objectAddress);
         
     | 
| 
      
 412 
     | 
    
         
            +
             
     | 
| 
      
 413 
     | 
    
         
            +
                function _getDomain() internal pure override returns(ObjectType) {
         
     | 
| 
      
 414 
     | 
    
         
            +
                    return CLAIM();
         
     | 
| 
       436 
415 
     | 
    
         
             
                }
         
     | 
| 
       437 
416 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import {IVersionable} from "../ 
     | 
| 
       5 
     | 
    
         
            -
            import {ProxyManager} from "../ 
     | 
| 
      
 4 
     | 
    
         
            +
            import {IVersionable} from "../upgradeability/IVersionable.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {ProxyManager} from "../upgradeability/ProxyManager.sol";
         
     | 
| 
       6 
6 
     | 
    
         
             
            import {ClaimService} from "./ClaimService.sol";
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            contract ClaimServiceManager is ProxyManager {
         
     | 
| 
         @@ -11,15 +11,18 @@ contract ClaimServiceManager is ProxyManager { 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                /// @dev initializes proxy manager with service implementation 
         
     | 
| 
       13 
13 
     | 
    
         
             
                constructor(
         
     | 
| 
       14 
     | 
    
         
            -
                    address  
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
                    address authority, 
         
     | 
| 
      
 15 
     | 
    
         
            +
                    address registryAddress,
         
     | 
| 
      
 16 
     | 
    
         
            +
                    bytes32 salt
         
     | 
| 
      
 17 
     | 
    
         
            +
                ) 
         
     | 
| 
       16 
18 
     | 
    
         
             
                    ProxyManager(registryAddress)
         
     | 
| 
       17 
19 
     | 
    
         
             
                {
         
     | 
| 
       18 
     | 
    
         
            -
                    ClaimService svc = new ClaimService();
         
     | 
| 
       19 
     | 
    
         
            -
                    bytes memory data = abi.encode(registryAddress, address(this));
         
     | 
| 
       20 
     | 
    
         
            -
                    IVersionable versionable =  
     | 
| 
      
 20 
     | 
    
         
            +
                    ClaimService svc = new ClaimService{salt: salt}();
         
     | 
| 
      
 21 
     | 
    
         
            +
                    bytes memory data = abi.encode(registryAddress, address(this), authority);
         
     | 
| 
      
 22 
     | 
    
         
            +
                    IVersionable versionable = deployDetermenistic(
         
     | 
| 
       21 
23 
     | 
    
         
             
                        address(svc), 
         
     | 
| 
       22 
     | 
    
         
            -
                        data 
     | 
| 
      
 24 
     | 
    
         
            +
                        data,
         
     | 
| 
      
 25 
     | 
    
         
            +
                        salt);
         
     | 
| 
       23 
26 
     | 
    
         | 
| 
       24 
27 
     | 
    
         
             
                    _claimService = ClaimService(address(versionable));
         
     | 
| 
       25 
28 
     | 
    
         
             
                }
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
     | 
    
         
            -
            pragma solidity ^0.8. 
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         
     | 
| 
       5 
5 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
         @@ -24,6 +24,7 @@ interface IApplicationService is IService { 
     | 
|
| 
       24 
24 
     | 
    
         
             
                    address applicationOwner,
         
     | 
| 
       25 
25 
     | 
    
         
             
                    RiskId riskId,
         
     | 
| 
       26 
26 
     | 
    
         
             
                    Amount sumInsuredAmount,
         
     | 
| 
      
 27 
     | 
    
         
            +
                    Amount premiumAmount,
         
     | 
| 
       27 
28 
     | 
    
         
             
                    Seconds lifetime,
         
     | 
| 
       28 
29 
     | 
    
         
             
                    NftId bundleNftId,
         
     | 
| 
       29 
30 
     | 
    
         
             
                    ReferralId referralId,
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
     | 
    
         
            -
            pragma solidity ^0.8. 
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {IInstance} from "../instance/IInstance.sol";
         
     | 
| 
       5 
5 
     | 
    
         
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         
     | 
| 
         @@ -31,6 +31,7 @@ interface IClaimService is 
     | 
|
| 
       31 
31 
     | 
    
         
             
                error ErrorClaimServicePolicyProductMismatch(NftId policyNftId, NftId expectedProduct, NftId actualProduct);
         
     | 
| 
       32 
32 
     | 
    
         
             
                error ErrorClaimServicePolicyNotOpen(NftId policyNftId);
         
     | 
| 
       33 
33 
     | 
    
         
             
                error ErrorClaimServiceClaimExceedsSumInsured(NftId policyNftId, Amount sumInsured, Amount payoutsIncludingClaimAmount);
         
     | 
| 
      
 34 
     | 
    
         
            +
                error ErrorClaimsServicePayoutAmountIsZero(NftId policyNftId, PayoutId payoutId);
         
     | 
| 
       34 
35 
     | 
    
         | 
| 
       35 
36 
     | 
    
         
             
                error ErrorClaimServiceClaimWithOpenPayouts(NftId policyNftId, ClaimId claimId, uint8 openPayouts);
         
     | 
| 
       36 
37 
     | 
    
         
             
                error ErrorClaimServiceClaimWithMissingPayouts(NftId policyNftId, ClaimId claimId, Amount claimAmount, Amount paidAmount);
         
     | 
| 
         @@ -45,20 +46,29 @@ interface IClaimService is 
     | 
|
| 
       45 
46 
     | 
    
         
             
                    bytes memory claimData
         
     | 
| 
       46 
47 
     | 
    
         
             
                ) external returns (ClaimId claimId);
         
     | 
| 
       47 
48 
     | 
    
         | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                // TODO add claim revoke functionality
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       48 
53 
     | 
    
         
             
                /// @dev declines the specified claim
         
     | 
| 
       49 
54 
     | 
    
         
             
                /// function can only be called by product, policy needs to match with calling product
         
     | 
| 
       50 
55 
     | 
    
         
             
                function decline(
         
     | 
| 
       51 
56 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       52 
     | 
    
         
            -
                    ClaimId claimId 
     | 
| 
      
 57 
     | 
    
         
            +
                    ClaimId claimId,
         
     | 
| 
      
 58 
     | 
    
         
            +
                    bytes memory data // claim processing data
         
     | 
| 
      
 59 
     | 
    
         
            +
                ) external;
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       53 
61 
     | 
    
         | 
| 
       54 
62 
     | 
    
         
             
                /// @dev confirms the specified claim and specifies the payout amount
         
     | 
| 
       55 
63 
     | 
    
         
             
                /// function can only be called by product, policy needs to match with calling product
         
     | 
| 
       56 
64 
     | 
    
         
             
                function confirm(
         
     | 
| 
       57 
65 
     | 
    
         
             
                    NftId policyNftId, 
         
     | 
| 
       58 
66 
     | 
    
         
             
                    ClaimId claimId,
         
     | 
| 
       59 
     | 
    
         
            -
                    Amount confirmedAmount
         
     | 
| 
      
 67 
     | 
    
         
            +
                    Amount confirmedAmount,
         
     | 
| 
      
 68 
     | 
    
         
            +
                    bytes memory data // claim processing data
         
     | 
| 
       60 
69 
     | 
    
         
             
                ) external;
         
     | 
| 
       61 
70 
     | 
    
         | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
       62 
72 
     | 
    
         
             
                /// @dev closes the specified claim
         
     | 
| 
       63 
73 
     | 
    
         
             
                /// function can only be called by product, policy needs to match with calling product
         
     | 
| 
       64 
74 
     | 
    
         
             
                function close(
         
     | 
| 
         @@ -1,49 +1,48 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
     | 
    
         
            -
            pragma solidity ^0.8. 
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import {IRisk} from "../instance/module/IRisk.sol";
         
     | 
| 
       5 
4 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       8 
     | 
    
         
            -
            import {ClaimId} from "../type/ClaimId.sol";
         
     | 
| 
       9 
7 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       10 
     | 
    
         
            -
            import {PayoutId} from "../type/PayoutId.sol";
         
     | 
| 
       11 
     | 
    
         
            -
            import {ReferralId} from "../type/Referral.sol";
         
     | 
| 
       12 
     | 
    
         
            -
            import {RiskId} from "../type/RiskId.sol";
         
     | 
| 
       13 
     | 
    
         
            -
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       14 
8 
     | 
    
         
             
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
       15 
9 
     | 
    
         
             
            import {Timestamp} from "../type/Timestamp.sol";
         
     | 
| 
       16 
     | 
    
         
            -
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       17 
     | 
    
         
            -
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
       18 
10 
     | 
    
         | 
| 
       19 
11 
     | 
    
         
             
            interface IPolicyService is IService {
         
     | 
| 
       20 
12 
     | 
    
         | 
| 
       21 
13 
     | 
    
         
             
                error ErrorPolicyServicePolicyProductMismatch(NftId applicationNftId, NftId expectedProductNftId, NftId actualProductNftId);
         
     | 
| 
       22 
14 
     | 
    
         
             
                error ErrorPolicyServicePolicyStateNotApplied(NftId applicationNftId);
         
     | 
| 
      
 15 
     | 
    
         
            +
                error ErrorPolicyServicePolicyStateNotCollateralized(NftId applicationNftId);
         
     | 
| 
      
 16 
     | 
    
         
            +
                error ErrorPolicyServicePolicyAlreadyActivated(NftId policyNftId);
         
     | 
| 
       23 
17 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                error  
     | 
| 
      
 18 
     | 
    
         
            +
                error ErrorPolicyServiceBalanceInsufficient(address policyOwner, uint256 premiumAmount, uint256 balance);
         
     | 
| 
      
 19 
     | 
    
         
            +
                error ErrorPolicyServiceAllowanceInsufficient(address policyOwner, address tokenHandler, uint256 premiumAmount, uint256 allowance);
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                error ErrorPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
         
     | 
| 
       25 
22 
     | 
    
         
             
                error ErrorPolicyServicePremiumAlreadyPaid(NftId policyNftId, Amount premiumPaidAmount);
         
     | 
| 
       26 
     | 
    
         
            -
                error  
     | 
| 
       27 
     | 
    
         
            -
                error  
     | 
| 
       28 
     | 
    
         
            -
                error  
     | 
| 
      
 23 
     | 
    
         
            +
                error ErrorPolicyServicePolicyNotActivated(NftId policyNftId);
         
     | 
| 
      
 24 
     | 
    
         
            +
                error ErrorPolicyServicePolicyAlreadyClosed(NftId policyNftId);
         
     | 
| 
      
 25 
     | 
    
         
            +
                error ErrorPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
         
     | 
| 
       29 
26 
     | 
    
         
             
                error ErrorPolicyServicePremiumNotFullyPaid(NftId policyNftId, Amount premiumAmount, Amount premiumPaidAmount);
         
     | 
| 
       30 
     | 
    
         
            -
                error  
     | 
| 
       31 
     | 
    
         
            -
                error  
     | 
| 
      
 27 
     | 
    
         
            +
                error ErrorPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
         
     | 
| 
      
 28 
     | 
    
         
            +
                error ErrorPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
         
     | 
| 
      
 29 
     | 
    
         
            +
                error ErrorPolicyServicePolicyExpirationTooLate(NftId policyNftId, Timestamp upperLimit, Timestamp expiredAt);
         
     | 
| 
      
 30 
     | 
    
         
            +
                error ErrorPolicyServicePolicyExpirationTooEarly(NftId policyNftId, Timestamp lowerLimit, Timestamp expiredAt);
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
32 
     | 
    
         
             
                error ErrorPolicyServicePremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount recalculatedPremiumAmount);
         
     | 
| 
       34 
33 
     | 
    
         
             
                error ErrorPolicyServiceTransferredPremiumMismatch(NftId policyNftId, Amount expectedPremiumAmount, Amount transferredPremiumAmount);
         
     | 
| 
       35 
34 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                 
     | 
| 
       37 
     | 
    
         
            -
                 
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                ///  
     | 
| 
       40 
     | 
    
         
            -
                ///  
     | 
| 
       41 
     | 
    
         
            -
                ///  
     | 
| 
       42 
     | 
    
         
            -
                ///  
     | 
| 
       43 
     | 
    
         
            -
                ///  
     | 
| 
       44 
     | 
    
         
            -
                 
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                     
     | 
| 
      
 35 
     | 
    
         
            +
                event LogPolicyServicePolicyDeclined(NftId policyNftId);
         
     | 
| 
      
 36 
     | 
    
         
            +
                event LogPolicyServicePolicyExpirationUpdated(NftId policyNftId, Timestamp expiredAt);
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                /// @dev creates the policy from {applicationNftId}. 
         
     | 
| 
      
 39 
     | 
    
         
            +
                /// After successful completion of the function the policy can be referenced using the application NftId.
         
     | 
| 
      
 40 
     | 
    
         
            +
                /// Locks the sum insured amount in the pool, but does not transfer tokens. Call collectPremium to transfer tokens. 
         
     | 
| 
      
 41 
     | 
    
         
            +
                /// Sets the policy state to collateralized.
         
     | 
| 
      
 42 
     | 
    
         
            +
                /// Optionally activates the policy if activateAt is a non-zero timestamp.
         
     | 
| 
      
 43 
     | 
    
         
            +
                /// only the related product may create a policy from an application
         
     | 
| 
      
 44 
     | 
    
         
            +
                function createPolicy(
         
     | 
| 
      
 45 
     | 
    
         
            +
                    NftId applicationNftId,
         
     | 
| 
       47 
46 
     | 
    
         
             
                    Timestamp activateAt
         
     | 
| 
       48 
47 
     | 
    
         
             
                ) external;
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
         @@ -52,29 +51,23 @@ interface IPolicyService is IService { 
     | 
|
| 
       52 
51 
     | 
    
         
             
                /// only the related product may decline an application
         
     | 
| 
       53 
52 
     | 
    
         
             
                function decline(NftId policyNftId) external;
         
     | 
| 
       54 
53 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
                /// @dev collects the premium token for the specified policy
         
     | 
| 
      
 54 
     | 
    
         
            +
                /// @dev collects the premium token for the specified policy (must be in COLLATERALIZED state)
         
     | 
| 
       56 
55 
     | 
    
         
             
                function collectPremium(NftId policyNftId, Timestamp activateAt) external;
         
     | 
| 
       57 
56 
     | 
    
         | 
| 
       58 
57 
     | 
    
         
             
                /// @dev activates the specified policy and sets the activation date in the policy metadata
         
     | 
| 
       59 
58 
     | 
    
         
             
                /// to activate a policy it needs to be in underwritten state
         
     | 
| 
       60 
59 
     | 
    
         
             
                function activate(NftId policyNftId, Timestamp activateAt) external;
         
     | 
| 
       61 
60 
     | 
    
         | 
| 
       62 
     | 
    
         
            -
                /// @dev expires the specified policy and sets the expiry date in the policy metadata
         
     | 
| 
      
 61 
     | 
    
         
            +
                /// @dev expires the specified policy and sets the expiry date in the policy metadata. If expiry date is set to 0, then the earliest possible expiry date (current blocktime) is set
         
     | 
| 
       63 
62 
     | 
    
         
             
                /// to expire a policy it must be in active state, policies may be expired even when the predefined expiry date is still in the future
         
     | 
| 
       64 
63 
     | 
    
         
             
                /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
         
     | 
| 
       65 
64 
     | 
    
         
             
                /// this function can only be called by a product. the policy needs to match with the calling product
         
     | 
| 
       66 
     | 
    
         
            -
                 
     | 
| 
      
 65 
     | 
    
         
            +
                /// @return expiredAt the effective expiry date
         
     | 
| 
      
 66 
     | 
    
         
            +
                function expire(NftId policyNftId, Timestamp expireAt) external returns (Timestamp expiredAt);
         
     | 
| 
       67 
67 
     | 
    
         | 
| 
       68 
68 
     | 
    
         
             
                /// @dev closes the specified policy and sets the closed data in the policy metadata
         
     | 
| 
       69 
69 
     | 
    
         
             
                /// a policy can only be closed when it has been expired. in addition, it must not have any open claims
         
     | 
| 
       70 
70 
     | 
    
         
             
                /// this function can only be called by a product. the policy needs to match with the calling product
         
     | 
| 
       71 
71 
     | 
    
         
             
                function close(NftId policyNftId) external;
         
     | 
| 
       72 
72 
     | 
    
         | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
                // TODO move function to pool service
         
     | 
| 
       75 
     | 
    
         
            -
                function calculateRequiredCollateral(
         
     | 
| 
       76 
     | 
    
         
            -
                    UFixed collateralizationLevel, 
         
     | 
| 
       77 
     | 
    
         
            -
                    Amount sumInsuredAmount
         
     | 
| 
       78 
     | 
    
         
            -
                ) external pure returns(Amount collateralAmount);
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
73 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
     | 
    
         
            -
            pragma solidity ^0.8. 
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       5 
5 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
         @@ -12,14 +12,16 @@ import {IPolicy} from "../instance/module/IPolicy.sol"; 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            interface IPricingService is IService
         
     | 
| 
       14 
14 
     | 
    
         
             
            {
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                error ErrorPricingServiceTargetWalletAmountsMismatch();
         
     | 
| 
       15 
17 
     | 
    
         
             
                error ErrorIPricingServiceBundlePoolMismatch(NftId bundleNftId, NftId bundlePoolNftId, NftId poolNftId);
         
     | 
| 
       16 
18 
     | 
    
         
             
                error ErrorIPricingServiceFeeCalculationMismatch(
         
     | 
| 
       17 
     | 
    
         
            -
                             
     | 
| 
       18 
     | 
    
         
            -
                             
     | 
| 
       19 
     | 
    
         
            -
                             
     | 
| 
       20 
     | 
    
         
            -
                             
     | 
| 
       21 
     | 
    
         
            -
                             
     | 
| 
       22 
     | 
    
         
            -
                             
     | 
| 
      
 19 
     | 
    
         
            +
                            Amount distributionFeeFixAmount,
         
     | 
| 
      
 20 
     | 
    
         
            +
                            Amount distributionFeeVarAmount,
         
     | 
| 
      
 21 
     | 
    
         
            +
                            Amount distributionOwnerFeeFixAmount,
         
     | 
| 
      
 22 
     | 
    
         
            +
                            Amount distributionOwnerFeeVarAmount,
         
     | 
| 
      
 23 
     | 
    
         
            +
                            Amount commissionAmount,
         
     | 
| 
      
 24 
     | 
    
         
            +
                            Amount discountAmount
         
     | 
| 
       23 
25 
     | 
    
         
             
                        );
         
     | 
| 
       24 
26 
     | 
    
         | 
| 
       25 
27 
     | 
    
         
             
                function calculatePremium(
         
     | 
| 
         @@ -33,5 +35,5 @@ interface IPricingService is IService 
     | 
|
| 
       33 
35 
     | 
    
         
             
                )
         
     | 
| 
       34 
36 
     | 
    
         
             
                    external
         
     | 
| 
       35 
37 
     | 
    
         
             
                    view
         
     | 
| 
       36 
     | 
    
         
            -
                    returns (IPolicy. 
     | 
| 
      
 38 
     | 
    
         
            +
                    returns (IPolicy.PremiumInfo memory premium);
         
     | 
| 
       37 
39 
     | 
    
         
             
            }
         
     | 
| 
         @@ -2,22 +2,16 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       5 
     | 
    
         
            -
            import { 
     | 
| 
       6 
     | 
    
         
            -
            import { 
     | 
| 
       7 
     | 
    
         
            -
            import {ISetup} from "../instance/module/ISetup.sol";
         
     | 
| 
      
 5 
     | 
    
         
            +
            import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
         
     | 
| 
      
 6 
     | 
    
         
            +
            import {IComponents} from "../instance/module/IComponents.sol";
         
     | 
| 
       8 
7 
     | 
    
         
             
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       9 
8 
     | 
    
         
             
            import {ReferralId} from "../type/Referral.sol";
         
     | 
| 
       10 
9 
     | 
    
         
             
            import {RiskId} from "../type/RiskId.sol";
         
     | 
| 
       11 
10 
     | 
    
         
             
            import {Seconds} from "../type/Seconds.sol";
         
     | 
| 
       12 
11 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            interface IProductComponent is 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                function setFees(
         
     | 
| 
       18 
     | 
    
         
            -
                    Fee memory productFee,
         
     | 
| 
       19 
     | 
    
         
            -
                    Fee memory processingFee
         
     | 
| 
       20 
     | 
    
         
            -
                ) external;
         
     | 
| 
      
 12 
     | 
    
         
            +
            interface IProductComponent is
         
     | 
| 
      
 13 
     | 
    
         
            +
                IInstanceLinkedComponent
         
     | 
| 
      
 14 
     | 
    
         
            +
            {
         
     | 
| 
       21 
15 
     | 
    
         | 
| 
       22 
16 
     | 
    
         
             
                function calculatePremium(
         
     | 
| 
       23 
17 
     | 
    
         
             
                    Amount sumInsuredAmount,
         
     | 
| 
         @@ -35,7 +29,11 @@ interface IProductComponent is IComponent { 
     | 
|
| 
       35 
29 
     | 
    
         
             
                    bytes memory applicationData
         
     | 
| 
       36 
30 
     | 
    
         
             
                ) external view returns (Amount netPremiumAmount);    
         
     | 
| 
       37 
31 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                
         
     | 
| 
       39 
32 
     | 
    
         
             
                function getPoolNftId() external view returns (NftId poolNftId);
         
     | 
| 
       40 
33 
     | 
    
         
             
                function getDistributionNftId() external view returns (NftId distributionNftId);
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                /// @dev returns initial pool specific infos for this pool
         
     | 
| 
      
 37 
     | 
    
         
            +
                function getInitialProductInfo() external view returns (IComponents.ProductInfo memory info);
         
     | 
| 
      
 38 
     | 
    
         
            +
                
         
     | 
| 
       41 
39 
     | 
    
         
             
            }
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
     | 
    
         
            -
            pragma solidity ^0.8. 
     | 
| 
      
 2 
     | 
    
         
            +
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            import {IRisk} from "../instance/module/IRisk.sol";
         
     | 
| 
       5 
5 
     | 
    
         
             
            import {IService} from "../shared/IService.sol";
         
     | 
| 
         @@ -12,14 +12,8 @@ import {Timestamp} from "../type/Timestamp.sol"; 
     | 
|
| 
       12 
12 
     | 
    
         
             
            import {UFixed} from "../type/UFixed.sol";
         
     | 
| 
       13 
13 
     | 
    
         
             
            import {Fee} from "../type/Fee.sol";
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
      
 15 
     | 
    
         
            +
            // TODO consider renaming to IRiskService
         
     | 
| 
       15 
16 
     | 
    
         
             
            interface IProductService is IService {
         
     | 
| 
       16 
     | 
    
         
            -
                
         
     | 
| 
       17 
     | 
    
         
            -
                function register(address productAddress) external returns(NftId);
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                function setFees(
         
     | 
| 
       20 
     | 
    
         
            -
                    Fee memory productFee,
         
     | 
| 
       21 
     | 
    
         
            -
                    Fee memory processingFee
         
     | 
| 
       22 
     | 
    
         
            -
                ) external;
         
     | 
| 
       23 
17 
     | 
    
         | 
| 
       24 
18 
     | 
    
         
             
                function createRisk(
         
     | 
| 
       25 
19 
     | 
    
         
             
                    RiskId riskId,
         
     |