@etherisc/gif-next 0.0.2-e83e4a5-207 → 0.0.2-e876b87-961
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 +32 -3
- 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/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- 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 +1538 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1592 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +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 +59 -37
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +34 -89
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +63 -130
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +167 -140
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +58 -98
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +459 -136
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +82 -247
- 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 +330 -243
- 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 +4 -0
- package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
- 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 -330
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +498 -167
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +169 -89
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +258 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +131 -130
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +384 -179
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +142 -313
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +506 -334
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +111 -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 +155 -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 +143 -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 +155 -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 +322 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +42 -146
- 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 +549 -80
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +285 -145
- 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 +4 -0
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
- 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 +546 -248
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +206 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -110
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +499 -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 +4 -0
- package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
- 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 +407 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +132 -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 +177 -131
- 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/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 +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 +73 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +415 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +14 -34
- package/contracts/instance/IInstanceService.sol +5 -25
- package/contracts/instance/Instance.sol +32 -54
- package/contracts/instance/InstanceAdmin.sol +47 -34
- package/contracts/instance/InstanceAuthorizationV3.sol +24 -32
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +75 -105
- 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/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +10 -11
- 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 +47 -34
- package/contracts/oracle/OracleServiceManager.sol +8 -11
- package/contracts/pool/BasicPool.sol +21 -31
- package/contracts/pool/BasicPoolAuthorization.sol +11 -3
- package/contracts/pool/BundleService.sol +267 -70
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +42 -5
- package/contracts/pool/IPoolComponent.sol +24 -8
- package/contracts/pool/IPoolService.sol +56 -39
- package/contracts/pool/Pool.sol +73 -49
- package/contracts/pool/PoolService.sol +256 -164
- 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 +9 -38
- 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 +134 -71
- 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 +69 -19
- package/contracts/registry/IRegistryService.sol +3 -10
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +354 -215
- package/contracts/registry/RegistryAdmin.sol +155 -72
- 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 +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
- package/contracts/registry/TokenRegistry.sol +2 -2
- package/contracts/shared/Component.sol +52 -62
- package/contracts/shared/ComponentService.sol +299 -179
- package/contracts/shared/ComponentServiceHelperLib.sol +118 -0
- package/contracts/shared/ComponentServiceManager.sol +10 -7
- package/contracts/shared/ComponentVerifyingService.sol +23 -14
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +10 -6
- package/contracts/shared/IComponentService.sol +39 -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/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +17 -57
- package/contracts/shared/Registerable.sol +19 -9
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +23 -22
- package/contracts/shared/TokenHandler.sol +144 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +3 -3
- package/contracts/staking/IStakingService.sol +12 -8
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +29 -45
- package/contracts/staking/StakingManager.sol +10 -12
- package/contracts/staking/StakingReader.sol +23 -20
- package/contracts/staking/StakingService.sol +25 -29
- package/contracts/staking/StakingServiceManager.sol +4 -4
- package/contracts/staking/StakingStore.sol +12 -22
- 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 +19 -18
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +1 -0
- package/contracts/type/RiskId.sol +15 -1
- 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/type/Version.sol +3 -1
- 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 +4 -3
- 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/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- 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/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
- 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/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
- 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/registry/ReleaseManager.sol +0 -487
- 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 {
|
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
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
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
|
|
@@ -76,6 +64,8 @@ contract BundleService is
|
|
76
64
|
external
|
77
65
|
virtual
|
78
66
|
{
|
67
|
+
_checkNftType(bundleNftId, BUNDLE());
|
68
|
+
|
79
69
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
80
70
|
InstanceReader instanceReader = instance.getInstanceReader();
|
81
71
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
@@ -106,6 +96,8 @@ contract BundleService is
|
|
106
96
|
restricted
|
107
97
|
returns(NftId bundleNftId)
|
108
98
|
{
|
99
|
+
_checkNftType(poolNftId, POOL());
|
100
|
+
|
109
101
|
// register bundle with registry
|
110
102
|
bundleNftId = _registryService.registerBundle(
|
111
103
|
IRegistry.ObjectInfo(
|
@@ -123,25 +115,28 @@ contract BundleService is
|
|
123
115
|
InstanceStore instanceStore = instance.getInstanceStore();
|
124
116
|
instanceStore.createBundle(
|
125
117
|
bundleNftId,
|
126
|
-
IBundle.BundleInfo(
|
127
|
-
poolNftId,
|
128
|
-
bundleFee,
|
129
|
-
filter,
|
130
|
-
|
131
|
-
TimestampLib.blockTimestamp().addSeconds(lifetime),
|
132
|
-
zeroTimestamp()
|
118
|
+
IBundle.BundleInfo({
|
119
|
+
poolNftId: poolNftId,
|
120
|
+
fee: bundleFee,
|
121
|
+
filter: filter,
|
122
|
+
activatedAt: TimestampLib.blockTimestamp(),
|
123
|
+
expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
|
124
|
+
closedAt: zeroTimestamp()
|
125
|
+
})
|
126
|
+
);
|
133
127
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
128
|
+
if (stakingAmount.gtz()) {
|
129
|
+
// bundle book keeping
|
130
|
+
_componentService.increaseBundleBalance(
|
131
|
+
instanceStore,
|
132
|
+
bundleNftId,
|
133
|
+
stakingAmount,
|
134
|
+
AmountLib.zero()); // fee amount
|
135
|
+
}
|
140
136
|
|
141
137
|
// put bundle under bundle managemet
|
142
|
-
|
138
|
+
BundleSet bundleManager = instance.getBundleSet();
|
143
139
|
bundleManager.add(bundleNftId);
|
144
|
-
|
145
140
|
// TODO add logging
|
146
141
|
}
|
147
142
|
|
@@ -157,26 +152,35 @@ contract BundleService is
|
|
157
152
|
virtual
|
158
153
|
restricted()
|
159
154
|
{
|
155
|
+
_checkNftType(policyNftId, POLICY());
|
156
|
+
_checkNftType(bundleNftId, BUNDLE());
|
157
|
+
|
160
158
|
InstanceReader instanceReader = instance.getInstanceReader();
|
161
|
-
StateId bundleState = instanceReader.getMetadata(bundleNftId.toKey32(BUNDLE())).state;
|
162
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
163
159
|
|
164
|
-
|
165
|
-
|
166
|
-
|
160
|
+
{
|
161
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
162
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
163
|
+
|
164
|
+
// ensure bundle is active and not yet expired
|
165
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
166
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
167
|
+
}
|
167
168
|
}
|
168
169
|
|
169
|
-
// ensure bundle capacity is sufficent to collateralize policy
|
170
170
|
InstanceStore instanceStore = instance.getInstanceStore();
|
171
|
-
(
|
172
|
-
Amount balanceAmount,
|
173
|
-
Amount lockedAmount,
|
174
|
-
Amount feeAmount
|
175
|
-
) = instanceStore.getAmounts(bundleNftId);
|
176
171
|
|
177
|
-
|
178
|
-
|
179
|
-
|
172
|
+
{
|
173
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
174
|
+
(
|
175
|
+
Amount balanceAmount,
|
176
|
+
Amount lockedAmount,
|
177
|
+
Amount feeAmount
|
178
|
+
) = instanceStore.getAmounts(bundleNftId);
|
179
|
+
|
180
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
181
|
+
if(capacity < collateralAmount) {
|
182
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
183
|
+
}
|
180
184
|
}
|
181
185
|
|
182
186
|
// updated locked amount
|
@@ -191,13 +195,15 @@ contract BundleService is
|
|
191
195
|
external
|
192
196
|
virtual
|
193
197
|
{
|
198
|
+
_checkNftType(bundleNftId, BUNDLE());
|
199
|
+
|
194
200
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
195
201
|
|
196
202
|
// udpate bundle state
|
197
203
|
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
198
204
|
|
199
205
|
// update set of active bundles
|
200
|
-
|
206
|
+
BundleSet bundleManager = instance.getBundleSet();
|
201
207
|
bundleManager.lock(bundleNftId);
|
202
208
|
|
203
209
|
emit LogBundleServiceBundleLocked(bundleNftId);
|
@@ -208,13 +214,15 @@ contract BundleService is
|
|
208
214
|
external
|
209
215
|
virtual
|
210
216
|
{
|
217
|
+
_checkNftType(bundleNftId, BUNDLE());
|
218
|
+
|
211
219
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
212
220
|
|
213
221
|
// udpate bundle state
|
214
222
|
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
215
223
|
|
216
224
|
// update set of active bundles
|
217
|
-
|
225
|
+
BundleSet bundleManager = instance.getBundleSet();
|
218
226
|
bundleManager.unlock(bundleNftId);
|
219
227
|
|
220
228
|
emit LogBundleServiceBundleActivated(bundleNftId);
|
@@ -228,19 +236,134 @@ contract BundleService is
|
|
228
236
|
external
|
229
237
|
virtual
|
230
238
|
restricted
|
239
|
+
returns (Amount unstakedAmount, Amount feeAmount)
|
231
240
|
{
|
232
|
-
|
233
|
-
|
241
|
+
_checkNftType(bundleNftId, BUNDLE());
|
242
|
+
|
243
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
234
244
|
|
235
245
|
// ensure no open policies attached to bundle
|
236
|
-
|
246
|
+
BundleSet bundleManager = instance.getBundleSet();
|
237
247
|
uint256 openPolicies = bundleManager.activePolicies(bundleNftId);
|
238
248
|
if(openPolicies > 0) {
|
239
249
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
240
250
|
}
|
241
251
|
|
242
|
-
|
243
|
-
|
252
|
+
{
|
253
|
+
// update bundle state
|
254
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
255
|
+
instanceStore.updateBundleState(bundleNftId, CLOSED());
|
256
|
+
bundleManager.lock(bundleNftId);
|
257
|
+
|
258
|
+
// decrease bundle counters
|
259
|
+
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
260
|
+
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
261
|
+
unstakedAmount = balanceAmountWithFees - feeAmount;
|
262
|
+
_componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
263
|
+
}
|
264
|
+
}
|
265
|
+
|
266
|
+
/// @inheritdoc IBundleService
|
267
|
+
function stake(
|
268
|
+
IInstance instance,
|
269
|
+
NftId bundleNftId,
|
270
|
+
Amount amount
|
271
|
+
)
|
272
|
+
external
|
273
|
+
virtual
|
274
|
+
// TODO: restricted() (once #462 is done)
|
275
|
+
{
|
276
|
+
_checkNftType(bundleNftId, BUNDLE());
|
277
|
+
|
278
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
279
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
280
|
+
|
281
|
+
if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
|
282
|
+
|| bundleInfo.expiredAt < TimestampLib.blockTimestamp()
|
283
|
+
|| bundleInfo.closedAt.gtz()) {
|
284
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
285
|
+
}
|
286
|
+
|
287
|
+
_componentService.increaseBundleBalance(
|
288
|
+
instance.getInstanceStore(),
|
289
|
+
bundleNftId,
|
290
|
+
amount,
|
291
|
+
AmountLib.zero());
|
292
|
+
}
|
293
|
+
|
294
|
+
/// @inheritdoc IBundleService
|
295
|
+
function unstake(
|
296
|
+
IInstance instance,
|
297
|
+
NftId bundleNftId,
|
298
|
+
Amount amount
|
299
|
+
)
|
300
|
+
external
|
301
|
+
virtual
|
302
|
+
// TODO: restricted() (once #462 is done)
|
303
|
+
returns (Amount unstakedAmount)
|
304
|
+
{
|
305
|
+
_checkNftType(bundleNftId, BUNDLE());
|
306
|
+
|
307
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
308
|
+
(
|
309
|
+
Amount balanceAmount,
|
310
|
+
Amount lockedAmount,
|
311
|
+
Amount feeAmount
|
312
|
+
) = instanceStore.getAmounts(bundleNftId);
|
313
|
+
|
314
|
+
unstakedAmount = amount;
|
315
|
+
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
316
|
+
|
317
|
+
// if amount is max, then unstake all available
|
318
|
+
if (amount.gte(AmountLib.max())) {
|
319
|
+
unstakedAmount = availableAmount;
|
320
|
+
}
|
321
|
+
|
322
|
+
// ensure unstaked amount does not exceed available amount
|
323
|
+
if (unstakedAmount > availableAmount) {
|
324
|
+
revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
|
325
|
+
}
|
326
|
+
|
327
|
+
_componentService.decreaseBundleBalance(
|
328
|
+
instanceStore,
|
329
|
+
bundleNftId,
|
330
|
+
unstakedAmount,
|
331
|
+
AmountLib.zero());
|
332
|
+
}
|
333
|
+
|
334
|
+
/// @inheritdoc IBundleService
|
335
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
336
|
+
external
|
337
|
+
virtual
|
338
|
+
// TODO: restricted() (once #462 is done)
|
339
|
+
returns (Timestamp extendedExpiredAt)
|
340
|
+
{
|
341
|
+
_checkNftType(bundleNftId, BUNDLE());
|
342
|
+
|
343
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
344
|
+
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
345
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
346
|
+
|
347
|
+
// ensure bundle belongs to the pool
|
348
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
349
|
+
revert ErrorBundleServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, poolNftId);
|
350
|
+
}
|
351
|
+
|
352
|
+
// ensure bundle is active and not yet expired
|
353
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
354
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
355
|
+
}
|
356
|
+
|
357
|
+
if (lifetimeExtension.eqz()) {
|
358
|
+
revert ErrorBundleServiceExtensionLifetimeIsZero();
|
359
|
+
}
|
360
|
+
|
361
|
+
bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
|
362
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
363
|
+
|
364
|
+
emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
|
365
|
+
|
366
|
+
return bundleInfo.expiredAt;
|
244
367
|
}
|
245
368
|
|
246
369
|
|
@@ -254,6 +377,9 @@ contract BundleService is
|
|
254
377
|
virtual
|
255
378
|
restricted()
|
256
379
|
{
|
380
|
+
_checkNftType(policyNftId, POLICY());
|
381
|
+
_checkNftType(bundleNftId, BUNDLE());
|
382
|
+
|
257
383
|
instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
|
258
384
|
}
|
259
385
|
|
@@ -266,12 +392,83 @@ contract BundleService is
|
|
266
392
|
virtual
|
267
393
|
restricted
|
268
394
|
{
|
395
|
+
_checkNftType(policyNftId, POLICY());
|
396
|
+
|
269
397
|
// ensure policy is closeable
|
270
|
-
if (!
|
398
|
+
if (!policyIsCloseable(instance, policyNftId)) {
|
271
399
|
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
272
400
|
}
|
273
401
|
|
274
|
-
instance.
|
402
|
+
instance.getBundleSet().unlinkPolicy(policyNftId);
|
403
|
+
}
|
404
|
+
|
405
|
+
/// @inheritdoc IBundleService
|
406
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
407
|
+
public
|
408
|
+
virtual
|
409
|
+
// TODO: restricted() (once #462 is done)
|
410
|
+
returns (Amount withdrawnAmount)
|
411
|
+
{
|
412
|
+
_checkNftType(bundleNftId, BUNDLE());
|
413
|
+
|
414
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
415
|
+
InstanceReader reader = instance.getInstanceReader();
|
416
|
+
|
417
|
+
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
418
|
+
address poolWallet = poolInfo.wallet;
|
419
|
+
|
420
|
+
// IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
421
|
+
|
422
|
+
// determine withdrawn amount
|
423
|
+
withdrawnAmount = amount;
|
424
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
425
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
426
|
+
} else {
|
427
|
+
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
428
|
+
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
429
|
+
}
|
430
|
+
}
|
431
|
+
|
432
|
+
// decrease fee counters by withdrawnAmount
|
433
|
+
{
|
434
|
+
InstanceStore store = instance.getInstanceStore();
|
435
|
+
// decrease fee amount of the bundle
|
436
|
+
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
437
|
+
// decrease pool balance
|
438
|
+
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
439
|
+
}
|
440
|
+
|
441
|
+
// transfer amount to bundle owner
|
442
|
+
{
|
443
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
444
|
+
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
445
|
+
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
446
|
+
}
|
447
|
+
}
|
448
|
+
|
449
|
+
/// @inheritdoc IBundleService
|
450
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
451
|
+
public
|
452
|
+
view
|
453
|
+
returns (bool isCloseable)
|
454
|
+
{
|
455
|
+
_checkNftType(policyNftId, POLICY());
|
456
|
+
|
457
|
+
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
458
|
+
|
459
|
+
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
460
|
+
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
461
|
+
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
462
|
+
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
463
|
+
|
464
|
+
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
465
|
+
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
466
|
+
|
467
|
+
// not closeable: not yet expired
|
468
|
+
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
469
|
+
|
470
|
+
// all conditionsl to close the policy are met
|
471
|
+
return true;
|
275
472
|
}
|
276
473
|
|
277
474
|
/// @dev links policy to bundle
|
@@ -283,10 +480,10 @@ contract BundleService is
|
|
283
480
|
|
284
481
|
// ensure policy has not yet been activated in a previous tx already
|
285
482
|
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
286
|
-
revert
|
483
|
+
revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
|
287
484
|
}
|
288
485
|
|
289
|
-
|
486
|
+
BundleSet bundleManager = instance.getBundleSet();
|
290
487
|
bundleManager.linkPolicy(policyNftId);
|
291
488
|
}
|
292
489
|
|
@@ -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
|
|
@@ -26,6 +26,15 @@ interface IBundleService is IService {
|
|
26
26
|
|
27
27
|
error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
|
28
28
|
|
29
|
+
error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
|
30
|
+
|
31
|
+
error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
|
32
|
+
|
33
|
+
error ErrorBundleServiceExtensionLifetimeIsZero();
|
34
|
+
|
35
|
+
event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
|
36
|
+
event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
|
37
|
+
|
29
38
|
/// @dev create a new bundle for the specified attributes
|
30
39
|
/// may only be called by pool service
|
31
40
|
function create(
|
@@ -41,11 +50,20 @@ interface IBundleService is IService {
|
|
41
50
|
returns(NftId bundleNftId); // the nft id of the newly created bundle
|
42
51
|
|
43
52
|
|
44
|
-
/// @dev increase bundle stakes by the specified amount
|
45
|
-
/// may only be called by the
|
46
|
-
|
53
|
+
/// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
|
54
|
+
/// may only be called by the pool service
|
55
|
+
function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
|
56
|
+
|
57
|
+
/// @dev decrease bundle stakes by the specified amount
|
58
|
+
/// may only be called by the pool service
|
59
|
+
/// @param instance the instance relevant for the bundle
|
60
|
+
/// @param bundleNftId the bundle nft id
|
61
|
+
/// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
|
62
|
+
/// @return unstakedAmount the effective unstaked amount
|
63
|
+
function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
|
47
64
|
|
48
|
-
|
65
|
+
/// @dev extend the lifetime of the bundle by the specified time in seconds
|
66
|
+
function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
|
49
67
|
|
50
68
|
/// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
|
51
69
|
/// only active bundles may be locked
|
@@ -61,10 +79,12 @@ interface IBundleService is IService {
|
|
61
79
|
/// only open bundles (active or locked) may be closed
|
62
80
|
/// to close a bundle it may not have any non-closed polices attached to it
|
63
81
|
/// may only be called by registered and unlocked pool components
|
82
|
+
/// @return balanceAmount the unstaked amount that was remaining in the bundle
|
83
|
+
/// @return feeAmount the fee amount that was remaining for the bundle
|
64
84
|
function close(
|
65
85
|
IInstance instance,
|
66
86
|
NftId bundleNftId
|
67
|
-
) external;
|
87
|
+
) external returns (Amount balanceAmount, Amount feeAmount);
|
68
88
|
|
69
89
|
/// @dev set bundle fee to provided value
|
70
90
|
/// may only be called by registered and unlocked pool components
|
@@ -103,4 +123,21 @@ interface IBundleService is IService {
|
|
103
123
|
IInstance instance,
|
104
124
|
NftId policyNftId
|
105
125
|
) external;
|
126
|
+
|
127
|
+
// FIXME: move to pool service
|
128
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
129
|
+
/// @param bundleNftId the bundle Nft Id
|
130
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
131
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
132
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
133
|
+
|
134
|
+
/// @dev returns true iff policy may be closed
|
135
|
+
/// a policy can be closed all conditions below are met
|
136
|
+
/// - policy exists
|
137
|
+
/// - has been activated
|
138
|
+
/// - is not yet closed
|
139
|
+
/// - has no open claims
|
140
|
+
/// - claim amount matches sum insured amount or is expired
|
141
|
+
function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
|
142
|
+
|
106
143
|
}
|
@@ -2,6 +2,7 @@
|
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
4
|
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
5
6
|
import {Fee} from "../type/Fee.sol";
|
6
7
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
7
8
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -20,10 +21,10 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
20
21
|
|
21
22
|
event LogPoolVerifiedByPool(address pool, NftId applicationNftId, Amount collateralizationAmount);
|
22
23
|
|
23
|
-
/// @dev
|
24
|
-
///
|
25
|
-
///
|
26
|
-
///
|
24
|
+
/// @dev This is a callback function that is called by the product service when underwriting a policy.
|
25
|
+
/// The pool has the option to check the details and object to underwriting by reverting.
|
26
|
+
/// The function is only called for "active" pools that ask to be involved/notified.
|
27
|
+
/// The default implementation is empty.
|
27
28
|
function verifyApplication(
|
28
29
|
NftId applicationNftId,
|
29
30
|
bytes memory applicationData,
|
@@ -32,9 +33,9 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
32
33
|
Amount collateralizationAmount
|
33
34
|
) external;
|
34
35
|
|
35
|
-
/// @dev
|
36
|
-
///
|
37
|
-
/// default implementation returns true
|
36
|
+
/// @dev Returns true iff the application matches with the bundle.
|
37
|
+
/// This is a callback function that is only called if a pool declares itself as a verifying pool
|
38
|
+
/// The default implementation returns true.
|
38
39
|
function applicationMatchesBundle(
|
39
40
|
NftId applicationNftId,
|
40
41
|
bytes memory applicationData,
|
@@ -46,7 +47,22 @@ interface IPoolComponent is IInstanceLinkedComponent {
|
|
46
47
|
view
|
47
48
|
returns (bool isMatching);
|
48
49
|
|
49
|
-
/// @dev
|
50
|
+
/// @dev This is a callback function that is called by the claim service when a claim is confirmed.
|
51
|
+
/// The pool has the option to implement custom behavirous such as triggering a reinsurance claim or blocking the claim confirmaation.
|
52
|
+
/// The default implementation is empty.
|
53
|
+
function processConfirmedClaim(
|
54
|
+
NftId policyNftId,
|
55
|
+
ClaimId claimId,
|
56
|
+
Amount amount
|
57
|
+
) external;
|
58
|
+
|
59
|
+
/// @dev Withdraw bundle feeds for the given bundle
|
60
|
+
/// @param bundleNftId the bundle Nft Id
|
61
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
62
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
63
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
|
64
|
+
|
65
|
+
/// @dev Returns initial pool specific infos for this pool
|
50
66
|
function getInitialPoolInfo() external view returns (IComponents.PoolInfo memory info);
|
51
67
|
|
52
68
|
}
|