@etherisc/gif-next 0.0.2-f1f3b2c-994 → 0.0.2-f2273b3-211
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 +27 -6
- 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 +163 -55
- 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 +94 -14
- 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 +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +8 -8
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +175 -216
- 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 +113 -130
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +275 -171
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +111 -65
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -112
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +148 -72
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +158 -195
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +206 -27
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +336 -295
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +203 -28
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -168
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +156 -153
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +282 -193
- 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 +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +717 -292
- 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 +211 -82
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +386 -117
- 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 +590 -204
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +129 -157
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -45
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +445 -375
- 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 +3 -3
- 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 +132 -173
- 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 +94 -106
- 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 +108 -125
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +151 -81
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +95 -41
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +107 -152
- 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 +156 -326
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +79 -101
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +84 -135
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +94 -145
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +192 -229
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +107 -163
- 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 +330 -368
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +119 -69
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +130 -54
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +71 -41
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +228 -186
- 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 +272 -173
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +100 -78
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +89 -9
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +170 -19
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +139 -54
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +105 -52
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +211 -164
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +55 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +235 -170
- 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 +102 -64
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +181 -116
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +89 -51
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +224 -182
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +112 -63
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +98 -2
- 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 +142 -38
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +277 -213
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +181 -74
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -33
- 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 +3 -3
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +337 -65
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +12 -12
- 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 +105 -104
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +483 -485
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +99 -73
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +55 -2
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +454 -5
- 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 -86
- 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 +94 -106
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- 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/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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +107 -124
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +1 -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 +18 -2
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -38
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +55 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
- 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 +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +113 -136
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +130 -16
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +49 -49
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +203 -206
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +3 -3
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +93 -51
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -57
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +181 -55
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +77 -39
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +130 -130
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +23 -23
- 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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +62 -5
- 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/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/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 +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +3 -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 +44 -12
- 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 +216 -125
- package/contracts/authorization/AccessManagerCloneable.sol +136 -3
- package/contracts/authorization/Authorization.sol +321 -205
- package/contracts/authorization/IAccess.sol +1 -0
- package/contracts/authorization/IAccessAdmin.sol +14 -8
- package/contracts/authorization/IAuthorization.sol +27 -7
- package/contracts/authorization/IServiceAuthorization.sol +1 -1
- package/contracts/authorization/ServiceAuthorization.sol +4 -4
- package/contracts/distribution/BasicDistribution.sol +15 -12
- package/contracts/distribution/BasicDistributionAuthorization.sol +22 -9
- package/contracts/distribution/Distribution.sol +41 -47
- package/contracts/distribution/DistributionService.sol +100 -78
- package/contracts/distribution/DistributionServiceManager.sol +1 -1
- package/contracts/distribution/IDistributionComponent.sol +1 -1
- package/contracts/distribution/IDistributionService.sol +19 -19
- package/contracts/examples/fire/FirePool.sol +25 -10
- package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
- package/contracts/examples/fire/FireProduct.sol +40 -13
- package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +11 -4
- package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -4
- package/contracts/examples/unpermissioned/SimplePool.sol +37 -7
- package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -23
- package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
- package/contracts/instance/BundleSet.sol +42 -38
- package/contracts/instance/IInstance.sol +17 -10
- package/contracts/instance/IInstanceService.sol +9 -29
- package/contracts/instance/Instance.sol +52 -34
- package/contracts/instance/InstanceAdmin.sol +249 -100
- package/contracts/instance/InstanceAuthorizationV3.sol +54 -45
- package/contracts/instance/InstanceReader.sol +174 -32
- package/contracts/instance/InstanceService.sol +85 -146
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +13 -2
- package/contracts/instance/RiskSet.sol +118 -0
- package/contracts/instance/base/ObjectCounter.sol +1 -2
- package/contracts/instance/base/ObjectLifecycle.sol +4 -2
- package/contracts/instance/base/ObjectSet.sol +31 -33
- package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
- package/contracts/instance/module/IComponents.sol +10 -7
- package/contracts/instance/module/IDistribution.sol +2 -1
- package/contracts/instance/module/IPolicy.sol +2 -1
- package/contracts/instance/module/IRisk.sol +3 -0
- 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 +5 -16
- package/contracts/oracle/OracleService.sol +107 -78
- package/contracts/oracle/OracleServiceManager.sol +1 -1
- package/contracts/pool/BasicPool.sol +33 -24
- package/contracts/pool/BasicPoolAuthorization.sol +27 -9
- package/contracts/pool/BundleService.sol +88 -154
- package/contracts/pool/BundleServiceManager.sol +1 -1
- package/contracts/pool/IBundleService.sol +15 -43
- package/contracts/pool/IPoolComponent.sol +1 -7
- package/contracts/pool/IPoolService.sol +58 -64
- package/contracts/pool/Pool.sol +112 -120
- package/contracts/pool/PoolLib.sol +216 -0
- package/contracts/pool/PoolService.sol +436 -242
- package/contracts/pool/PoolServiceManager.sol +1 -1
- package/contracts/product/ApplicationService.sol +24 -16
- package/contracts/product/ApplicationServiceManager.sol +1 -1
- package/contracts/product/BasicProduct.sol +10 -12
- package/contracts/product/BasicProductAuthorization.sol +24 -11
- package/contracts/product/ClaimService.sol +202 -151
- package/contracts/product/ClaimServiceManager.sol +1 -1
- package/contracts/product/IApplicationService.sol +5 -2
- package/contracts/product/IClaimService.sol +14 -2
- package/contracts/product/IPolicyService.sol +26 -11
- package/contracts/product/IPricingService.sol +9 -9
- package/contracts/product/IProductComponent.sol +10 -1
- package/contracts/product/PolicyService.sol +248 -252
- package/contracts/product/PolicyServiceLib.sol +65 -0
- package/contracts/product/PolicyServiceManager.sol +1 -1
- package/contracts/product/PricingService.sol +30 -26
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +106 -60
- package/contracts/product/RiskService.sol +74 -25
- package/contracts/product/RiskServiceManager.sol +1 -1
- package/contracts/registry/ChainNft.sol +10 -11
- package/contracts/registry/IRegistry.sol +14 -15
- package/contracts/registry/IRegistryService.sol +6 -4
- package/contracts/registry/IRelease.sol +26 -0
- package/contracts/registry/ITransferInterceptor.sol +1 -2
- package/contracts/registry/Registry.sol +29 -6
- package/contracts/registry/RegistryAdmin.sol +132 -226
- package/contracts/registry/RegistryService.sol +40 -58
- package/contracts/registry/RegistryServiceManager.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +245 -0
- package/contracts/registry/ReleaseLifecycle.sol +2 -0
- package/contracts/registry/ReleaseRegistry.sol +139 -124
- package/contracts/registry/ServiceAuthorizationV3.sol +97 -48
- package/contracts/registry/TokenRegistry.sol +6 -8
- package/contracts/shared/Component.sol +69 -118
- package/contracts/shared/ComponentService.sol +422 -371
- package/contracts/shared/ComponentServiceManager.sol +1 -1
- package/contracts/shared/ComponentVerifyingService.sol +27 -15
- package/contracts/shared/ContractLib.sol +224 -9
- package/contracts/shared/IComponent.sol +8 -20
- package/contracts/shared/IComponentService.sol +41 -37
- package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +23 -1
- package/contracts/shared/IService.sol +3 -5
- package/contracts/shared/InstanceLinkedComponent.sol +68 -42
- package/contracts/shared/Lifecycle.sol +7 -7
- package/contracts/shared/NftOwnable.sol +26 -6
- package/contracts/shared/PolicyHolder.sol +1 -1
- package/contracts/shared/Registerable.sol +53 -19
- package/contracts/shared/RegistryLinked.sol +7 -13
- package/contracts/shared/Service.sol +9 -31
- package/contracts/shared/TokenHandler.sol +274 -72
- package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
- package/contracts/staking/IStaking.sol +6 -10
- package/contracts/staking/IStakingService.sol +12 -4
- package/contracts/staking/StakeManagerLib.sol +69 -20
- package/contracts/staking/Staking.sol +73 -41
- package/contracts/staking/StakingReader.sol +1 -16
- package/contracts/staking/StakingService.sol +70 -24
- package/contracts/staking/StakingServiceManager.sol +5 -4
- package/contracts/type/Key32.sol +2 -2
- package/contracts/type/Key32Set.sol +62 -0
- package/contracts/type/NftId.sol +6 -0
- package/contracts/type/ObjectType.sol +48 -21
- package/contracts/type/RiskId.sol +23 -6
- package/contracts/type/RoleId.sol +23 -15
- package/contracts/type/Selector.sol +5 -0
- package/contracts/type/Timestamp.sol +0 -5
- package/contracts/type/UFixed.sol +9 -119
- package/contracts/type/Version.sol +15 -5
- package/contracts/upgradeability/ProxyManager.sol +2 -1
- package/package.json +3 -3
- 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/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
@@ -1,22 +1,15 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Amount
|
5
|
-
import {
|
6
|
-
import {Fee, FeeLib} from "../type/Fee.sol";
|
4
|
+
import {Amount} from "../type/Amount.sol";
|
5
|
+
import {Fee} from "../type/Fee.sol";
|
7
6
|
import {IAuthorization} from "../authorization/IAuthorization.sol";
|
8
|
-
import {IBundleService} from "./IBundleService.sol";
|
9
|
-
import {IPoolComponent} from "./IPoolComponent.sol";
|
10
|
-
import {IPoolService} from "./IPoolService.sol";
|
11
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
import {
|
15
|
-
import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
|
8
|
+
import {NftId} from "../type/NftId.sol";
|
9
|
+
import {BUNDLE} from "../type/ObjectType.sol";
|
10
|
+
import {RoleId} from "../type/RoleId.sol";
|
16
11
|
import {Seconds} from "../type/Seconds.sol";
|
17
12
|
import {Timestamp} from "../type/Timestamp.sol";
|
18
|
-
import {TokenHandler} from "../shared/TokenHandler.sol";
|
19
|
-
import {UFixed, UFixedLib} from "../type/UFixed.sol";
|
20
13
|
|
21
14
|
import {Pool} from "./Pool.sol";
|
22
15
|
|
@@ -26,10 +19,11 @@ abstract contract BasicPool is
|
|
26
19
|
|
27
20
|
function _initializeBasicPool(
|
28
21
|
address registry,
|
29
|
-
NftId
|
30
|
-
IAuthorization authorization,
|
31
|
-
address token,
|
22
|
+
NftId productNftId,
|
32
23
|
string memory name,
|
24
|
+
address token,
|
25
|
+
IComponents.PoolInfo memory poolInfo,
|
26
|
+
IAuthorization authorization,
|
33
27
|
address initialOwner
|
34
28
|
)
|
35
29
|
internal
|
@@ -38,13 +32,12 @@ abstract contract BasicPool is
|
|
38
32
|
{
|
39
33
|
_initializePool(
|
40
34
|
registry,
|
41
|
-
|
35
|
+
productNftId,
|
42
36
|
name,
|
43
37
|
token,
|
38
|
+
poolInfo,
|
44
39
|
authorization,
|
45
|
-
false, // isInterceptingNftTransfers,
|
46
40
|
initialOwner,
|
47
|
-
"", // registryData
|
48
41
|
""); // componentData
|
49
42
|
}
|
50
43
|
|
@@ -56,6 +49,7 @@ abstract contract BasicPool is
|
|
56
49
|
virtual
|
57
50
|
restricted()
|
58
51
|
onlyBundleOwner(bundleNftId)
|
52
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
59
53
|
{
|
60
54
|
_stake(bundleNftId, amount);
|
61
55
|
}
|
@@ -69,6 +63,7 @@ abstract contract BasicPool is
|
|
69
63
|
virtual
|
70
64
|
restricted()
|
71
65
|
onlyBundleOwner(bundleNftId)
|
66
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
72
67
|
{
|
73
68
|
_unstake(bundleNftId, amount);
|
74
69
|
}
|
@@ -82,6 +77,7 @@ abstract contract BasicPool is
|
|
82
77
|
virtual
|
83
78
|
restricted()
|
84
79
|
onlyBundleOwner(bundleNftId)
|
80
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
85
81
|
returns(Timestamp newExpiredAt)
|
86
82
|
{
|
87
83
|
return _extend(bundleNftId, lifetimeExtension);
|
@@ -93,6 +89,7 @@ abstract contract BasicPool is
|
|
93
89
|
virtual
|
94
90
|
restricted()
|
95
91
|
onlyBundleOwner(bundleNftId)
|
92
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
96
93
|
{
|
97
94
|
_lockBundle(bundleNftId);
|
98
95
|
}
|
@@ -103,6 +100,7 @@ abstract contract BasicPool is
|
|
103
100
|
virtual
|
104
101
|
restricted()
|
105
102
|
onlyBundleOwner(bundleNftId)
|
103
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
106
104
|
{
|
107
105
|
_unlockBundle(bundleNftId);
|
108
106
|
}
|
@@ -113,11 +111,15 @@ abstract contract BasicPool is
|
|
113
111
|
virtual
|
114
112
|
restricted()
|
115
113
|
onlyBundleOwner(bundleNftId)
|
114
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
116
115
|
{
|
117
116
|
_closeBundle(bundleNftId);
|
118
117
|
}
|
119
118
|
|
120
119
|
|
120
|
+
/// @dev Updates the bundle feeds to the specified values.
|
121
|
+
/// @param bundleNftId the bundle Nft Id
|
122
|
+
/// @param fee the new fee values
|
121
123
|
function setBundleFee(
|
122
124
|
NftId bundleNftId,
|
123
125
|
Fee memory fee
|
@@ -126,28 +128,35 @@ abstract contract BasicPool is
|
|
126
128
|
virtual
|
127
129
|
restricted()
|
128
130
|
onlyBundleOwner(bundleNftId)
|
131
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
129
132
|
{
|
130
133
|
_setBundleFee(bundleNftId, fee);
|
131
134
|
}
|
132
135
|
|
133
136
|
|
134
|
-
|
135
|
-
|
137
|
+
/// @dev Withdraw bundle feeds for the given bundle.
|
138
|
+
/// @param bundleNftId the bundle Nft Id
|
139
|
+
/// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
|
140
|
+
/// @return withdrawnAmount the effective withdrawn amount
|
141
|
+
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
142
|
+
external
|
136
143
|
virtual
|
137
144
|
restricted()
|
138
|
-
|
145
|
+
onlyBundleOwner(bundleNftId)
|
146
|
+
onlyNftOfType(bundleNftId, BUNDLE())
|
147
|
+
returns (Amount withdrawnAmount)
|
139
148
|
{
|
140
|
-
|
149
|
+
return _withdrawBundleFees(bundleNftId, amount);
|
141
150
|
}
|
142
151
|
|
143
152
|
|
144
|
-
function
|
153
|
+
function setMaxBalanceAmount(Amount maxBalanceAmount)
|
145
154
|
public
|
146
155
|
virtual
|
147
156
|
restricted()
|
148
157
|
onlyOwner()
|
149
158
|
{
|
150
|
-
|
159
|
+
_setMaxBalanceAmount(maxBalanceAmount);
|
151
160
|
}
|
152
161
|
|
153
162
|
|
@@ -1,14 +1,16 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {Authorization} from "../authorization/Authorization.sol";
|
5
|
-
import {BasicPool} from "./BasicPool.sol";
|
6
4
|
import {IAccess} from "../authorization/IAccess.sol";
|
7
5
|
import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
|
8
6
|
import {IPoolComponent} from "./IPoolComponent.sol";
|
9
|
-
|
7
|
+
|
8
|
+
import {Authorization} from "../authorization/Authorization.sol";
|
9
|
+
import {BasicPool} from "./BasicPool.sol";
|
10
|
+
import {COMPONENT, POOL} from "../type/ObjectType.sol";
|
10
11
|
import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
|
11
12
|
import {RoleId} from "../type/RoleId.sol";
|
13
|
+
import {TokenHandler} from "../shared/TokenHandler.sol";
|
12
14
|
|
13
15
|
|
14
16
|
contract BasicPoolAuthorization
|
@@ -16,16 +18,30 @@ contract BasicPoolAuthorization
|
|
16
18
|
{
|
17
19
|
|
18
20
|
constructor(string memory poolName)
|
19
|
-
Authorization(poolName)
|
21
|
+
Authorization(poolName, POOL())
|
20
22
|
{}
|
21
23
|
|
22
|
-
function
|
24
|
+
function _setupServiceTargets()
|
23
25
|
internal
|
24
26
|
virtual override
|
25
27
|
{
|
26
|
-
|
28
|
+
_addServiceTargetWithRole(COMPONENT());
|
29
|
+
_addServiceTargetWithRole(POOL());
|
27
30
|
}
|
28
31
|
|
32
|
+
function _setupTokenHandlerAuthorizations() internal virtual override {
|
33
|
+
// authorize token handler functions for component service role
|
34
|
+
IAccess.FunctionInfo[] storage functions;
|
35
|
+
functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(COMPONENT()));
|
36
|
+
_authorize(functions, TokenHandler.approve.selector, "approve");
|
37
|
+
_authorize(functions, TokenHandler.setWallet.selector, "setWallet");
|
38
|
+
_authorize(functions, TokenHandler.pushFeeToken.selector, "pushFeeToken");
|
39
|
+
|
40
|
+
// authorize token handler functions for pool service role
|
41
|
+
functions = _authorizeForTarget(getTokenHandlerName(), getServiceRole(POOL()));
|
42
|
+
_authorize(functions, TokenHandler.pullToken.selector, "pullToken");
|
43
|
+
_authorize(functions, TokenHandler.pushToken.selector, "pushToken");
|
44
|
+
}
|
29
45
|
|
30
46
|
function _setupTargetAuthorizations()
|
31
47
|
internal
|
@@ -34,7 +50,7 @@ contract BasicPoolAuthorization
|
|
34
50
|
IAccess.FunctionInfo[] storage functions;
|
35
51
|
|
36
52
|
// authorize public role (open access to any account, only allows to lock target)
|
37
|
-
functions = _authorizeForTarget(
|
53
|
+
functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
|
38
54
|
_authorize(functions, BasicPool.stake.selector, "stake");
|
39
55
|
_authorize(functions, BasicPool.unstake.selector, "unstake");
|
40
56
|
_authorize(functions, BasicPool.extend.selector, "extend");
|
@@ -44,15 +60,17 @@ contract BasicPoolAuthorization
|
|
44
60
|
_authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
|
45
61
|
|
46
62
|
_authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
|
47
|
-
_authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
|
48
63
|
_authorize(functions, BasicPool.setFees.selector, "setFees");
|
49
64
|
_authorize(functions, BasicPool.stake.selector, "stake");
|
50
65
|
_authorize(functions, BasicPool.unstake.selector, "unstake");
|
51
66
|
_authorize(functions, BasicPool.extend.selector, "extend");
|
52
67
|
|
53
68
|
_authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
|
69
|
+
_authorize(functions, BasicPool.withdrawBundleFees.selector, "withdrawBundleFees");
|
54
70
|
|
55
|
-
|
71
|
+
// authorize pool service
|
72
|
+
functions = _authorizeForTarget(getMainTargetName(), getServiceRole(POOL()));
|
73
|
+
_authorize(functions, IPoolComponent.verifyApplication.selector, "verifyApplication");
|
56
74
|
}
|
57
75
|
}
|
58
76
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
+
import {IAccountingService} from "../accounting/IAccountingService.sol";
|
4
5
|
import {IBundle} from "../instance/module/IBundle.sol";
|
5
6
|
import {IBundleService} from "./IBundleService.sol";
|
6
7
|
import {IComponents} from "../instance/module/IComponents.sol";
|
@@ -9,7 +10,6 @@ import {IRegistry} from "../registry/IRegistry.sol";
|
|
9
10
|
import {IRegistryService} from "../registry/IRegistryService.sol";
|
10
11
|
import {IInstance} from "../instance/IInstance.sol";
|
11
12
|
import {InstanceStore} from "../instance/InstanceStore.sol";
|
12
|
-
import {IPolicy} from "../instance/module/IPolicy.sol";
|
13
13
|
|
14
14
|
import {Amount, AmountLib} from "../type/Amount.sol";
|
15
15
|
import {BundleSet} from "../instance/BundleSet.sol";
|
@@ -17,7 +17,7 @@ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol
|
|
17
17
|
import {Fee} from "../type/Fee.sol";
|
18
18
|
import {InstanceReader} from "../instance/InstanceReader.sol";
|
19
19
|
import {NftId, NftIdLib} from "../type/NftId.sol";
|
20
|
-
import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
|
20
|
+
import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
|
21
21
|
import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
|
22
22
|
import {Seconds} from "../type/Seconds.sol";
|
23
23
|
import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
|
@@ -33,6 +33,7 @@ contract BundleService is
|
|
33
33
|
|
34
34
|
address private _registryAddress;
|
35
35
|
IRegistryService private _registryService;
|
36
|
+
IAccountingService private _accountingService;
|
36
37
|
IComponentService private _componentService;
|
37
38
|
|
38
39
|
function _initialize(
|
@@ -44,13 +45,14 @@ contract BundleService is
|
|
44
45
|
initializer()
|
45
46
|
{
|
46
47
|
(
|
47
|
-
address
|
48
|
-
address
|
48
|
+
address authority,
|
49
|
+
address registry
|
49
50
|
) = abi.decode(data, (address, address));
|
50
51
|
|
51
|
-
|
52
|
+
__Service_init(authority, registry, owner);
|
52
53
|
|
53
54
|
_registryService = IRegistryService(_getServiceAddress(REGISTRY()));
|
55
|
+
_accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
|
54
56
|
_componentService = IComponentService(_getServiceAddress(COMPONENT()));
|
55
57
|
|
56
58
|
_registerInterface(type(IBundleService).interfaceId);
|
@@ -63,7 +65,10 @@ contract BundleService is
|
|
63
65
|
)
|
64
66
|
external
|
65
67
|
virtual
|
68
|
+
restricted()
|
66
69
|
{
|
70
|
+
_checkNftType(bundleNftId, BUNDLE());
|
71
|
+
|
67
72
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
68
73
|
InstanceReader instanceReader = instance.getInstanceReader();
|
69
74
|
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
@@ -81,19 +86,18 @@ contract BundleService is
|
|
81
86
|
|
82
87
|
|
83
88
|
function create(
|
84
|
-
IInstance instance,
|
85
|
-
NftId poolNftId,
|
86
89
|
address owner,
|
87
90
|
Fee memory bundleFee,
|
88
|
-
Amount stakingAmount,
|
89
91
|
Seconds lifetime,
|
90
92
|
bytes calldata filter
|
91
93
|
)
|
92
94
|
external
|
93
|
-
|
94
|
-
restricted
|
95
|
+
virtual
|
96
|
+
restricted()
|
95
97
|
returns(NftId bundleNftId)
|
96
98
|
{
|
99
|
+
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
100
|
+
|
97
101
|
// register bundle with registry
|
98
102
|
bundleNftId = _registryService.registerBundle(
|
99
103
|
IRegistry.ObjectInfo(
|
@@ -121,19 +125,11 @@ contract BundleService is
|
|
121
125
|
})
|
122
126
|
);
|
123
127
|
|
124
|
-
if (stakingAmount.gtz()) {
|
125
|
-
// bundle book keeping
|
126
|
-
_componentService.increaseBundleBalance(
|
127
|
-
instanceStore,
|
128
|
-
bundleNftId,
|
129
|
-
stakingAmount,
|
130
|
-
AmountLib.zero()); // fee amount
|
131
|
-
}
|
132
|
-
|
133
128
|
// put bundle under bundle managemet
|
134
129
|
BundleSet bundleManager = instance.getBundleSet();
|
135
130
|
bundleManager.add(bundleNftId);
|
136
|
-
|
131
|
+
|
132
|
+
emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
|
137
133
|
}
|
138
134
|
|
139
135
|
|
@@ -148,45 +144,58 @@ contract BundleService is
|
|
148
144
|
virtual
|
149
145
|
restricted()
|
150
146
|
{
|
147
|
+
// checks
|
148
|
+
_checkNftType(policyNftId, POLICY());
|
149
|
+
_checkNftType(bundleNftId, BUNDLE());
|
150
|
+
|
151
151
|
InstanceReader instanceReader = instance.getInstanceReader();
|
152
|
-
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
153
|
-
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
154
152
|
|
155
|
-
|
156
|
-
|
157
|
-
|
153
|
+
{
|
154
|
+
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
155
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
156
|
+
|
157
|
+
// ensure bundle is active and not yet expired
|
158
|
+
if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
|
159
|
+
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
160
|
+
}
|
158
161
|
}
|
159
162
|
|
160
|
-
// ensure bundle capacity is sufficent to collateralize policy
|
161
163
|
InstanceStore instanceStore = instance.getInstanceStore();
|
162
|
-
(
|
163
|
-
Amount balanceAmount,
|
164
|
-
Amount lockedAmount,
|
165
|
-
Amount feeAmount
|
166
|
-
) = instanceStore.getAmounts(bundleNftId);
|
167
164
|
|
168
|
-
|
169
|
-
|
170
|
-
|
165
|
+
{
|
166
|
+
// ensure bundle capacity is sufficent to collateralize policy
|
167
|
+
(
|
168
|
+
Amount balanceAmount,
|
169
|
+
Amount lockedAmount,
|
170
|
+
Amount feeAmount
|
171
|
+
) = instanceStore.getAmounts(bundleNftId);
|
172
|
+
|
173
|
+
Amount capacity = balanceAmount - (lockedAmount + feeAmount);
|
174
|
+
if(capacity < collateralAmount) {
|
175
|
+
revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
|
176
|
+
}
|
171
177
|
}
|
172
178
|
|
179
|
+
// effects
|
173
180
|
// updated locked amount
|
174
181
|
instanceStore.increaseLocked(bundleNftId, collateralAmount);
|
175
|
-
|
176
|
-
// link policy to bundle in bundle manger
|
177
|
-
_linkPolicy(instance, policyNftId);
|
178
182
|
}
|
179
183
|
|
180
184
|
|
181
185
|
function lock(NftId bundleNftId)
|
182
186
|
external
|
183
187
|
virtual
|
188
|
+
restricted()
|
184
189
|
{
|
190
|
+
// checks
|
191
|
+
_checkNftType(bundleNftId, BUNDLE());
|
192
|
+
|
185
193
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
186
194
|
|
187
195
|
// udpate bundle state
|
188
196
|
instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
|
189
197
|
|
198
|
+
// effects
|
190
199
|
// update set of active bundles
|
191
200
|
BundleSet bundleManager = instance.getBundleSet();
|
192
201
|
bundleManager.lock(bundleNftId);
|
@@ -198,9 +207,14 @@ contract BundleService is
|
|
198
207
|
function unlock(NftId bundleNftId)
|
199
208
|
external
|
200
209
|
virtual
|
210
|
+
restricted()
|
201
211
|
{
|
212
|
+
// checks
|
213
|
+
_checkNftType(bundleNftId, BUNDLE());
|
214
|
+
|
202
215
|
(,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
203
216
|
|
217
|
+
// effects
|
204
218
|
// udpate bundle state
|
205
219
|
instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
|
206
220
|
|
@@ -218,9 +232,12 @@ contract BundleService is
|
|
218
232
|
)
|
219
233
|
external
|
220
234
|
virtual
|
221
|
-
restricted
|
235
|
+
restricted()
|
222
236
|
returns (Amount unstakedAmount, Amount feeAmount)
|
223
237
|
{
|
238
|
+
// checks
|
239
|
+
_checkNftType(bundleNftId, BUNDLE());
|
240
|
+
|
224
241
|
InstanceReader instanceReader = instance.getInstanceReader();
|
225
242
|
|
226
243
|
// ensure no open policies attached to bundle
|
@@ -230,6 +247,7 @@ contract BundleService is
|
|
230
247
|
revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
|
231
248
|
}
|
232
249
|
|
250
|
+
// effects
|
233
251
|
{
|
234
252
|
// update bundle state
|
235
253
|
InstanceStore instanceStore = instance.getInstanceStore();
|
@@ -240,22 +258,26 @@ contract BundleService is
|
|
240
258
|
Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
|
241
259
|
feeAmount = instanceReader.getFeeAmount(bundleNftId);
|
242
260
|
unstakedAmount = balanceAmountWithFees - feeAmount;
|
243
|
-
|
261
|
+
_accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
|
244
262
|
}
|
245
263
|
}
|
246
264
|
|
247
265
|
/// @inheritdoc IBundleService
|
248
266
|
function stake(
|
249
|
-
|
267
|
+
InstanceReader instanceReader,
|
268
|
+
InstanceStore instanceStore,
|
250
269
|
NftId bundleNftId,
|
251
270
|
Amount amount
|
252
271
|
)
|
253
272
|
external
|
254
273
|
virtual
|
255
|
-
|
274
|
+
restricted()
|
256
275
|
{
|
257
|
-
|
258
|
-
|
276
|
+
// checks
|
277
|
+
_checkNftType(bundleNftId, BUNDLE());
|
278
|
+
|
279
|
+
IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
|
280
|
+
StateId bundleState = instanceReader.getBundleState(bundleNftId);
|
259
281
|
|
260
282
|
if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
|
261
283
|
|| bundleInfo.expiredAt < TimestampLib.blockTimestamp()
|
@@ -263,8 +285,9 @@ contract BundleService is
|
|
263
285
|
revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
|
264
286
|
}
|
265
287
|
|
266
|
-
|
267
|
-
|
288
|
+
// effects
|
289
|
+
_accountingService.increaseBundleBalance(
|
290
|
+
instanceStore,
|
268
291
|
bundleNftId,
|
269
292
|
amount,
|
270
293
|
AmountLib.zero());
|
@@ -272,23 +295,25 @@ contract BundleService is
|
|
272
295
|
|
273
296
|
/// @inheritdoc IBundleService
|
274
297
|
function unstake(
|
275
|
-
|
298
|
+
InstanceStore instanceStore,
|
276
299
|
NftId bundleNftId,
|
277
300
|
Amount amount
|
278
301
|
)
|
279
302
|
external
|
280
303
|
virtual
|
281
|
-
|
304
|
+
restricted()
|
282
305
|
returns (Amount unstakedAmount)
|
283
306
|
{
|
284
|
-
|
307
|
+
// checks
|
308
|
+
_checkNftType(bundleNftId, BUNDLE());
|
309
|
+
|
285
310
|
(
|
286
311
|
Amount balanceAmount,
|
287
312
|
Amount lockedAmount,
|
288
313
|
Amount feeAmount
|
289
314
|
) = instanceStore.getAmounts(bundleNftId);
|
290
315
|
|
291
|
-
|
316
|
+
unstakedAmount = amount;
|
292
317
|
Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
|
293
318
|
|
294
319
|
// if amount is max, then unstake all available
|
@@ -301,22 +326,24 @@ contract BundleService is
|
|
301
326
|
revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
|
302
327
|
}
|
303
328
|
|
304
|
-
|
329
|
+
// effects
|
330
|
+
_accountingService.decreaseBundleBalance(
|
305
331
|
instanceStore,
|
306
332
|
bundleNftId,
|
307
333
|
unstakedAmount,
|
308
334
|
AmountLib.zero());
|
309
|
-
|
310
|
-
return unstakedAmount;
|
311
335
|
}
|
312
336
|
|
313
337
|
/// @inheritdoc IBundleService
|
314
338
|
function extend(NftId bundleNftId, Seconds lifetimeExtension)
|
315
339
|
external
|
316
340
|
virtual
|
317
|
-
|
341
|
+
restricted()
|
318
342
|
returns (Timestamp extendedExpiredAt)
|
319
343
|
{
|
344
|
+
// checks
|
345
|
+
_checkNftType(bundleNftId, BUNDLE());
|
346
|
+
|
320
347
|
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
321
348
|
IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
|
322
349
|
StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
|
@@ -335,17 +362,18 @@ contract BundleService is
|
|
335
362
|
revert ErrorBundleServiceExtensionLifetimeIsZero();
|
336
363
|
}
|
337
364
|
|
365
|
+
// effects
|
338
366
|
bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
|
339
|
-
|
367
|
+
extendedExpiredAt = bundleInfo.expiredAt;
|
340
368
|
|
341
|
-
|
369
|
+
instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
|
342
370
|
|
343
|
-
|
371
|
+
emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
|
344
372
|
}
|
345
373
|
|
346
374
|
|
347
375
|
function releaseCollateral(
|
348
|
-
|
376
|
+
InstanceStore instanceStore,
|
349
377
|
NftId policyNftId,
|
350
378
|
NftId bundleNftId,
|
351
379
|
Amount collateralAmount
|
@@ -354,106 +382,12 @@ contract BundleService is
|
|
354
382
|
virtual
|
355
383
|
restricted()
|
356
384
|
{
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
/// @dev unlinks policy from bundle
|
361
|
-
function unlinkPolicy(
|
362
|
-
IInstance instance,
|
363
|
-
NftId policyNftId
|
364
|
-
)
|
365
|
-
external
|
366
|
-
virtual
|
367
|
-
restricted
|
368
|
-
{
|
369
|
-
// ensure policy is closeable
|
370
|
-
if (!policyIsCloseable(instance, policyNftId)) {
|
371
|
-
revert ErrorBundleServicePolicyNotCloseable(policyNftId);
|
372
|
-
}
|
373
|
-
|
374
|
-
instance.getBundleSet().unlinkPolicy(policyNftId);
|
375
|
-
}
|
376
|
-
|
377
|
-
/// @inheritdoc IBundleService
|
378
|
-
function withdrawBundleFees(NftId bundleNftId, Amount amount)
|
379
|
-
public
|
380
|
-
virtual
|
381
|
-
// TODO: restricted() (once #462 is done)
|
382
|
-
returns (Amount withdrawnAmount)
|
383
|
-
{
|
384
|
-
(NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
|
385
|
-
InstanceReader reader = instance.getInstanceReader();
|
386
|
-
|
387
|
-
IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
|
388
|
-
address poolWallet = poolInfo.wallet;
|
389
|
-
|
390
|
-
IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
|
391
|
-
|
392
|
-
// determine withdrawn amount
|
393
|
-
withdrawnAmount = amount;
|
394
|
-
if (withdrawnAmount.gte(AmountLib.max())) {
|
395
|
-
withdrawnAmount = reader.getFeeAmount(bundleNftId);
|
396
|
-
} else {
|
397
|
-
if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
|
398
|
-
revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
|
399
|
-
}
|
400
|
-
}
|
401
|
-
|
402
|
-
// decrease fee counters by withdrawnAmount
|
403
|
-
{
|
404
|
-
InstanceStore store = instance.getInstanceStore();
|
405
|
-
// decrease fee amount of the bundle
|
406
|
-
_componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
|
407
|
-
// decrease pool balance
|
408
|
-
_componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
|
409
|
-
}
|
410
|
-
|
411
|
-
// transfer amount to bundle owner
|
412
|
-
{
|
413
|
-
address owner = getRegistry().ownerOf(bundleNftId);
|
414
|
-
emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
|
415
|
-
poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
|
416
|
-
}
|
417
|
-
}
|
418
|
-
|
419
|
-
/// @inheritdoc IBundleService
|
420
|
-
function policyIsCloseable(IInstance instance, NftId policyNftId)
|
421
|
-
public
|
422
|
-
view
|
423
|
-
returns (bool isCloseable)
|
424
|
-
{
|
425
|
-
IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
|
426
|
-
|
427
|
-
if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
|
428
|
-
if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
|
429
|
-
if (info.closedAt.gtz()) { return false; } // not closeable: already closed
|
430
|
-
if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
|
431
|
-
|
432
|
-
// closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
|
433
|
-
if (info.claimAmount == info.sumInsuredAmount) { return true; }
|
434
|
-
|
435
|
-
// not closeable: not yet expired
|
436
|
-
if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
|
385
|
+
_checkNftType(policyNftId, POLICY());
|
386
|
+
_checkNftType(bundleNftId, BUNDLE());
|
437
387
|
|
438
|
-
|
439
|
-
return true;
|
388
|
+
instanceStore.decreaseLocked(bundleNftId, collateralAmount);
|
440
389
|
}
|
441
390
|
|
442
|
-
/// @dev links policy to bundle
|
443
|
-
function _linkPolicy(IInstance instance, NftId policyNftId)
|
444
|
-
internal
|
445
|
-
{
|
446
|
-
InstanceReader instanceReader = instance.getInstanceReader();
|
447
|
-
IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
|
448
|
-
|
449
|
-
// ensure policy has not yet been activated in a previous tx already
|
450
|
-
if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
|
451
|
-
revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
|
452
|
-
}
|
453
|
-
|
454
|
-
BundleSet bundleManager = instance.getBundleSet();
|
455
|
-
bundleManager.linkPolicy(policyNftId);
|
456
|
-
}
|
457
391
|
|
458
392
|
function _getDomain() internal pure override returns(ObjectType) {
|
459
393
|
return BUNDLE();
|