@etherisc/gif-next 0.0.2-f1b01e0-214 → 0.0.2-f1e6957-384
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 +76 -341
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +100 -32
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
- package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +52 -0
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +367 -126
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1546 -211
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +261 -59
- 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 +258 -82
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +97 -14
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +52 -27
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +264 -64
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +20 -11
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +368 -139
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +160 -78
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +19 -10
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +228 -15
- 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 +81 -52
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +109 -68
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +263 -63
- 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 +74 -33
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +35 -26
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +85 -60
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +263 -63
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +264 -78
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +263 -63
- package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
- package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
- package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +359 -33
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +297 -3
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +407 -97
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +756 -392
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +231 -75
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +492 -424
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +323 -29
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -42
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1444 -2133
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
- package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
- package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
- 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 +2 -2
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
- 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 +25 -16
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +277 -60
- 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 +19 -10
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -10
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +83 -38
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +37 -36
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +263 -63
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +294 -117
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -58
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +180 -27
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +19 -10
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +19 -10
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +88 -22
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +324 -65
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +141 -63
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +216 -59
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +113 -43
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -10
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +263 -63
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +142 -102
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -70
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +166 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +50 -10
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +55 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +29 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -10
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +203 -18
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +157 -86
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +508 -18
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +138 -72
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +93 -72
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +120 -50
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +19 -10
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +231 -46
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +101 -43
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +33 -22
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
- package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +71 -60
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +537 -300
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +330 -71
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +41 -12
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +543 -226
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +167 -103
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +19 -10
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -174
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -64
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +76 -41
- package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
- package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -10
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +84 -105
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -10
- 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 +19 -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 +19 -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 +29 -0
- 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 +19 -10
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.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 +21 -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 +19 -0
- 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 +29 -0
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +2 -2
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +2 -2
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1384 -128
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +94 -114
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +1472 -185
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +73 -72
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +139 -64
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +293 -149
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +128 -164
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +96 -46
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1617 -817
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
- package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +140 -78
- 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 +2 -2
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
- 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 +2 -2
- 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 +1 -1
- package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +6 -6
- 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 +2 -2
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +39 -218
- 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/SelectorSetLib.dbg.json +1 -1
- 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/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 +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- 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 +81 -27
- 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 +15 -3
- package/contracts/accounting/IAccountingService.sol +2 -0
- package/contracts/authorization/AccessAdmin.sol +292 -317
- package/contracts/authorization/AccessAdminLib.sol +517 -22
- package/contracts/authorization/AccessManagerCloneable.sol +0 -18
- package/contracts/authorization/Authorization.sol +64 -239
- package/contracts/authorization/IAccess.sol +23 -14
- package/contracts/authorization/IAccessAdmin.sol +25 -53
- package/contracts/authorization/IAuthorization.sol +3 -57
- package/contracts/authorization/IServiceAuthorization.sol +55 -17
- package/contracts/authorization/ServiceAuthorization.sol +228 -34
- package/contracts/distribution/BasicDistribution.sol +3 -4
- package/contracts/distribution/BasicDistributionAuthorization.sol +11 -4
- package/contracts/distribution/Distribution.sol +9 -8
- package/contracts/distribution/DistributionService.sol +98 -35
- package/contracts/distribution/IDistributionComponent.sol +3 -1
- package/contracts/distribution/IDistributionService.sol +20 -8
- package/contracts/examples/fire/FireProduct.sol +6 -6
- package/contracts/examples/unpermissioned/SimpleProduct.sol +83 -19
- package/contracts/instance/BaseStore.sol +93 -0
- package/contracts/instance/IBaseStore.sol +37 -0
- package/contracts/instance/IInstance.sol +55 -5
- package/contracts/instance/IInstanceService.sol +37 -6
- package/contracts/instance/Instance.sol +103 -56
- package/contracts/instance/InstanceAdmin.sol +151 -294
- package/contracts/instance/InstanceAuthorizationV3.sol +106 -66
- package/contracts/instance/InstanceReader.sol +350 -394
- package/contracts/instance/InstanceService.sol +180 -125
- package/contracts/instance/InstanceStore.sol +153 -128
- package/contracts/instance/ProductStore.sol +290 -0
- package/contracts/instance/RiskSet.sol +10 -2
- package/contracts/instance/TargetNames.sol +10 -0
- package/contracts/instance/base/BalanceStore.sol +4 -6
- package/contracts/instance/base/ObjectLifecycle.sol +2 -6
- package/contracts/instance/module/IComponents.sol +0 -2
- package/contracts/oracle/BasicOracle.sol +2 -3
- package/contracts/oracle/BasicOracleAuthorization.sol +18 -2
- package/contracts/oracle/Oracle.sol +4 -6
- package/contracts/oracle/OracleService.sol +8 -8
- package/contracts/pool/BasicPool.sol +4 -16
- package/contracts/pool/BasicPoolAuthorization.sol +10 -5
- package/contracts/pool/BundleService.sol +34 -43
- package/contracts/pool/IBundleService.sol +14 -13
- package/contracts/pool/IPoolService.sol +7 -2
- package/contracts/pool/Pool.sol +6 -18
- package/contracts/pool/PoolLib.sol +127 -2
- package/contracts/pool/PoolService.sol +40 -181
- package/contracts/product/ApplicationService.sol +64 -11
- package/contracts/product/BasicProduct.sol +2 -3
- package/contracts/product/BasicProductAuthorization.sol +11 -4
- package/contracts/product/ClaimService.sol +99 -105
- package/contracts/product/IApplicationService.sol +21 -2
- package/contracts/product/IClaimService.sol +5 -4
- package/contracts/product/IPolicyService.sol +9 -2
- package/contracts/product/IRiskService.sol +18 -3
- package/contracts/product/PolicyService.sol +40 -59
- package/contracts/product/PolicyServiceLib.sol +79 -5
- package/contracts/product/PricingService.sol +22 -25
- package/contracts/product/Product.sol +40 -16
- package/contracts/product/RiskService.sol +50 -15
- package/contracts/registry/IRegistry.sol +11 -9
- package/contracts/registry/IRelease.sol +6 -3
- package/contracts/registry/Registry.sol +15 -9
- package/contracts/registry/RegistryAdmin.sol +33 -118
- package/contracts/registry/RegistryAuthorization.sol +139 -69
- package/contracts/registry/RegistryService.sol +1 -1
- package/contracts/registry/ReleaseAdmin.sol +52 -106
- package/contracts/registry/ReleaseRegistry.sol +20 -12
- package/contracts/registry/ServiceAuthorizationV3.sol +43 -32
- package/contracts/registry/TokenRegistry.sol +56 -52
- package/contracts/shared/Component.sol +8 -8
- package/contracts/shared/ComponentService.sol +245 -262
- package/contracts/shared/ContractLib.sol +106 -75
- package/contracts/shared/IComponent.sol +1 -1
- package/contracts/shared/IComponentService.sol +12 -13
- package/contracts/shared/INftOwnable.sol +2 -0
- package/contracts/shared/IRegisterable.sol +0 -1
- package/contracts/shared/InstanceLinkedComponent.sol +6 -9
- package/contracts/shared/NftOwnable.sol +3 -1
- package/contracts/shared/PolicyHolder.sol +3 -2
- package/contracts/shared/Service.sol +6 -4
- package/contracts/staking/IStaking.sol +261 -70
- package/contracts/staking/IStakingService.sol +39 -84
- package/contracts/staking/ITargetLimitHandler.sol +17 -0
- package/contracts/staking/Staking.sol +468 -217
- package/contracts/staking/StakingLib.sol +38 -124
- package/contracts/staking/StakingManager.sol +4 -3
- package/contracts/staking/StakingReader.sol +62 -71
- package/contracts/staking/StakingService.sol +42 -185
- package/contracts/staking/StakingServiceManager.sol +1 -0
- package/contracts/staking/StakingStore.sol +1093 -331
- package/contracts/staking/TargetHandler.sol +132 -0
- package/contracts/staking/TargetManagerLib.sol +69 -46
- package/contracts/type/Amount.sol +4 -0
- package/contracts/type/Blocknumber.sol +17 -22
- package/contracts/type/ChainId.sol +101 -0
- package/contracts/type/NftId.sol +3 -3
- package/contracts/type/ObjectType.sol +16 -3
- package/contracts/type/RoleId.sol +57 -59
- package/contracts/type/Seconds.sol +19 -0
- package/contracts/type/String.sol +12 -0
- package/contracts/type/Timestamp.sol +4 -2
- package/contracts/type/UFixed.sol +1 -0
- package/contracts/upgradeability/IVersionable.sol +3 -0
- package/contracts/upgradeability/ProxyManager.sol +26 -12
- package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
- package/contracts/upgradeability/Versionable.sol +6 -3
- package/package.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
- package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
- package/contracts/shared/ComponentVerifyingService.sol +0 -128
- package/contracts/shared/IKeyValueStore.sol +0 -54
- package/contracts/shared/KeyValueStore.sol +0 -131
- package/contracts/staking/StakingLifecycle.sol +0 -23
| @@ -4,7 +4,6 @@ pragma solidity ^0.8.20; | |
| 4 4 | 
             
            import {IAccountingService} from "../accounting/IAccountingService.sol";
         | 
| 5 5 | 
             
            import {IBundle} from "../instance/module/IBundle.sol";
         | 
| 6 6 | 
             
            import {IBundleService} from "./IBundleService.sol";
         | 
| 7 | 
            -
            import {IComponents} from "../instance/module/IComponents.sol";
         | 
| 8 7 | 
             
            import {IComponentService} from "../shared/IComponentService.sol";
         | 
| 9 8 | 
             
            import {IRegistry} from "../registry/IRegistry.sol";
         | 
| 10 9 | 
             
            import {IRegistryService} from "../registry/IRegistryService.sol";
         | 
| @@ -13,19 +12,19 @@ import {InstanceStore} from "../instance/InstanceStore.sol"; | |
| 13 12 |  | 
| 14 13 | 
             
            import {Amount, AmountLib} from "../type/Amount.sol";
         | 
| 15 14 | 
             
            import {BundleSet} from "../instance/BundleSet.sol";
         | 
| 16 | 
            -
            import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
         | 
| 17 15 | 
             
            import {Fee} from "../type/Fee.sol";
         | 
| 18 16 | 
             
            import {InstanceReader} from "../instance/InstanceReader.sol";
         | 
| 19 17 | 
             
            import {NftId, NftIdLib} from "../type/NftId.sol";
         | 
| 20 18 | 
             
            import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
         | 
| 21 | 
            -
            import { | 
| 19 | 
            +
            import {PoolLib} from "./PoolLib.sol";
         | 
| 22 20 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 21 | 
            +
            import {Service} from "../shared/Service.sol";
         | 
| 22 | 
            +
            import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
         | 
| 23 23 | 
             
            import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
         | 
| 24 24 |  | 
| 25 | 
            -
            string constant BUNDLE_SERVICE_NAME = "BundleService";
         | 
| 26 25 |  | 
| 27 26 | 
             
            contract BundleService is 
         | 
| 28 | 
            -
                 | 
| 27 | 
            +
                Service, 
         | 
| 29 28 | 
             
                IBundleService 
         | 
| 30 29 | 
             
            {
         | 
| 31 30 |  | 
| @@ -69,7 +68,7 @@ contract BundleService is | |
| 69 68 | 
             
                {
         | 
| 70 69 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 71 70 |  | 
| 72 | 
            -
                    (NftId poolNftId | 
| 71 | 
            +
                    (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 73 72 | 
             
                    InstanceReader instanceReader = instance.getInstanceReader();
         | 
| 74 73 | 
             
                    IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 75 74 | 
             
                    if(bundleInfo.poolNftId.eqz()) {
         | 
| @@ -82,6 +81,8 @@ contract BundleService is | |
| 82 81 |  | 
| 83 82 | 
             
                    bundleInfo.fee = fee;
         | 
| 84 83 | 
             
                    instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                    emit LogBundleServiceBundleFeeUpdated(bundleNftId, fee.fixedFee, fee.fractionalFee);
         | 
| 85 86 | 
             
                }
         | 
| 86 87 |  | 
| 87 88 |  | 
| @@ -96,7 +97,7 @@ contract BundleService is | |
| 96 97 | 
             
                    restricted()
         | 
| 97 98 | 
             
                    returns(NftId bundleNftId)
         | 
| 98 99 | 
             
                {
         | 
| 99 | 
            -
                    (NftId poolNftId | 
| 100 | 
            +
                    (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 100 101 |  | 
| 101 102 | 
             
                    // register bundle with registry
         | 
| 102 103 | 
             
                    bundleNftId = _registryService.registerBundle(
         | 
| @@ -119,8 +120,8 @@ contract BundleService is | |
| 119 120 | 
             
                            poolNftId: poolNftId,
         | 
| 120 121 | 
             
                            fee: bundleFee,
         | 
| 121 122 | 
             
                            filter: filter,
         | 
| 122 | 
            -
                            activatedAt: TimestampLib. | 
| 123 | 
            -
                            expiredAt: TimestampLib. | 
| 123 | 
            +
                            activatedAt: TimestampLib.current(),
         | 
| 124 | 
            +
                            expiredAt: TimestampLib.current().addSeconds(lifetime),
         | 
| 124 125 | 
             
                            closedAt: zeroTimestamp()
         | 
| 125 126 | 
             
                        })
         | 
| 126 127 | 
             
                    );
         | 
| @@ -129,7 +130,7 @@ contract BundleService is | |
| 129 130 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 130 131 | 
             
                    bundleManager.add(bundleNftId);
         | 
| 131 132 |  | 
| 132 | 
            -
                    emit LogBundleServiceBundleCreated(bundleNftId, poolNftId);
         | 
| 133 | 
            +
                    emit LogBundleServiceBundleCreated(bundleNftId, poolNftId, lifetime);
         | 
| 133 134 | 
             
                }
         | 
| 134 135 |  | 
| 135 136 |  | 
| @@ -155,7 +156,7 @@ contract BundleService is | |
| 155 156 | 
             
                        IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
         | 
| 156 157 |  | 
| 157 158 | 
             
                        // ensure bundle is active and not yet expired
         | 
| 158 | 
            -
                        if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib. | 
| 159 | 
            +
                        if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.current()) {
         | 
| 159 160 | 
             
                            revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 160 161 | 
             
                        }
         | 
| 161 162 | 
             
                    }
         | 
| @@ -179,32 +180,12 @@ contract BundleService is | |
| 179 180 | 
             
                    // effects
         | 
| 180 181 | 
             
                    // updated locked amount
         | 
| 181 182 | 
             
                    instanceStore.increaseLocked(bundleNftId, collateralAmount);
         | 
| 182 | 
            -
                }
         | 
| 183 | 
            -
             | 
| 184 | 
            -
             | 
| 185 | 
            -
                function lock(NftId bundleNftId) 
         | 
| 186 | 
            -
                    external
         | 
| 187 | 
            -
                    virtual
         | 
| 188 | 
            -
                    restricted()
         | 
| 189 | 
            -
                {
         | 
| 190 | 
            -
                    // checks
         | 
| 191 | 
            -
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 192 | 
            -
             | 
| 193 | 
            -
                    (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
         | 
| 194 | 
            -
             | 
| 195 | 
            -
                    // udpate bundle state
         | 
| 196 | 
            -
                    instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
         | 
| 197 183 |  | 
| 198 | 
            -
                     | 
| 199 | 
            -
                    // update set of active bundles
         | 
| 200 | 
            -
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 201 | 
            -
                    bundleManager.lock(bundleNftId);
         | 
| 202 | 
            -
             | 
| 203 | 
            -
                    emit LogBundleServiceBundleLocked(bundleNftId);
         | 
| 184 | 
            +
                    emit LogBundleServiceCollateralLocked(bundleNftId, policyNftId, collateralAmount);
         | 
| 204 185 | 
             
                }
         | 
| 205 186 |  | 
| 206 187 |  | 
| 207 | 
            -
                function  | 
| 188 | 
            +
                function setLocked(NftId bundleNftId, bool locked) 
         | 
| 208 189 | 
             
                    external
         | 
| 209 190 | 
             
                    virtual
         | 
| 210 191 | 
             
                    restricted()
         | 
| @@ -212,19 +193,21 @@ contract BundleService is | |
| 212 193 | 
             
                    // checks
         | 
| 213 194 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 214 195 |  | 
| 215 | 
            -
                    ( | 
| 196 | 
            +
                    (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 216 197 |  | 
| 217 198 | 
             
                    // effects
         | 
| 218 | 
            -
                    // udpate bundle state
         | 
| 219 | 
            -
                    instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
         | 
| 220 | 
            -
             | 
| 221 199 | 
             
                    // update set of active bundles
         | 
| 222 200 | 
             
                    BundleSet bundleManager = instance.getBundleSet();
         | 
| 223 | 
            -
                    bundleManager.unlock(bundleNftId);
         | 
| 224 201 |  | 
| 225 | 
            -
                     | 
| 202 | 
            +
                    if (locked) {
         | 
| 203 | 
            +
                        bundleManager.lock(bundleNftId);
         | 
| 204 | 
            +
                        emit LogBundleServiceBundleLocked(bundleNftId);
         | 
| 205 | 
            +
                    } else {
         | 
| 206 | 
            +
                        bundleManager.unlock(bundleNftId);
         | 
| 207 | 
            +
                        emit LogBundleServiceBundleUnlocked(bundleNftId);
         | 
| 208 | 
            +
                    }
         | 
| 226 209 | 
             
                }
         | 
| 227 | 
            -
             | 
| 210 | 
            +
                
         | 
| 228 211 |  | 
| 229 212 | 
             
                function close(
         | 
| 230 213 | 
             
                    IInstance instance,
         | 
| @@ -260,6 +243,8 @@ contract BundleService is | |
| 260 243 | 
             
                        unstakedAmount = balanceAmountWithFees - feeAmount;
         | 
| 261 244 | 
             
                        _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
         | 
| 262 245 | 
             
                    }
         | 
| 246 | 
            +
             | 
| 247 | 
            +
                    emit LogBundleServiceBundleClosed(bundleNftId);
         | 
| 263 248 | 
             
                }
         | 
| 264 249 |  | 
| 265 250 | 
             
                /// @inheritdoc IBundleService
         | 
| @@ -280,7 +265,7 @@ contract BundleService is | |
| 280 265 | 
             
                    StateId bundleState = instanceReader.getBundleState(bundleNftId);
         | 
| 281 266 |  | 
| 282 267 | 
             
                    if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
         | 
| 283 | 
            -
                        || bundleInfo.expiredAt < TimestampLib. | 
| 268 | 
            +
                        || bundleInfo.expiredAt < TimestampLib.current() 
         | 
| 284 269 | 
             
                        || bundleInfo.closedAt.gtz()) {
         | 
| 285 270 | 
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 286 271 | 
             
                    }
         | 
| @@ -291,6 +276,8 @@ contract BundleService is | |
| 291 276 | 
             
                        bundleNftId, 
         | 
| 292 277 | 
             
                        amount, 
         | 
| 293 278 | 
             
                        AmountLib.zero());
         | 
| 279 | 
            +
             | 
| 280 | 
            +
                    emit LogBundleServiceBundleStaked(bundleNftId, amount);
         | 
| 294 281 | 
             
                }
         | 
| 295 282 |  | 
| 296 283 | 
             
                /// @inheritdoc IBundleService
         | 
| @@ -332,6 +319,8 @@ contract BundleService is | |
| 332 319 | 
             
                        bundleNftId, 
         | 
| 333 320 | 
             
                        unstakedAmount, 
         | 
| 334 321 | 
             
                        AmountLib.zero());
         | 
| 322 | 
            +
                    
         | 
| 323 | 
            +
                    emit LogBundleServiceBundleUnstaked(bundleNftId, unstakedAmount);
         | 
| 335 324 | 
             
                }
         | 
| 336 325 |  | 
| 337 326 | 
             
                /// @inheritdoc IBundleService
         | 
| @@ -344,7 +333,7 @@ contract BundleService is | |
| 344 333 | 
             
                    // checks
         | 
| 345 334 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 346 335 |  | 
| 347 | 
            -
                    (NftId poolNftId | 
| 336 | 
            +
                    (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
         | 
| 348 337 | 
             
                    IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
         | 
| 349 338 | 
             
                    StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
         | 
| 350 339 |  | 
| @@ -354,7 +343,7 @@ contract BundleService is | |
| 354 343 | 
             
                    }
         | 
| 355 344 |  | 
| 356 345 | 
             
                    // ensure bundle is active and not yet expired
         | 
| 357 | 
            -
                    if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib. | 
| 346 | 
            +
                    if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.current()) {
         | 
| 358 347 | 
             
                        revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
         | 
| 359 348 | 
             
                    }
         | 
| 360 349 |  | 
| @@ -386,6 +375,8 @@ contract BundleService is | |
| 386 375 | 
             
                    _checkNftType(bundleNftId, BUNDLE());
         | 
| 387 376 |  | 
| 388 377 | 
             
                    instanceStore.decreaseLocked(bundleNftId, collateralAmount);
         | 
| 378 | 
            +
             | 
| 379 | 
            +
                    emit LogBundleServiceCollateralReleased(bundleNftId, policyNftId, collateralAmount);
         | 
| 389 380 | 
             
                }
         | 
| 390 381 |  | 
| 391 382 |  | 
| @@ -12,13 +12,10 @@ import {InstanceStore} from "../instance/InstanceStore.sol"; | |
| 12 12 | 
             
            import {Seconds} from "../type/Seconds.sol";
         | 
| 13 13 | 
             
            import {StateId} from "../type/StateId.sol";
         | 
| 14 14 | 
             
            import {Timestamp} from "../type/Timestamp.sol";
         | 
| 15 | 
            +
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 16 |  | 
| 16 17 | 
             
            interface IBundleService is IService {
         | 
| 17 18 |  | 
| 18 | 
            -
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId);
         | 
| 19 | 
            -
                event LogBundleServiceBundleActivated(NftId bundleNftId);
         | 
| 20 | 
            -
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         | 
| 21 | 
            -
             | 
| 22 19 | 
             
                error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
         | 
| 23 20 | 
             
                error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
         | 
| 24 21 | 
             
                error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
         | 
| @@ -33,7 +30,16 @@ interface IBundleService is IService { | |
| 33 30 |  | 
| 34 31 | 
             
                error ErrorBundleServiceExtensionLifetimeIsZero();
         | 
| 35 32 |  | 
| 33 | 
            +
                event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId, Seconds lifetime);
         | 
| 34 | 
            +
                event LogBundleServiceBundleClosed(NftId bundleNftId);
         | 
| 35 | 
            +
                event LogBundleServiceBundleLocked(NftId bundleNftId);
         | 
| 36 | 
            +
                event LogBundleServiceBundleUnlocked(NftId bundleNftId);
         | 
| 36 37 | 
             
                event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
         | 
| 38 | 
            +
                event LogBundleServiceBundleFeeUpdated(NftId bundleNftId, Amount fixedFee, UFixed fractionalFee);
         | 
| 39 | 
            +
                event LogBundleServiceCollateralLocked(NftId bundleNftId, NftId policyNftId, Amount collateralAmount);
         | 
| 40 | 
            +
                event LogBundleServiceCollateralReleased(NftId bundleNftId, NftId policyNftId, Amount collateralAmount);
         | 
| 41 | 
            +
                event LogBundleServiceBundleStaked(NftId bundleNftId, Amount amount);
         | 
| 42 | 
            +
                event LogBundleServiceBundleUnstaked(NftId bundleNftId, Amount amount);
         | 
| 37 43 |  | 
| 38 44 | 
             
                /// @dev Create a new bundle for the specified attributes.
         | 
| 39 45 | 
             
                function create(
         | 
| @@ -62,15 +68,10 @@ interface IBundleService is IService { | |
| 62 68 | 
             
                /// @dev extend the lifetime of the bundle by the specified time in seconds
         | 
| 63 69 | 
             
                function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
         | 
| 64 70 |  | 
| 65 | 
            -
                /// @dev locks the specified bundle | 
| 66 | 
            -
                ///  | 
| 67 | 
            -
                /// may only be called by registered and unlocked pool components
         | 
| 68 | 
            -
                function  | 
| 69 | 
            -
             | 
| 70 | 
            -
                /// @dev activates the specified bundle
         | 
| 71 | 
            -
                /// only locked bundles may be unlocked
         | 
| 72 | 
            -
                /// may only be called by registered and unlocked pool components
         | 
| 73 | 
            -
                function unlock(NftId bundleNftId) external;
         | 
| 71 | 
            +
                /// @dev locks/unlocks the specified bundle. 
         | 
| 72 | 
            +
                /// locked bundles are not available to collateralize new policies.
         | 
| 73 | 
            +
                /// may only be called by registered and unlocked pool components.
         | 
| 74 | 
            +
                function setLocked(NftId bundleNftId, bool locked) external;
         | 
| 74 75 |  | 
| 75 76 | 
             
                /// @dev closes the specified bundle
         | 
| 76 77 | 
             
                /// only open bundles (active or locked) may be closed
         | 
| @@ -11,7 +11,6 @@ import {InstanceReader} from "../instance/InstanceReader.sol"; | |
| 11 11 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 12 12 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 13 13 | 
             
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 14 | 
            -
            import {UFixed} from "../type/UFixed.sol";
         | 
| 15 14 |  | 
| 16 15 | 
             
            interface IPoolService is IService {
         | 
| 17 16 |  | 
| @@ -29,6 +28,12 @@ interface IPoolService is IService { | |
| 29 28 |  | 
| 30 29 | 
             
                event LogPoolServiceProcessFundedClaim(NftId policyNftId, ClaimId claimId, Amount availableAmount);
         | 
| 31 30 |  | 
| 31 | 
            +
                event LogPoolServiceApplicationVerified(NftId poolNftId, NftId bundleNftId, NftId applicationNftId, Amount totalCollateralAmount);
         | 
| 32 | 
            +
                event LogPoolServiceCollateralLocked(NftId poolNftId, NftId bundleNftId, NftId applicationNftId, Amount totalCollateralAmount, Amount lockedCollateralAmount);
         | 
| 33 | 
            +
                event LogPoolServiceCollateralReleased(NftId bundleNftId, NftId policyNftId, Amount remainingCollateralAmount);
         | 
| 34 | 
            +
                event LogPoolServiceSaleProcessed(NftId poolNftId, NftId bundleNftId, Amount bundleNetAmount, Amount bundleFeeAmount, Amount poolFeeAmount);
         | 
| 35 | 
            +
                event LogPoolServicePayoutProcessed(NftId poolNftId, NftId bundleNftId, NftId policyNftId, PayoutId payoutId, Amount netPayoutAmount, Amount processingFeeAmount, address payoutBeneficiary);
         | 
| 36 | 
            +
             | 
| 32 37 | 
             
                error ErrorPoolServicePoolNotExternallyManaged(NftId poolNftId);
         | 
| 33 38 | 
             
                error ErrorPoolServicePolicyPoolMismatch(NftId policyNftId, NftId productNftId, NftId expectedProductNftId);
         | 
| 34 39 | 
             
                error ErrorPoolServiceBundleOwnerRoleAlreadySet(NftId poolNftId);
         | 
| @@ -81,7 +86,7 @@ interface IPoolService is IService { | |
| 81 86 | 
             
                    PayoutId payoutId,
         | 
| 82 87 | 
             
                    Amount payoutAmount,
         | 
| 83 88 | 
             
                    address payoutBeneficiary
         | 
| 84 | 
            -
                ) external;
         | 
| 89 | 
            +
                ) external returns (Amount netPayoutAmount, Amount processingFeeAmount);
         | 
| 85 90 |  | 
| 86 91 |  | 
| 87 92 | 
             
                /// @dev increase stakes for bundle
         | 
    
        package/contracts/pool/Pool.sol
    CHANGED
    
    | @@ -123,28 +123,26 @@ abstract contract Pool is | |
| 123 123 |  | 
| 124 124 | 
             
                // Internals
         | 
| 125 125 |  | 
| 126 | 
            -
                function  | 
| 126 | 
            +
                function __Pool_init(
         | 
| 127 127 | 
             
                    address registry,
         | 
| 128 128 | 
             
                    NftId productNftId,
         | 
| 129 129 | 
             
                    string memory name,
         | 
| 130 130 | 
             
                    IComponents.PoolInfo memory poolInfo,
         | 
| 131 131 | 
             
                    IAuthorization authorization,
         | 
| 132 | 
            -
                    address initialOwner | 
| 133 | 
            -
                    bytes memory componentData // component specifidc data 
         | 
| 132 | 
            +
                    address initialOwner
         | 
| 134 133 | 
             
                )
         | 
| 135 134 | 
             
                    internal
         | 
| 136 135 | 
             
                    virtual
         | 
| 137 136 | 
             
                    onlyInitializing()
         | 
| 138 137 | 
             
                {
         | 
| 139 | 
            -
                     | 
| 138 | 
            +
                    __InstanceLinkedComponent_init(
         | 
| 140 139 | 
             
                        registry, 
         | 
| 141 140 | 
             
                        productNftId,  
         | 
| 142 141 | 
             
                        name, 
         | 
| 143 142 | 
             
                        POOL(), 
         | 
| 144 143 | 
             
                        authorization, 
         | 
| 145 144 | 
             
                        poolInfo.isInterceptingBundleTransfers, 
         | 
| 146 | 
            -
                        initialOwner | 
| 147 | 
            -
                        componentData);
         | 
| 145 | 
            +
                        initialOwner);
         | 
| 148 146 |  | 
| 149 147 | 
             
                    PoolStorage storage $ = _getPoolStorage();
         | 
| 150 148 |  | 
| @@ -283,21 +281,11 @@ abstract contract Pool is | |
| 283 281 | 
             
                /// @dev Locks the specified bundle.
         | 
| 284 282 | 
             
                /// A bundle to be locked MUST be in active state.
         | 
| 285 283 | 
             
                /// Locked bundles may not be used to collateralize any new policy.
         | 
| 286 | 
            -
                function  | 
| 284 | 
            +
                function _setBundleLocked(NftId bundleNftId, bool locked)
         | 
| 287 285 | 
             
                    internal
         | 
| 288 286 | 
             
                    virtual
         | 
| 289 287 | 
             
                {
         | 
| 290 | 
            -
                    _getPoolStorage()._bundleService. | 
| 291 | 
            -
                }
         | 
| 292 | 
            -
             | 
| 293 | 
            -
             | 
| 294 | 
            -
                /// @dev Unlocks the specified bundle.
         | 
| 295 | 
            -
                /// A bundle to be unlocked MUST be in locked state.
         | 
| 296 | 
            -
                function _unlockBundle(NftId bundleNftId)
         | 
| 297 | 
            -
                    internal
         | 
| 298 | 
            -
                    virtual
         | 
| 299 | 
            -
                {
         | 
| 300 | 
            -
                    _getPoolStorage()._bundleService.unlock(bundleNftId);
         | 
| 288 | 
            +
                    _getPoolStorage()._bundleService.setLocked(bundleNftId, locked);
         | 
| 301 289 | 
             
                }
         | 
| 302 290 |  | 
| 303 291 |  | 
| @@ -15,6 +15,8 @@ import {InstanceReader} from "../instance/InstanceReader.sol"; | |
| 15 15 | 
             
            import {InstanceStore} from "../instance/InstanceStore.sol";
         | 
| 16 16 | 
             
            import {NftId} from "../type/NftId.sol";
         | 
| 17 17 | 
             
            import {ObjectType, BUNDLE, POOL} from "../type/ObjectType.sol";
         | 
| 18 | 
            +
            import {PayoutId} from "../type/PayoutId.sol";
         | 
| 19 | 
            +
            import {TokenHandler} from "../shared/TokenHandler.sol";
         | 
| 18 20 | 
             
            import {UFixed} from "../type/UFixed.sol";
         | 
| 19 21 |  | 
| 20 22 | 
             
            library PoolLib {
         | 
| @@ -105,7 +107,7 @@ library PoolLib { | |
| 105 107 | 
             
                    Amount payoutAmount,
         | 
| 106 108 | 
             
                    address payoutBeneficiary
         | 
| 107 109 | 
             
                )
         | 
| 108 | 
            -
                     | 
| 110 | 
            +
                    public
         | 
| 109 111 | 
             
                    view
         | 
| 110 112 | 
             
                    returns (
         | 
| 111 113 | 
             
                        Amount netPayoutAmount,
         | 
| @@ -127,7 +129,7 @@ library PoolLib { | |
| 127 129 | 
             
                        // calculate processing fees if applicable
         | 
| 128 130 | 
             
                        IComponents.FeeInfo memory feeInfo = instanceReader.getFeeInfo(productNftId);
         | 
| 129 131 | 
             
                        if(FeeLib.gtz(feeInfo.processingFee)) {
         | 
| 130 | 
            -
                             | 
| 132 | 
            +
                            (processingFeeAmount, netPayoutAmount) = FeeLib.calculateFee(feeInfo.processingFee, payoutAmount);
         | 
| 131 133 | 
             
                        }
         | 
| 132 134 | 
             
                    }
         | 
| 133 135 | 
             
                }
         | 
| @@ -204,6 +206,32 @@ library PoolLib { | |
| 204 206 | 
             
                    instance = IInstance(instanceAddress);
         | 
| 205 207 | 
             
                }
         | 
| 206 208 |  | 
| 209 | 
            +
             | 
| 210 | 
            +
                function getAndVerifyActiveComponent(
         | 
| 211 | 
            +
                    IRegistry registry,
         | 
| 212 | 
            +
                    address sender,
         | 
| 213 | 
            +
                    ObjectType expectedComponentType
         | 
| 214 | 
            +
                )
         | 
| 215 | 
            +
                    public
         | 
| 216 | 
            +
                    view
         | 
| 217 | 
            +
                    returns (
         | 
| 218 | 
            +
                        NftId componentNftId,
         | 
| 219 | 
            +
                        IInstance instance
         | 
| 220 | 
            +
                    )
         | 
| 221 | 
            +
                {
         | 
| 222 | 
            +
                    (
         | 
| 223 | 
            +
                        IRegistry.ObjectInfo memory info, 
         | 
| 224 | 
            +
                        address instanceAddress
         | 
| 225 | 
            +
                    ) = ContractLib.getAndVerifyComponent(
         | 
| 226 | 
            +
                        registry, 
         | 
| 227 | 
            +
                        sender,
         | 
| 228 | 
            +
                        expectedComponentType,
         | 
| 229 | 
            +
                        true); // only active components
         | 
| 230 | 
            +
             | 
| 231 | 
            +
                    componentNftId = info.nftId;
         | 
| 232 | 
            +
                    instance = IInstance(instanceAddress);
         | 
| 233 | 
            +
                }
         | 
| 234 | 
            +
             | 
| 207 235 | 
             
                function checkNftType(
         | 
| 208 236 | 
             
                    IRegistry registry, 
         | 
| 209 237 | 
             
                    NftId nftId, 
         | 
| @@ -213,4 +241,101 @@ library PoolLib { | |
| 213 241 | 
             
                        revert INftOwnable.ErrorNftOwnableInvalidType(nftId, expectedObjectType);
         | 
| 214 242 | 
             
                    }
         | 
| 215 243 | 
             
                }
         | 
| 244 | 
            +
             | 
| 245 | 
            +
                function transferTokenAndNotifyPolicyHolder(
         | 
| 246 | 
            +
                    IRegistry registry,
         | 
| 247 | 
            +
                    InstanceReader instanceReader,
         | 
| 248 | 
            +
                    TokenHandler poolTokenHandler,
         | 
| 249 | 
            +
                    NftId productNftId,
         | 
| 250 | 
            +
                    NftId policyNftId,
         | 
| 251 | 
            +
                    PayoutId payoutId,
         | 
| 252 | 
            +
                    Amount payoutAmount,
         | 
| 253 | 
            +
                    address payoutBeneficiary
         | 
| 254 | 
            +
                )
         | 
| 255 | 
            +
                    external
         | 
| 256 | 
            +
                    returns (
         | 
| 257 | 
            +
                        Amount netPayoutAmount,
         | 
| 258 | 
            +
                        Amount processingFeeAmount
         | 
| 259 | 
            +
                    )
         | 
| 260 | 
            +
                {
         | 
| 261 | 
            +
                    address beneficiary;
         | 
| 262 | 
            +
             | 
| 263 | 
            +
                    (
         | 
| 264 | 
            +
                        netPayoutAmount,
         | 
| 265 | 
            +
                        processingFeeAmount,
         | 
| 266 | 
            +
                        beneficiary
         | 
| 267 | 
            +
                    ) = calculatePayoutAmounts(
         | 
| 268 | 
            +
                        registry,
         | 
| 269 | 
            +
                        instanceReader,
         | 
| 270 | 
            +
                        productNftId, 
         | 
| 271 | 
            +
                        policyNftId,
         | 
| 272 | 
            +
                        payoutAmount,
         | 
| 273 | 
            +
                        payoutBeneficiary);
         | 
| 274 | 
            +
             | 
| 275 | 
            +
                    // 1st token tx to payout to beneficiary
         | 
| 276 | 
            +
                    poolTokenHandler.pushToken(
         | 
| 277 | 
            +
                        beneficiary, 
         | 
| 278 | 
            +
                        netPayoutAmount);
         | 
| 279 | 
            +
             | 
| 280 | 
            +
                    // 2nd token tx to transfer processing fees to product wallet
         | 
| 281 | 
            +
                    // if processingFeeAmount > 0
         | 
| 282 | 
            +
                    if (processingFeeAmount.gtz()) {
         | 
| 283 | 
            +
                        poolTokenHandler.pushToken(
         | 
| 284 | 
            +
                            instanceReader.getWallet(productNftId), 
         | 
| 285 | 
            +
                            processingFeeAmount);
         | 
| 286 | 
            +
                    }
         | 
| 287 | 
            +
             | 
| 288 | 
            +
                    // callback to policy holder if applicable
         | 
| 289 | 
            +
                    policyHolderPayoutExecuted(
         | 
| 290 | 
            +
                        registry,
         | 
| 291 | 
            +
                        policyNftId, 
         | 
| 292 | 
            +
                        payoutId, 
         | 
| 293 | 
            +
                        beneficiary, 
         | 
| 294 | 
            +
                        netPayoutAmount);
         | 
| 295 | 
            +
                }
         | 
| 296 | 
            +
             | 
| 297 | 
            +
                function policyHolderPayoutExecuted(
         | 
| 298 | 
            +
                    IRegistry registry,
         | 
| 299 | 
            +
                    NftId policyNftId, 
         | 
| 300 | 
            +
                    PayoutId payoutId,
         | 
| 301 | 
            +
                    address beneficiary,
         | 
| 302 | 
            +
                    Amount payoutAmount
         | 
| 303 | 
            +
                )
         | 
| 304 | 
            +
                    private
         | 
| 305 | 
            +
                {
         | 
| 306 | 
            +
                    IPolicyHolder policyHolder = getPolicyHolder(registry, policyNftId);
         | 
| 307 | 
            +
                    if(address(policyHolder) != address(0)) {
         | 
| 308 | 
            +
                        policyHolder.payoutExecuted(policyNftId, payoutId, payoutAmount, beneficiary);
         | 
| 309 | 
            +
                    }
         | 
| 310 | 
            +
                }
         | 
| 311 | 
            +
             | 
| 312 | 
            +
                /// @dev Transfers the specified amount from the "from account" to the pool's wallet
         | 
| 313 | 
            +
                function pullStakingAmount(
         | 
| 314 | 
            +
                    InstanceReader reader,
         | 
| 315 | 
            +
                    NftId poolNftId,
         | 
| 316 | 
            +
                    address from,
         | 
| 317 | 
            +
                    Amount amount
         | 
| 318 | 
            +
                )
         | 
| 319 | 
            +
                    external
         | 
| 320 | 
            +
                {
         | 
| 321 | 
            +
                    IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
         | 
| 322 | 
            +
                    info.tokenHandler.pullToken(
         | 
| 323 | 
            +
                        from,
         | 
| 324 | 
            +
                        amount);
         | 
| 325 | 
            +
                }
         | 
| 326 | 
            +
             | 
| 327 | 
            +
                /// @dev Transfers the specified amount from the pool's wallet to the "to account"
         | 
| 328 | 
            +
                function pushUnstakingAmount(
         | 
| 329 | 
            +
                    InstanceReader reader,
         | 
| 330 | 
            +
                    NftId poolNftId,
         | 
| 331 | 
            +
                    address to,
         | 
| 332 | 
            +
                    Amount amount
         | 
| 333 | 
            +
                )
         | 
| 334 | 
            +
                    external
         | 
| 335 | 
            +
                {
         | 
| 336 | 
            +
                    IComponents.ComponentInfo memory info = reader.getComponentInfo(poolNftId);
         | 
| 337 | 
            +
                    info.tokenHandler.pushToken(
         | 
| 338 | 
            +
                        to, 
         | 
| 339 | 
            +
                        amount);
         | 
| 340 | 
            +
                }
         | 
| 216 341 | 
             
            }
         |