@etherisc/gif-next 0.0.2-4b70713-571 → 0.0.2-4c19d89-776
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 +46 -8
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +203 -77
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
- package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +142 -44
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +165 -391
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +103 -321
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +321 -369
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +129 -119
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +115 -143
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +196 -133
- 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 +1475 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -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 +1479 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +158 -57
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +105 -103
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +194 -154
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +446 -143
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1004 -305
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +131 -266
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +651 -514
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -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 +1 -1
- package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +114 -340
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
- package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +102 -130
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +90 -308
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +112 -386
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +170 -443
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +106 -148
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +96 -143
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +124 -219
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +313 -350
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +109 -394
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +461 -593
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +142 -108
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +134 -184
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +91 -93
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +243 -400
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +94 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +136 -83
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +235 -202
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +67 -8
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +227 -314
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -122
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +241 -398
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +659 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +732 -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 +334 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +144 -41
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
- 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 +540 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +349 -167
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +420 -246
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +501 -626
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -128
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +446 -276
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +102 -130
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +89 -307
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
- package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
- 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 +57 -111
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -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 +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +76 -106
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +149 -108
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +55 -24
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +33 -9
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +3 -3
- 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/Key32Set.sol/LibKey32Set.dbg.json +4 -0
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +16 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.json +47 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/accounting/AccountingService.sol +262 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +45 -0
- package/contracts/authorization/AccessAdmin.sol +232 -134
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -202
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +17 -10
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +3 -1
- package/contracts/authorization/ServiceAuthorization.sol +26 -10
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +42 -48
- package/contracts/distribution/DistributionService.sol +125 -104
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +28 -24
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +90 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +437 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +21 -37
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +59 -66
- package/contracts/instance/InstanceAdmin.sol +256 -85
- package/contracts/instance/InstanceAuthorizationV3.sol +56 -47
- package/contracts/instance/InstanceReader.sol +275 -43
- package/contracts/instance/InstanceService.sol +125 -164
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +23 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +11 -4
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +14 -15
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +26 -25
- package/contracts/instance/module/IRisk.sol +3 -0
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/BasicOracle.sol +0 -1
- package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +7 -17
- package/contracts/oracle/OracleService.sol +113 -81
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +35 -26
- package/contracts/pool/BasicPoolAuthorization.sol +29 -11
- package/contracts/pool/BundleService.sol +119 -162
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +20 -38
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +90 -83
- package/contracts/pool/Pool.sol +140 -127
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +506 -311
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +72 -43
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +13 -44
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +368 -153
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +6 -2
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +53 -36
- package/contracts/product/IPricingService.sol +10 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/{IProductService.sol → IRiskService.sol} +6 -9
- package/contracts/product/PolicyService.sol +476 -270
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +66 -62
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +169 -92
- package/contracts/product/RiskService.sol +144 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +60 -28
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +357 -203
- package/contracts/registry/RegistryAdmin.sol +171 -182
- package/contracts/registry/RegistryService.sol +37 -48
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +258 -232
- package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +74 -127
- package/contracts/shared/ComponentService.sol +426 -385
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +28 -17
- package/contracts/shared/ContractLib.sol +253 -0
- package/contracts/shared/IComponent.sol +8 -17
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +73 -48
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +29 -9
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +55 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +15 -32
- package/contracts/shared/TokenHandler.sol +309 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +7 -9
- package/contracts/staking/IStakingService.sol +8 -3
- package/contracts/staking/StakeManagerLib.sol +19 -26
- package/contracts/staking/Staking.sol +71 -61
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +13 -6
- package/contracts/staking/StakingService.sol +54 -35
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +7 -0
- package/contracts/type/ObjectType.sol +52 -20
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Seconds.sol +8 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +10 -5
- package/contracts/type/UFixed.sol +13 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +68 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +5 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
- package/contracts/authorization/IModuleAuthorization.sol +0 -21
- package/contracts/authorization/ModuleAuthorization.sol +0 -78
- package/contracts/instance/module/IAccess.sol +0 -46
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
|
@@ -1,45 +1,44 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.20;
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
|
6
5
|
import {IBundle} from "../instance/module/IBundle.sol";
|
|
7
6
|
import {IBundleService} from "./IBundleService.sol";
|
|
8
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
|
9
8
|
import {IComponentService} from "../shared/IComponentService.sol";
|
|
10
9
|
import {IInstance} from "../instance/IInstance.sol";
|
|
11
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
|
12
10
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
|
11
|
+
import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
|
|
12
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
|
13
13
|
import {IPoolService} from "./IPoolService.sol";
|
|
14
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
|
14
15
|
import {IRegistry} from "../registry/IRegistry.sol";
|
|
15
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
|
16
16
|
import {IStaking} from "../staking/IStaking.sol";
|
|
17
17
|
|
|
18
18
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
|
19
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
|
20
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
|
21
|
+
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
22
|
+
import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
24
23
|
import {KEEP_STATE} from "../type/StateId.sol";
|
|
25
|
-
import {
|
|
24
|
+
import {NftId} from "../type/NftId.sol";
|
|
25
|
+
import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
|
26
|
+
import {PayoutId} from "../type/PayoutId.sol";
|
|
27
|
+
import {PoolLib} from "./PoolLib.sol";
|
|
28
|
+
import {Service} from "../shared/Service.sol";
|
|
26
29
|
import {TokenHandler} from "../shared/TokenHandler.sol";
|
|
27
30
|
import {UFixed} from "../type/UFixed.sol";
|
|
28
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
|
29
|
-
import {InstanceReader} from "../instance/InstanceReader.sol";
|
|
30
|
-
import {InstanceStore} from "../instance/InstanceStore.sol";
|
|
31
31
|
|
|
32
32
|
string constant POOL_SERVICE_NAME = "PoolService";
|
|
33
33
|
|
|
34
|
+
|
|
34
35
|
contract PoolService is
|
|
35
|
-
|
|
36
|
+
Service,
|
|
36
37
|
IPoolService
|
|
37
38
|
{
|
|
39
|
+
IAccountingService private _accountingService;
|
|
38
40
|
IBundleService internal _bundleService;
|
|
39
41
|
IComponentService internal _componentService;
|
|
40
|
-
IInstanceService private _instanceService;
|
|
41
|
-
IRegistryService private _registryService;
|
|
42
|
-
|
|
43
42
|
IStaking private _staking;
|
|
44
43
|
|
|
45
44
|
function _initialize(
|
|
@@ -47,214 +46,191 @@ contract PoolService is
|
|
|
47
46
|
bytes memory data
|
|
48
47
|
)
|
|
49
48
|
internal
|
|
50
|
-
initializer
|
|
51
49
|
virtual override
|
|
50
|
+
initializer()
|
|
52
51
|
{
|
|
53
52
|
(
|
|
54
|
-
address
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
) = abi.decode(data, (address, address, address));
|
|
53
|
+
address authority,
|
|
54
|
+
address registry
|
|
55
|
+
) = abi.decode(data, (address, address));
|
|
58
56
|
|
|
59
|
-
|
|
57
|
+
__Service_init(authority, registry, owner);
|
|
60
58
|
|
|
61
|
-
|
|
59
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
|
62
60
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
|
63
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
|
64
61
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
|
65
|
-
|
|
66
62
|
_staking = IStaking(getRegistry().getStakingAddress());
|
|
67
63
|
|
|
68
|
-
|
|
64
|
+
_registerInterface(type(IPoolService).interfaceId);
|
|
69
65
|
}
|
|
70
66
|
|
|
71
67
|
|
|
72
|
-
|
|
68
|
+
/// @inheritdoc IPoolService
|
|
69
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
|
73
70
|
external
|
|
74
71
|
virtual
|
|
75
72
|
{
|
|
76
|
-
|
|
77
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
73
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
|
78
74
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
75
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
|
79
76
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
|
83
|
-
|
|
84
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
|
77
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
|
78
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
|
85
79
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
|
86
80
|
|
|
87
|
-
emit
|
|
88
|
-
*/
|
|
81
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
|
89
82
|
}
|
|
90
83
|
|
|
91
|
-
|
|
84
|
+
|
|
85
|
+
function closeBundle(NftId bundleNftId)
|
|
92
86
|
external
|
|
93
87
|
virtual
|
|
94
88
|
{
|
|
95
|
-
(
|
|
96
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
|
89
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
97
90
|
|
|
98
|
-
|
|
99
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
|
91
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
|
100
92
|
|
|
101
|
-
//
|
|
102
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
|
103
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
|
104
|
-
}
|
|
93
|
+
// TODO get performance fee for pool (#477)
|
|
105
94
|
|
|
106
|
-
|
|
107
|
-
|
|
95
|
+
// releasing collateral in bundle
|
|
96
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
|
97
|
+
|
|
98
|
+
_accountingService.decreasePoolBalance(
|
|
99
|
+
instance.getInstanceStore(),
|
|
100
|
+
poolNftId,
|
|
101
|
+
unstakedAmount + feeAmount,
|
|
102
|
+
AmountLib.zero());
|
|
103
|
+
|
|
104
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
|
108
105
|
|
|
109
|
-
|
|
106
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
|
107
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
|
108
|
+
poolComponentInfo.tokenHandler.pushToken(
|
|
109
|
+
getRegistry().ownerOf(bundleNftId),
|
|
110
|
+
unstakedAmount + feeAmount);
|
|
111
|
+
}
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
/// @inheritdoc IPoolService
|
|
116
|
+
function processFundedClaim(
|
|
117
|
+
NftId policyNftId,
|
|
118
|
+
ClaimId claimId,
|
|
119
|
+
Amount availableAmount
|
|
120
|
+
)
|
|
118
121
|
external
|
|
119
122
|
virtual
|
|
120
123
|
{
|
|
121
|
-
(
|
|
122
|
-
|
|
123
|
-
IComponents.PoolInfo memory poolInfo = instance.getInstanceReader().getPoolInfo(poolNftId);
|
|
124
|
-
poolInfo.poolFee = poolFee;
|
|
125
|
-
poolInfo.stakingFee = stakingFee;
|
|
126
|
-
poolInfo.performanceFee = performanceFee;
|
|
124
|
+
_checkNftType(policyNftId, POLICY());
|
|
127
125
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// TODO add logging
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/// @inheritdoc IPoolService
|
|
134
|
-
function createBundle(
|
|
135
|
-
address bundleOwner, // initial bundle owner
|
|
136
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
|
137
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
|
138
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
|
139
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
|
140
|
-
)
|
|
141
|
-
external
|
|
142
|
-
virtual
|
|
143
|
-
returns(NftId bundleNftId)
|
|
144
|
-
{
|
|
145
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
126
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
|
146
127
|
InstanceReader instanceReader = instance.getInstanceReader();
|
|
128
|
+
NftId productNftId = getRegistry().getParentNftId(poolNftId);
|
|
129
|
+
|
|
130
|
+
// check policy matches with calling pool
|
|
131
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
|
132
|
+
if(policyInfo.productNftId != productNftId) {
|
|
133
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
|
134
|
+
policyNftId,
|
|
135
|
+
policyInfo.productNftId,
|
|
136
|
+
productNftId);
|
|
137
|
+
}
|
|
147
138
|
|
|
148
|
-
(
|
|
149
|
-
Amount stakingFeeAmount,
|
|
150
|
-
Amount stakingNetAmount
|
|
151
|
-
) = FeeLib.calculateFee(
|
|
152
|
-
_getStakingFee(instanceReader, poolNftId),
|
|
153
|
-
stakingAmount);
|
|
154
|
-
|
|
155
|
-
// TODO: staking amount must be be > maxCapitalAmount
|
|
156
|
-
|
|
157
|
-
bundleNftId = _bundleService.create(
|
|
158
|
-
instance,
|
|
159
|
-
poolNftId,
|
|
160
|
-
bundleOwner,
|
|
161
|
-
fee,
|
|
162
|
-
stakingNetAmount,
|
|
163
|
-
lifetime,
|
|
164
|
-
filter);
|
|
165
|
-
|
|
166
|
-
// pool book keeping
|
|
167
|
-
_componentService.increasePoolBalance(
|
|
168
|
-
instance.getInstanceStore(),
|
|
169
|
-
poolNftId,
|
|
170
|
-
stakingNetAmount,
|
|
171
|
-
stakingFeeAmount);
|
|
172
|
-
|
|
173
|
-
// pool bookkeeping and collect tokens from bundle owner
|
|
174
|
-
_collectStakingAmount(
|
|
175
|
-
instanceReader,
|
|
176
|
-
poolNftId,
|
|
177
|
-
bundleOwner,
|
|
178
|
-
stakingAmount);
|
|
179
|
-
|
|
180
|
-
emit LogPoolServiceBundleCreated(instance.getNftId(), poolNftId, bundleNftId);
|
|
181
|
-
}
|
|
139
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
|
182
140
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
{
|
|
189
|
-
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
|
190
|
-
return instanceReader.getProductInfo(productNftId).stakingFee;
|
|
141
|
+
// callback to product component if applicable
|
|
142
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
|
143
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
|
144
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
|
145
|
+
}
|
|
191
146
|
}
|
|
192
147
|
|
|
193
|
-
function closeBundle(NftId bundleNftId)
|
|
194
|
-
external
|
|
195
|
-
virtual
|
|
196
|
-
{
|
|
197
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
|
198
148
|
|
|
199
|
-
|
|
149
|
+
// function _checkAndGetPoolInfo(NftId bundleNftId)
|
|
150
|
+
// internal
|
|
151
|
+
// view
|
|
152
|
+
// returns (
|
|
153
|
+
// InstanceReader instanceReader,
|
|
154
|
+
// InstanceStore instanceStore,
|
|
155
|
+
// NftId instanceNftId,
|
|
156
|
+
// NftId poolNftId,
|
|
157
|
+
// IComponents.PoolInfo memory poolInfo
|
|
158
|
+
// )
|
|
159
|
+
// {
|
|
160
|
+
// _checkNftType(bundleNftId, BUNDLE());
|
|
200
161
|
|
|
201
|
-
|
|
202
|
-
|
|
162
|
+
// (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
|
163
|
+
// instanceReader = instance.getInstanceReader();
|
|
164
|
+
// instanceStore = instance.getInstanceStore();
|
|
165
|
+
// instanceNftId = instance.getNftId();
|
|
166
|
+
// poolInfo = instanceReader.getPoolInfo(poolNftId);
|
|
203
167
|
|
|
204
|
-
|
|
168
|
+
// if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
|
|
169
|
+
// revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
|
170
|
+
// }
|
|
171
|
+
// }
|
|
205
172
|
|
|
206
|
-
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
|
207
|
-
}
|
|
208
173
|
|
|
209
174
|
/// @inheritdoc IPoolService
|
|
210
175
|
function stake(NftId bundleNftId, Amount amount)
|
|
211
176
|
external
|
|
212
177
|
virtual
|
|
213
178
|
// TODO: restricted() (once #462 is done)
|
|
214
|
-
returns(
|
|
179
|
+
returns(
|
|
180
|
+
Amount netAmount
|
|
181
|
+
)
|
|
215
182
|
{
|
|
216
|
-
(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
183
|
+
(
|
|
184
|
+
InstanceReader instanceReader,
|
|
185
|
+
InstanceStore instanceStore,
|
|
186
|
+
NftId instanceNftId,
|
|
187
|
+
NftId poolNftId,
|
|
188
|
+
IComponents.PoolInfo memory poolInfo
|
|
189
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
|
224
190
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
191
|
+
{
|
|
192
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
|
193
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
|
194
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
|
195
|
+
}
|
|
228
196
|
}
|
|
229
197
|
|
|
230
198
|
// calculate fees
|
|
199
|
+
Amount feeAmount;
|
|
231
200
|
(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
) =
|
|
235
|
-
|
|
201
|
+
feeAmount,
|
|
202
|
+
netAmount
|
|
203
|
+
) = PoolLib.calculateStakingAmounts(
|
|
204
|
+
getRegistry(),
|
|
205
|
+
instanceReader,
|
|
206
|
+
poolNftId,
|
|
236
207
|
amount);
|
|
237
208
|
|
|
238
|
-
// do all the
|
|
239
|
-
|
|
240
|
-
|
|
209
|
+
// do all the book keeping
|
|
210
|
+
_accountingService.increasePoolBalance(
|
|
211
|
+
instanceStore,
|
|
241
212
|
poolNftId,
|
|
242
213
|
netAmount,
|
|
243
214
|
feeAmount);
|
|
244
215
|
|
|
245
|
-
_bundleService.stake(
|
|
216
|
+
_bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
|
|
246
217
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
poolNftId,
|
|
252
|
-
bundleOwner,
|
|
253
|
-
amount);
|
|
218
|
+
emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
|
|
219
|
+
|
|
220
|
+
// only collect staking amount when pool is not externally managed
|
|
221
|
+
if (!poolInfo.isExternallyManaged) {
|
|
254
222
|
|
|
255
|
-
|
|
223
|
+
// collect tokens from bundle owner
|
|
224
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
|
225
|
+
_pullStakingAmount(
|
|
226
|
+
instanceReader,
|
|
227
|
+
poolNftId,
|
|
228
|
+
bundleOwner,
|
|
229
|
+
amount);
|
|
230
|
+
}
|
|
256
231
|
}
|
|
257
232
|
|
|
233
|
+
|
|
258
234
|
/// @inheritdoc IPoolService
|
|
259
235
|
function unstake(NftId bundleNftId, Amount amount)
|
|
260
236
|
external
|
|
@@ -262,94 +238,129 @@ contract PoolService is
|
|
|
262
238
|
// TODO: restricted() (once #462 is done)
|
|
263
239
|
returns(Amount netAmount)
|
|
264
240
|
{
|
|
265
|
-
(
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
if (amount.eqz()) {
|
|
275
|
-
revert ErrorPoolServiceAmountIsZero();
|
|
276
|
-
}
|
|
241
|
+
(
|
|
242
|
+
InstanceReader instanceReader,
|
|
243
|
+
InstanceStore instanceStore,
|
|
244
|
+
NftId instanceNftId,
|
|
245
|
+
NftId poolNftId,
|
|
246
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
|
277
247
|
|
|
278
248
|
// call bundle service for bookkeeping and additional checks
|
|
279
|
-
Amount unstakedAmount = _bundleService.unstake(
|
|
249
|
+
Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
|
|
280
250
|
|
|
281
251
|
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
|
282
252
|
// if amount was max, this was set to the available amount
|
|
283
253
|
|
|
284
254
|
// TODO: handle performance fees (issue #477)
|
|
255
|
+
netAmount = unstakedAmount;
|
|
285
256
|
|
|
286
257
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
|
287
|
-
|
|
258
|
+
_accountingService.decreasePoolBalance(
|
|
288
259
|
instanceStore,
|
|
289
260
|
poolNftId,
|
|
290
261
|
unstakedAmount,
|
|
291
262
|
AmountLib.zero());
|
|
292
263
|
|
|
293
|
-
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
|
294
|
-
address poolWallet = poolComponentInfo.wallet;
|
|
295
264
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
265
|
+
emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
|
|
266
|
+
|
|
267
|
+
// only distribute staking amount when pool is not externally managed
|
|
268
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
|
269
|
+
|
|
270
|
+
// transfer amount to bundle owner
|
|
271
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
|
272
|
+
_pushUnstakingAmount(
|
|
273
|
+
instanceReader,
|
|
274
|
+
poolNftId,
|
|
275
|
+
bundleOwner,
|
|
276
|
+
netAmount);
|
|
303
277
|
}
|
|
278
|
+
}
|
|
304
279
|
|
|
305
|
-
// transfer amount to bundle owner
|
|
306
|
-
address owner = getRegistry().ownerOf(bundleNftId);
|
|
307
|
-
// TODO: centralize token handling (issue #471)
|
|
308
|
-
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
|
|
309
|
-
|
|
310
|
-
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
|
311
280
|
|
|
312
|
-
|
|
281
|
+
function fundPoolWallet(Amount amount)
|
|
282
|
+
external
|
|
283
|
+
virtual
|
|
284
|
+
// restricted()
|
|
285
|
+
{
|
|
286
|
+
(
|
|
287
|
+
NftId poolNftId,
|
|
288
|
+
IInstance instance
|
|
289
|
+
) = _getAndVerifyActivePool();
|
|
290
|
+
|
|
291
|
+
// check that pool is externally managed
|
|
292
|
+
InstanceReader reader = instance.getInstanceReader();
|
|
293
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
|
294
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
|
298
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
|
299
|
+
|
|
300
|
+
_pullStakingAmount(
|
|
301
|
+
reader,
|
|
302
|
+
poolNftId,
|
|
303
|
+
poolOwner,
|
|
304
|
+
amount);
|
|
313
305
|
}
|
|
314
306
|
|
|
315
|
-
|
|
316
|
-
|
|
307
|
+
|
|
308
|
+
function defundPoolWallet(Amount amount)
|
|
309
|
+
external
|
|
317
310
|
virtual
|
|
318
|
-
|
|
319
|
-
returns (Fee memory performanceFee)
|
|
311
|
+
// restricted()
|
|
320
312
|
{
|
|
321
|
-
|
|
322
|
-
|
|
313
|
+
(
|
|
314
|
+
NftId poolNftId,
|
|
315
|
+
IInstance instance
|
|
316
|
+
) = _getAndVerifyActivePool();
|
|
317
|
+
|
|
318
|
+
// check that pool is externally managed
|
|
319
|
+
InstanceReader reader = instance.getInstanceReader();
|
|
320
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
|
321
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
|
325
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
|
326
|
+
|
|
327
|
+
_pushUnstakingAmount(
|
|
328
|
+
reader,
|
|
329
|
+
poolNftId,
|
|
330
|
+
poolOwner,
|
|
331
|
+
amount);
|
|
323
332
|
}
|
|
324
333
|
|
|
334
|
+
|
|
325
335
|
function processSale(
|
|
326
336
|
NftId bundleNftId,
|
|
327
|
-
IPolicy.
|
|
337
|
+
IPolicy.PremiumInfo memory premium
|
|
328
338
|
)
|
|
329
339
|
external
|
|
330
340
|
virtual
|
|
331
341
|
restricted()
|
|
332
342
|
{
|
|
343
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
344
|
+
|
|
333
345
|
IRegistry registry = getRegistry();
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
|
346
|
+
NftId poolNftId = registry.getParentNftId(bundleNftId);
|
|
347
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
|
348
|
+
IInstance instance = IInstance(instanceAddress);
|
|
338
349
|
|
|
339
|
-
Amount poolFeeAmount =
|
|
340
|
-
Amount bundleFeeAmount =
|
|
341
|
-
Amount bundleNetAmount =
|
|
350
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
|
351
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
|
352
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
|
342
353
|
|
|
343
354
|
InstanceStore instanceStore = instance.getInstanceStore();
|
|
344
|
-
|
|
355
|
+
_accountingService.increasePoolBalance(
|
|
345
356
|
instanceStore,
|
|
346
|
-
|
|
357
|
+
poolNftId,
|
|
347
358
|
bundleNetAmount + bundleFeeAmount,
|
|
348
359
|
poolFeeAmount);
|
|
349
360
|
|
|
350
|
-
|
|
361
|
+
_accountingService.increaseBundleBalanceForPool(
|
|
351
362
|
instanceStore,
|
|
352
|
-
|
|
363
|
+
bundleNftId,
|
|
353
364
|
bundleNetAmount,
|
|
354
365
|
bundleFeeAmount);
|
|
355
366
|
}
|
|
@@ -367,14 +378,22 @@ contract PoolService is
|
|
|
367
378
|
virtual
|
|
368
379
|
restricted()
|
|
369
380
|
returns (
|
|
370
|
-
Amount
|
|
371
|
-
Amount
|
|
381
|
+
Amount totalCollateralAmount,
|
|
382
|
+
Amount localCollateralAmount
|
|
372
383
|
)
|
|
373
384
|
{
|
|
385
|
+
_checkNftType(productNftId, PRODUCT());
|
|
386
|
+
_checkNftType(applicationNftId, POLICY());
|
|
387
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
388
|
+
|
|
389
|
+
NftId poolNftId;
|
|
390
|
+
bool poolIsVerifyingApplications;
|
|
374
391
|
(
|
|
392
|
+
poolNftId,
|
|
393
|
+
totalCollateralAmount,
|
|
375
394
|
localCollateralAmount,
|
|
376
|
-
|
|
377
|
-
) = calculateRequiredCollateral(
|
|
395
|
+
poolIsVerifyingApplications
|
|
396
|
+
) = PoolLib.calculateRequiredCollateral(
|
|
378
397
|
instance.getInstanceReader(),
|
|
379
398
|
productNftId,
|
|
380
399
|
sumInsuredAmount);
|
|
@@ -392,36 +411,172 @@ contract PoolService is
|
|
|
392
411
|
token,
|
|
393
412
|
totalCollateralAmount);
|
|
394
413
|
|
|
395
|
-
//
|
|
396
|
-
|
|
397
|
-
|
|
414
|
+
// pool callback when required
|
|
415
|
+
if (poolIsVerifyingApplications) {
|
|
416
|
+
IPoolComponent pool = IPoolComponent(
|
|
417
|
+
getRegistry().getObjectAddress(poolNftId));
|
|
398
418
|
|
|
419
|
+
pool.verifyApplication(
|
|
420
|
+
applicationNftId,
|
|
421
|
+
bundleNftId,
|
|
422
|
+
totalCollateralAmount);
|
|
423
|
+
|
|
424
|
+
// TODO add logging
|
|
399
425
|
}
|
|
400
|
-
}
|
|
401
426
|
|
|
427
|
+
// TODO add logging
|
|
428
|
+
}
|
|
402
429
|
|
|
403
|
-
function
|
|
404
|
-
|
|
405
|
-
|
|
430
|
+
function processPayout(
|
|
431
|
+
InstanceReader instanceReader,
|
|
432
|
+
InstanceStore instanceStore,
|
|
433
|
+
NftId productNftId,
|
|
406
434
|
NftId policyNftId,
|
|
407
|
-
|
|
408
|
-
|
|
435
|
+
NftId bundleNftId,
|
|
436
|
+
PayoutId payoutId,
|
|
437
|
+
Amount payoutAmount,
|
|
438
|
+
address payoutBeneficiary
|
|
409
439
|
)
|
|
410
440
|
external
|
|
411
441
|
virtual
|
|
412
442
|
restricted()
|
|
413
443
|
{
|
|
444
|
+
// checks
|
|
445
|
+
_checkNftType(policyNftId, POLICY());
|
|
446
|
+
|
|
447
|
+
// effects
|
|
448
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
|
449
|
+
|
|
450
|
+
_accountingService.decreasePoolBalance(
|
|
451
|
+
instanceStore,
|
|
452
|
+
poolNftId,
|
|
453
|
+
payoutAmount,
|
|
454
|
+
AmountLib.zero());
|
|
455
|
+
|
|
456
|
+
_accountingService.decreaseBundleBalanceForPool(
|
|
457
|
+
instanceStore,
|
|
458
|
+
bundleNftId,
|
|
459
|
+
payoutAmount,
|
|
460
|
+
AmountLib.zero());
|
|
461
|
+
|
|
414
462
|
_bundleService.releaseCollateral(
|
|
415
|
-
|
|
463
|
+
instanceStore,
|
|
416
464
|
policyNftId,
|
|
417
|
-
|
|
465
|
+
bundleNftId,
|
|
418
466
|
payoutAmount);
|
|
419
467
|
|
|
420
468
|
// update value locked with staking service
|
|
469
|
+
TokenHandler poolTokenHandler = TokenHandler(
|
|
470
|
+
instanceReader.getTokenHandler(
|
|
471
|
+
poolNftId));
|
|
472
|
+
|
|
421
473
|
_staking.decreaseTotalValueLocked(
|
|
422
|
-
|
|
423
|
-
|
|
474
|
+
instanceReader.getInstanceNftId(),
|
|
475
|
+
address(poolTokenHandler.TOKEN()),
|
|
424
476
|
payoutAmount);
|
|
477
|
+
|
|
478
|
+
// interactions
|
|
479
|
+
_transferTokenAndNotifyPolicyHolder(
|
|
480
|
+
instanceReader,
|
|
481
|
+
poolTokenHandler,
|
|
482
|
+
productNftId,
|
|
483
|
+
policyNftId,
|
|
484
|
+
payoutId,
|
|
485
|
+
payoutAmount,
|
|
486
|
+
payoutBeneficiary);
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
function _transferTokenAndNotifyPolicyHolder(
|
|
490
|
+
InstanceReader instanceReader,
|
|
491
|
+
TokenHandler poolTokenHandler,
|
|
492
|
+
NftId productNftId,
|
|
493
|
+
NftId policyNftId,
|
|
494
|
+
PayoutId payoutId,
|
|
495
|
+
Amount payoutAmount,
|
|
496
|
+
address payoutBeneficiary
|
|
497
|
+
)
|
|
498
|
+
internal
|
|
499
|
+
{
|
|
500
|
+
(
|
|
501
|
+
Amount netPayoutAmount,
|
|
502
|
+
Amount processingFeeAmount,
|
|
503
|
+
address beneficiary
|
|
504
|
+
) = PoolLib.calculatePayoutAmounts(
|
|
505
|
+
getRegistry(),
|
|
506
|
+
instanceReader,
|
|
507
|
+
productNftId,
|
|
508
|
+
policyNftId,
|
|
509
|
+
payoutAmount,
|
|
510
|
+
payoutBeneficiary);
|
|
511
|
+
|
|
512
|
+
// 1st token tx to payout to beneficiary
|
|
513
|
+
poolTokenHandler.pushToken(
|
|
514
|
+
beneficiary,
|
|
515
|
+
netPayoutAmount);
|
|
516
|
+
|
|
517
|
+
// 2nd token tx to transfer processing fees to product wallet
|
|
518
|
+
// if processingFeeAmount > 0
|
|
519
|
+
if (processingFeeAmount.gtz()) {
|
|
520
|
+
poolTokenHandler.pushToken(
|
|
521
|
+
instanceReader.getWallet(productNftId),
|
|
522
|
+
processingFeeAmount);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// callback to policy holder if applicable
|
|
526
|
+
_policyHolderPayoutExecuted(
|
|
527
|
+
policyNftId,
|
|
528
|
+
payoutId,
|
|
529
|
+
beneficiary,
|
|
530
|
+
netPayoutAmount);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
/// @inheritdoc IPoolService
|
|
535
|
+
function withdrawBundleFees(
|
|
536
|
+
NftId bundleNftId,
|
|
537
|
+
Amount amount
|
|
538
|
+
)
|
|
539
|
+
public
|
|
540
|
+
virtual
|
|
541
|
+
restricted()
|
|
542
|
+
returns (Amount withdrawnAmount)
|
|
543
|
+
{
|
|
544
|
+
// checks
|
|
545
|
+
_checkNftType(bundleNftId, BUNDLE());
|
|
546
|
+
|
|
547
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
|
548
|
+
InstanceReader reader = instance.getInstanceReader();
|
|
549
|
+
|
|
550
|
+
// determine withdrawn amount
|
|
551
|
+
withdrawnAmount = amount;
|
|
552
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
|
553
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
|
554
|
+
} else {
|
|
555
|
+
if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
|
|
556
|
+
revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// effects
|
|
561
|
+
// decrease fee counters by withdrawnAmount
|
|
562
|
+
{
|
|
563
|
+
InstanceStore store = instance.getInstanceStore();
|
|
564
|
+
// decrease fee amount of the bundle
|
|
565
|
+
_accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
|
566
|
+
// decrease pool balance
|
|
567
|
+
_accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
// interactions
|
|
571
|
+
// transfer amount to bundle owner
|
|
572
|
+
{
|
|
573
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
|
574
|
+
TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
|
|
575
|
+
address token = address(tokenHandler.TOKEN());
|
|
576
|
+
emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
|
|
577
|
+
|
|
578
|
+
tokenHandler.pushToken(bundleOwner, withdrawnAmount);
|
|
579
|
+
}
|
|
425
580
|
}
|
|
426
581
|
|
|
427
582
|
|
|
@@ -429,7 +584,6 @@ contract PoolService is
|
|
|
429
584
|
/// may only be called by the policy service for unlocked pool components
|
|
430
585
|
function releaseCollateral(
|
|
431
586
|
IInstance instance,
|
|
432
|
-
address token,
|
|
433
587
|
NftId policyNftId,
|
|
434
588
|
IPolicy.PolicyInfo memory policyInfo
|
|
435
589
|
)
|
|
@@ -437,124 +591,165 @@ contract PoolService is
|
|
|
437
591
|
virtual
|
|
438
592
|
restricted()
|
|
439
593
|
{
|
|
594
|
+
_checkNftType(policyNftId, POLICY());
|
|
595
|
+
|
|
440
596
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
|
441
597
|
|
|
442
598
|
_bundleService.releaseCollateral(
|
|
443
|
-
instance,
|
|
599
|
+
instance.getInstanceStore(),
|
|
444
600
|
policyNftId,
|
|
445
601
|
policyInfo.bundleNftId,
|
|
446
602
|
remainingCollateralAmount);
|
|
447
603
|
|
|
448
|
-
_bundleService.unlinkPolicy(
|
|
449
|
-
instance,
|
|
450
|
-
policyNftId);
|
|
451
|
-
|
|
452
604
|
// update value locked with staking service
|
|
605
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
|
453
606
|
_staking.decreaseTotalValueLocked(
|
|
454
|
-
|
|
455
|
-
|
|
607
|
+
instanceReader.getInstanceNftId(),
|
|
608
|
+
address(instanceReader.getToken(policyInfo.productNftId)),
|
|
456
609
|
remainingCollateralAmount);
|
|
457
610
|
}
|
|
458
611
|
|
|
459
612
|
|
|
460
|
-
function calculateRequiredCollateral(
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
613
|
+
// function calculateRequiredCollateral(
|
|
614
|
+
// InstanceReader instanceReader,
|
|
615
|
+
// NftId productNftId,
|
|
616
|
+
// Amount sumInsuredAmount
|
|
617
|
+
// )
|
|
618
|
+
// public
|
|
619
|
+
// view
|
|
620
|
+
// returns(
|
|
621
|
+
// NftId poolNftId,
|
|
622
|
+
// Amount totalCollateralAmount,
|
|
623
|
+
// Amount localCollateralAmount,
|
|
624
|
+
// bool poolIsVerifyingApplications
|
|
625
|
+
// )
|
|
626
|
+
// {
|
|
627
|
+
// return CollateralLib.calculateRequiredCollateral(
|
|
628
|
+
// instanceReader,
|
|
629
|
+
// productNftId,
|
|
630
|
+
// sumInsuredAmount);
|
|
631
|
+
// }
|
|
632
|
+
|
|
633
|
+
// _checkNftType(productNftId, PRODUCT());
|
|
634
|
+
|
|
635
|
+
// poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
|
636
|
+
// IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
|
637
|
+
// poolIsVerifyingApplications = poolInfo.isVerifyingApplications;
|
|
638
|
+
|
|
639
|
+
// (
|
|
640
|
+
// totalCollateralAmount,
|
|
641
|
+
// localCollateralAmount
|
|
642
|
+
// ) = calculateRequiredCollateral(
|
|
643
|
+
// poolInfo.collateralizationLevel,
|
|
644
|
+
// poolInfo.retentionLevel,
|
|
645
|
+
// sumInsuredAmount);
|
|
646
|
+
// }
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
// function calculateRequiredCollateral(
|
|
650
|
+
// UFixed collateralizationLevel,
|
|
651
|
+
// UFixed retentionLevel,
|
|
652
|
+
// Amount sumInsuredAmount
|
|
653
|
+
// )
|
|
654
|
+
// public
|
|
655
|
+
// pure
|
|
656
|
+
// returns(
|
|
657
|
+
// Amount totalCollateralAmount,
|
|
658
|
+
// Amount localCollateralAmount
|
|
659
|
+
// )
|
|
660
|
+
// {
|
|
661
|
+
// // collateralization is applied to sum insured
|
|
662
|
+
// UFixed totalUFixed = collateralizationLevel * sumInsuredAmount.toUFixed();
|
|
663
|
+
// totalCollateralAmount = AmountLib.toAmount(totalUFixed.toInt());
|
|
664
|
+
|
|
665
|
+
// // retention level defines how much capital is required locally
|
|
666
|
+
// localCollateralAmount = AmountLib.toAmount(
|
|
667
|
+
// (retentionLevel * totalUFixed).toInt());
|
|
668
|
+
// }
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
function _policyHolderPayoutExecuted(
|
|
674
|
+
NftId policyNftId,
|
|
675
|
+
PayoutId payoutId,
|
|
676
|
+
address beneficiary,
|
|
677
|
+
Amount payoutAmount
|
|
464
678
|
)
|
|
465
|
-
|
|
466
|
-
view
|
|
467
|
-
returns(
|
|
468
|
-
Amount localCollateralAmount,
|
|
469
|
-
Amount totalCollateralAmount
|
|
470
|
-
)
|
|
679
|
+
internal
|
|
471
680
|
{
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
localCollateralAmount,
|
|
477
|
-
totalCollateralAmount
|
|
478
|
-
) = calculateRequiredCollateral(
|
|
479
|
-
poolInfo.collateralizationLevel,
|
|
480
|
-
poolInfo.retentionLevel,
|
|
481
|
-
sumInsuredAmount);
|
|
681
|
+
IPolicyHolder policyHolder = PoolLib.getPolicyHolder(getRegistry(), policyNftId);
|
|
682
|
+
if(address(policyHolder) != address(0)) {
|
|
683
|
+
policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
|
|
684
|
+
}
|
|
482
685
|
}
|
|
483
686
|
|
|
484
687
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
688
|
+
/// @dev Transfers the specified amount from the "from account" to the pool's wallet
|
|
689
|
+
function _pullStakingAmount(
|
|
690
|
+
InstanceReader reader,
|
|
691
|
+
NftId poolNftId,
|
|
692
|
+
address from,
|
|
693
|
+
Amount amount
|
|
489
694
|
)
|
|
490
|
-
|
|
491
|
-
pure
|
|
492
|
-
returns(
|
|
493
|
-
Amount localCollateralAmount,
|
|
494
|
-
Amount totalCollateralAmount
|
|
495
|
-
)
|
|
695
|
+
internal
|
|
496
696
|
{
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
// - collateralizationLevel == 1.0
|
|
502
|
-
// - retentionLevel == 1.0
|
|
503
|
-
localCollateralAmount = sumInsuredAmount;
|
|
504
|
-
totalCollateralAmount = localCollateralAmount;
|
|
697
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
|
698
|
+
info.tokenHandler.pullToken(
|
|
699
|
+
from,
|
|
700
|
+
amount);
|
|
505
701
|
}
|
|
506
702
|
|
|
507
|
-
|
|
508
|
-
function
|
|
509
|
-
|
|
510
|
-
|
|
703
|
+
/// @dev Transfers the specified amount from the pool's wallet to the "to account"
|
|
704
|
+
function _pushUnstakingAmount(
|
|
705
|
+
InstanceReader reader,
|
|
706
|
+
NftId poolNftId,
|
|
707
|
+
address to,
|
|
708
|
+
Amount amount
|
|
511
709
|
)
|
|
512
710
|
internal
|
|
513
|
-
returns (Amount stakingNetAmount)
|
|
514
711
|
{
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
|
520
|
-
stakingNetAmount = netAmount;
|
|
521
|
-
|
|
522
|
-
// TODO update fee balance for pool
|
|
523
|
-
}
|
|
712
|
+
IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
|
|
713
|
+
info.tokenHandler.pushToken(
|
|
714
|
+
to,
|
|
715
|
+
amount);
|
|
524
716
|
}
|
|
525
717
|
|
|
526
718
|
|
|
527
|
-
|
|
528
|
-
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
|
529
|
-
function _collectStakingAmount(
|
|
530
|
-
InstanceReader instanceReader,
|
|
531
|
-
NftId poolNftId,
|
|
532
|
-
address bundleOwner,
|
|
533
|
-
Amount amount
|
|
534
|
-
)
|
|
719
|
+
function _getAndVerifyActivePool()
|
|
535
720
|
internal
|
|
721
|
+
virtual
|
|
722
|
+
view
|
|
723
|
+
returns (
|
|
724
|
+
NftId poolNftId,
|
|
725
|
+
IInstance instance
|
|
726
|
+
)
|
|
536
727
|
{
|
|
728
|
+
return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
|
|
729
|
+
}
|
|
537
730
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
731
|
+
// function _getAndVerifyActivePool()
|
|
732
|
+
// internal
|
|
733
|
+
// virtual
|
|
734
|
+
// view
|
|
735
|
+
// returns (
|
|
736
|
+
// NftId poolNftId,
|
|
737
|
+
// IInstance instance
|
|
738
|
+
// )
|
|
739
|
+
// {
|
|
740
|
+
// (
|
|
741
|
+
// IRegistry.ObjectInfo memory info,
|
|
742
|
+
// address instanceAddress
|
|
743
|
+
// ) = ContractLib.getAndVerifyComponent(
|
|
744
|
+
// getRegistry(),
|
|
745
|
+
// msg.sender,
|
|
746
|
+
// POOL(),
|
|
747
|
+
// true); // only active pools
|
|
748
|
+
|
|
749
|
+
// poolNftId = info.nftId;
|
|
750
|
+
// instance = IInstance(instanceAddress);
|
|
751
|
+
// }
|
|
548
752
|
|
|
549
|
-
// TODO: centralize token handling (issue #471)
|
|
550
|
-
tokenHandler.transfer(
|
|
551
|
-
bundleOwner,
|
|
552
|
-
poolWallet,
|
|
553
|
-
amount);
|
|
554
|
-
} else {
|
|
555
|
-
revert ErrorPoolServiceAmountIsZero();
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
753
|
|
|
559
754
|
function _getDomain() internal pure override returns(ObjectType) {
|
|
560
755
|
return POOL();
|