@etherisc/gif-next 0.0.2-b421459-499 → 0.0.2-b43fece-589
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 +19 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
- package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +206 -309
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +134 -277
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +284 -223
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +116 -104
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +121 -92
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +149 -31
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1491 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2037 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1613 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2327 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +29 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +56 -123
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +464 -141
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +77 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +340 -253
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +164 -280
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +96 -80
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +106 -262
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +152 -345
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +490 -171
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +161 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +277 -16
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +107 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +422 -215
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +118 -328
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +558 -392
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +107 -87
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +160 -281
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +303 -187
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +119 -103
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +176 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +323 -118
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +148 -97
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +444 -325
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +119 -103
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +202 -307
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +160 -281
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +286 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +492 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -75
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +129 -221
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +65 -236
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +526 -245
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -106
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +474 -19
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +85 -80
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +98 -265
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- 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 +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +174 -291
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +106 -91
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +174 -128
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -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 +52 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +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 +602 -0
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
- 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 +64 -59
- package/contracts/authorization/Authorization.sol +111 -40
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +4 -3
- package/contracts/authorization/IAuthorization.sol +13 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +6 -16
- package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
- package/contracts/distribution/Distribution.sol +28 -26
- package/contracts/distribution/DistributionService.sol +128 -75
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- package/contracts/distribution/IDistributionComponent.sol +9 -5
- package/contracts/distribution/IDistributionService.sol +18 -2
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/IInstance.sol +10 -30
- package/contracts/instance/IInstanceService.sol +0 -20
- package/contracts/instance/Instance.sol +29 -51
- package/contracts/instance/InstanceAdmin.sol +42 -31
- package/contracts/instance/InstanceAuthorizationV3.sol +13 -21
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +65 -97
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- package/contracts/instance/InstanceStore.sol +12 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +11 -12
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/IOracleComponent.sol +2 -1
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +21 -22
- package/contracts/oracle/OracleService.sol +56 -42
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +38 -27
- package/contracts/pool/BasicPoolAuthorization.sol +22 -3
- package/contracts/pool/BundleService.sol +258 -69
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +44 -10
- package/contracts/pool/IPoolComponent.sol +20 -10
- package/contracts/pool/IPoolService.sol +67 -45
- package/contracts/pool/Pool.sol +150 -116
- package/contracts/pool/PoolService.sol +336 -166
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +70 -65
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +11 -44
- package/contracts/product/BasicProductAuthorization.sol +2 -0
- package/contracts/product/ClaimService.sol +316 -146
- package/contracts/product/ClaimServiceManager.sol +6 -6
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -32
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +24 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +419 -203
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +54 -54
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +126 -87
- package/contracts/product/{ProductService.sol → RiskService.sol} +13 -41
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +68 -38
- package/contracts/registry/IRegistry.sol +55 -18
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +342 -201
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +39 -64
- package/contracts/registry/RegistryServiceManager.sol +4 -4
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +204 -190
- package/contracts/registry/ServiceAuthorizationV3.sol +26 -23
- package/contracts/shared/Component.sol +47 -63
- package/contracts/shared/ComponentService.sol +314 -150
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +23 -16
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +38 -20
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -17
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +1 -1
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
- package/contracts/shared/InstanceLinkedComponent.sol +85 -23
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +19 -11
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +23 -22
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -2
- package/contracts/staking/IStakingService.sol +0 -3
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +28 -42
- package/contracts/staking/StakingManager.sol +10 -11
- package/contracts/staking/StakingReader.sol +17 -13
- package/contracts/staking/StakingService.sol +25 -29
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +5 -15
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +27 -5
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +0 -12
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +33 -10
- package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/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/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/shared/InitializableCustom.sol +0 -177
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -2,36 +2,25 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
|
+
import {IBundleService} from "./IBundleService.sol";
|
5
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
6
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
7
8
|
import {IRegistry} from "../registry/IRegistry.sol";
|
9
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
8
10
|
import {IInstance} from "../instance/IInstance.sol";
|
9
11
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
10
12
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
13
|
|
12
|
-
import {IVersionable} from "../shared/IVersionable.sol";
|
13
|
-
import {INftOwnable} from "../shared/INftOwnable.sol";
|
14
|
-
import {NftId, NftIdLib} from "../type/NftId.sol";
|
15
|
-
import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
|
16
|
-
import {POOL_OWNER_ROLE, RoleId} from "../type/RoleId.sol";
|
17
|
-
import {Pool} from "./Pool.sol";
|
18
|
-
|
19
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
20
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
21
|
-
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
22
|
-
import {Seconds} from "../type/Seconds.sol";
|
23
|
-
import {TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
24
|
-
import {Version, VersionLib} from "../type/Version.sol";
|
25
|
-
import {Versionable} from "../shared/Versionable.sol";
|
26
|
-
|
27
|
-
import {IService} from "../shared/IService.sol";
|
28
|
-
import {Service} from "../shared/Service.sol";
|
29
15
|
import {BundleSet} from "../instance/BundleSet.sol";
|
30
16
|
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
31
|
-
import {
|
32
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
33
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
17
|
+
import {Fee} from "../type/Fee.sol";
|
34
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
19
|
+
import {NftId, NftIdLib} from "../type/NftId.sol";
|
20
|
+
import {ObjectType, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
|
21
|
+
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
22
|
+
import {Seconds} from "../type/Seconds.sol";
|
23
|
+
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
35
24
|
|
36
25
|
string constant BUNDLE_SERVICE_NAME = "BundleService";
|
37
26
|
|
@@ -39,8 +28,7 @@ contract BundleService is
|
|
39
28
|
ComponentVerifyingService,
|
40
29
|
IBundleService
|
41
30
|
{
|
42
|
-
|
43
|
-
|
31
|
+
|
44
32
|
string public constant NAME = "BundleService";
|
45
33
|
|
46
34
|
address private _registryAddress;
|
@@ -52,20 +40,20 @@ contract BundleService is
|
|
52
40
|
bytes memory data
|
53
41
|
)
|
54
42
|
internal
|
55
|
-
initializer
|
56
43
|
virtual override
|
44
|
+
initializer()
|
57
45
|
{
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
46
|
+
(
|
47
|
+
address registryAddress,
|
48
|
+
address authority
|
49
|
+
) = abi.decode(data, (address, address));
|
50
|
+
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
64
52
|
|
65
53
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
66
54
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
67
55
|
|
68
|
-
|
56
|
+
_registerInterface(type(IBundleService).interfaceId);
|
69
57
|
}
|
70
58
|
|
71
59
|
|
@@ -75,7 +63,10 @@ contract BundleService is
|
|
75
63
|
)
|
76
64
|
external
|
77
65
|
virtual
|
66
|
+
restricted()
|
78
67
|
{
|
68
|
+
_checkNftType(bundleNftId, BUNDLE());
|
69
|
+
|
79
70
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
80
71
|
InstanceReader instanceReader = instance.getInstanceReader();
|
81
72
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
@@ -93,19 +84,18 @@ contract BundleService is
|
|
93
84
|
|
94
85
|
|
95
86
|
function create(
|
96
|
-
IInstance instance,
|
97
|
-
NftId poolNftId,
|
98
87
|
address owner,
|
99
88
|
Fee memory bundleFee,
|
100
|
-
Amount stakingAmount,
|
101
89
|
Seconds lifetime,
|
102
90
|
bytes calldata filter
|
103
91
|
)
|
104
92
|
external
|
105
|
-
|
106
|
-
restricted
|
93
|
+
virtual
|
94
|
+
restricted()
|
107
95
|
returns(NftId bundleNftId)
|
108
96
|
{
|
97
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
98
|
+
|
109
99
|
// register bundle with registry
|
110
100
|
bundleNftId = _registryService.registerBundle(
|
111
101
|
IRegistry.ObjectInfo(
|
@@ -123,26 +113,21 @@ contract BundleService is
|
|
123
113
|
InstanceStore instanceStore = instance.getInstanceStore();
|
124
114
|
instanceStore.createBundle(
|
125
115
|
bundleNftId,
|
126
|
-
IBundle.BundleInfo(
|
127
|
-
poolNftId,
|
128
|
-
bundleFee,
|
129
|
-
filter,
|
130
|
-
|
131
|
-
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
132
|
-
zeroTimestamp()
|
133
|
-
|
134
|
-
|
135
|
-
_componentService.increaseBundleBalance(
|
136
|
-
instanceStore,
|
137
|
-
bundleNftId,
|
138
|
-
stakingAmount,
|
139
|
-
AmountLib.zero()); // fee amount
|
116
|
+
IBundle.BundleInfo({
|
117
|
+
poolNftId: poolNftId,
|
118
|
+
fee: bundleFee,
|
119
|
+
filter: filter,
|
120
|
+
activatedAt: TimestampLib.blockTimestamp(),
|
121
|
+
expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
|
122
|
+
closedAt: zeroTimestamp()
|
123
|
+
})
|
124
|
+
);
|
140
125
|
|
141
126
|
// put bundle under bundle managemet
|
142
127
|
BundleSet bundleManager = instance.getBundleSet();
|
143
128
|
bundleManager.add(bundleNftId);
|
144
129
|
|
145
|
-
|
130
|
+
emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
|
146
131
|
}
|
147
132
|
|
148
133
|
|
@@ -157,26 +142,35 @@ contract BundleService is
|
|
157
142
|
virtual
|
158
143
|
restricted()
|
159
144
|
{
|
145
|
+
_checkNftType(policyNftId, POLICY());
|
146
|
+
_checkNftType(bundleNftId, BUNDLE());
|
147
|
+
|
160
148
|
InstanceReader instanceReader = instance.getInstanceReader();
|
161
|
-
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
162
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
163
149
|
|
164
|
-
|
165
|
-
|
166
|
-
|
150
|
+
{
|
151
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
152
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
153
|
+
|
154
|
+
// ensure bundle is active and not yet expired
|
155
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
156
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
157
|
+
}
|
167
158
|
}
|
168
159
|
|
169
|
-
// ensure bundle capacity is sufficent to collateralize policy
|
170
160
|
InstanceStore instanceStore = instance.getInstanceStore();
|
171
|
-
(
|
172
|
-
Amount balanceAmount,
|
173
|
-
Amount lockedAmount,
|
174
|
-
Amount feeAmount
|
175
|
-
) = instanceStore.getAmounts(bundleNftId);
|
176
161
|
|
177
|
-
|
178
|
-
|
179
|
-
|
162
|
+
{
|
163
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
164
|
+
(
|
165
|
+
Amount balanceAmount,
|
166
|
+
Amount lockedAmount,
|
167
|
+
Amount feeAmount
|
168
|
+
) = instanceStore.getAmounts(bundleNftId);
|
169
|
+
|
170
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
171
|
+
if(capacity < collateralAmount) {
|
172
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
173
|
+
}
|
180
174
|
}
|
181
175
|
|
182
176
|
// updated locked amount
|
@@ -190,7 +184,10 @@ contract BundleService is
|
|
190
184
|
function lock(NftId bundleNftId)
|
191
185
|
external
|
192
186
|
virtual
|
187
|
+
restricted()
|
193
188
|
{
|
189
|
+
_checkNftType(bundleNftId, BUNDLE());
|
190
|
+
|
194
191
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
195
192
|
|
196
193
|
// udpate bundle state
|
@@ -207,7 +204,10 @@ contract BundleService is
|
|
207
204
|
function unlock(NftId bundleNftId)
|
208
205
|
external
|
209
206
|
virtual
|
207
|
+
restricted()
|
210
208
|
{
|
209
|
+
_checkNftType(bundleNftId, BUNDLE());
|
210
|
+
|
211
211
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
212
212
|
|
213
213
|
// udpate bundle state
|
@@ -227,10 +227,12 @@ contract BundleService is
|
|
227
227
|
)
|
228
228
|
external
|
229
229
|
virtual
|
230
|
-
restricted
|
230
|
+
restricted()
|
231
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
231
232
|
{
|
232
|
-
|
233
|
-
|
233
|
+
_checkNftType(bundleNftId, BUNDLE());
|
234
|
+
|
235
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
234
236
|
|
235
237
|
// ensure no open policies attached to bundle
|
236
238
|
BundleSet bundleManager = instance.getBundleSet();
|
@@ -239,8 +241,121 @@ contract BundleService is
|
|
239
241
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
240
242
|
}
|
241
243
|
|
242
|
-
|
243
|
-
|
244
|
+
{
|
245
|
+
// update bundle state
|
246
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
247
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
248
|
+
bundleManager.lock(bundleNftId);
|
249
|
+
|
250
|
+
// decrease bundle counters
|
251
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
252
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
253
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
254
|
+
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
/// @inheritdoc IBundleService
|
259
|
+
function stake(
|
260
|
+
IInstance instance,
|
261
|
+
NftId bundleNftId,
|
262
|
+
Amount amount
|
263
|
+
)
|
264
|
+
external
|
265
|
+
virtual
|
266
|
+
restricted()
|
267
|
+
{
|
268
|
+
_checkNftType(bundleNftId, BUNDLE());
|
269
|
+
|
270
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
271
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
272
|
+
|
273
|
+
if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
|
274
|
+
|| bundleInfo.expiredAt < TimestampLib.blockTimestamp()
|
275
|
+
|| bundleInfo.closedAt.gtz()) {
|
276
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
277
|
+
}
|
278
|
+
|
279
|
+
_componentService.increaseBundleBalance(
|
280
|
+
instance.getInstanceStore(),
|
281
|
+
bundleNftId,
|
282
|
+
amount,
|
283
|
+
AmountLib.zero());
|
284
|
+
}
|
285
|
+
|
286
|
+
/// @inheritdoc IBundleService
|
287
|
+
function unstake(
|
288
|
+
IInstance instance,
|
289
|
+
NftId bundleNftId,
|
290
|
+
Amount amount
|
291
|
+
)
|
292
|
+
external
|
293
|
+
virtual
|
294
|
+
restricted()
|
295
|
+
returns (Amount unstakedAmount)
|
296
|
+
{
|
297
|
+
_checkNftType(bundleNftId, BUNDLE());
|
298
|
+
|
299
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
300
|
+
(
|
301
|
+
Amount balanceAmount,
|
302
|
+
Amount lockedAmount,
|
303
|
+
Amount feeAmount
|
304
|
+
) = instanceStore.getAmounts(bundleNftId);
|
305
|
+
|
306
|
+
unstakedAmount = amount;
|
307
|
+
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
308
|
+
|
309
|
+
// if amount is max, then unstake all available
|
310
|
+
if (amount.gte(AmountLib.max())) {
|
311
|
+
unstakedAmount = availableAmount;
|
312
|
+
}
|
313
|
+
|
314
|
+
// ensure unstaked amount does not exceed available amount
|
315
|
+
if (unstakedAmount > availableAmount) {
|
316
|
+
revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
|
317
|
+
}
|
318
|
+
|
319
|
+
_componentService.decreaseBundleBalance(
|
320
|
+
instanceStore,
|
321
|
+
bundleNftId,
|
322
|
+
unstakedAmount,
|
323
|
+
AmountLib.zero());
|
324
|
+
}
|
325
|
+
|
326
|
+
/// @inheritdoc IBundleService
|
327
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
328
|
+
external
|
329
|
+
virtual
|
330
|
+
restricted()
|
331
|
+
returns (Timestamp extendedExpiredAt)
|
332
|
+
{
|
333
|
+
_checkNftType(bundleNftId, BUNDLE());
|
334
|
+
|
335
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
336
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
337
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
338
|
+
|
339
|
+
// ensure bundle belongs to the pool
|
340
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
341
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
342
|
+
}
|
343
|
+
|
344
|
+
// ensure bundle is active and not yet expired
|
345
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
346
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
347
|
+
}
|
348
|
+
|
349
|
+
if (lifetimeExtension.eqz()) {
|
350
|
+
revert ErrorBundleServiceExtensionLifetimeIsZero();
|
351
|
+
}
|
352
|
+
|
353
|
+
bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
|
354
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
355
|
+
|
356
|
+
emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
|
357
|
+
|
358
|
+
return bundleInfo.expiredAt;
|
244
359
|
}
|
245
360
|
|
246
361
|
|
@@ -254,6 +369,9 @@ contract BundleService is
|
|
254
369
|
virtual
|
255
370
|
restricted()
|
256
371
|
{
|
372
|
+
_checkNftType(policyNftId, POLICY());
|
373
|
+
_checkNftType(bundleNftId, BUNDLE());
|
374
|
+
|
257
375
|
instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
|
258
376
|
}
|
259
377
|
|
@@ -266,14 +384,85 @@ contract BundleService is
|
|
266
384
|
virtual
|
267
385
|
restricted
|
268
386
|
{
|
387
|
+
_checkNftType(policyNftId, POLICY());
|
388
|
+
|
269
389
|
// ensure policy is closeable
|
270
|
-
if (!
|
390
|
+
if (!policyIsCloseable(instance, policyNftId)) {
|
271
391
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
272
392
|
}
|
273
393
|
|
274
394
|
instance.getBundleSet().unlinkPolicy(policyNftId);
|
275
395
|
}
|
276
396
|
|
397
|
+
/// @inheritdoc IBundleService
|
398
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
399
|
+
public
|
400
|
+
virtual
|
401
|
+
restricted()
|
402
|
+
returns (Amount withdrawnAmount)
|
403
|
+
{
|
404
|
+
_checkNftType(bundleNftId, BUNDLE());
|
405
|
+
|
406
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
407
|
+
InstanceReader reader = instance.getInstanceReader();
|
408
|
+
|
409
|
+
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
410
|
+
address poolWallet = poolInfo.wallet;
|
411
|
+
|
412
|
+
// IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
413
|
+
|
414
|
+
// determine withdrawn amount
|
415
|
+
withdrawnAmount = amount;
|
416
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
417
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
418
|
+
} else {
|
419
|
+
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
420
|
+
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
421
|
+
}
|
422
|
+
}
|
423
|
+
|
424
|
+
// decrease fee counters by withdrawnAmount
|
425
|
+
{
|
426
|
+
InstanceStore store = instance.getInstanceStore();
|
427
|
+
// decrease fee amount of the bundle
|
428
|
+
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
429
|
+
// decrease pool balance
|
430
|
+
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
431
|
+
}
|
432
|
+
|
433
|
+
// transfer amount to bundle owner
|
434
|
+
{
|
435
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
436
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
437
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
438
|
+
}
|
439
|
+
}
|
440
|
+
|
441
|
+
/// @inheritdoc IBundleService
|
442
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
443
|
+
public
|
444
|
+
view
|
445
|
+
returns (bool isCloseable)
|
446
|
+
{
|
447
|
+
_checkNftType(policyNftId, POLICY());
|
448
|
+
|
449
|
+
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
450
|
+
|
451
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
452
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
453
|
+
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
454
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
455
|
+
|
456
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
457
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
458
|
+
|
459
|
+
// not closeable: not yet expired
|
460
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
461
|
+
|
462
|
+
// all conditionsl to close the policy are met
|
463
|
+
return true;
|
464
|
+
}
|
465
|
+
|
277
466
|
/// @dev links policy to bundle
|
278
467
|
function _linkPolicy(IInstance instance, NftId policyNftId)
|
279
468
|
internal
|
@@ -1,12 +1,9 @@
|
|
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 {BundleService} from "./BundleService.sol";
|
7
|
-
import {Registry} from "../registry/Registry.sol";
|
8
|
-
import {RegistryService} from "../registry/RegistryService.sol";
|
9
|
-
import {ObjectType, REGISTRY} from "../type/ObjectType.sol";
|
10
7
|
|
11
8
|
contract BundleServiceManager is ProxyManager {
|
12
9
|
|
@@ -15,15 +12,15 @@ contract BundleServiceManager is ProxyManager {
|
|
15
12
|
/// @dev initializes proxy manager with pool service implementation
|
16
13
|
constructor(
|
17
14
|
address authority,
|
18
|
-
address
|
15
|
+
address registry,
|
19
16
|
bytes32 salt
|
20
17
|
)
|
21
|
-
ProxyManager(registryAddress)
|
22
18
|
{
|
23
|
-
BundleService
|
24
|
-
bytes memory data = abi.encode(
|
25
|
-
IVersionable versionable =
|
26
|
-
|
19
|
+
BundleService svc = new BundleService{salt: salt}();
|
20
|
+
bytes memory data = abi.encode(registry, authority);
|
21
|
+
IVersionable versionable = initialize(
|
22
|
+
registry,
|
23
|
+
address(svc),
|
27
24
|
data,
|
28
25
|
salt);
|
29
26
|
|
@@ -13,6 +13,7 @@ import {Timestamp} from "../type/Timestamp.sol";
|
|
13
13
|
|
14
14
|
interface IBundleService is IService {
|
15
15
|
|
16
|
+
event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
|
16
17
|
event LogBundleServiceBundleActivated(NftId bundleNftId);
|
17
18
|
event LogBundleServiceBundleLocked(NftId bundleNftId);
|
18
19
|
|
@@ -26,14 +27,19 @@ interface IBundleService is IService {
|
|
26
27
|
|
27
28
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
28
29
|
|
29
|
-
|
30
|
-
|
30
|
+
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
31
|
+
|
32
|
+
error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
|
33
|
+
|
34
|
+
error ErrorBundleServiceExtensionLifetimeIsZero();
|
35
|
+
|
36
|
+
event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
|
37
|
+
event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
|
38
|
+
|
39
|
+
/// @dev Create a new bundle for the specified attributes.
|
31
40
|
function create(
|
32
|
-
IInstance instance, // instance relevant for bundle
|
33
|
-
NftId poolNftId, // the pool the bundle will be linked to
|
34
41
|
address owner, // initial bundle owner
|
35
42
|
Fee memory fee, // fees deducted from premium that go to bundle owner
|
36
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
37
43
|
Seconds lifetime, // initial duration for which new policies are covered
|
38
44
|
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
39
45
|
)
|
@@ -41,11 +47,20 @@ interface IBundleService is IService {
|
|
41
47
|
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
42
48
|
|
43
49
|
|
44
|
-
/// @dev increase bundle stakes by the specified amount
|
45
|
-
/// may only be called by the
|
46
|
-
|
50
|
+
/// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
|
51
|
+
/// may only be called by the pool service
|
52
|
+
function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
|
47
53
|
|
48
|
-
|
54
|
+
/// @dev decrease bundle stakes by the specified amount
|
55
|
+
/// may only be called by the pool service
|
56
|
+
/// @param instance the instance relevant for the bundle
|
57
|
+
/// @param bundleNftId the bundle nft id
|
58
|
+
/// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
|
59
|
+
/// @return unstakedAmount the effective unstaked amount
|
60
|
+
function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
|
61
|
+
|
62
|
+
/// @dev extend the lifetime of the bundle by the specified time in seconds
|
63
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
|
49
64
|
|
50
65
|
/// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
|
51
66
|
/// only active bundles may be locked
|
@@ -61,10 +76,12 @@ interface IBundleService is IService {
|
|
61
76
|
/// only open bundles (active or locked) may be closed
|
62
77
|
/// to close a bundle it may not have any non-closed polices attached to it
|
63
78
|
/// may only be called by registered and unlocked pool components
|
79
|
+
/// @return balanceAmount the unstaked amount that was remaining in the bundle
|
80
|
+
/// @return feeAmount the fee amount that was remaining for the bundle
|
64
81
|
function close(
|
65
82
|
IInstance instance,
|
66
83
|
NftId bundleNftId
|
67
|
-
) external;
|
84
|
+
) external returns (Amount balanceAmount, Amount feeAmount);
|
68
85
|
|
69
86
|
/// @dev set bundle fee to provided value
|
70
87
|
/// may only be called by registered and unlocked pool components
|
@@ -103,4 +120,21 @@ interface IBundleService is IService {
|
|
103
120
|
IInstance instance,
|
104
121
|
NftId policyNftId
|
105
122
|
) external;
|
123
|
+
|
124
|
+
// FIXME: move to pool service
|
125
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
126
|
+
/// @param bundleNftId the bundle Nft Id
|
127
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
128
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
129
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
130
|
+
|
131
|
+
/// @dev returns true iff policy may be closed
|
132
|
+
/// a policy can be closed all conditions below are met
|
133
|
+
/// - policy exists
|
134
|
+
/// - has been activated
|
135
|
+
/// - is not yet closed
|
136
|
+
/// - has no open claims
|
137
|
+
/// - claim amount matches sum insured amount or is expired
|
138
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
|
139
|
+
|
106
140
|
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {Fee} from "../type/Fee.sol";
|
6
7
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -20,21 +21,19 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
20
21
|
|
21
22
|
event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
|
22
23
|
|
23
|
-
/// @dev
|
24
|
-
///
|
25
|
-
///
|
26
|
-
///
|
24
|
+
/// @dev This is a callback function that is called by the product service when underwriting a policy.
|
25
|
+
/// The pool has the option to check the details and object to underwriting by reverting.
|
26
|
+
/// The function is only called for "active" pools that ask to be involved/notified.
|
27
|
+
/// The default implementation is empty.
|
27
28
|
function verifyApplication(
|
28
29
|
NftId applicationNftId,
|
29
|
-
bytes memory applicationData,
|
30
30
|
NftId bundleNftId,
|
31
|
-
bytes memory bundleFilter,
|
32
31
|
Amount collateralizationAmount
|
33
32
|
) external;
|
34
33
|
|
35
|
-
/// @dev
|
36
|
-
///
|
37
|
-
/// default implementation returns true
|
34
|
+
/// @dev Returns true iff the application matches with the bundle.
|
35
|
+
/// This is a callback function that is only called if a pool declares itself as a verifying pool
|
36
|
+
/// The default implementation returns true.
|
38
37
|
function applicationMatchesBundle(
|
39
38
|
NftId applicationNftId,
|
40
39
|
bytes memory applicationData,
|
@@ -46,7 +45,18 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
45
|
view
|
47
46
|
returns (bool isMatching);
|
48
47
|
|
49
|
-
|
48
|
+
|
49
|
+
/// @dev This is a callback function that is called by the claim service when a claim is confirmed.
|
50
|
+
/// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
|
51
|
+
/// The default implementation is empty.
|
52
|
+
function processConfirmedClaim(
|
53
|
+
NftId policyNftId,
|
54
|
+
ClaimId claimId,
|
55
|
+
Amount amount
|
56
|
+
) external;
|
57
|
+
|
58
|
+
|
59
|
+
/// @dev Returns initial pool specific infos for this pool
|
50
60
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
51
61
|
|
52
62
|
}
|