@etherisc/gif-next 0.0.2-b0a5f9c-428 → 0.0.2-b109dbd-819
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 +86 -9
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +673 -262
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
- 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 +549 -209
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +183 -487
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -387
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +658 -365
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +222 -126
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -191
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +466 -126
- 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 +1480 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2045 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -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 +1423 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2471 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -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 +560 -66
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +339 -58
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +568 -166
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1034 -311
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -68
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1689 -736
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +352 -228
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +142 -104
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +957 -642
- 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/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +127 -355
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +429 -37
- 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 +103 -133
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +103 -323
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +176 -96
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +146 -366
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +336 -403
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +170 -130
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +230 -127
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +142 -183
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +524 -288
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +132 -363
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +546 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +711 -562
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +196 -120
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +158 -98
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +272 -431
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +472 -235
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +194 -122
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +348 -16
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +358 -127
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +257 -226
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +196 -163
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +477 -373
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +195 -123
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +247 -332
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +164 -136
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +264 -423
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +780 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -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 +356 -45
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
- 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 +562 -106
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +795 -394
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +140 -88
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -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 +483 -253
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +482 -643
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +176 -134
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -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 +92 -93
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +103 -133
- 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 +35 -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 +167 -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 +84 -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 +102 -322
- 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 +41 -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 +141 -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 +86 -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 +341 -133
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +184 -23
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +466 -417
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
- 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 +180 -99
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +91 -67
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +253 -171
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +157 -93
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +205 -150
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +91 -50
- 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 +35 -11
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- 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 +94 -38
- 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 +33 -31
- 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 +42 -157
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -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/String.sol/StrLib.json +50 -2
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +73 -36
- 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 +101 -2
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +117 -78
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
- package/contracts/accounting/AccountingService.sol +274 -0
- package/contracts/accounting/AccountingServiceManager.sol +38 -0
- package/contracts/accounting/IAccountingService.sol +47 -0
- package/contracts/authorization/AccessAdmin.sol +456 -267
- package/contracts/authorization/AccessAdminLib.sol +396 -0
- package/contracts/authorization/AccessManagerCloneable.sol +146 -4
- package/contracts/authorization/Authorization.sol +159 -208
- package/contracts/authorization/IAccess.sol +25 -6
- package/contracts/authorization/IAccessAdmin.sol +87 -79
- package/contracts/authorization/IAuthorization.sol +9 -36
- package/contracts/authorization/IServiceAuthorization.sol +57 -17
- package/contracts/authorization/ServiceAuthorization.sol +254 -24
- package/contracts/distribution/BasicDistribution.sol +20 -17
- package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
- package/contracts/distribution/Distribution.sol +42 -90
- package/contracts/distribution/DistributionService.sol +242 -131
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionComponent.sol +4 -11
- package/contracts/distribution/IDistributionService.sol +47 -29
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +86 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
- package/contracts/examples/fire/FireProduct.sol +433 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +385 -0
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +101 -42
- package/contracts/instance/IInstanceService.sol +54 -32
- package/contracts/instance/Instance.sol +189 -97
- package/contracts/instance/InstanceAdmin.sol +275 -158
- package/contracts/instance/InstanceAuthorizationV3.sol +120 -58
- package/contracts/instance/InstanceReader.sol +476 -257
- package/contracts/instance/InstanceService.sol +303 -230
- 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/BalanceStore.sol +3 -5
- 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/IBundle.sol +6 -5
- package/contracts/instance/module/IComponents.sol +30 -15
- package/contracts/instance/module/IDistribution.sol +21 -8
- package/contracts/instance/module/IPolicy.sol +50 -29
- package/contracts/instance/module/IRisk.sol +5 -0
- package/contracts/oracle/BasicOracle.sol +1 -4
- package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
- package/contracts/oracle/IOracle.sol +9 -4
- package/contracts/oracle/IOracleService.sol +2 -1
- package/contracts/oracle/Oracle.sol +7 -19
- package/contracts/oracle/OracleService.sol +117 -85
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +32 -25
- package/contracts/pool/BasicPoolAuthorization.sol +34 -10
- package/contracts/pool/BundleService.sol +119 -163
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +27 -39
- package/contracts/pool/IPoolComponent.sol +19 -15
- package/contracts/pool/IPoolService.sol +97 -76
- package/contracts/pool/Pool.sol +139 -124
- package/contracts/pool/PoolLib.sol +359 -0
- package/contracts/pool/PoolService.sol +388 -324
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +143 -46
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +10 -13
- package/contracts/product/BasicProductAuthorization.sol +32 -12
- package/contracts/product/ClaimService.sol +385 -161
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +29 -3
- package/contracts/product/IClaimService.sol +44 -8
- package/contracts/product/IPolicyService.sol +61 -43
- package/contracts/product/IPricingService.sol +11 -10
- package/contracts/product/IProductComponent.sol +27 -5
- package/contracts/product/IRiskService.sol +37 -0
- package/contracts/product/PolicyService.sol +423 -307
- package/contracts/product/PolicyServiceLib.sol +139 -0
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +90 -84
- package/contracts/product/PricingServiceManager.sol +4 -4
- package/contracts/product/Product.sol +162 -101
- package/contracts/product/RiskService.sol +163 -0
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +72 -40
- package/contracts/registry/IRegistry.sol +70 -29
- package/contracts/registry/IRegistryService.sol +5 -12
- package/contracts/registry/IRelease.sol +29 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +364 -204
- package/contracts/registry/RegistryAdmin.sol +110 -287
- package/contracts/registry/RegistryAuthorization.sol +284 -0
- package/contracts/registry/RegistryService.sol +38 -49
- package/contracts/registry/RegistryServiceManager.sol +3 -3
- package/contracts/registry/ReleaseAdmin.sol +195 -0
- package/contracts/registry/ReleaseLifecycle.sol +8 -3
- package/contracts/registry/ReleaseRegistry.sol +275 -240
- package/contracts/registry/ServiceAuthorizationV3.sol +202 -57
- package/contracts/registry/TokenRegistry.sol +12 -13
- package/contracts/shared/Component.sol +65 -135
- package/contracts/shared/ComponentService.sol +412 -384
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ContractLib.sol +311 -0
- package/contracts/shared/IComponent.sol +6 -18
- package/contracts/shared/IComponentService.sol +43 -40
- package/contracts/shared/IInstanceLinkedComponent.sol +6 -32
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/INftOwnable.sol +4 -0
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/IRegisterable.sol +22 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InitializableERC165.sol +10 -2
- package/contracts/shared/InstanceLinkedComponent.sol +72 -50
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +15 -4
- package/contracts/shared/NftOwnable.sol +31 -9
- package/contracts/shared/PolicyHolder.sol +18 -54
- package/contracts/shared/Registerable.sol +52 -21
- package/contracts/shared/RegistryLinked.sol +9 -14
- package/contracts/shared/Service.sol +20 -35
- package/contracts/shared/TokenHandler.sol +310 -26
- package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
- package/contracts/staking/IStaking.sol +48 -20
- package/contracts/staking/IStakingService.sol +21 -11
- package/contracts/staking/Staking.sol +198 -109
- package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +95 -45
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +40 -24
- package/contracts/staking/StakingService.sol +96 -39
- package/contracts/staking/StakingServiceManager.sol +6 -5
- package/contracts/staking/StakingStore.sol +3 -2
- package/contracts/staking/TargetManagerLib.sol +8 -4
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/Fee.sol +8 -8
- 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 +73 -37
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +38 -6
- package/contracts/type/RoleId.sol +61 -55
- package/contracts/type/Seconds.sol +12 -0
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +37 -126
- package/contracts/type/Version.sol +54 -5
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +93 -45
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
- package/contracts/upgradeability/Versionable.sol +8 -5
- 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/IProductService.sol/IProductService.json +0 -400
- 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/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
- 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/IProductService.sol +0 -33
- package/contracts/product/ProductService.sol +0 -99
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/ComponentVerifyingService.sol +0 -117
- package/contracts/shared/InitializableCustom.sol +0 -177
@@ -1,45 +1,39 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {
|
5
|
-
|
6
|
-
import {IBundle} from "../instance/module/IBundle.sol";
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
7
5
|
import {IBundleService} from "./IBundleService.sol";
|
8
6
|
import {IComponents} from "../instance/module/IComponents.sol";
|
9
7
|
import {IComponentService} from "../shared/IComponentService.sol";
|
10
8
|
import {IInstance} from "../instance/IInstance.sol";
|
11
|
-
import {IInstanceService} from "../instance/IInstanceService.sol";
|
12
9
|
import {IPolicy} from "../instance/module/IPolicy.sol";
|
10
|
+
import {IPoolComponent} from "../pool/IPoolComponent.sol";
|
13
11
|
import {IPoolService} from "./IPoolService.sol";
|
12
|
+
import {IProductComponent} from "../product/IProductComponent.sol";
|
14
13
|
import {IRegistry} from "../registry/IRegistry.sol";
|
15
|
-
import {IRegistryService} from "../registry/IRegistryService.sol";
|
16
14
|
import {IStaking} from "../staking/IStaking.sol";
|
17
15
|
|
18
16
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
19
|
-
import {
|
20
|
-
import {
|
21
|
-
import {ObjectType, POOL, BUNDLE, COMPONENT, INSTANCE, REGISTRY} from "../type/ObjectType.sol";
|
22
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
23
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
24
|
-
import {KEEP_STATE} from "../type/StateId.sol";
|
25
|
-
import {Seconds} from "../type/Seconds.sol";
|
26
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
27
|
-
import {UFixed} from "../type/UFixed.sol";
|
28
|
-
import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
|
17
|
+
import {ClaimId} from "../type/ClaimId.sol";
|
18
|
+
import {ContractLib} from "../shared/ContractLib.sol";
|
29
19
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
30
20
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
21
|
+
import {KEEP_STATE} from "../type/StateId.sol";
|
22
|
+
import {NftId} from "../type/NftId.sol";
|
23
|
+
import {ObjectType, ACCOUNTING, POOL, BUNDLE, PRODUCT, POLICY, COMPONENT} from "../type/ObjectType.sol";
|
24
|
+
import {PayoutId} from "../type/PayoutId.sol";
|
25
|
+
import {PoolLib} from "./PoolLib.sol";
|
26
|
+
import {Service} from "../shared/Service.sol";
|
27
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
31
28
|
|
32
|
-
string constant POOL_SERVICE_NAME = "PoolService";
|
33
29
|
|
34
30
|
contract PoolService is
|
35
|
-
|
31
|
+
Service,
|
36
32
|
IPoolService
|
37
33
|
{
|
34
|
+
IAccountingService private _accountingService;
|
38
35
|
IBundleService internal _bundleService;
|
39
36
|
IComponentService internal _componentService;
|
40
|
-
IInstanceService private _instanceService;
|
41
|
-
IRegistryService private _registryService;
|
42
|
-
|
43
37
|
IStaking private _staking;
|
44
38
|
|
45
39
|
function _initialize(
|
@@ -47,299 +41,328 @@ contract PoolService is
|
|
47
41
|
bytes memory data
|
48
42
|
)
|
49
43
|
internal
|
50
|
-
initializer
|
51
44
|
virtual override
|
45
|
+
initializer()
|
52
46
|
{
|
53
47
|
(
|
54
|
-
address
|
55
|
-
|
56
|
-
|
57
|
-
) = abi.decode(data, (address, address, address));
|
48
|
+
address authority,
|
49
|
+
address registry
|
50
|
+
) = abi.decode(data, (address, address));
|
58
51
|
|
59
|
-
|
52
|
+
__Service_init(authority, registry, owner);
|
60
53
|
|
61
|
-
|
54
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
62
55
|
_bundleService = IBundleService(_getServiceAddress(BUNDLE()));
|
63
|
-
_instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
|
64
56
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
65
|
-
|
66
57
|
_staking = IStaking(getRegistry().getStakingAddress());
|
67
58
|
|
68
|
-
|
59
|
+
_registerInterface(type(IPoolService).interfaceId);
|
69
60
|
}
|
70
61
|
|
71
62
|
|
72
|
-
|
63
|
+
/// @inheritdoc IPoolService
|
64
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
73
65
|
external
|
74
66
|
virtual
|
67
|
+
restricted()
|
75
68
|
{
|
76
|
-
|
77
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
69
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
78
70
|
InstanceReader instanceReader = instance.getInstanceReader();
|
71
|
+
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
79
72
|
|
80
|
-
|
81
|
-
|
82
|
-
Amount previousMaxCapitalAmount = poolInfo.maxCapitalAmount;
|
83
|
-
|
84
|
-
poolInfo.maxCapitalAmount = maxCapitalAmount;
|
73
|
+
Amount previousMaxBalanceAmount = poolInfo.maxBalanceAmount;
|
74
|
+
poolInfo.maxBalanceAmount = maxBalanceAmount;
|
85
75
|
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
86
76
|
|
87
|
-
emit
|
88
|
-
*/
|
77
|
+
emit LogPoolServiceMaxBalanceAmountUpdated(poolNftId, previousMaxBalanceAmount, maxBalanceAmount);
|
89
78
|
}
|
90
79
|
|
91
|
-
|
80
|
+
|
81
|
+
function closeBundle(NftId bundleNftId)
|
92
82
|
external
|
83
|
+
restricted()
|
93
84
|
virtual
|
94
85
|
{
|
95
|
-
(
|
96
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
97
|
-
|
98
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
99
|
-
IComponents.PoolInfo memory poolInfo = abi.decode(componentInfo.data, (IComponents.PoolInfo));
|
100
|
-
|
101
|
-
// bundle owner role may only be set once per pool
|
102
|
-
if(poolInfo.bundleOwnerRole != PUBLIC_ROLE()) {
|
103
|
-
revert ErrorPoolServiceBundleOwnerRoleAlreadySet(poolNftId);
|
104
|
-
}
|
86
|
+
_checkNftType(bundleNftId, BUNDLE());
|
105
87
|
|
106
|
-
|
107
|
-
instance.getInstanceStore().updatePool(poolNftId, poolInfo, KEEP_STATE());
|
108
|
-
|
109
|
-
emit LogPoolServiceBundleOwnerRoleSet(poolNftId, bundleOwnerRole);
|
110
|
-
}
|
88
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
111
89
|
|
112
|
-
|
113
|
-
function createBundle(
|
114
|
-
address bundleOwner, // initial bundle owner
|
115
|
-
Fee memory fee, // fees deducted from premium that go to bundle owner
|
116
|
-
Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
|
117
|
-
Seconds lifetime, // initial duration for which new policies are covered
|
118
|
-
bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
|
119
|
-
)
|
120
|
-
external
|
121
|
-
virtual
|
122
|
-
returns(NftId bundleNftId, Amount netStakedAmount)
|
123
|
-
{
|
124
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
125
|
-
|
126
|
-
Amount stakingFeeAmount;
|
127
|
-
(stakingFeeAmount, netStakedAmount) = FeeLib.calculateFee(
|
128
|
-
_getStakingFee(instance.getInstanceReader(), poolNftId),
|
129
|
-
stakingAmount);
|
90
|
+
// TODO get performance fee for pool (#477)
|
130
91
|
|
131
|
-
//
|
92
|
+
// releasing collateral in bundle
|
93
|
+
(Amount unstakedAmount, Amount feeAmount) = _bundleService.close(instance, bundleNftId);
|
132
94
|
|
133
|
-
|
134
|
-
instance,
|
135
|
-
poolNftId,
|
136
|
-
bundleOwner,
|
137
|
-
fee,
|
138
|
-
netStakedAmount,
|
139
|
-
lifetime,
|
140
|
-
filter);
|
141
|
-
|
142
|
-
// pool book keeping
|
143
|
-
_componentService.increasePoolBalance(
|
95
|
+
_accountingService.decreasePoolBalance(
|
144
96
|
instance.getInstanceStore(),
|
145
97
|
poolNftId,
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
_collectStakingAmount(
|
151
|
-
instance.getInstanceReader(),
|
152
|
-
poolNftId,
|
153
|
-
bundleOwner,
|
154
|
-
stakingAmount);
|
98
|
+
unstakedAmount + feeAmount,
|
99
|
+
AmountLib.zero());
|
100
|
+
|
101
|
+
emit LogPoolServiceBundleClosed(instance.getNftId(), poolNftId, bundleNftId);
|
155
102
|
|
156
|
-
|
103
|
+
if ((unstakedAmount + feeAmount).gtz()){
|
104
|
+
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
105
|
+
poolComponentInfo.tokenHandler.pushToken(
|
106
|
+
getRegistry().ownerOf(bundleNftId),
|
107
|
+
unstakedAmount + feeAmount);
|
108
|
+
}
|
157
109
|
}
|
158
110
|
|
159
|
-
function _getStakingFee(InstanceReader instanceReader, NftId poolNftId)
|
160
|
-
internal
|
161
|
-
virtual
|
162
|
-
view
|
163
|
-
returns (Fee memory stakingFee)
|
164
|
-
{
|
165
|
-
NftId productNftId = instanceReader.getComponentInfo(poolNftId).productNftId;
|
166
|
-
return instanceReader.getProductInfo(productNftId).stakingFee;
|
167
|
-
}
|
168
111
|
|
169
|
-
|
112
|
+
/// @inheritdoc IPoolService
|
113
|
+
function processFundedClaim(
|
114
|
+
NftId policyNftId,
|
115
|
+
ClaimId claimId,
|
116
|
+
Amount availableAmount
|
117
|
+
)
|
170
118
|
external
|
119
|
+
restricted()
|
171
120
|
virtual
|
172
121
|
{
|
173
|
-
(
|
174
|
-
|
175
|
-
// TODO get performance fee for pool (#477)
|
122
|
+
_checkNftType(policyNftId, POLICY());
|
176
123
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
124
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
125
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
126
|
+
NftId productNftId = getRegistry().getParentNftId(poolNftId);
|
127
|
+
|
128
|
+
// check policy matches with calling pool
|
129
|
+
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
130
|
+
if(policyInfo.productNftId != productNftId) {
|
131
|
+
revert ErrorPoolServicePolicyPoolMismatch(
|
132
|
+
policyNftId,
|
133
|
+
policyInfo.productNftId,
|
134
|
+
productNftId);
|
135
|
+
}
|
187
136
|
|
188
|
-
|
189
|
-
IComponents.ComponentInfo memory poolComponentInfo = instance.getInstanceReader().getComponentInfo(poolNftId);
|
190
|
-
TokenHandler tokenHandler = poolComponentInfo.tokenHandler;
|
191
|
-
IERC20Metadata token = IERC20Metadata(poolComponentInfo.token);
|
192
|
-
|
193
|
-
// TODO: centralize token handling (issue #471)
|
194
|
-
|
195
|
-
// check allowance
|
196
|
-
uint256 tokenAllowance = token.allowance(poolComponentInfo.wallet, address(tokenHandler));
|
197
|
-
if (tokenAllowance < (balanceAmount.toInt() + feeAmount.toInt())) {
|
198
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(poolComponentInfo.wallet, address(tokenHandler), tokenAllowance, balanceAmount.toInt() + feeAmount.toInt());
|
199
|
-
}
|
137
|
+
emit LogPoolServiceProcessFundedClaim(policyNftId, claimId, availableAmount);
|
200
138
|
|
201
|
-
|
202
|
-
|
203
|
-
|
139
|
+
// callback to product component if applicable
|
140
|
+
if (instanceReader.getProductInfo(productNftId).isProcessingFundedClaims) {
|
141
|
+
address productAddress = getRegistry().getObjectAddress(productNftId);
|
142
|
+
IProductComponent(productAddress).processFundedClaim(policyNftId, claimId, availableAmount);
|
204
143
|
}
|
205
144
|
}
|
206
145
|
|
146
|
+
|
147
|
+
// function _checkAndGetPoolInfo(NftId bundleNftId)
|
148
|
+
// internal
|
149
|
+
// view
|
150
|
+
// returns (
|
151
|
+
// InstanceReader instanceReader,
|
152
|
+
// InstanceStore instanceStore,
|
153
|
+
// NftId instanceNftId,
|
154
|
+
// NftId poolNftId,
|
155
|
+
// IComponents.PoolInfo memory poolInfo
|
156
|
+
// )
|
157
|
+
// {
|
158
|
+
// _checkNftType(bundleNftId, BUNDLE());
|
159
|
+
|
160
|
+
// (NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
161
|
+
// instanceReader = instance.getInstanceReader();
|
162
|
+
// instanceStore = instance.getInstanceStore();
|
163
|
+
// instanceNftId = instance.getNftId();
|
164
|
+
// poolInfo = instanceReader.getPoolInfo(poolNftId);
|
165
|
+
|
166
|
+
// if (getRegistry().getParentNftId(bundleNftId) != poolNftId) {
|
167
|
+
// revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
168
|
+
// }
|
169
|
+
// }
|
170
|
+
|
171
|
+
|
207
172
|
/// @inheritdoc IPoolService
|
208
173
|
function stake(NftId bundleNftId, Amount amount)
|
209
174
|
external
|
210
175
|
virtual
|
211
|
-
|
212
|
-
returns(
|
176
|
+
restricted()
|
177
|
+
returns(
|
178
|
+
Amount netAmount
|
179
|
+
)
|
213
180
|
{
|
214
|
-
(
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
}
|
181
|
+
(
|
182
|
+
InstanceReader instanceReader,
|
183
|
+
InstanceStore instanceStore,
|
184
|
+
NftId instanceNftId,
|
185
|
+
NftId poolNftId,
|
186
|
+
IComponents.PoolInfo memory poolInfo
|
187
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
222
188
|
|
223
|
-
|
224
|
-
|
225
|
-
|
189
|
+
{
|
190
|
+
Amount currentPoolBalance = instanceReader.getBalanceAmount(poolNftId);
|
191
|
+
if (currentPoolBalance + amount > poolInfo.maxBalanceAmount) {
|
192
|
+
revert ErrorPoolServiceMaxBalanceAmountExceeded(poolNftId, poolInfo.maxBalanceAmount, currentPoolBalance, amount);
|
193
|
+
}
|
226
194
|
}
|
227
195
|
|
228
196
|
// calculate fees
|
197
|
+
Amount feeAmount;
|
229
198
|
(
|
230
|
-
|
231
|
-
|
232
|
-
) =
|
233
|
-
|
199
|
+
feeAmount,
|
200
|
+
netAmount
|
201
|
+
) = PoolLib.calculateStakingAmounts(
|
202
|
+
getRegistry(),
|
203
|
+
instanceReader,
|
204
|
+
poolNftId,
|
234
205
|
amount);
|
235
206
|
|
236
|
-
// do all the
|
237
|
-
|
238
|
-
|
207
|
+
// do all the book keeping
|
208
|
+
_accountingService.increasePoolBalance(
|
209
|
+
instanceStore,
|
239
210
|
poolNftId,
|
240
211
|
netAmount,
|
241
212
|
feeAmount);
|
242
213
|
|
243
|
-
_bundleService.stake(
|
214
|
+
_bundleService.stake(instanceReader, instanceStore, bundleNftId, netAmount);
|
244
215
|
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
poolNftId,
|
250
|
-
bundleOwner,
|
251
|
-
amount);
|
216
|
+
emit LogPoolServiceBundleStaked(instanceNftId, poolNftId, bundleNftId, amount, netAmount);
|
217
|
+
|
218
|
+
// only collect staking amount when pool is not externally managed
|
219
|
+
if (!poolInfo.isExternallyManaged) {
|
252
220
|
|
253
|
-
|
221
|
+
// collect tokens from bundle owner
|
222
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
223
|
+
PoolLib.pullStakingAmount(
|
224
|
+
instanceReader,
|
225
|
+
poolNftId,
|
226
|
+
bundleOwner,
|
227
|
+
amount);
|
228
|
+
}
|
254
229
|
}
|
255
230
|
|
231
|
+
|
256
232
|
/// @inheritdoc IPoolService
|
257
233
|
function unstake(NftId bundleNftId, Amount amount)
|
258
234
|
external
|
259
235
|
virtual
|
260
|
-
|
236
|
+
restricted()
|
261
237
|
returns(Amount netAmount)
|
262
238
|
{
|
263
|
-
(
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
revert ErrorPoolServiceBundlePoolMismatch(bundleNftId, poolNftId);
|
270
|
-
}
|
271
|
-
|
272
|
-
if (amount.eqz()) {
|
273
|
-
revert ErrorPoolServiceAmountIsZero();
|
274
|
-
}
|
239
|
+
(
|
240
|
+
InstanceReader instanceReader,
|
241
|
+
InstanceStore instanceStore,
|
242
|
+
NftId instanceNftId,
|
243
|
+
NftId poolNftId,
|
244
|
+
) = PoolLib.checkAndGetPoolInfo(getRegistry(), msg.sender, bundleNftId);
|
275
245
|
|
276
246
|
// call bundle service for bookkeeping and additional checks
|
277
|
-
Amount unstakedAmount = _bundleService.unstake(
|
247
|
+
Amount unstakedAmount = _bundleService.unstake(instanceStore, bundleNftId, amount);
|
278
248
|
|
279
249
|
// Important: from now on work only with unstakedAmount as it is the only reliable amount.
|
280
250
|
// if amount was max, this was set to the available amount
|
281
251
|
|
282
252
|
// TODO: handle performance fees (issue #477)
|
253
|
+
netAmount = unstakedAmount;
|
283
254
|
|
284
255
|
// update pool bookkeeping - performance fees stay in the pool, but as fees
|
285
|
-
|
256
|
+
_accountingService.decreasePoolBalance(
|
286
257
|
instanceStore,
|
287
258
|
poolNftId,
|
288
259
|
unstakedAmount,
|
289
260
|
AmountLib.zero());
|
290
261
|
|
291
|
-
IComponents.ComponentInfo memory poolComponentInfo = instanceReader.getComponentInfo(poolNftId);
|
292
|
-
address poolWallet = poolComponentInfo.wallet;
|
293
262
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
263
|
+
emit LogPoolServiceBundleUnstaked(instanceNftId, poolNftId, bundleNftId, unstakedAmount, netAmount);
|
264
|
+
|
265
|
+
// only distribute staking amount when pool is not externally managed
|
266
|
+
if (!instanceReader.getPoolInfo(poolNftId).isExternallyManaged) {
|
267
|
+
|
268
|
+
// transfer amount to bundle owner
|
269
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
270
|
+
PoolLib.pushUnstakingAmount(
|
271
|
+
instanceReader,
|
272
|
+
poolNftId,
|
273
|
+
bundleOwner,
|
274
|
+
netAmount);
|
301
275
|
}
|
276
|
+
}
|
302
277
|
|
303
|
-
// transfer amount to bundle owner
|
304
|
-
address owner = getRegistry().ownerOf(bundleNftId);
|
305
|
-
// TODO: centralize token handling (issue #471)
|
306
|
-
poolComponentInfo.tokenHandler.transfer(poolWallet, owner, unstakedAmount);
|
307
|
-
|
308
|
-
emit LogPoolServiceBundleUnstaked(instance.getNftId(), poolNftId, bundleNftId, unstakedAmount);
|
309
278
|
|
310
|
-
|
279
|
+
function fundPoolWallet(Amount amount)
|
280
|
+
external
|
281
|
+
virtual
|
282
|
+
restricted()
|
283
|
+
{
|
284
|
+
(
|
285
|
+
NftId poolNftId,
|
286
|
+
IInstance instance
|
287
|
+
) = _getAndVerifyActivePool();
|
288
|
+
|
289
|
+
// check that pool is externally managed
|
290
|
+
InstanceReader reader = instance.getInstanceReader();
|
291
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
292
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
293
|
+
}
|
294
|
+
|
295
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
296
|
+
emit LogPoolServiceWalletFunded(poolNftId, poolOwner, amount);
|
297
|
+
|
298
|
+
PoolLib.pullStakingAmount(
|
299
|
+
reader,
|
300
|
+
poolNftId,
|
301
|
+
poolOwner,
|
302
|
+
amount);
|
311
303
|
}
|
312
304
|
|
305
|
+
|
306
|
+
function defundPoolWallet(Amount amount)
|
307
|
+
external
|
308
|
+
virtual
|
309
|
+
restricted()
|
310
|
+
{
|
311
|
+
(
|
312
|
+
NftId poolNftId,
|
313
|
+
IInstance instance
|
314
|
+
) = _getAndVerifyActivePool();
|
315
|
+
|
316
|
+
// check that pool is externally managed
|
317
|
+
InstanceReader reader = instance.getInstanceReader();
|
318
|
+
if (!reader.getPoolInfo(poolNftId).isExternallyManaged) {
|
319
|
+
revert ErrorPoolServicePoolNotExternallyManaged(poolNftId);
|
320
|
+
}
|
321
|
+
|
322
|
+
address poolOwner = getRegistry().ownerOf(poolNftId);
|
323
|
+
emit LogPoolServiceWalletDefunded(poolNftId, poolOwner, amount);
|
324
|
+
|
325
|
+
PoolLib.pushUnstakingAmount(
|
326
|
+
reader,
|
327
|
+
poolNftId,
|
328
|
+
poolOwner,
|
329
|
+
amount);
|
330
|
+
}
|
331
|
+
|
332
|
+
|
313
333
|
function processSale(
|
314
334
|
NftId bundleNftId,
|
315
|
-
IPolicy.
|
335
|
+
IPolicy.PremiumInfo memory premium
|
316
336
|
)
|
317
337
|
external
|
318
338
|
virtual
|
319
339
|
restricted()
|
320
340
|
{
|
341
|
+
_checkNftType(bundleNftId, BUNDLE());
|
342
|
+
|
321
343
|
IRegistry registry = getRegistry();
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
IInstance instance = IInstance(instanceObjectInfo.objectAddress);
|
344
|
+
NftId poolNftId = registry.getParentNftId(bundleNftId);
|
345
|
+
(, address instanceAddress) = ContractLib.getInfoAndInstance(registry, poolNftId, true);
|
346
|
+
IInstance instance = IInstance(instanceAddress);
|
326
347
|
|
327
|
-
Amount poolFeeAmount =
|
328
|
-
Amount bundleFeeAmount =
|
329
|
-
Amount bundleNetAmount =
|
348
|
+
Amount poolFeeAmount = premium.poolFeeFixAmount + premium.poolFeeVarAmount;
|
349
|
+
Amount bundleFeeAmount = premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
|
350
|
+
Amount bundleNetAmount = premium.netPremiumAmount;
|
330
351
|
|
331
352
|
InstanceStore instanceStore = instance.getInstanceStore();
|
332
|
-
|
353
|
+
_accountingService.increasePoolBalance(
|
333
354
|
instanceStore,
|
334
|
-
|
355
|
+
poolNftId,
|
335
356
|
bundleNetAmount + bundleFeeAmount,
|
336
357
|
poolFeeAmount);
|
337
358
|
|
338
|
-
|
359
|
+
_accountingService.increaseBundleBalanceForPool(
|
339
360
|
instanceStore,
|
340
|
-
|
361
|
+
bundleNftId,
|
341
362
|
bundleNetAmount,
|
342
363
|
bundleFeeAmount);
|
364
|
+
|
365
|
+
emit LogPoolServiceSaleProcessed(poolNftId, bundleNftId, bundleNetAmount, bundleFeeAmount, poolFeeAmount);
|
343
366
|
}
|
344
367
|
|
345
368
|
|
@@ -355,14 +378,22 @@ contract PoolService is
|
|
355
378
|
virtual
|
356
379
|
restricted()
|
357
380
|
returns (
|
358
|
-
Amount
|
359
|
-
Amount
|
381
|
+
Amount totalCollateralAmount,
|
382
|
+
Amount localCollateralAmount
|
360
383
|
)
|
361
384
|
{
|
385
|
+
_checkNftType(productNftId, PRODUCT());
|
386
|
+
_checkNftType(applicationNftId, POLICY());
|
387
|
+
_checkNftType(bundleNftId, BUNDLE());
|
388
|
+
|
389
|
+
NftId poolNftId;
|
390
|
+
bool poolIsVerifyingApplications;
|
362
391
|
(
|
392
|
+
poolNftId,
|
393
|
+
totalCollateralAmount,
|
363
394
|
localCollateralAmount,
|
364
|
-
|
365
|
-
) = calculateRequiredCollateral(
|
395
|
+
poolIsVerifyingApplications
|
396
|
+
) = PoolLib.calculateRequiredCollateral(
|
366
397
|
instance.getInstanceReader(),
|
367
398
|
productNftId,
|
368
399
|
sumInsuredAmount);
|
@@ -380,36 +411,152 @@ contract PoolService is
|
|
380
411
|
token,
|
381
412
|
totalCollateralAmount);
|
382
413
|
|
383
|
-
//
|
384
|
-
|
385
|
-
|
414
|
+
// pool callback when required
|
415
|
+
if (poolIsVerifyingApplications) {
|
416
|
+
IPoolComponent pool = IPoolComponent(
|
417
|
+
getRegistry().getObjectAddress(poolNftId));
|
386
418
|
|
419
|
+
pool.verifyApplication(
|
420
|
+
applicationNftId,
|
421
|
+
bundleNftId,
|
422
|
+
totalCollateralAmount);
|
423
|
+
|
424
|
+
emit LogPoolServiceApplicationVerified(poolNftId, bundleNftId, applicationNftId, totalCollateralAmount);
|
387
425
|
}
|
388
|
-
}
|
389
426
|
|
427
|
+
emit LogPoolServiceCollateralLocked(
|
428
|
+
poolNftId,
|
429
|
+
bundleNftId,
|
430
|
+
applicationNftId,
|
431
|
+
totalCollateralAmount,
|
432
|
+
localCollateralAmount);
|
433
|
+
}
|
390
434
|
|
391
|
-
function
|
392
|
-
|
393
|
-
|
435
|
+
function processPayout(
|
436
|
+
InstanceReader instanceReader,
|
437
|
+
InstanceStore instanceStore,
|
438
|
+
NftId productNftId,
|
394
439
|
NftId policyNftId,
|
395
|
-
|
396
|
-
|
440
|
+
NftId bundleNftId,
|
441
|
+
PayoutId payoutId,
|
442
|
+
Amount payoutAmount,
|
443
|
+
address payoutBeneficiary
|
397
444
|
)
|
398
445
|
external
|
399
446
|
virtual
|
400
447
|
restricted()
|
448
|
+
returns (
|
449
|
+
Amount netPayoutAmount,
|
450
|
+
Amount processingFeeAmount
|
451
|
+
)
|
401
452
|
{
|
453
|
+
// checks
|
454
|
+
_checkNftType(policyNftId, POLICY());
|
455
|
+
|
456
|
+
// effects
|
457
|
+
NftId poolNftId = getRegistry().getParentNftId(bundleNftId);
|
458
|
+
|
459
|
+
_accountingService.decreasePoolBalance(
|
460
|
+
instanceStore,
|
461
|
+
poolNftId,
|
462
|
+
payoutAmount,
|
463
|
+
AmountLib.zero());
|
464
|
+
|
465
|
+
_accountingService.decreaseBundleBalanceForPool(
|
466
|
+
instanceStore,
|
467
|
+
bundleNftId,
|
468
|
+
payoutAmount,
|
469
|
+
AmountLib.zero());
|
470
|
+
|
402
471
|
_bundleService.releaseCollateral(
|
403
|
-
|
472
|
+
instanceStore,
|
404
473
|
policyNftId,
|
405
|
-
|
474
|
+
bundleNftId,
|
406
475
|
payoutAmount);
|
407
476
|
|
408
477
|
// update value locked with staking service
|
478
|
+
TokenHandler poolTokenHandler = instanceReader.getTokenHandler(poolNftId);
|
479
|
+
|
409
480
|
_staking.decreaseTotalValueLocked(
|
410
|
-
|
411
|
-
|
481
|
+
instanceReader.getInstanceNftId(),
|
482
|
+
address(poolTokenHandler.TOKEN()),
|
412
483
|
payoutAmount);
|
484
|
+
|
485
|
+
// interactions
|
486
|
+
(netPayoutAmount, processingFeeAmount) = PoolLib.transferTokenAndNotifyPolicyHolder(
|
487
|
+
getRegistry(),
|
488
|
+
instanceReader,
|
489
|
+
poolTokenHandler,
|
490
|
+
productNftId,
|
491
|
+
policyNftId,
|
492
|
+
payoutId,
|
493
|
+
payoutAmount,
|
494
|
+
payoutBeneficiary);
|
495
|
+
|
496
|
+
if (processingFeeAmount.gtz()) {
|
497
|
+
_accountingService.increaseProductFeesForPool(
|
498
|
+
instanceStore,
|
499
|
+
productNftId,
|
500
|
+
processingFeeAmount);
|
501
|
+
}
|
502
|
+
|
503
|
+
emit LogPoolServicePayoutProcessed(
|
504
|
+
poolNftId,
|
505
|
+
bundleNftId,
|
506
|
+
policyNftId,
|
507
|
+
payoutId,
|
508
|
+
netPayoutAmount,
|
509
|
+
processingFeeAmount,
|
510
|
+
payoutBeneficiary);
|
511
|
+
}
|
512
|
+
|
513
|
+
|
514
|
+
/// @inheritdoc IPoolService
|
515
|
+
function withdrawBundleFees(
|
516
|
+
NftId bundleNftId,
|
517
|
+
Amount amount
|
518
|
+
)
|
519
|
+
public
|
520
|
+
virtual
|
521
|
+
restricted()
|
522
|
+
returns (Amount withdrawnAmount)
|
523
|
+
{
|
524
|
+
// checks
|
525
|
+
_checkNftType(bundleNftId, BUNDLE());
|
526
|
+
|
527
|
+
(NftId poolNftId, IInstance instance) = _getAndVerifyActivePool();
|
528
|
+
InstanceReader reader = instance.getInstanceReader();
|
529
|
+
|
530
|
+
// determine withdrawn amount
|
531
|
+
withdrawnAmount = amount;
|
532
|
+
if (withdrawnAmount.gte(AmountLib.max())) {
|
533
|
+
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
534
|
+
} else {
|
535
|
+
if (withdrawnAmount > reader.getFeeAmount(bundleNftId)) {
|
536
|
+
revert ErrorPoolServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
537
|
+
}
|
538
|
+
}
|
539
|
+
|
540
|
+
// effects
|
541
|
+
// decrease fee counters by withdrawnAmount
|
542
|
+
{
|
543
|
+
InstanceStore store = instance.getInstanceStore();
|
544
|
+
// decrease fee amount of the bundle
|
545
|
+
_accountingService.decreaseBundleBalanceForPool(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
546
|
+
// decrease pool balance
|
547
|
+
_accountingService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
548
|
+
}
|
549
|
+
|
550
|
+
// interactions
|
551
|
+
// transfer amount to bundle owner
|
552
|
+
{
|
553
|
+
address bundleOwner = getRegistry().ownerOf(bundleNftId);
|
554
|
+
TokenHandler tokenHandler = reader.getTokenHandler(poolNftId);
|
555
|
+
address token = address(tokenHandler.TOKEN());
|
556
|
+
emit LogPoolServiceFeesWithdrawn(bundleNftId, bundleOwner, token, withdrawnAmount);
|
557
|
+
|
558
|
+
tokenHandler.pushToken(bundleOwner, withdrawnAmount);
|
559
|
+
}
|
413
560
|
}
|
414
561
|
|
415
562
|
|
@@ -417,7 +564,6 @@ contract PoolService is
|
|
417
564
|
/// may only be called by the policy service for unlocked pool components
|
418
565
|
function releaseCollateral(
|
419
566
|
IInstance instance,
|
420
|
-
address token,
|
421
567
|
NftId policyNftId,
|
422
568
|
IPolicy.PolicyInfo memory policyInfo
|
423
569
|
)
|
@@ -425,125 +571,43 @@ contract PoolService is
|
|
425
571
|
virtual
|
426
572
|
restricted()
|
427
573
|
{
|
574
|
+
_checkNftType(policyNftId, POLICY());
|
575
|
+
|
428
576
|
Amount remainingCollateralAmount = policyInfo.sumInsuredAmount - policyInfo.claimAmount;
|
429
577
|
|
430
578
|
_bundleService.releaseCollateral(
|
431
|
-
instance,
|
579
|
+
instance.getInstanceStore(),
|
432
580
|
policyNftId,
|
433
581
|
policyInfo.bundleNftId,
|
434
582
|
remainingCollateralAmount);
|
435
583
|
|
436
|
-
_bundleService.unlinkPolicy(
|
437
|
-
instance,
|
438
|
-
policyNftId);
|
439
|
-
|
440
584
|
// update value locked with staking service
|
585
|
+
InstanceReader instanceReader = instance.getInstanceReader();
|
441
586
|
_staking.decreaseTotalValueLocked(
|
442
|
-
|
443
|
-
|
587
|
+
instanceReader.getInstanceNftId(),
|
588
|
+
address(instanceReader.getToken(policyInfo.productNftId)),
|
444
589
|
remainingCollateralAmount);
|
445
|
-
}
|
446
|
-
|
447
|
-
|
448
|
-
function calculateRequiredCollateral(
|
449
|
-
InstanceReader instanceReader,
|
450
|
-
NftId productNftId,
|
451
|
-
Amount sumInsuredAmount
|
452
|
-
)
|
453
|
-
public
|
454
|
-
view
|
455
|
-
returns(
|
456
|
-
Amount localCollateralAmount,
|
457
|
-
Amount totalCollateralAmount
|
458
|
-
)
|
459
|
-
{
|
460
|
-
NftId poolNftId = instanceReader.getProductInfo(productNftId).poolNftId;
|
461
|
-
IComponents.PoolInfo memory poolInfo = instanceReader.getPoolInfo(poolNftId);
|
462
590
|
|
463
|
-
(
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
poolInfo.collateralizationLevel,
|
468
|
-
poolInfo.retentionLevel,
|
469
|
-
sumInsuredAmount);
|
470
|
-
}
|
471
|
-
|
472
|
-
|
473
|
-
function calculateRequiredCollateral(
|
474
|
-
UFixed collateralizationLevel,
|
475
|
-
UFixed retentionLevel,
|
476
|
-
Amount sumInsuredAmount
|
477
|
-
)
|
478
|
-
public
|
479
|
-
pure
|
480
|
-
returns(
|
481
|
-
Amount localCollateralAmount,
|
482
|
-
Amount totalCollateralAmount
|
483
|
-
)
|
484
|
-
{
|
485
|
-
// TODO define if only applies to local collateral
|
486
|
-
// TODO add minimalistic implementation
|
487
|
-
|
488
|
-
// assumptions
|
489
|
-
// - collateralizationLevel == 1.0
|
490
|
-
// - retentionLevel == 1.0
|
491
|
-
localCollateralAmount = sumInsuredAmount;
|
492
|
-
totalCollateralAmount = localCollateralAmount;
|
591
|
+
emit LogPoolServiceCollateralReleased(
|
592
|
+
policyInfo.bundleNftId,
|
593
|
+
policyNftId,
|
594
|
+
remainingCollateralAmount);
|
493
595
|
}
|
494
596
|
|
495
597
|
|
496
|
-
function
|
497
|
-
Fee memory stakingFee,
|
498
|
-
Amount stakingAmount
|
499
|
-
)
|
598
|
+
function _getAndVerifyActivePool()
|
500
599
|
internal
|
501
|
-
|
600
|
+
virtual
|
601
|
+
view
|
602
|
+
returns (
|
603
|
+
NftId poolNftId,
|
604
|
+
IInstance instance
|
605
|
+
)
|
502
606
|
{
|
503
|
-
|
504
|
-
|
505
|
-
// check if any staking fees apply
|
506
|
-
if (FeeLib.gtz(stakingFee)) {
|
507
|
-
(Amount feeAmount, Amount netAmount) = FeeLib.calculateFee(stakingFee, stakingAmount);
|
508
|
-
stakingNetAmount = netAmount;
|
509
|
-
|
510
|
-
// TODO update fee balance for pool
|
511
|
-
}
|
607
|
+
return PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
|
512
608
|
}
|
513
609
|
|
514
610
|
|
515
|
-
// TODO create (I)TreasuryService that deals with all gif related token transfers
|
516
|
-
/// @dev transfers the specified amount from the bundle owner to the pool's wallet
|
517
|
-
function _collectStakingAmount(
|
518
|
-
InstanceReader instanceReader,
|
519
|
-
NftId poolNftId,
|
520
|
-
address bundleOwner,
|
521
|
-
Amount amount
|
522
|
-
)
|
523
|
-
internal
|
524
|
-
{
|
525
|
-
|
526
|
-
// collecting investor token
|
527
|
-
IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(poolNftId);
|
528
|
-
TokenHandler tokenHandler = componentInfo.tokenHandler;
|
529
|
-
address poolWallet = componentInfo.wallet;
|
530
|
-
|
531
|
-
if(amount.gtz()) {
|
532
|
-
uint256 allowance = IERC20Metadata(componentInfo.token).allowance(bundleOwner, address(tokenHandler));
|
533
|
-
if (allowance < amount.toInt()) {
|
534
|
-
revert ErrorPoolServiceWalletAllowanceTooSmall(bundleOwner, address(tokenHandler), allowance, amount.toInt());
|
535
|
-
}
|
536
|
-
|
537
|
-
// TODO: centralize token handling (issue #471)
|
538
|
-
tokenHandler.transfer(
|
539
|
-
bundleOwner,
|
540
|
-
poolWallet,
|
541
|
-
amount);
|
542
|
-
} else {
|
543
|
-
revert ErrorPoolServiceAmountIsZero();
|
544
|
-
}
|
545
|
-
}
|
546
|
-
|
547
611
|
function _getDomain() internal pure override returns(ObjectType) {
|
548
612
|
return POOL();
|
549
613
|
}
|