@etherisc/gif-next 0.0.2-eadf4ad-932 → 0.0.2-eae5e95-691
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 +1415 -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 +230 -545
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +315 -432
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +120 -109
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +214 -290
- 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 +1551 -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 +2090 -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 +1484 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1244 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2108 -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 +113 -97
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +171 -85
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +120 -207
- 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 +245 -229
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +106 -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 +1052 -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 +783 -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 +920 -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 +1312 -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 +186 -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 +235 -375
- 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 +269 -565
- 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 +112 -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 +99 -76
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1186 -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 +141 -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 +355 -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 +124 -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 +128 -93
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +377 -431
- 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 +391 -45
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +123 -64
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +0 -18
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +789 -60
- 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 +179 -185
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +86 -74
- 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 +136 -271
- 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 +105 -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 +718 -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 +842 -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 +1460 -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 +1901 -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 +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +109 -66
- 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 +154 -154
- package/contracts/distribution/DistributionService.sol +175 -172
- package/contracts/distribution/DistributionServiceManager.sol +8 -23
- 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 +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +412 -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 -33
- package/contracts/instance/Instance.sol +131 -122
- 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 +243 -134
- package/contracts/instance/InstanceServiceManager.sol +8 -13
- 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 +278 -201
- package/contracts/pool/BundleServiceManager.sol +8 -11
- 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 +357 -236
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +148 -84
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +53 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +293 -145
- package/contracts/product/ClaimServiceManager.sol +6 -6
- 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 +504 -199
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +103 -82
- package/contracts/product/PricingServiceManager.sol +5 -8
- 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 +72 -36
- package/contracts/registry/IRegistry.sol +85 -22
- package/contracts/registry/IRegistryService.sol +10 -6
- package/contracts/registry/ITransferInterceptor.sol +0 -1
- package/contracts/registry/Registry.sol +433 -187
- package/contracts/registry/RegistryAdmin.sol +448 -0
- package/contracts/registry/RegistryService.sol +76 -66
- package/contracts/registry/RegistryServiceManager.sol +6 -25
- 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 +153 -148
- package/contracts/shared/ComponentService.sol +688 -94
- 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 +27 -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 +273 -49
- package/contracts/staking/StakingServiceManager.sol +11 -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 -75
- 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 +76 -39
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +9 -5
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
- package/artifacts/contracts/instance/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 -679
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -238
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -846
- 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 -598
- 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/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 -212
- package/contracts/product/ProductServiceManager.sol +0 -42
- package/contracts/registry/RegistryAccessManager.sol +0 -132
- package/contracts/registry/ReleaseManager.sol +0 -382
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,339 +1,404 @@
|
|
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";
|
9
|
+
import {IInstanceService} from "../instance/IInstanceService.sol";
|
10
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
11
|
-
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {
|
11
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
12
|
+
import {IPoolService} from "./IPoolService.sol";
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
import {IRegistryService} from "../registry/IRegistryService.sol";
|
15
|
+
import {IStaking} from "../staking/IStaking.sol";
|
15
16
|
|
16
17
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
18
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
17
19
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
18
|
-
import {NftId
|
19
|
-
import {ObjectType, POOL, BUNDLE} from "../type/ObjectType.sol";
|
20
|
-
import {
|
20
|
+
import {NftId} from "../type/NftId.sol";
|
21
|
+
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
22
|
+
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
21
23
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
22
|
-
import {
|
23
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
24
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
24
25
|
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";
|
26
|
+
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
27
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
36
28
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
37
|
-
import {
|
38
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
29
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
39
30
|
|
40
31
|
string constant POOL_SERVICE_NAME = "PoolService";
|
41
32
|
|
42
33
|
contract PoolService is
|
43
|
-
|
34
|
+
ComponentVerifyingService,
|
44
35
|
IPoolService
|
45
36
|
{
|
46
|
-
using NftIdLib for NftId;
|
47
|
-
using AmountLib for Amount;
|
48
|
-
|
49
37
|
IBundleService internal _bundleService;
|
38
|
+
IComponentService internal _componentService;
|
39
|
+
IStaking private _staking;
|
50
40
|
|
51
41
|
function _initialize(
|
52
42
|
address owner,
|
53
43
|
bytes memory data
|
54
44
|
)
|
55
45
|
internal
|
56
|
-
initializer
|
57
46
|
virtual override
|
47
|
+
initializer()
|
58
48
|
{
|
59
49
|
(
|
60
|
-
address registryAddress
|
61
|
-
//address managerAddress
|
50
|
+
address registryAddress,
|
62
51
|
address authority
|
63
|
-
) = abi.decode(data, (address, address
|
52
|
+
) = abi.decode(data, (address, address));
|
64
53
|
|
65
|
-
|
66
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart()));
|
67
|
-
registerInterface(type(IPoolService).interfaceId);
|
68
|
-
}
|
54
|
+
_initializeService(registryAddress, authority, owner);
|
69
55
|
|
70
|
-
|
71
|
-
|
56
|
+
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
57
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
58
|
+
_staking = IStaking(getRegistry().getStakingAddress());
|
59
|
+
|
60
|
+
_registerInterface(type(IPoolService).interfaceId);
|
72
61
|
}
|
73
62
|
|
74
|
-
|
63
|
+
|
64
|
+
/// @inheritdoc IPoolService
|
65
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
75
66
|
external
|
76
|
-
|
67
|
+
virtual
|
77
68
|
{
|
78
|
-
(
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
IPoolComponent pool = IPoolComponent(poolAddress);
|
89
|
-
IRegistry.ObjectInfo memory registryInfo = getRegistryService().registerPool(pool, owner);
|
90
|
-
pool.linkToRegisteredNftId();
|
91
|
-
poolNftId = registryInfo.nftId;
|
92
|
-
|
93
|
-
// amend component info with pool specific token handler
|
94
|
-
IComponents.ComponentInfo memory componentInfo = pool.getComponentInfo();
|
95
|
-
componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
|
96
|
-
|
97
|
-
// save amended component info with instance
|
98
|
-
instance.getInstanceStore().createPoolSetup(poolNftId, componentInfo);
|
99
|
-
|
100
|
-
bytes4[][] memory selectors = new bytes4[][](2);
|
101
|
-
selectors[0] = new bytes4[](1);
|
102
|
-
selectors[1] = new bytes4[](1);
|
103
|
-
|
104
|
-
selectors[0][0] = IPoolComponent.setFees.selector;
|
105
|
-
selectors[1][0] = IPoolComponent.verifyApplication.selector;
|
106
|
-
|
107
|
-
RoleId[] memory roles = new RoleId[](2);
|
108
|
-
roles[0] = POOL_OWNER_ROLE();
|
109
|
-
roles[1] = POLICY_SERVICE_ROLE();
|
110
|
-
|
111
|
-
getInstanceService().createGifTarget(
|
112
|
-
instanceNftId,
|
113
|
-
poolAddress,
|
114
|
-
pool.getName(),
|
115
|
-
selectors,
|
116
|
-
roles);
|
69
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
70
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
71
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
72
|
+
|
73
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
74
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
75
|
+
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
76
|
+
|
77
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
117
78
|
}
|
118
79
|
|
119
80
|
|
120
|
-
|
81
|
+
/// @inheritdoc IPoolService
|
82
|
+
function createBundle(
|
83
|
+
address bundleOwner, // initial bundle owner
|
84
|
+
Fee memory fee, // fees deducted from premium that go to bundle owner
|
85
|
+
Seconds lifetime, // initial duration for which new policies are covered
|
86
|
+
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
87
|
+
)
|
88
|
+
external
|
89
|
+
virtual
|
90
|
+
returns(NftId bundleNftId)
|
91
|
+
{
|
92
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
93
|
+
|
94
|
+
// create the empty bundle
|
95
|
+
bundleNftId = _bundleService.create(
|
96
|
+
instance,
|
97
|
+
poolNftId,
|
98
|
+
bundleOwner,
|
99
|
+
fee,
|
100
|
+
AmountLib.zero(),
|
101
|
+
lifetime,
|
102
|
+
filter);
|
103
|
+
|
104
|
+
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
105
|
+
}
|
106
|
+
|
107
|
+
|
108
|
+
function closeBundle(NftId bundleNftId)
|
121
109
|
external
|
122
110
|
virtual
|
123
111
|
{
|
124
|
-
|
125
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
126
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
112
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
127
113
|
|
128
|
-
|
129
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
130
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
114
|
+
// TODO get performance fee for pool (#477)
|
131
115
|
|
132
|
-
|
133
|
-
|
134
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
116
|
+
// releasing collateral in bundle
|
117
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
135
118
|
|
136
|
-
|
137
|
-
|
119
|
+
_componentService.decreasePoolBalance(
|
120
|
+
instance.getInstanceStore(),
|
121
|
+
poolNftId,
|
122
|
+
unstakedAmount + feeAmount,
|
123
|
+
AmountLib.zero());
|
124
|
+
|
125
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
126
|
+
|
127
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
128
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
129
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
130
|
+
poolComponentInfo.wallet,
|
131
|
+
getRegistry().ownerOf(bundleNftId),
|
132
|
+
unstakedAmount + feeAmount);
|
133
|
+
}
|
138
134
|
}
|
139
135
|
|
140
|
-
|
136
|
+
|
137
|
+
/// @inheritdoc IPoolService
|
138
|
+
function processFundedClaim(
|
139
|
+
NftId policyNftId,
|
140
|
+
ClaimId claimId,
|
141
|
+
Amount availableAmount
|
142
|
+
)
|
141
143
|
external
|
142
144
|
virtual
|
143
145
|
{
|
144
|
-
(NftId poolNftId,, IInstance instance) =
|
146
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
145
147
|
InstanceReader instanceReader = instance.getInstanceReader();
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
148
|
+
NftId productNftId = _getProductNftId(poolNftId);
|
149
|
+
|
150
|
+
// check policy matches with calling pool
|
151
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
152
|
+
if(policyInfo.productNftId != productNftId) {
|
153
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
154
|
+
policyNftId,
|
155
|
+
policyInfo.productNftId,
|
156
|
+
productNftId);
|
153
157
|
}
|
154
158
|
|
155
|
-
|
156
|
-
componentInfo.data = abi.encode(poolInfo);
|
157
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
159
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
158
160
|
|
159
|
-
|
161
|
+
// callback to product component if applicable
|
162
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
163
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
164
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
165
|
+
}
|
160
166
|
}
|
161
167
|
|
162
168
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
Fee memory performanceFee
|
167
|
-
)
|
168
|
-
external
|
169
|
+
/// @inheritdoc IPoolService
|
170
|
+
function stake(NftId bundleNftId, Amount amount)
|
171
|
+
external
|
169
172
|
virtual
|
173
|
+
// TODO: restricted() (once #462 is done)
|
174
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
175
|
+
returns(Amount netAmount)
|
170
176
|
{
|
171
|
-
(NftId poolNftId,, IInstance instance) =
|
177
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
172
178
|
InstanceReader instanceReader = instance.getInstanceReader();
|
179
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
180
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
173
181
|
|
174
|
-
|
175
|
-
|
182
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
183
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
184
|
+
}
|
185
|
+
|
186
|
+
{
|
187
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
188
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
189
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
190
|
+
}
|
191
|
+
}
|
176
192
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
193
|
+
// calculate fees
|
194
|
+
IRegistry registry = getRegistry();
|
195
|
+
Amount feeAmount;
|
196
|
+
|
197
|
+
{
|
198
|
+
NftId productNftId = registry.getObjectInfo(poolNftId).parentNftId;
|
199
|
+
Fee memory stakingFee = instanceReader.getProductInfo(productNftId).stakingFee;
|
200
|
+
(
|
201
|
+
feeAmount,
|
202
|
+
netAmount
|
203
|
+
) = FeeLib.calculateFee(
|
204
|
+
stakingFee,
|
205
|
+
amount);
|
206
|
+
}
|
207
|
+
|
208
|
+
// do all the bookkeeping
|
209
|
+
_componentService.increasePoolBalance(
|
210
|
+
instance.getInstanceStore(),
|
211
|
+
poolNftId,
|
212
|
+
netAmount,
|
213
|
+
feeAmount);
|
182
214
|
|
183
|
-
|
215
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
216
|
+
|
217
|
+
// collect tokens from bundle owner
|
218
|
+
address bundleOwner = registry.ownerOf(bundleNftId);
|
219
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
220
|
+
|
221
|
+
// TODO only collect staking token when pool is not externally managed
|
222
|
+
_collectStakingAmount(
|
223
|
+
instanceReader,
|
224
|
+
poolNftId,
|
225
|
+
bundleOwner,
|
226
|
+
amount);
|
184
227
|
}
|
185
228
|
|
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
|
-
)
|
229
|
+
/// @inheritdoc IPoolService
|
230
|
+
function unstake(NftId bundleNftId, Amount amount)
|
193
231
|
external
|
194
232
|
virtual
|
195
|
-
|
233
|
+
// TODO: restricted() (once #462 is done)
|
234
|
+
returns(Amount netAmount)
|
196
235
|
{
|
197
|
-
(NftId poolNftId,, IInstance instance) =
|
236
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
198
237
|
InstanceReader instanceReader = instance.getInstanceReader();
|
238
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
239
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
240
|
+
|
241
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
242
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
243
|
+
}
|
199
244
|
|
200
|
-
//
|
201
|
-
|
202
|
-
Amount stakingNetAmount = _processStakingFees(componentInfo, stakingAmount);
|
245
|
+
// call bundle service for bookkeeping and additional checks
|
246
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
203
247
|
|
204
|
-
|
205
|
-
|
206
|
-
poolNftId,
|
207
|
-
owner,
|
208
|
-
fee,
|
209
|
-
stakingNetAmount,
|
210
|
-
lifetime,
|
211
|
-
filter);
|
248
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
249
|
+
// if amount was max, this was set to the available amount
|
212
250
|
|
213
|
-
//
|
214
|
-
_transferStakingAmount(componentInfo, owner, stakingAmount);
|
251
|
+
// TODO: handle performance fees (issue #477)
|
215
252
|
|
216
|
-
|
253
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
254
|
+
_componentService.decreasePoolBalance(
|
255
|
+
instanceStore,
|
256
|
+
poolNftId,
|
257
|
+
unstakedAmount,
|
258
|
+
AmountLib.zero());
|
259
|
+
|
260
|
+
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
261
|
+
|
262
|
+
// transfer amount to bundle owner
|
263
|
+
address owner = getRegistry().ownerOf(bundleNftId);
|
264
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
265
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
266
|
+
poolComponentInfo.wallet,
|
267
|
+
owner,
|
268
|
+
unstakedAmount);
|
269
|
+
|
270
|
+
return unstakedAmount;
|
217
271
|
}
|
218
272
|
|
219
273
|
|
220
|
-
function
|
274
|
+
function fundPoolWallet(NftId poolNftId, Amount amount)
|
221
275
|
external
|
222
276
|
virtual
|
277
|
+
restricted()
|
223
278
|
{
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
// releasing collateral in bundle
|
229
|
-
_bundleService.close(instance, bundleNftId);
|
279
|
+
// TODO check that poolNftId is externally managed
|
280
|
+
// TODO implement
|
281
|
+
}
|
230
282
|
|
231
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
232
283
|
|
233
|
-
|
284
|
+
function defundPoolWallet(NftId poolNftId, Amount amount)
|
285
|
+
external
|
286
|
+
virtual
|
287
|
+
restricted()
|
288
|
+
{
|
289
|
+
// TODO check that poolNftId is externally managed
|
290
|
+
// TODO implement
|
234
291
|
}
|
235
292
|
|
236
293
|
function processSale(
|
237
294
|
NftId bundleNftId,
|
238
|
-
IPolicy.
|
239
|
-
Amount actualAmountTransferred
|
295
|
+
IPolicy.PremiumInfo memory premium
|
240
296
|
)
|
241
297
|
external
|
242
298
|
virtual
|
243
|
-
restricted
|
299
|
+
restricted()
|
300
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
244
301
|
{
|
245
302
|
IRegistry registry = getRegistry();
|
246
|
-
IRegistry.ObjectInfo memory
|
247
|
-
IRegistry.ObjectInfo memory
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
Amount
|
252
|
-
Amount
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
_bundleService.updateBundleFees(instance, bundleNftId, bundleFeeAmount);
|
267
|
-
}
|
303
|
+
IRegistry.ObjectInfo memory bundleInfo = registry.getObjectInfo(bundleNftId);
|
304
|
+
IRegistry.ObjectInfo memory poolInfo = registry.getObjectInfo(bundleInfo.parentNftId);
|
305
|
+
IInstance instance = _getInstanceForComponent(registry, poolInfo);
|
306
|
+
|
307
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
308
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
309
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
310
|
+
|
311
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
312
|
+
_componentService.increasePoolBalance(
|
313
|
+
instanceStore,
|
314
|
+
poolInfo.nftId,
|
315
|
+
bundleNetAmount + bundleFeeAmount,
|
316
|
+
poolFeeAmount);
|
317
|
+
|
318
|
+
_componentService.increaseBundleBalance(
|
319
|
+
instanceStore,
|
320
|
+
bundleInfo.nftId,
|
321
|
+
bundleNetAmount,
|
322
|
+
bundleFeeAmount);
|
268
323
|
}
|
269
324
|
|
325
|
+
|
270
326
|
function lockCollateral(
|
271
327
|
IInstance instance,
|
328
|
+
address token,
|
272
329
|
NftId productNftId,
|
273
330
|
NftId applicationNftId,
|
274
|
-
|
275
|
-
Amount
|
331
|
+
NftId bundleNftId,
|
332
|
+
Amount sumInsuredAmount // premium amount after product and distribution fees
|
276
333
|
)
|
277
334
|
external
|
278
335
|
virtual
|
279
|
-
restricted
|
336
|
+
restricted()
|
337
|
+
returns (
|
338
|
+
Amount totalCollateralAmount,
|
339
|
+
Amount localCollateralAmount
|
340
|
+
)
|
280
341
|
{
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
}
|
291
|
-
|
292
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
293
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
294
|
-
|
295
|
-
// TODO add correct required collateral calculation (collateralization level mibht be != 1, retention level might be < 1)
|
296
|
-
Amount collateralAmount = applicationInfo.sumInsuredAmount;
|
297
|
-
|
298
|
-
// TODO add correct net premium calculation (pool fee might be > 0)
|
299
|
-
Amount premiumAfterPoolFeeAmount = premiumAmount;
|
300
|
-
|
301
|
-
// lock collateral amount from involvedd bundle
|
342
|
+
(
|
343
|
+
totalCollateralAmount,
|
344
|
+
localCollateralAmount
|
345
|
+
) = calculateRequiredCollateral(
|
346
|
+
instance.getInstanceReader(),
|
347
|
+
productNftId,
|
348
|
+
sumInsuredAmount);
|
349
|
+
|
350
|
+
// lock collateral amount from involved bundle
|
302
351
|
_bundleService.lockCollateral(
|
303
352
|
instance,
|
304
353
|
applicationNftId,
|
305
354
|
bundleNftId,
|
306
|
-
|
307
|
-
premiumAfterPoolFeeAmount);
|
308
|
-
|
309
|
-
// also verify/confirm application by pool if necessary
|
310
|
-
if(poolInfo.isVerifyingApplications) {
|
311
|
-
address poolAddress = getRegistry().getObjectInfo(poolNftId).objectAddress;
|
312
|
-
IPoolComponent(poolAddress).verifyApplication(
|
313
|
-
applicationNftId,
|
314
|
-
applicationInfo.applicationData,
|
315
|
-
bundleNftId,
|
316
|
-
bundleInfo.filter,
|
317
|
-
collateralAmount);
|
318
|
-
}
|
319
|
-
}
|
355
|
+
localCollateralAmount);
|
320
356
|
|
357
|
+
// update value locked with staking service
|
358
|
+
_staking.increaseTotalValueLocked(
|
359
|
+
instance.getNftId(),
|
360
|
+
token,
|
361
|
+
totalCollateralAmount);
|
362
|
+
}
|
321
363
|
|
322
|
-
function
|
364
|
+
function processPayout(
|
323
365
|
IInstance instance,
|
366
|
+
address token,
|
324
367
|
NftId policyNftId,
|
325
368
|
IPolicy.PolicyInfo memory policyInfo,
|
326
369
|
Amount payoutAmount
|
327
370
|
)
|
328
371
|
external
|
329
372
|
virtual
|
330
|
-
restricted
|
373
|
+
restricted()
|
331
374
|
{
|
375
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
376
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
377
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
378
|
+
|
379
|
+
_componentService.decreasePoolBalance(
|
380
|
+
instanceStore,
|
381
|
+
poolNftId,
|
382
|
+
payoutAmount,
|
383
|
+
AmountLib.zero());
|
384
|
+
|
385
|
+
_componentService.decreaseBundleBalance(
|
386
|
+
instanceStore,
|
387
|
+
bundleNftId,
|
388
|
+
payoutAmount,
|
389
|
+
AmountLib.zero());
|
390
|
+
|
332
391
|
_bundleService.releaseCollateral(
|
333
392
|
instance,
|
334
393
|
policyNftId,
|
335
394
|
policyInfo.bundleNftId,
|
336
395
|
payoutAmount);
|
396
|
+
|
397
|
+
// update value locked with staking service
|
398
|
+
_staking.decreaseTotalValueLocked(
|
399
|
+
instance.getNftId(),
|
400
|
+
token,
|
401
|
+
payoutAmount);
|
337
402
|
}
|
338
403
|
|
339
404
|
|
@@ -341,27 +406,83 @@ contract PoolService is
|
|
341
406
|
/// may only be called by the policy service for unlocked pool components
|
342
407
|
function releaseCollateral(
|
343
408
|
IInstance instance,
|
409
|
+
address token,
|
344
410
|
NftId policyNftId,
|
345
411
|
IPolicy.PolicyInfo memory policyInfo
|
346
412
|
)
|
347
413
|
external
|
348
414
|
virtual
|
349
|
-
restricted
|
415
|
+
restricted()
|
350
416
|
{
|
417
|
+
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
418
|
+
|
351
419
|
_bundleService.releaseCollateral(
|
352
420
|
instance,
|
353
421
|
policyNftId,
|
354
422
|
policyInfo.bundleNftId,
|
355
|
-
|
423
|
+
remainingCollateralAmount);
|
356
424
|
|
357
425
|
_bundleService.unlinkPolicy(
|
358
426
|
instance,
|
359
427
|
policyNftId);
|
428
|
+
|
429
|
+
// update value locked with staking service
|
430
|
+
_staking.decreaseTotalValueLocked(
|
431
|
+
instance.getNftId(),
|
432
|
+
token,
|
433
|
+
remainingCollateralAmount);
|
434
|
+
}
|
435
|
+
|
436
|
+
|
437
|
+
function calculateRequiredCollateral(
|
438
|
+
InstanceReader instanceReader,
|
439
|
+
NftId productNftId,
|
440
|
+
Amount sumInsuredAmount
|
441
|
+
)
|
442
|
+
public
|
443
|
+
view
|
444
|
+
returns(
|
445
|
+
Amount totalCollateralAmount,
|
446
|
+
Amount localCollateralAmount
|
447
|
+
)
|
448
|
+
{
|
449
|
+
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
450
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
451
|
+
|
452
|
+
(
|
453
|
+
totalCollateralAmount,
|
454
|
+
localCollateralAmount
|
455
|
+
) = calculateRequiredCollateral(
|
456
|
+
poolInfo.collateralizationLevel,
|
457
|
+
poolInfo.retentionLevel,
|
458
|
+
sumInsuredAmount);
|
459
|
+
}
|
460
|
+
|
461
|
+
|
462
|
+
function calculateRequiredCollateral(
|
463
|
+
UFixed collateralizationLevel,
|
464
|
+
UFixed retentionLevel,
|
465
|
+
Amount sumInsuredAmount
|
466
|
+
)
|
467
|
+
public
|
468
|
+
pure
|
469
|
+
returns(
|
470
|
+
Amount totalCollateralAmount,
|
471
|
+
Amount localCollateralAmount
|
472
|
+
)
|
473
|
+
{
|
474
|
+
// collateralization is applied to sum insured
|
475
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
476
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
477
|
+
|
478
|
+
// retention level defines how much capital is required locally
|
479
|
+
localCollateralAmount = AmountLib.toAmount(
|
480
|
+
(retentionLevel * totalUFixed).toInt());
|
360
481
|
}
|
361
482
|
|
362
483
|
|
363
484
|
function _processStakingFees(
|
364
|
-
|
485
|
+
Fee memory stakingFee,
|
365
486
|
Amount stakingAmount
|
366
487
|
)
|
367
488
|
internal
|
@@ -370,7 +491,6 @@ contract PoolService is
|
|
370
491
|
stakingNetAmount = stakingAmount;
|
371
492
|
|
372
493
|
// check if any staking fees apply
|
373
|
-
Fee memory stakingFee = abi.decode(componentInfo.data, (IComponents.PoolInfo)).stakingFee;
|
374
494
|
if (FeeLib.gtz(stakingFee)) {
|
375
495
|
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
376
496
|
stakingNetAmount = netAmount;
|
@@ -380,25 +500,26 @@ contract PoolService is
|
|
380
500
|
}
|
381
501
|
|
382
502
|
|
383
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
384
503
|
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
385
|
-
function
|
386
|
-
|
504
|
+
function _collectStakingAmount(
|
505
|
+
InstanceReader instanceReader,
|
506
|
+
NftId poolNftId,
|
387
507
|
address bundleOwner,
|
388
|
-
Amount
|
508
|
+
Amount amount
|
389
509
|
)
|
390
510
|
internal
|
391
511
|
{
|
392
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
393
|
-
address poolWallet = componentInfo.wallet;
|
394
512
|
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
513
|
+
// collecting investor token
|
514
|
+
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
515
|
+
address poolWallet = componentInfo.wallet;
|
516
|
+
componentInfo.tokenHandler.collectTokens(
|
517
|
+
bundleOwner,
|
518
|
+
poolWallet,
|
519
|
+
amount);
|
402
520
|
}
|
403
521
|
|
522
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
523
|
+
return POOL();
|
524
|
+
}
|
404
525
|
}
|