@etherisc/gif-next 0.0.2-c6d46bb-892 → 0.0.2-c7609c4-545
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -5
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
- package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -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 +4 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1402 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +236 -564
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +331 -432
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +167 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +220 -291
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +215 -94
- 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 +118 -97
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +173 -87
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +122 -222
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1653 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +561 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +850 -366
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +247 -231
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +145 -79
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1212 -381
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +8 -116
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
- package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1039 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +788 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +709 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +907 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +966 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +722 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1299 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +470 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +494 -317
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +225 -87
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +256 -31
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +238 -373
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +460 -254
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +268 -577
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +572 -569
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +151 -93
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +117 -264
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +138 -76
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1173 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +329 -284
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +180 -90
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +54 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +196 -7
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +354 -80
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +154 -86
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +360 -209
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +44 -57
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +418 -397
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +163 -121
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +233 -330
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +167 -93
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +381 -448
- 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 +435 -29
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +270 -109
- 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 +861 -64
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1886 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +330 -234
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +132 -76
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
- 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 +4 -0
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +314 -138
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +138 -286
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1335 -198
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +814 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +474 -0
- 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 +110 -114
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1335 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +723 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +46 -14
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +23 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +36 -1
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +49 -1
- 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 +4 -0
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +829 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +26 -55
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +68 -85
- 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 +55 -101
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +362 -7
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1465 -0
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +573 -53
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1888 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +776 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +658 -176
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +710 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +121 -4
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +53 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +39 -34
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +47 -4
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
- package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +71 -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/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
- package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +596 -0
- package/contracts/authorization/AccessManagerCloneable.sol +16 -0
- package/contracts/authorization/Authorization.sol +289 -0
- package/contracts/authorization/IAccess.sol +49 -0
- package/contracts/authorization/IAccessAdmin.sol +137 -0
- package/contracts/authorization/IAuthorization.sol +60 -0
- package/contracts/authorization/IServiceAuthorization.sol +40 -0
- package/contracts/authorization/ReleaseAccessManager.sol +38 -0
- package/contracts/authorization/ServiceAuthorization.sol +106 -0
- package/contracts/distribution/BasicDistribution.sol +139 -0
- package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
- package/contracts/distribution/Distribution.sol +156 -156
- package/contracts/distribution/DistributionService.sol +179 -173
- package/contracts/distribution/DistributionServiceManager.sol +13 -25
- package/contracts/distribution/IDistributionComponent.sol +28 -47
- package/contracts/distribution/IDistributionService.sol +24 -10
- 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 +33 -44
- package/contracts/instance/IInstanceService.sol +32 -34
- package/contracts/instance/Instance.sol +129 -126
- package/contracts/instance/InstanceAdmin.sol +277 -0
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +250 -144
- package/contracts/instance/InstanceServiceManager.sol +14 -29
- package/contracts/instance/InstanceStore.sol +142 -66
- package/contracts/instance/base/BalanceStore.sol +123 -0
- package/contracts/instance/base/Cloneable.sol +2 -25
- package/contracts/instance/base/ObjectCounter.sol +21 -0
- package/contracts/instance/base/ObjectLifecycle.sol +111 -0
- package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
- package/contracts/instance/module/IAccess.sol +2 -10
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +21 -11
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +31 -25
- package/contracts/mock/Dip.sol +26 -0
- package/contracts/oracle/BasicOracle.sol +47 -0
- package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
- package/contracts/oracle/IOracle.sol +36 -0
- package/contracts/oracle/IOracleComponent.sol +33 -0
- package/contracts/oracle/IOracleService.sol +66 -0
- package/contracts/oracle/Oracle.sol +156 -0
- package/contracts/oracle/OracleService.sol +291 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +154 -0
- package/contracts/pool/BasicPoolAuthorization.sol +57 -0
- package/contracts/pool/BundleService.sol +322 -211
- package/contracts/pool/BundleServiceManager.sol +13 -25
- package/contracts/pool/IBundleService.sol +44 -19
- package/contracts/pool/IPoolComponent.sol +27 -73
- package/contracts/pool/IPoolService.sol +93 -40
- package/contracts/pool/Pool.sol +186 -153
- package/contracts/pool/PoolService.sol +375 -234
- package/contracts/pool/PoolServiceManager.sol +12 -24
- package/contracts/product/ApplicationService.sol +158 -85
- package/contracts/product/ApplicationServiceManager.sol +12 -9
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +333 -163
- package/contracts/product/ClaimServiceManager.sol +12 -9
- package/contracts/product/IApplicationService.sol +2 -1
- package/contracts/product/IClaimService.sol +35 -5
- package/contracts/product/IPolicyService.sol +38 -38
- package/contracts/product/IPricingService.sol +13 -11
- package/contracts/product/IProductComponent.sol +28 -10
- package/contracts/product/{IProductService.sol → IRiskService.sol} +2 -9
- package/contracts/product/PolicyService.sol +519 -204
- package/contracts/product/PolicyServiceManager.sol +12 -27
- package/contracts/product/PricingService.sol +109 -84
- package/contracts/product/PricingServiceManager.sol +12 -24
- package/contracts/product/Product.sol +222 -146
- package/contracts/product/RiskService.sol +96 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +75 -38
- package/contracts/registry/IRegistry.sol +91 -21
- package/contracts/registry/IRegistryService.sol +30 -34
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +445 -195
- package/contracts/registry/RegistryAdmin.sol +448 -0
- package/contracts/registry/RegistryService.sol +85 -129
- package/contracts/registry/RegistryServiceManager.sol +23 -30
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +501 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +194 -0
- package/contracts/registry/TokenRegistry.sol +261 -62
- package/contracts/shared/Component.sol +150 -156
- package/contracts/shared/ComponentService.sol +694 -99
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +126 -0
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +25 -41
- package/contracts/shared/IComponentService.sol +120 -0
- package/contracts/shared/IInstanceLinkedComponent.sol +41 -0
- package/contracts/{instance/base → shared}/IKeyValueStore.sol +7 -6
- package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
- package/contracts/shared/INftOwnable.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -17
- package/contracts/shared/IRegisterable.sol +11 -0
- package/contracts/shared/IService.sol +9 -2
- package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
- package/contracts/shared/InstanceLinkedComponent.sol +213 -0
- package/contracts/{instance/base → shared}/KeyValueStore.sol +36 -74
- package/contracts/shared/Lifecycle.sol +88 -0
- package/contracts/shared/NftIdSet.sol +65 -0
- package/contracts/shared/NftOwnable.sol +31 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -11
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +112 -8
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +168 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +497 -0
- package/contracts/staking/StakingLifecycle.sol +23 -0
- package/contracts/staking/StakingManager.sol +52 -0
- package/contracts/staking/StakingReader.sol +190 -0
- package/contracts/staking/StakingService.sol +290 -49
- package/contracts/staking/{StakeingServiceManager.sol → StakingServiceManager.sol} +14 -7
- package/contracts/staking/StakingStore.sol +605 -0
- package/contracts/staking/TargetManagerLib.sol +211 -0
- package/contracts/type/AddressSet.sol +1 -1
- package/contracts/type/Amount.sol +44 -3
- package/contracts/type/Blocknumber.sol +26 -3
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +17 -16
- package/contracts/type/NftId.sol +15 -16
- package/contracts/type/NftIdSet.sol +1 -1
- package/contracts/type/ObjectType.sol +176 -62
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/Referral.sol +2 -1
- package/contracts/type/RequestId.sol +75 -0
- package/contracts/type/RiskId.sol +16 -2
- package/contracts/type/RoleId.sol +98 -68
- package/contracts/type/Seconds.sol +48 -1
- package/contracts/type/Selector.sol +102 -0
- package/contracts/type/StateId.sol +41 -2
- package/contracts/type/String.sol +53 -0
- package/contracts/type/Timestamp.sol +17 -3
- package/contracts/type/UFixed.sol +38 -9
- package/contracts/type/Version.sol +4 -2
- package/contracts/{shared → upgradeability}/ProxyManager.sol +90 -27
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +10 -6
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
- package/artifacts/contracts/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 -864
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +0 -628
- package/contracts/instance/InstanceAccessManager.sol +0 -543
- package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
- package/contracts/instance/base/Lifecycle.sol +0 -121
- package/contracts/instance/module/ISetup.sol +0 -33
- package/contracts/instance/module/ITreasury.sol +0 -23
- package/contracts/product/ProductService.sol +0 -210
- package/contracts/product/ProductServiceManager.sol +0 -54
- package/contracts/registry/RegistryAccessManager.sol +0 -216
- package/contracts/registry/ReleaseManager.sol +0 -328
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,338 +1,418 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
|
-
pragma solidity ^0.8.
|
2
|
+
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Pool} from "./Pool.sol";
|
5
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
6
|
-
import {IInstance} from "../instance/IInstance.sol";
|
7
4
|
import {IBundle} from "../instance/module/IBundle.sol";
|
8
|
-
import {
|
5
|
+
import {IBundleService} from "./IBundleService.sol";
|
9
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
7
|
+
import {IComponentService} from "../shared/IComponentService.sol";
|
8
|
+
import {IInstance} from "../instance/IInstance.sol";
|
10
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
-
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {
|
10
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
11
|
+
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
13
|
+
import {IStaking} from "../staking/IStaking.sol";
|
15
14
|
|
16
15
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
16
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
17
17
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
|
-
import {NftId
|
19
|
-
import {ObjectType, POOL, BUNDLE} from "../type/ObjectType.sol";
|
20
|
-
import {PUBLIC_ROLE, POOL_OWNER_ROLE, POLICY_SERVICE_ROLE, RoleId} from "../type/RoleId.sol";
|
18
|
+
import {NftId} from "../type/NftId.sol";
|
19
|
+
import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
21
20
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
22
|
-
import {
|
23
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
21
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
24
22
|
import {Seconds} from "../type/Seconds.sol";
|
25
|
-
import {
|
26
|
-
import {
|
27
|
-
|
28
|
-
import {IService} from "../shared/IService.sol";
|
29
|
-
import {Service} from "../shared/Service.sol";
|
30
|
-
import {BundleManager} from "../instance/BundleManager.sol";
|
31
|
-
import {ComponentService} from "../shared/ComponentService.sol";
|
32
|
-
import {IBundleService} from "./IBundleService.sol";
|
33
|
-
import {IPoolService} from "./IPoolService.sol";
|
34
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
35
|
-
import {InstanceService} from "../instance/InstanceService.sol";
|
23
|
+
import {UFixed} from "../type/UFixed.sol";
|
24
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
36
25
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
37
|
-
import {
|
38
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
26
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
39
27
|
|
40
28
|
string constant POOL_SERVICE_NAME = "PoolService";
|
41
29
|
|
42
30
|
contract PoolService is
|
43
|
-
|
31
|
+
ComponentVerifyingService,
|
44
32
|
IPoolService
|
45
33
|
{
|
46
|
-
using NftIdLib for NftId;
|
47
|
-
using AmountLib for Amount;
|
48
|
-
|
49
34
|
IBundleService internal _bundleService;
|
35
|
+
IComponentService internal _componentService;
|
36
|
+
IStaking private _staking;
|
50
37
|
|
51
38
|
function _initialize(
|
52
39
|
address owner,
|
53
40
|
bytes memory data
|
54
41
|
)
|
55
42
|
internal
|
56
|
-
initializer
|
57
43
|
virtual override
|
44
|
+
initializer()
|
58
45
|
{
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
// owner is PoolServiceManager deployer
|
64
|
-
initializeService(registryAddress, address(0), owner);
|
46
|
+
(
|
47
|
+
address registryAddress,
|
48
|
+
address authority
|
49
|
+
) = abi.decode(data, (address, address));
|
65
50
|
|
66
|
-
|
51
|
+
_initializeService(registryAddress, authority, owner);
|
67
52
|
|
68
|
-
|
69
|
-
|
53
|
+
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
54
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
55
|
+
_staking = IStaking(getRegistry().getStakingAddress());
|
70
56
|
|
71
|
-
|
72
|
-
return POOL();
|
57
|
+
_registerInterface(type(IPoolService).interfaceId);
|
73
58
|
}
|
74
59
|
|
75
|
-
|
60
|
+
|
61
|
+
/// @inheritdoc IPoolService
|
62
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
76
63
|
external
|
77
|
-
|
64
|
+
virtual
|
78
65
|
{
|
79
|
-
(
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
IPoolComponent pool = IPoolComponent(poolAddress);
|
90
|
-
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
91
|
-
pool.linkToRegisteredNftId();
|
92
|
-
poolNftId = registryInfo.nftId;
|
93
|
-
|
94
|
-
// amend component info with pool specific token handler
|
95
|
-
IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
|
96
|
-
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
97
|
-
|
98
|
-
// save amended component info with instance
|
99
|
-
instance.getInstanceStore().createPoolSetup(poolNftId, componentInfo);
|
100
|
-
|
101
|
-
bytes4[][] memory selectors = new bytes4[][](2);
|
102
|
-
selectors[0] = new bytes4[](1);
|
103
|
-
selectors[1] = new bytes4[](1);
|
104
|
-
|
105
|
-
selectors[0][0] = IPoolComponent.setFees.selector;
|
106
|
-
selectors[1][0] = IPoolComponent.verifyApplication.selector;
|
107
|
-
|
108
|
-
RoleId[] memory roles = new RoleId[](2);
|
109
|
-
roles[0] = POOL_OWNER_ROLE();
|
110
|
-
roles[1] = POLICY_SERVICE_ROLE();
|
111
|
-
|
112
|
-
getInstanceService().createGifTarget(
|
113
|
-
instanceNftId,
|
114
|
-
poolAddress,
|
115
|
-
pool.getName(),
|
116
|
-
selectors,
|
117
|
-
roles);
|
66
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
67
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
68
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
69
|
+
|
70
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
71
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
72
|
+
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
73
|
+
|
74
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
118
75
|
}
|
119
76
|
|
120
77
|
|
121
|
-
|
122
|
-
|
78
|
+
/// @inheritdoc IPoolService
|
79
|
+
function createBundle(
|
80
|
+
address bundleOwner, // initial bundle owner
|
81
|
+
Fee memory fee, // fees deducted from premium that go to bundle owner
|
82
|
+
Seconds lifetime, // initial duration for which new policies are covered
|
83
|
+
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
84
|
+
)
|
85
|
+
external
|
123
86
|
virtual
|
87
|
+
returns(NftId bundleNftId)
|
124
88
|
{
|
125
|
-
(NftId poolNftId,, IInstance instance) =
|
126
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
89
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
127
90
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
91
|
+
// create the empty bundle
|
92
|
+
bundleNftId = _bundleService.create(
|
93
|
+
instance,
|
94
|
+
poolNftId,
|
95
|
+
bundleOwner,
|
96
|
+
fee,
|
97
|
+
AmountLib.zero(),
|
98
|
+
lifetime,
|
99
|
+
filter);
|
135
100
|
|
136
|
-
emit
|
101
|
+
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
137
102
|
}
|
138
103
|
|
139
|
-
|
104
|
+
|
105
|
+
function closeBundle(NftId bundleNftId)
|
140
106
|
external
|
141
107
|
virtual
|
142
108
|
{
|
143
|
-
(
|
144
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
109
|
+
_checkNftType(bundleNftId, BUNDLE());
|
145
110
|
|
146
|
-
|
147
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
111
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
148
112
|
|
149
|
-
//
|
150
|
-
|
151
|
-
|
152
|
-
|
113
|
+
// TODO get performance fee for pool (#477)
|
114
|
+
|
115
|
+
// releasing collateral in bundle
|
116
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
153
117
|
|
154
|
-
|
155
|
-
|
156
|
-
|
118
|
+
_componentService.decreasePoolBalance(
|
119
|
+
instance.getInstanceStore(),
|
120
|
+
poolNftId,
|
121
|
+
unstakedAmount + feeAmount,
|
122
|
+
AmountLib.zero());
|
123
|
+
|
124
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
157
125
|
|
158
|
-
|
126
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
127
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
128
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
129
|
+
poolComponentInfo.wallet,
|
130
|
+
getRegistry().ownerOf(bundleNftId),
|
131
|
+
unstakedAmount + feeAmount);
|
132
|
+
}
|
159
133
|
}
|
160
134
|
|
161
135
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
136
|
+
/// @inheritdoc IPoolService
|
137
|
+
function processFundedClaim(
|
138
|
+
NftId policyNftId,
|
139
|
+
ClaimId claimId,
|
140
|
+
Amount availableAmount
|
141
|
+
)
|
167
142
|
external
|
168
143
|
virtual
|
169
144
|
{
|
170
|
-
(
|
171
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
145
|
+
_checkNftType(policyNftId, POLICY());
|
172
146
|
|
173
|
-
|
174
|
-
|
147
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
148
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
149
|
+
NftId productNftId = _getProductNftId(poolNftId);
|
150
|
+
|
151
|
+
// check policy matches with calling pool
|
152
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
153
|
+
if(policyInfo.productNftId != productNftId) {
|
154
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
155
|
+
policyNftId,
|
156
|
+
policyInfo.productNftId,
|
157
|
+
productNftId);
|
158
|
+
}
|
175
159
|
|
176
|
-
|
177
|
-
poolInfo.stakingFee = stakingFee;
|
178
|
-
poolInfo.performanceFee = performanceFee;
|
179
|
-
componentInfo.data = abi.encode(poolInfo);
|
180
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
160
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
181
161
|
|
182
|
-
//
|
162
|
+
// callback to product component if applicable
|
163
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
164
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
165
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
166
|
+
}
|
183
167
|
}
|
184
168
|
|
185
169
|
|
186
|
-
|
187
|
-
|
188
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
189
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
190
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
191
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
192
|
-
)
|
170
|
+
/// @inheritdoc IPoolService
|
171
|
+
function stake(NftId bundleNftId, Amount amount)
|
193
172
|
external
|
194
173
|
virtual
|
195
|
-
|
174
|
+
// TODO: restricted() (once #462 is done)
|
175
|
+
returns(Amount netAmount)
|
196
176
|
{
|
197
|
-
(
|
177
|
+
_checkNftType(bundleNftId, BUNDLE());
|
178
|
+
|
179
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
198
180
|
InstanceReader instanceReader = instance.getInstanceReader();
|
181
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
182
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
199
183
|
|
200
|
-
|
201
|
-
|
202
|
-
|
184
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
185
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
186
|
+
}
|
203
187
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
188
|
+
{
|
189
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
190
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
191
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
// calculate fees
|
196
|
+
IRegistry registry = getRegistry();
|
197
|
+
Amount feeAmount;
|
198
|
+
|
199
|
+
{
|
200
|
+
NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
|
201
|
+
Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
|
202
|
+
(
|
203
|
+
feeAmount,
|
204
|
+
netAmount
|
205
|
+
) = FeeLib.calculateFee(
|
206
|
+
stakingFee,
|
207
|
+
amount);
|
208
|
+
}
|
209
|
+
|
210
|
+
// do all the bookkeeping
|
211
|
+
_componentService.increasePoolBalance(
|
212
|
+
instance.getInstanceStore(),
|
213
|
+
poolNftId,
|
214
|
+
netAmount,
|
215
|
+
feeAmount);
|
216
|
+
|
217
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
212
218
|
|
213
219
|
// collect tokens from bundle owner
|
214
|
-
|
220
|
+
address bundleOwner = registry.ownerOf(bundleNftId);
|
221
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
222
|
+
|
223
|
+
// TODO only collect staking token when pool is not externally managed
|
224
|
+
_collectStakingAmount(
|
225
|
+
instanceReader,
|
226
|
+
poolNftId,
|
227
|
+
bundleOwner,
|
228
|
+
amount);
|
229
|
+
}
|
215
230
|
|
216
|
-
|
231
|
+
/// @inheritdoc IPoolService
|
232
|
+
function unstake(NftId bundleNftId, Amount amount)
|
233
|
+
external
|
234
|
+
virtual
|
235
|
+
// TODO: restricted() (once #462 is done)
|
236
|
+
returns(Amount netAmount)
|
237
|
+
{
|
238
|
+
_checkNftType(bundleNftId, BUNDLE());
|
239
|
+
|
240
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
241
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
242
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
243
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
244
|
+
|
245
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
246
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
247
|
+
}
|
248
|
+
|
249
|
+
// call bundle service for bookkeeping and additional checks
|
250
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
251
|
+
|
252
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
253
|
+
// if amount was max, this was set to the available amount
|
254
|
+
|
255
|
+
// TODO: handle performance fees (issue #477)
|
256
|
+
|
257
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
258
|
+
_componentService.decreasePoolBalance(
|
259
|
+
instanceStore,
|
260
|
+
poolNftId,
|
261
|
+
unstakedAmount,
|
262
|
+
AmountLib.zero());
|
263
|
+
|
264
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
265
|
+
|
266
|
+
// transfer amount to bundle owner
|
267
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
268
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
269
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
270
|
+
poolComponentInfo.wallet,
|
271
|
+
owner,
|
272
|
+
unstakedAmount);
|
273
|
+
|
274
|
+
return unstakedAmount;
|
217
275
|
}
|
218
276
|
|
219
277
|
|
220
|
-
function
|
278
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
221
279
|
external
|
222
280
|
virtual
|
281
|
+
restricted()
|
223
282
|
{
|
224
|
-
(
|
225
|
-
|
226
|
-
// TODO
|
283
|
+
_checkNftType(poolNftId, POOL());
|
284
|
+
// TODO check that poolNftId is externally managed
|
285
|
+
// TODO implement
|
286
|
+
}
|
227
287
|
|
228
|
-
// releasing collateral in bundle
|
229
|
-
_bundleService.close(instance, bundleNftId);
|
230
288
|
|
231
|
-
|
289
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
290
|
+
external
|
291
|
+
virtual
|
292
|
+
restricted()
|
293
|
+
{
|
294
|
+
_checkNftType(poolNftId, POOL());
|
232
295
|
|
233
|
-
|
296
|
+
// TODO check that poolNftId is externally managed
|
297
|
+
// TODO implement
|
234
298
|
}
|
235
299
|
|
236
300
|
function processSale(
|
237
301
|
NftId bundleNftId,
|
238
|
-
IPolicy.
|
239
|
-
Amount actualAmountTransferred
|
302
|
+
IPolicy.PremiumInfo memory premium
|
240
303
|
)
|
241
304
|
external
|
242
305
|
virtual
|
306
|
+
restricted()
|
243
307
|
{
|
244
|
-
|
245
|
-
IRegistry.ObjectInfo memory bundleObjectInfo = registry.getObjectInfo(bundleNftId);
|
246
|
-
IRegistry.ObjectInfo memory poolObjectInfo = registry.getObjectInfo(bundleObjectInfo.parentNftId);
|
247
|
-
IRegistry.ObjectInfo memory instanceObjectInfo = registry.getObjectInfo(poolObjectInfo.parentNftId);
|
248
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
249
|
-
|
250
|
-
Amount poolFeeAmount = AmountLib.toAmount(premium.poolFeeFixAmount + premium.poolFeeVarAmount);
|
251
|
-
Amount bundleFeeAmount = AmountLib.toAmount(premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
|
252
|
-
Amount expectedTransferAmount = AmountLib.toAmount(premium.netPremiumAmount) + poolFeeAmount + bundleFeeAmount;
|
253
|
-
if (!(actualAmountTransferred == expectedTransferAmount)) {
|
254
|
-
revert ErrorPoolServiceInvalidTransferAmount(expectedTransferAmount, actualAmountTransferred);
|
255
|
-
}
|
256
|
-
|
257
|
-
// update pool fee balance
|
258
|
-
if (poolFeeAmount.gtz()) {
|
259
|
-
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolObjectInfo.nftId);
|
260
|
-
poolComponentInfo.feeAmount = poolComponentInfo.feeAmount.add(poolFeeAmount);
|
261
|
-
instance.getInstanceStore().updatePoolSetup(poolObjectInfo.nftId, poolComponentInfo, KEEP_STATE());
|
262
|
-
}
|
308
|
+
_checkNftType(bundleNftId, BUNDLE());
|
263
309
|
|
264
|
-
|
265
|
-
|
266
|
-
|
310
|
+
IRegistry registry = getRegistry();
|
311
|
+
IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
|
312
|
+
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
|
313
|
+
IInstance instance = _getInstanceForComponent(registry, poolInfo);
|
314
|
+
|
315
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
316
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
317
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
318
|
+
|
319
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
320
|
+
_componentService.increasePoolBalance(
|
321
|
+
instanceStore,
|
322
|
+
poolInfo.nftId,
|
323
|
+
bundleNetAmount + bundleFeeAmount,
|
324
|
+
poolFeeAmount);
|
325
|
+
|
326
|
+
_componentService.increaseBundleBalance(
|
327
|
+
instanceStore,
|
328
|
+
bundleInfo.nftId,
|
329
|
+
bundleNetAmount,
|
330
|
+
bundleFeeAmount);
|
267
331
|
}
|
268
332
|
|
333
|
+
|
269
334
|
function lockCollateral(
|
270
335
|
IInstance instance,
|
336
|
+
address token,
|
271
337
|
NftId productNftId,
|
272
338
|
NftId applicationNftId,
|
273
|
-
|
274
|
-
Amount
|
339
|
+
NftId bundleNftId,
|
340
|
+
Amount sumInsuredAmount // premium amount after product and distribution fees
|
275
341
|
)
|
276
342
|
external
|
277
343
|
virtual
|
278
|
-
|
344
|
+
restricted()
|
345
|
+
returns (
|
346
|
+
Amount totalCollateralAmount,
|
347
|
+
Amount localCollateralAmount
|
348
|
+
)
|
279
349
|
{
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
// TODO move this check to application creation and don't repeat this here
|
285
|
-
// ensure that pool for bundle from application matches with pool for product of application
|
286
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
287
|
-
if(bundleInfo.poolNftId != poolNftId) {
|
288
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleInfo.poolNftId, poolNftId);
|
289
|
-
}
|
290
|
-
|
291
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
292
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
350
|
+
_checkNftType(productNftId, PRODUCT());
|
351
|
+
_checkNftType(applicationNftId, POLICY());
|
352
|
+
_checkNftType(bundleNftId, BUNDLE());
|
293
353
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
354
|
+
(
|
355
|
+
totalCollateralAmount,
|
356
|
+
localCollateralAmount
|
357
|
+
) = calculateRequiredCollateral(
|
358
|
+
instance.getInstanceReader(),
|
359
|
+
productNftId,
|
360
|
+
sumInsuredAmount);
|
361
|
+
|
362
|
+
// lock collateral amount from involved bundle
|
301
363
|
_bundleService.lockCollateral(
|
302
364
|
instance,
|
303
365
|
applicationNftId,
|
304
366
|
bundleNftId,
|
305
|
-
|
306
|
-
premiumAfterPoolFeeAmount);
|
307
|
-
|
308
|
-
// also verify/confirm application by pool if necessary
|
309
|
-
if(poolInfo.isVerifyingApplications) {
|
310
|
-
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
311
|
-
IPoolComponent(poolAddress).verifyApplication(
|
312
|
-
applicationNftId,
|
313
|
-
applicationInfo.applicationData,
|
314
|
-
bundleNftId,
|
315
|
-
bundleInfo.filter,
|
316
|
-
collateralAmount);
|
317
|
-
}
|
318
|
-
}
|
367
|
+
localCollateralAmount);
|
319
368
|
|
369
|
+
// update value locked with staking service
|
370
|
+
_staking.increaseTotalValueLocked(
|
371
|
+
instance.getNftId(),
|
372
|
+
token,
|
373
|
+
totalCollateralAmount);
|
374
|
+
}
|
320
375
|
|
321
|
-
function
|
376
|
+
function processPayout(
|
322
377
|
IInstance instance,
|
378
|
+
address token,
|
323
379
|
NftId policyNftId,
|
324
380
|
IPolicy.PolicyInfo memory policyInfo,
|
325
381
|
Amount payoutAmount
|
326
382
|
)
|
327
383
|
external
|
328
384
|
virtual
|
329
|
-
|
385
|
+
restricted()
|
330
386
|
{
|
387
|
+
_checkNftType(policyNftId, POLICY());
|
388
|
+
|
389
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
390
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
391
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
392
|
+
|
393
|
+
_componentService.decreasePoolBalance(
|
394
|
+
instanceStore,
|
395
|
+
poolNftId,
|
396
|
+
payoutAmount,
|
397
|
+
AmountLib.zero());
|
398
|
+
|
399
|
+
_componentService.decreaseBundleBalance(
|
400
|
+
instanceStore,
|
401
|
+
bundleNftId,
|
402
|
+
payoutAmount,
|
403
|
+
AmountLib.zero());
|
404
|
+
|
331
405
|
_bundleService.releaseCollateral(
|
332
406
|
instance,
|
333
407
|
policyNftId,
|
334
408
|
policyInfo.bundleNftId,
|
335
409
|
payoutAmount);
|
410
|
+
|
411
|
+
// update value locked with staking service
|
412
|
+
_staking.decreaseTotalValueLocked(
|
413
|
+
instance.getNftId(),
|
414
|
+
token,
|
415
|
+
payoutAmount);
|
336
416
|
}
|
337
417
|
|
338
418
|
|
@@ -340,36 +420,96 @@ contract PoolService is
|
|
340
420
|
/// may only be called by the policy service for unlocked pool components
|
341
421
|
function releaseCollateral(
|
342
422
|
IInstance instance,
|
423
|
+
address token,
|
343
424
|
NftId policyNftId,
|
344
425
|
IPolicy.PolicyInfo memory policyInfo
|
345
426
|
)
|
346
427
|
external
|
347
428
|
virtual
|
348
|
-
|
429
|
+
restricted()
|
349
430
|
{
|
431
|
+
_checkNftType(policyNftId, POLICY());
|
432
|
+
|
433
|
+
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
434
|
+
|
350
435
|
_bundleService.releaseCollateral(
|
351
436
|
instance,
|
352
437
|
policyNftId,
|
353
438
|
policyInfo.bundleNftId,
|
354
|
-
|
439
|
+
remainingCollateralAmount);
|
355
440
|
|
356
441
|
_bundleService.unlinkPolicy(
|
357
442
|
instance,
|
358
443
|
policyNftId);
|
444
|
+
|
445
|
+
// update value locked with staking service
|
446
|
+
_staking.decreaseTotalValueLocked(
|
447
|
+
instance.getNftId(),
|
448
|
+
token,
|
449
|
+
remainingCollateralAmount);
|
450
|
+
}
|
451
|
+
|
452
|
+
|
453
|
+
function calculateRequiredCollateral(
|
454
|
+
InstanceReader instanceReader,
|
455
|
+
NftId productNftId,
|
456
|
+
Amount sumInsuredAmount
|
457
|
+
)
|
458
|
+
public
|
459
|
+
view
|
460
|
+
returns(
|
461
|
+
Amount totalCollateralAmount,
|
462
|
+
Amount localCollateralAmount
|
463
|
+
)
|
464
|
+
{
|
465
|
+
_checkNftType(productNftId, PRODUCT());
|
466
|
+
|
467
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
468
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
469
|
+
|
470
|
+
(
|
471
|
+
totalCollateralAmount,
|
472
|
+
localCollateralAmount
|
473
|
+
) = calculateRequiredCollateral(
|
474
|
+
poolInfo.collateralizationLevel,
|
475
|
+
poolInfo.retentionLevel,
|
476
|
+
sumInsuredAmount);
|
477
|
+
}
|
478
|
+
|
479
|
+
|
480
|
+
function calculateRequiredCollateral(
|
481
|
+
UFixed collateralizationLevel,
|
482
|
+
UFixed retentionLevel,
|
483
|
+
Amount sumInsuredAmount
|
484
|
+
)
|
485
|
+
public
|
486
|
+
pure
|
487
|
+
returns(
|
488
|
+
Amount totalCollateralAmount,
|
489
|
+
Amount localCollateralAmount
|
490
|
+
)
|
491
|
+
{
|
492
|
+
// collateralization is applied to sum insured
|
493
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
494
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
495
|
+
|
496
|
+
// retention level defines how much capital is required locally
|
497
|
+
localCollateralAmount = AmountLib.toAmount(
|
498
|
+
(retentionLevel * totalUFixed).toInt());
|
359
499
|
}
|
360
500
|
|
361
501
|
|
362
502
|
function _processStakingFees(
|
363
|
-
|
503
|
+
Fee memory stakingFee,
|
364
504
|
Amount stakingAmount
|
365
505
|
)
|
366
506
|
internal
|
507
|
+
pure
|
367
508
|
returns (Amount stakingNetAmount)
|
368
509
|
{
|
369
510
|
stakingNetAmount = stakingAmount;
|
370
511
|
|
371
512
|
// check if any staking fees apply
|
372
|
-
Fee memory stakingFee = abi.decode(componentInfo.data, (IComponents.PoolInfo)).stakingFee;
|
373
513
|
if (FeeLib.gtz(stakingFee)) {
|
374
514
|
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
375
515
|
stakingNetAmount = netAmount;
|
@@ -379,25 +519,26 @@ contract PoolService is
|
|
379
519
|
}
|
380
520
|
|
381
521
|
|
382
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
383
522
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
384
|
-
function
|
385
|
-
|
523
|
+
function _collectStakingAmount(
|
524
|
+
InstanceReader instanceReader,
|
525
|
+
NftId poolNftId,
|
386
526
|
address bundleOwner,
|
387
|
-
Amount
|
527
|
+
Amount amount
|
388
528
|
)
|
389
529
|
internal
|
390
530
|
{
|
391
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
392
|
-
address poolWallet = componentInfo.wallet;
|
393
531
|
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
532
|
+
// collecting investor token
|
533
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
534
|
+
address poolWallet = componentInfo.wallet;
|
535
|
+
componentInfo.tokenHandler.collectTokens(
|
536
|
+
bundleOwner,
|
537
|
+
poolWallet,
|
538
|
+
amount);
|
401
539
|
}
|
402
540
|
|
541
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
542
|
+
return POOL();
|
543
|
+
}
|
403
544
|
}
|