@etherisc/gif-next 0.0.2-9dd41ff-671 → 0.0.2-9e03baf-990
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 +75 -9
- 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/{shared/AccessManagerCustom.sol/AccessManagerCustom.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +28 -25
- 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 +1324 -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 +219 -596
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +340 -444
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +144 -133
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +226 -309
- 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 +1429 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -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 +1430 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -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 +112 -91
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +170 -84
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +127 -238
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1183 -276
- 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 +874 -395
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +255 -242
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +122 -103
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1210 -389
- 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 +21 -0
- 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 +961 -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 +776 -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 +877 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +982 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +746 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1254 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +507 -345
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -111
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +275 -46
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +214 -400
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +490 -282
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +224 -621
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +634 -640
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +124 -117
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +132 -282
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +112 -97
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1148 -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 +333 -299
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -114
- 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 +361 -81
- 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 +365 -221
- 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 +422 -406
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +128 -137
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +248 -348
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +143 -116
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +364 -475
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -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 +400 -50
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +112 -64
- 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 +840 -107
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1743 -149
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +180 -200
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -86
- 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 -136
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +120 -317
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1406 -213
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +834 -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 +111 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +114 -130
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1402 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +711 -0
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
- package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +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 +799 -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 +48 -70
- 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 +67 -103
- 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 +54 -119
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +735 -27
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -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 +1816 -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 +780 -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 +661 -182
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +125 -90
- 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 +618 -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 +177 -173
- package/contracts/distribution/DistributionServiceManager.sol +8 -11
- 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 +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +431 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
- package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
- package/contracts/instance/IInstance.sol +28 -39
- package/contracts/instance/IInstanceService.sol +30 -32
- package/contracts/instance/Instance.sol +124 -122
- package/contracts/instance/InstanceAdmin.sol +208 -285
- package/contracts/instance/InstanceAuthorizationV3.sol +194 -0
- package/contracts/instance/InstanceReader.sol +194 -67
- package/contracts/instance/InstanceService.sol +246 -130
- 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 -0
- package/contracts/instance/module/IBundle.sol +1 -4
- package/contracts/instance/module/IComponents.sol +22 -13
- package/contracts/instance/module/IDistribution.sol +0 -1
- package/contracts/instance/module/IPolicy.sol +33 -26
- 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 +292 -0
- package/contracts/oracle/OracleServiceManager.sol +39 -0
- package/contracts/pool/BasicPool.sol +175 -0
- package/contracts/pool/BasicPoolAuthorization.sol +68 -0
- package/contracts/pool/BundleService.sol +314 -213
- package/contracts/pool/BundleServiceManager.sol +8 -11
- package/contracts/pool/IBundleService.sol +46 -24
- package/contracts/pool/IPoolComponent.sol +23 -75
- package/contracts/pool/IPoolService.sol +105 -47
- package/contracts/pool/Pool.sol +211 -168
- package/contracts/pool/PoolService.sol +448 -232
- package/contracts/pool/PoolServiceManager.sol +6 -9
- package/contracts/product/ApplicationService.sol +156 -84
- package/contracts/product/ApplicationServiceManager.sol +6 -6
- package/contracts/product/BasicProduct.sol +49 -0
- package/contracts/product/BasicProductAuthorization.sol +42 -0
- package/contracts/product/ClaimService.sol +333 -162
- 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 +41 -39
- 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 +521 -204
- package/contracts/product/PolicyServiceManager.sol +6 -9
- package/contracts/product/PricingService.sol +107 -83
- package/contracts/product/PricingServiceManager.sol +5 -8
- package/contracts/product/Product.sol +199 -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 +85 -24
- package/contracts/registry/IRegistryService.sol +9 -6
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +439 -179
- package/contracts/registry/RegistryAdmin.sol +396 -77
- package/contracts/registry/RegistryService.sol +73 -64
- package/contracts/registry/RegistryServiceManager.sol +6 -13
- package/contracts/registry/ReleaseLifecycle.sol +30 -0
- package/contracts/registry/ReleaseRegistry.sol +485 -0
- package/contracts/registry/ServiceAuthorizationV3.sol +203 -0
- package/contracts/registry/TokenRegistry.sol +261 -64
- package/contracts/shared/Component.sol +128 -170
- package/contracts/shared/ComponentService.sol +732 -94
- package/contracts/shared/ComponentServiceManager.sol +38 -0
- package/contracts/shared/ComponentVerifyingService.sol +128 -0
- package/contracts/shared/ContractLib.sol +54 -0
- package/contracts/shared/IComponent.sol +24 -47
- package/contracts/shared/IComponentService.sol +130 -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 +205 -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 +32 -22
- package/contracts/shared/PolicyHolder.sol +18 -50
- package/contracts/shared/Registerable.sol +21 -13
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +48 -36
- package/contracts/shared/TokenHandler.sol +375 -13
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +173 -0
- package/contracts/staking/IStakingService.sol +103 -48
- package/contracts/staking/StakeManagerLib.sol +224 -0
- package/contracts/staking/Staking.sol +505 -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 +331 -47
- 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 +17 -3
- 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 +73 -41
- package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
- package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
- package/package.json +11 -7
- 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/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -188
- 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 -883
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -711
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1018
- package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1747
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
- package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1765
- 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/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
- package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1594
- 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 -630
- 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/InstanceAuthorizationsLib.sol +0 -320
- 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/ReleaseManager.sol +0 -465
- package/contracts/shared/AccessManagerCustom.sol +0 -736
- package/contracts/shared/AccessManagerExtended.sol +0 -469
- package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
- package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -125
- package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
- package/contracts/shared/IAccessManagerExtended.sol +0 -74
- package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -17
- /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -1,339 +1,478 @@
|
|
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 {IPoolComponent} from "../pool/IPoolComponent.sol";
|
11
|
+
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
13
|
+
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
+
import {IStaking} from "../staking/IStaking.sol";
|
15
15
|
|
16
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
17
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
17
18
|
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";
|
19
|
+
import {NftId} from "../type/NftId.sol";
|
20
|
+
import {ObjectType, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
21
21
|
import {Fee, FeeLib} from "../type/Fee.sol";
|
22
|
-
import {
|
23
|
-
import {KEEP_STATE, StateId} from "../type/StateId.sol";
|
22
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
24
23
|
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";
|
24
|
+
import {UFixed} from "../type/UFixed.sol";
|
25
|
+
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
36
26
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
37
|
-
import {
|
38
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
27
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
39
28
|
|
40
29
|
string constant POOL_SERVICE_NAME = "PoolService";
|
41
30
|
|
42
31
|
contract PoolService is
|
43
|
-
|
32
|
+
ComponentVerifyingService,
|
44
33
|
IPoolService
|
45
34
|
{
|
46
|
-
using NftIdLib for NftId;
|
47
|
-
using AmountLib for Amount;
|
48
|
-
|
49
35
|
IBundleService internal _bundleService;
|
36
|
+
IComponentService internal _componentService;
|
37
|
+
IStaking private _staking;
|
50
38
|
|
51
39
|
function _initialize(
|
52
40
|
address owner,
|
53
41
|
bytes memory data
|
54
42
|
)
|
55
43
|
internal
|
56
|
-
initializer
|
57
44
|
virtual override
|
45
|
+
initializer()
|
58
46
|
{
|
59
47
|
(
|
60
|
-
address registryAddress
|
61
|
-
//address managerAddress
|
48
|
+
address registryAddress,
|
62
49
|
address authority
|
63
|
-
) = abi.decode(data, (address, address
|
50
|
+
) = abi.decode(data, (address, address));
|
64
51
|
|
65
|
-
|
66
|
-
_bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), getVersion().toMajorPart()));
|
67
|
-
registerInterface(type(IPoolService).interfaceId);
|
68
|
-
}
|
52
|
+
_initializeService(registryAddress, authority, owner);
|
69
53
|
|
70
|
-
|
71
|
-
|
54
|
+
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
55
|
+
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
56
|
+
_staking = IStaking(getRegistry().getStakingAddress());
|
57
|
+
|
58
|
+
_registerInterface(type(IPoolService).interfaceId);
|
72
59
|
}
|
73
60
|
|
74
|
-
|
61
|
+
|
62
|
+
/// @inheritdoc IPoolService
|
63
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
75
64
|
external
|
76
|
-
|
65
|
+
virtual
|
77
66
|
{
|
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);
|
67
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
68
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
69
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
70
|
+
|
71
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
72
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
73
|
+
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
74
|
+
|
75
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
117
76
|
}
|
118
77
|
|
78
|
+
// TODO cleanup
|
79
|
+
// /// @inheritdoc IPoolService
|
80
|
+
// function createBundle(
|
81
|
+
// address bundleOwner, // initial bundle owner
|
82
|
+
// Fee memory fee, // fees deducted from premium that go to bundle owner
|
83
|
+
// Seconds lifetime, // initial duration for which new policies are covered
|
84
|
+
// bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
85
|
+
// )
|
86
|
+
// external
|
87
|
+
// virtual
|
88
|
+
// returns(NftId bundleNftId)
|
89
|
+
// {
|
90
|
+
// (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
91
|
+
|
92
|
+
// // create the empty bundle
|
93
|
+
// bundleNftId = _bundleService.create(
|
94
|
+
// instance,
|
95
|
+
// poolNftId,
|
96
|
+
// bundleOwner,
|
97
|
+
// fee,
|
98
|
+
// lifetime,
|
99
|
+
// filter);
|
100
|
+
|
101
|
+
// emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
102
|
+
// }
|
103
|
+
|
119
104
|
|
120
|
-
function
|
105
|
+
function closeBundle(NftId bundleNftId)
|
121
106
|
external
|
122
107
|
virtual
|
123
108
|
{
|
124
|
-
|
125
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(POOL());
|
126
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
109
|
+
_checkNftType(bundleNftId, BUNDLE());
|
127
110
|
|
128
|
-
|
129
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
130
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
111
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
131
112
|
|
132
|
-
|
133
|
-
componentInfo.data = abi.encode(poolInfo);
|
134
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
113
|
+
// TODO get performance fee for pool (#477)
|
135
114
|
|
136
|
-
|
137
|
-
|
115
|
+
// releasing collateral in bundle
|
116
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
117
|
+
|
118
|
+
_componentService.decreasePoolBalance(
|
119
|
+
instance.getInstanceStore(),
|
120
|
+
poolNftId,
|
121
|
+
unstakedAmount + feeAmount,
|
122
|
+
AmountLib.zero());
|
123
|
+
|
124
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
125
|
+
|
126
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
127
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
128
|
+
poolComponentInfo.tokenHandler.distributeTokens(
|
129
|
+
poolComponentInfo.tokenHandler.getWallet(),
|
130
|
+
getRegistry().ownerOf(bundleNftId),
|
131
|
+
unstakedAmount + feeAmount);
|
132
|
+
}
|
138
133
|
}
|
139
134
|
|
140
|
-
|
135
|
+
|
136
|
+
/// @inheritdoc IPoolService
|
137
|
+
function processFundedClaim(
|
138
|
+
NftId policyNftId,
|
139
|
+
ClaimId claimId,
|
140
|
+
Amount availableAmount
|
141
|
+
)
|
141
142
|
external
|
142
143
|
virtual
|
143
144
|
{
|
144
|
-
(
|
145
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
145
|
+
_checkNftType(policyNftId, POLICY());
|
146
146
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
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);
|
153
158
|
}
|
154
159
|
|
155
|
-
|
156
|
-
componentInfo.data = abi.encode(poolInfo);
|
157
|
-
instance.getInstanceStore().updatePoolSetup(poolNftId, componentInfo, KEEP_STATE());
|
160
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
158
161
|
|
159
|
-
|
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
|
+
}
|
160
167
|
}
|
161
168
|
|
162
169
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
Fee memory performanceFee
|
167
|
-
)
|
168
|
-
external
|
170
|
+
/// @inheritdoc IPoolService
|
171
|
+
function stake(NftId bundleNftId, Amount amount)
|
172
|
+
external
|
169
173
|
virtual
|
174
|
+
// TODO: restricted() (once #462 is done)
|
175
|
+
returns(Amount netAmount)
|
170
176
|
{
|
171
|
-
(
|
177
|
+
_checkNftType(bundleNftId, BUNDLE());
|
178
|
+
|
179
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
172
180
|
InstanceReader instanceReader = instance.getInstanceReader();
|
181
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
182
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
173
183
|
|
174
|
-
|
175
|
-
|
184
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
185
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
186
|
+
}
|
176
187
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
188
|
+
{
|
189
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
190
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
191
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
192
|
+
}
|
193
|
+
}
|
182
194
|
|
183
|
-
//
|
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 book keeping
|
211
|
+
_componentService.increasePoolBalance(
|
212
|
+
instance.getInstanceStore(),
|
213
|
+
poolNftId,
|
214
|
+
netAmount,
|
215
|
+
feeAmount);
|
216
|
+
|
217
|
+
_bundleService.stake(instance, bundleNftId, netAmount);
|
218
|
+
|
219
|
+
emit LogPoolServiceBundleStaked(instance.getNftId(), poolNftId, bundleNftId, amount, netAmount);
|
220
|
+
|
221
|
+
// only collect staking amount when pool is not externally managed
|
222
|
+
if (!poolInfo.isExternallyManaged) {
|
223
|
+
|
224
|
+
// collect tokens from bundle owner
|
225
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
226
|
+
_collectStakingAmount(
|
227
|
+
instanceReader,
|
228
|
+
poolNftId,
|
229
|
+
bundleOwner,
|
230
|
+
amount);
|
231
|
+
}
|
184
232
|
}
|
185
233
|
|
186
|
-
|
187
|
-
|
188
|
-
|
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
|
-
)
|
234
|
+
|
235
|
+
/// @inheritdoc IPoolService
|
236
|
+
function unstake(NftId bundleNftId, Amount amount)
|
193
237
|
external
|
194
238
|
virtual
|
195
|
-
|
239
|
+
// TODO: restricted() (once #462 is done)
|
240
|
+
returns(Amount netAmount)
|
196
241
|
{
|
197
|
-
(
|
242
|
+
_checkNftType(bundleNftId, BUNDLE());
|
243
|
+
|
244
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
198
245
|
InstanceReader instanceReader = instance.getInstanceReader();
|
246
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
247
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
199
248
|
|
200
|
-
|
201
|
-
|
202
|
-
|
249
|
+
if (bundleInfo.poolNftId != poolNftId) {
|
250
|
+
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
251
|
+
}
|
203
252
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
253
|
+
// call bundle service for bookkeeping and additional checks
|
254
|
+
Amount unstakedAmount = _bundleService.unstake(instance, bundleNftId, amount);
|
255
|
+
|
256
|
+
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
257
|
+
// if amount was max, this was set to the available amount
|
258
|
+
|
259
|
+
// TODO: handle performance fees (issue #477)
|
260
|
+
netAmount = unstakedAmount;
|
212
261
|
|
213
|
-
//
|
214
|
-
|
262
|
+
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
263
|
+
_componentService.decreasePoolBalance(
|
264
|
+
instanceStore,
|
265
|
+
poolNftId,
|
266
|
+
unstakedAmount,
|
267
|
+
AmountLib.zero());
|
215
268
|
|
216
|
-
|
269
|
+
|
270
|
+
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount, netAmount);
|
271
|
+
|
272
|
+
// only distribute staking amount when pool is not externally managed
|
273
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
274
|
+
|
275
|
+
// transfer amount to bundle owner
|
276
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
277
|
+
_distributeUnstakingAmount(
|
278
|
+
instanceReader,
|
279
|
+
poolNftId,
|
280
|
+
bundleOwner,
|
281
|
+
netAmount);
|
282
|
+
}
|
217
283
|
}
|
218
284
|
|
219
285
|
|
220
|
-
function
|
286
|
+
function fundPoolWallet(Amount amount)
|
221
287
|
external
|
222
288
|
virtual
|
289
|
+
// restricted()
|
223
290
|
{
|
224
|
-
(
|
291
|
+
(
|
292
|
+
NftId poolNftId,,
|
293
|
+
IInstance instance
|
294
|
+
) = _getAndVerifyActiveComponent(POOL());
|
295
|
+
|
296
|
+
// check that pool is externally managed
|
297
|
+
InstanceReader reader = instance.getInstanceReader();
|
298
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
299
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
300
|
+
}
|
225
301
|
|
226
|
-
|
302
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
303
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
227
304
|
|
228
|
-
|
229
|
-
|
305
|
+
_collectStakingAmount(
|
306
|
+
reader,
|
307
|
+
poolNftId,
|
308
|
+
poolOwner,
|
309
|
+
amount);
|
310
|
+
}
|
230
311
|
|
231
|
-
// TODO get performance fee for pool, transfer of remaining funds + bundle fees to bundle owner
|
232
312
|
|
233
|
-
|
313
|
+
function defundPoolWallet(Amount amount)
|
314
|
+
external
|
315
|
+
virtual
|
316
|
+
// restricted()
|
317
|
+
{
|
318
|
+
(
|
319
|
+
NftId poolNftId,,
|
320
|
+
IInstance instance
|
321
|
+
) = _getAndVerifyActiveComponent(POOL());
|
322
|
+
|
323
|
+
// check that pool is externally managed
|
324
|
+
InstanceReader reader = instance.getInstanceReader();
|
325
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
326
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
327
|
+
}
|
328
|
+
|
329
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
330
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
331
|
+
|
332
|
+
_distributeUnstakingAmount(
|
333
|
+
reader,
|
334
|
+
poolNftId,
|
335
|
+
poolOwner,
|
336
|
+
amount);
|
234
337
|
}
|
235
338
|
|
339
|
+
|
236
340
|
function processSale(
|
237
341
|
NftId bundleNftId,
|
238
|
-
IPolicy.
|
239
|
-
Amount actualAmountTransferred
|
342
|
+
IPolicy.PremiumInfo memory premium
|
240
343
|
)
|
241
344
|
external
|
242
345
|
virtual
|
243
|
-
restricted
|
346
|
+
restricted()
|
244
347
|
{
|
348
|
+
_checkNftType(bundleNftId, BUNDLE());
|
349
|
+
|
245
350
|
IRegistry registry = getRegistry();
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
Amount poolFeeAmount =
|
252
|
-
Amount bundleFeeAmount =
|
253
|
-
Amount
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
poolComponentInfo.feeAmount = poolComponentInfo.feeAmount.add(poolFeeAmount);
|
262
|
-
instance.getInstanceStore().updatePoolSetup(poolObjectInfo.nftId, poolComponentInfo, KEEP_STATE());
|
263
|
-
}
|
351
|
+
NftId poolNftId = registry.getObjectInfo(bundleNftId).parentNftId;
|
352
|
+
IInstance instance = _getInstanceForComponent(
|
353
|
+
registry,
|
354
|
+
registry.getObjectInfo(poolNftId).parentNftId);
|
355
|
+
|
356
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
357
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
358
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
359
|
+
|
360
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
361
|
+
_componentService.increasePoolBalance(
|
362
|
+
instanceStore,
|
363
|
+
poolNftId,
|
364
|
+
bundleNetAmount + bundleFeeAmount,
|
365
|
+
poolFeeAmount);
|
264
366
|
|
265
|
-
|
266
|
-
|
267
|
-
|
367
|
+
_componentService.increaseBundleBalance(
|
368
|
+
instanceStore,
|
369
|
+
bundleNftId,
|
370
|
+
bundleNetAmount,
|
371
|
+
bundleFeeAmount);
|
268
372
|
}
|
269
373
|
|
374
|
+
|
270
375
|
function lockCollateral(
|
271
376
|
IInstance instance,
|
377
|
+
address token,
|
272
378
|
NftId productNftId,
|
273
379
|
NftId applicationNftId,
|
274
|
-
|
275
|
-
Amount
|
380
|
+
NftId bundleNftId,
|
381
|
+
Amount sumInsuredAmount // premium amount after product and distribution fees
|
276
382
|
)
|
277
383
|
external
|
278
384
|
virtual
|
279
|
-
restricted
|
385
|
+
restricted()
|
386
|
+
returns (
|
387
|
+
Amount totalCollateralAmount,
|
388
|
+
Amount localCollateralAmount
|
389
|
+
)
|
280
390
|
{
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
// TODO move this check to application creation and don't repeat this here
|
286
|
-
// ensure that pool for bundle from application matches with pool for product of application
|
287
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
288
|
-
if(bundleInfo.poolNftId != poolNftId) {
|
289
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleInfo.poolNftId, poolNftId);
|
290
|
-
}
|
391
|
+
_checkNftType(productNftId, PRODUCT());
|
392
|
+
_checkNftType(applicationNftId, POLICY());
|
393
|
+
_checkNftType(bundleNftId, BUNDLE());
|
291
394
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
395
|
+
NftId poolNftId;
|
396
|
+
bool poolIsVerifyingApplications;
|
397
|
+
(
|
398
|
+
poolNftId,
|
399
|
+
totalCollateralAmount,
|
400
|
+
localCollateralAmount,
|
401
|
+
poolIsVerifyingApplications
|
402
|
+
) = calculateRequiredCollateral(
|
403
|
+
instance.getInstanceReader(),
|
404
|
+
productNftId,
|
405
|
+
sumInsuredAmount);
|
406
|
+
|
407
|
+
// lock collateral amount from involved bundle
|
302
408
|
_bundleService.lockCollateral(
|
303
409
|
instance,
|
304
410
|
applicationNftId,
|
305
411
|
bundleNftId,
|
306
|
-
|
307
|
-
|
412
|
+
localCollateralAmount);
|
413
|
+
|
414
|
+
// update value locked with staking service
|
415
|
+
_staking.increaseTotalValueLocked(
|
416
|
+
instance.getNftId(),
|
417
|
+
token,
|
418
|
+
totalCollateralAmount);
|
308
419
|
|
309
|
-
//
|
310
|
-
if(
|
311
|
-
|
312
|
-
|
420
|
+
// pool callback when required
|
421
|
+
if (poolIsVerifyingApplications) {
|
422
|
+
IPoolComponent pool = IPoolComponent(
|
423
|
+
getRegistry().getObjectAddress(poolNftId));
|
424
|
+
|
425
|
+
pool.verifyApplication(
|
313
426
|
applicationNftId,
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
427
|
+
bundleNftId,
|
428
|
+
totalCollateralAmount);
|
429
|
+
|
430
|
+
// TODO add logging
|
318
431
|
}
|
319
|
-
}
|
320
432
|
|
433
|
+
// TODO add logging
|
434
|
+
}
|
321
435
|
|
322
|
-
function
|
436
|
+
function processPayout(
|
323
437
|
IInstance instance,
|
438
|
+
address token,
|
324
439
|
NftId policyNftId,
|
325
440
|
IPolicy.PolicyInfo memory policyInfo,
|
326
441
|
Amount payoutAmount
|
327
442
|
)
|
328
443
|
external
|
329
444
|
virtual
|
330
|
-
restricted
|
445
|
+
restricted()
|
331
446
|
{
|
447
|
+
_checkNftType(policyNftId, POLICY());
|
448
|
+
|
449
|
+
NftId bundleNftId = policyInfo.bundleNftId;
|
450
|
+
NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
|
451
|
+
InstanceStore instanceStore = instance.getInstanceStore();
|
452
|
+
|
453
|
+
_componentService.decreasePoolBalance(
|
454
|
+
instanceStore,
|
455
|
+
poolNftId,
|
456
|
+
payoutAmount,
|
457
|
+
AmountLib.zero());
|
458
|
+
|
459
|
+
_componentService.decreaseBundleBalance(
|
460
|
+
instanceStore,
|
461
|
+
bundleNftId,
|
462
|
+
payoutAmount,
|
463
|
+
AmountLib.zero());
|
464
|
+
|
332
465
|
_bundleService.releaseCollateral(
|
333
466
|
instance,
|
334
467
|
policyNftId,
|
335
468
|
policyInfo.bundleNftId,
|
336
469
|
payoutAmount);
|
470
|
+
|
471
|
+
// update value locked with staking service
|
472
|
+
_staking.decreaseTotalValueLocked(
|
473
|
+
instance.getNftId(),
|
474
|
+
token,
|
475
|
+
payoutAmount);
|
337
476
|
}
|
338
477
|
|
339
478
|
|
@@ -341,36 +480,99 @@ contract PoolService is
|
|
341
480
|
/// may only be called by the policy service for unlocked pool components
|
342
481
|
function releaseCollateral(
|
343
482
|
IInstance instance,
|
483
|
+
address token,
|
344
484
|
NftId policyNftId,
|
345
485
|
IPolicy.PolicyInfo memory policyInfo
|
346
486
|
)
|
347
487
|
external
|
348
488
|
virtual
|
349
|
-
restricted
|
489
|
+
restricted()
|
350
490
|
{
|
491
|
+
_checkNftType(policyNftId, POLICY());
|
492
|
+
|
493
|
+
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
494
|
+
|
351
495
|
_bundleService.releaseCollateral(
|
352
496
|
instance,
|
353
497
|
policyNftId,
|
354
498
|
policyInfo.bundleNftId,
|
355
|
-
|
499
|
+
remainingCollateralAmount);
|
356
500
|
|
357
501
|
_bundleService.unlinkPolicy(
|
358
502
|
instance,
|
359
503
|
policyNftId);
|
504
|
+
|
505
|
+
// update value locked with staking service
|
506
|
+
_staking.decreaseTotalValueLocked(
|
507
|
+
instance.getNftId(),
|
508
|
+
token,
|
509
|
+
remainingCollateralAmount);
|
510
|
+
}
|
511
|
+
|
512
|
+
|
513
|
+
function calculateRequiredCollateral(
|
514
|
+
InstanceReader instanceReader,
|
515
|
+
NftId productNftId,
|
516
|
+
Amount sumInsuredAmount
|
517
|
+
)
|
518
|
+
public
|
519
|
+
view
|
520
|
+
returns(
|
521
|
+
NftId poolNftId,
|
522
|
+
Amount totalCollateralAmount,
|
523
|
+
Amount localCollateralAmount,
|
524
|
+
bool poolIsVerifyingApplications
|
525
|
+
)
|
526
|
+
{
|
527
|
+
_checkNftType(productNftId, PRODUCT());
|
528
|
+
|
529
|
+
poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
530
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
531
|
+
poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
532
|
+
|
533
|
+
(
|
534
|
+
totalCollateralAmount,
|
535
|
+
localCollateralAmount
|
536
|
+
) = calculateRequiredCollateral(
|
537
|
+
poolInfo.collateralizationLevel,
|
538
|
+
poolInfo.retentionLevel,
|
539
|
+
sumInsuredAmount);
|
540
|
+
}
|
541
|
+
|
542
|
+
|
543
|
+
function calculateRequiredCollateral(
|
544
|
+
UFixed collateralizationLevel,
|
545
|
+
UFixed retentionLevel,
|
546
|
+
Amount sumInsuredAmount
|
547
|
+
)
|
548
|
+
public
|
549
|
+
pure
|
550
|
+
returns(
|
551
|
+
Amount totalCollateralAmount,
|
552
|
+
Amount localCollateralAmount
|
553
|
+
)
|
554
|
+
{
|
555
|
+
// collateralization is applied to sum insured
|
556
|
+
UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
557
|
+
totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
558
|
+
|
559
|
+
// retention level defines how much capital is required locally
|
560
|
+
localCollateralAmount = AmountLib.toAmount(
|
561
|
+
(retentionLevel * totalUFixed).toInt());
|
360
562
|
}
|
361
563
|
|
362
564
|
|
363
565
|
function _processStakingFees(
|
364
|
-
|
566
|
+
Fee memory stakingFee,
|
365
567
|
Amount stakingAmount
|
366
568
|
)
|
367
569
|
internal
|
570
|
+
pure
|
368
571
|
returns (Amount stakingNetAmount)
|
369
572
|
{
|
370
573
|
stakingNetAmount = stakingAmount;
|
371
574
|
|
372
575
|
// check if any staking fees apply
|
373
|
-
Fee memory stakingFee = abi.decode(componentInfo.data, (IComponents.PoolInfo)).stakingFee;
|
374
576
|
if (FeeLib.gtz(stakingFee)) {
|
375
577
|
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
376
578
|
stakingNetAmount = netAmount;
|
@@ -380,25 +582,39 @@ contract PoolService is
|
|
380
582
|
}
|
381
583
|
|
382
584
|
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
address
|
388
|
-
Amount
|
585
|
+
/// @dev transfers the specified amount from the "from account" to the pool's wallet
|
586
|
+
function _collectStakingAmount(
|
587
|
+
InstanceReader reader,
|
588
|
+
NftId poolNftId,
|
589
|
+
address from,
|
590
|
+
Amount amount
|
389
591
|
)
|
390
592
|
internal
|
391
593
|
{
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
tokenHandler.transfer(
|
397
|
-
bundleOwner,
|
398
|
-
poolWallet,
|
399
|
-
stakingAmount
|
400
|
-
);
|
401
|
-
}
|
594
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
595
|
+
info.tokenHandler.collectTokens(
|
596
|
+
from,
|
597
|
+
amount);
|
402
598
|
}
|
403
599
|
|
600
|
+
/// @dev distributes the specified amount from the pool's wallet to the "to account"
|
601
|
+
function _distributeUnstakingAmount(
|
602
|
+
InstanceReader reader,
|
603
|
+
NftId poolNftId,
|
604
|
+
address to,
|
605
|
+
Amount amount
|
606
|
+
)
|
607
|
+
internal
|
608
|
+
{
|
609
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
610
|
+
info.tokenHandler.distributeTokens(
|
611
|
+
info.tokenHandler.getWallet(),
|
612
|
+
to,
|
613
|
+
amount);
|
614
|
+
}
|
615
|
+
|
616
|
+
|
617
|
+
function _getDomain() internal pure override returns(ObjectType) {
|
618
|
+
return POOL();
|
619
|
+
}
|
404
620
|
}
|